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

本文涉及的产品
交互式建模 PAI-DSW,5000CU*H 3个月
模型训练 PAI-DLC,5000CU*H 3个月
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
简介: 在魔搭社区,通义千问团队发布了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倍。
相关文章
|
2月前
|
并行计算 PyTorch 算法框架/工具
社区供稿 | 本地部署通义千问大模型做RAG验证
这篇文章中,我们通过将模搭社区开源的大模型部署到本地,并实现简单的对话和RAG。
|
7月前
|
人工智能 PyTorch 算法框架/工具
|
10月前
|
数据可视化 安全 物联网
通义千问14B开源!内附魔搭最佳实践
9月25日,阿里云开源通义千问140亿参数模型Qwen-14B及其对话模型Qwen-14B-Chat,免费可商用。Qwen-14B在多个权威评测中超越同等规模模型,部分指标甚至接近Llama2-70B。阿里云此前开源的70亿参数模型Qwen-7B等,一个多月下载量破100万,成为开源社区的口碑之作。
|
2月前
|
JSON 自然语言处理 对象存储
|
2月前
|
Python
modelscope通义千问的14b量化版出错 说没有版本 这个代码都是从页面上粘贴下来的 Int8 Int4都试过了一样的错误?
modelscope通义千问的14b量化版出错 说没有版本 这个代码都是从页面上粘贴下来的 Int8 Int4都试过了一样的错误?modelscope.hub.errors.NoValidRevisionError: The model: qwen/Qwen-14B-Chat-Int4 has no valid revision!
411 1
|
2月前
|
JSON 自然语言处理 对象存储
通义千问开源模型在PAI灵骏的最佳实践
本文将展示如何基于阿里云PAI灵骏智算服务,在通义千问开源模型之上进行高效分布式继续预训练、指令微调、模型离线推理验证以及在线服务部署。
|
11月前
|
编解码 人工智能 自然语言处理
通义千问开源第二波!多模态来啦!(内含魔搭最佳实践)
近期,通义千问大规模视觉语言模型Qwen-VL上线魔搭社区,Qwen-VL以通义千问70亿参数模型Qwen-7B为基座语言模型研发,支持图文输入,具备多模态信息理解能力。
|
2月前
|
数据采集 分布式计算 数据处理
Dataphin常见问题之与指定类型int不兼容如何解决
Dataphin是阿里云提供的一站式数据处理服务,旨在帮助企业构建一体化的智能数据处理平台。Dataphin整合了数据建模、数据处理、数据开发、数据服务等多个功能,支持企业更高效地进行数据治理和分析。
|
2月前
|
SQL 流计算 OceanBase
OceanBase CDC从热OB库采集过来的Tinyint(1)类型会默认转换成Boolean,请教一下,如果想转换成int类型,有什方法么?
【2月更文挑战第25天】OceanBase CDC从热OB库采集过来的Tinyint(1)类型会默认转换成Boolean,请教一下,如果想转换成int类型,有什方法么?
50 3
|
26天前
|
机器学习/深度学习 人工智能 分布式计算
人工智能平台PAI产品使用合集之int类型是否可以为raw feature
阿里云人工智能平台PAI是一个功能强大、易于使用的AI开发平台,旨在降低AI开发门槛,加速创新,助力企业和开发者高效构建、部署和管理人工智能应用。其中包含了一系列相互协同的产品与服务,共同构成一个完整的人工智能开发与应用生态系统。以下是对PAI产品使用合集的概述,涵盖数据处理、模型开发、训练加速、模型部署及管理等多个环节。