【通义千问】大模型Qwen GitHub开源工程学习笔记(4)-- 模型的量化与离线部署

【通义千问】大模型Qwen GitHub开源工程学习笔记(4)-- 模型的量化与离线部署_第1张图片

摘要:

量化方案基于AutoGPTQ,提供了Int4量化模型,其中包括Qwen-7B-Chat和Qwen-14B-Chat。更新承诺在模型评估效果几乎没有损失的情况下,降低存储要求并提高推理速度。量化是指将模型权重和激活的精度降低以节省存储空间并提高推理速度的过程。AutoGPTQ是一种专有量化工具。Int4是指4位整数量化,与传统的8位量化相比,可以进一步减少存储要求。

如何使用Int4量化模型

在开始使用前,请先保证满足要求(如torch 2.0及以上,transformers版本为4.32.0及以上,等等),并安装所需安装包:

pip install auto-gptq optimum

 【Auto-GPT 】

AutoGPTQ将能够作为一个可扩展、灵活的量化后端,支持所有类似GPTQ的方法,并自动量化由Pytorch编写的LLM。说白了就是让模型能够轻量化。

┏ (゜ω゜)=传送门==>GitHub - PanQiWei/AutoGPTQ: An easy-to-use LLMs quantization package with user-friendly apis, based on GPTQ algorithm.

 https://huggingface.co/blog/zh/gptq-integration

问题:ModuleNotFoundError: No module named 'optimum.gptq'的处理方法

在python环境下使用如下代码,查看是否安装这个模块

import pkg_resources

try:
    pkg_resources.get_distribution('optimum')
    print('optimum is installed.')
    # Check if gptq is installed under optimum
    try:
        pkg_resources.get_distribution('optimum.gptq')
        print('gptq is installed under optimum.')
    except pkg_resources.DistributionNotFound:
        print('gptq is not installed under optimum.')
except pkg_resources.DistributionNotFound:
    print('optimum is not installed.')

我这里返回了

optimum is installed.
gptq is not installed under optimum.

看来,我是安装了【optimum】这个模块,但是下面的【gptq】没有安装

通过pip list指令,我也找到所装的optimum版本

 Optimum 是 Transformers 的扩展,它提供了一组性能优化工具,可以在目标硬件上以最高效率训练和运行模型。

【解决方法】 

删除,从Git上clone下(clone地址==>https://github.com/huggingface/optimum),再安装optimum。这次通过在clone的本地路径下,通过指令【python setup.py install】去安装。发现optimum文件夹下有了gptq这个模块

【通义千问】大模型Qwen GitHub开源工程学习笔记(4)-- 模型的量化与离线部署_第2张图片

 离线运行一下量化后的模型

首先还是将模型文件下载到本地,用YOURPATH去保存你的模型文件所在的相对路径。

from transformers import AutoModelForCausalLM, AutoTokenizer
from transformers.generation import GenerationConfig

YOURPATH = 'models/Qwen-7B-Chat-Int'
# name = 'Qwen/Qwen-7B-Chat-Int'
tokenizer = AutoTokenizer.from_pretrained(YOURPATH, local_files_only=True,trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(YOURPATH, local_files_only=True, device_map="auto", trust_remote_code=True).eval()

你可能感兴趣的:(学习,笔记,语言模型,人工智能,开源)