社区供稿 | 10G显存,通义千问-7B-int4消费级显卡最佳实践

本文涉及的产品
交互式建模 PAI-DSW,5000CU*H 3个月
简介: 在魔搭社区,通义千问团队发布了Qwen-7B-Chat的Int4量化模型,Qwen-7B-Chat-Int4。该方案的优势在于,它能够实现几乎无损的性能表现,模型大小仅为5.5GB,内存消耗低,速度甚至超过BF16。

导读

在魔搭社区,通义千问团队发布了Qwen-7B-Chat的Int4量化模型,Qwen-7B-Chat-Int4。该方案的优势在于,它能够实现几乎无损的性能表现,模型大小仅为5.5GB,内存消耗低,速度甚至超过BF16。


环境配置与安装

本文实例均在魔搭社区的PAI-DSW Notebook(GPU版本)直接运行

python>=3.8


使用步骤

本文在ModelScope的Notebook的环境(这里以PAI-DSW为例)配置下运行 (可单卡运行, 显存要求20G)


服务器连接与环境准备

1、进入ModelScope首页:modelscope.cn,进入我的Notebook


2、选择GPU环境,进入PAI-DSW在线开发环境


3、进入Terminal,先查看一下GPU的使用情况


最佳实践

更新量化方案为基于AutoGPTQ的量化,提供Qwen-7B-Chat的Int4量化模型相比此前方案,该方案在模型评测效果几乎无损,且存储需求更低,推理速度更优。


以下我们提供示例说明如何使用Int4量化模型。在开始使用前,请先保证满足AutoGPTQ的要求,并使用源代码安装(由于最新支持Qwen的代码未发布到PyPI):

git clone https://github.com/PanQiWei/AutoGPTQ.git && cd AutoGPTQ
pip install .


模型下载

通义千问-7B-Chat-int4现已在ModelScope社区开源:https://modelscope.cn/models/qwen/Qwen-7B-Chat-Int4/summary

from modelscope import snapshot_download
from auto_gptq import AutoGPTQForCausalLM
model_dir = snapshot_download("qwen/Qwen-7B-Chat-Int4", revision='v1.0.0')


读取量化模型

随后便能轻松读取量化模型

from auto_gptq import AutoGPTQForCausalLM
model = AutoGPTQForCausalLM.from_quantized(model_dir, device_map="auto",revision = 'v1.0.0', trust_remote_code=True, use_safetensors=True).eval()


模型推理

推理方法和基础用法类似,但注意需要从外部传入generation config:

from modelscope import GenerationConfig
config = GenerationConfig.from_pretrained("qwen/Qwen-7B-Chat-Int4", revision='v1.0.0', trust_remote_code=True)
response, history = model.chat(tokenizer, "Hi", history=None, generation_config=config)


快速使用

如下是一个使用Qwen-7B-Chat-int4模型,进行多轮对话交互的样例:

from modelscope import (
    snapshot_download, AutoModelForCausalLM, AutoTokenizer, GenerationConfig
)
from auto_gptq import AutoGPTQForCausalLM
model_dir = snapshot_download("qwen/Qwen-7B-Chat-Int4", revision='v1.0.0')
# Note: The default behavior now has injection attack prevention off.
tokenizer = AutoTokenizer.from_pretrained(model_dir, revision = 'v1.0.0',trust_remote_code=True)
model = AutoGPTQForCausalLM.from_quantized(model_dir, device_map="auto",revision = 'v1.0.0', trust_remote_code=True, use_safetensors=True).eval()
# Specify hyperparameters for generation
config = GenerationConfig.from_pretrained(model_dir, revision = 'v1.0.0',trust_remote_code=True)
response, history = model.chat(tokenizer, "你好", history=None, generation_config=config)
print(response)
# 你好!很高兴为你提供帮助。


效果评测

效果评测

我们对BF16和Int4模型在基准评测上做了测试,发现量化模型效果损失较小,结果如下所示:

Quantization

MMLU

CEval (val)

GSM8K

Humaneval

BF16

53.9

54.2

41.1

24.4

Int4

52.6

52.9

38.1

23.8


推理速度 (Inference Speed)

我们测算了BF16和Int4模型生成2048和8192个token的平均推理速度。如图所示:

Quantization

Speed (2048 tokens)

Speed (8192 tokens)

BF16

30.53

28.51

Int4

45.60

33.83


具体而言,我们记录在长度为1的上下文的条件下生成8192个token的性能。评测运行于单张A100-SXM4-80G GPU,使用PyTorch 2.0.1和CUDA 11.4。推理速度是生成8192个token的速度均值。


显存使用 (GPU Memory Usage)

我们还测算了BF16和Int4模型编码2048个token及生成8192个token的峰值显存占用情况。结果如下所示:

Quantization Level

Peak Usage for Encoding 2048 Tokens

Peak Usage for Generating 8192 Tokens

BF16

18.99GB

24.40GB

In4

10.20GB

15.61GB


具体显存占用截图:


相关实践学习
基于阿里云DeepGPU实例,用AI画唯美国风少女
本实验基于阿里云DeepGPU实例,使用aiacctorch加速stable-diffusion-webui,用AI画唯美国风少女,可提升性能至高至原性能的2.6倍。
相关文章
|
1月前
|
并行计算 PyTorch 算法框架/工具
社区供稿 | 本地部署通义千问大模型做RAG验证
这篇文章中,我们通过将模搭社区开源的大模型部署到本地,并实现简单的对话和RAG。
|
6月前
|
人工智能 PyTorch 算法框架/工具
|
9月前
|
数据可视化 安全 物联网
通义千问14B开源!内附魔搭最佳实践
9月25日,阿里云开源通义千问140亿参数模型Qwen-14B及其对话模型Qwen-14B-Chat,免费可商用。Qwen-14B在多个权威评测中超越同等规模模型,部分指标甚至接近Llama2-70B。阿里云此前开源的70亿参数模型Qwen-7B等,一个多月下载量破100万,成为开源社区的口碑之作。
|
1月前
|
Python
modelscope通义千问的14b量化版出错 说没有版本 这个代码都是从页面上粘贴下来的 Int8 Int4都试过了一样的错误?
modelscope通义千问的14b量化版出错 说没有版本 这个代码都是从页面上粘贴下来的 Int8 Int4都试过了一样的错误?modelscope.hub.errors.NoValidRevisionError: The model: qwen/Qwen-14B-Chat-Int4 has no valid revision!
374 1
|
1月前
|
JSON 自然语言处理 对象存储
通义千问开源模型在PAI灵骏的最佳实践
本文将展示如何基于阿里云PAI灵骏智算服务,在通义千问开源模型之上进行高效分布式继续预训练、指令微调、模型离线推理验证以及在线服务部署。
|
1月前
|
JSON 自然语言处理 对象存储
|
10月前
|
编解码 人工智能 自然语言处理
通义千问开源第二波!多模态来啦!(内含魔搭最佳实践)
近期,通义千问大规模视觉语言模型Qwen-VL上线魔搭社区,Qwen-VL以通义千问70亿参数模型Qwen-7B为基座语言模型研发,支持图文输入,具备多模态信息理解能力。
|
1月前
|
自然语言处理 搜索推荐 API
通义千问API:用4行代码对话大模型
本章将通过一个简单的例子,让你快速进入到通义千问大模型应用开发的世界。
231046 105
通义千问API:用4行代码对话大模型
|
5天前
|
自然语言处理 Java 测试技术
使用PostMan请求阿里云通义千问大模型
本文介绍如果通过postman调用阿里云通义千问API,然后介绍如果使用多语言集成,最后介绍了快速使用postman压测创建的API请求。
|
1月前
|
人工智能 自然语言处理 运维
NLP国内外大模型汇总列表[文心一言、智谱、百川、星火、通义千问、盘古等等]
NLP国内外大模型汇总列表[文心一言、智谱、百川、星火、通义千问、盘古等等]
NLP国内外大模型汇总列表[文心一言、智谱、百川、星火、通义千问、盘古等等]