更新时间:2024-08-12 GMT+08:00
分享

使用AWQ量化工具转换权重

AWQ(W4A16)量化方案能显著降低模型显存以及需要部署的卡数。降低小batch下的增量推理时延。支持AWQ量化的模型列表请参见表1

本章节介绍如何在Notebook使用AWQ量化工具实现推理量化,量化方法为per-group。

Step1 模型量化

可以在Huggingface开源社区获取AWQ量化后的模型权重;或者获取FP16/BF16的模型权重之后,通过autoAWQ工具进行量化。

方式一:从开源社区下载发布的AWQ量化模型。

https://huggingface.co/models?sort=trending&search=QWEN+AWQ

方式二:使用AutoAWQ量化工具进行量化。

  1. 在Notebook中运行以下命令下载并安装AutoAWQ源码。
    git clone -b v0.2.5 https://github.com/casper-hansen/AutoAWQ.git AutoAWQ-0.2.5
    cd ./AutoAWQ-0.2.5
    export PYPI_BUILD=1
    pip install -e .
  2. 需要编辑“examples/quantize.py”文件,针对NPU进行如下适配工作,以支持在NPU上进行量化。
    1. 添加import。
      import torch_npu
      from torch_npu.contrib import transfer_to_npu
    2. 指定模型输入、输出路径。
      model_path = **
      quant_path = **
    3. 可以指定校准数据集路径,如calib_data="/path/to/pile-val",如不指定,默认数据集是“mit-han-lab/pile-val-backup”。
      model.quantize(tokenizer, quant_config=quant_config, calib_data="/path/to/pile-val", split="validation")
  3. 运行“examples/quantize.py”文件进行模型量化,量化时间和模型大小有关,预计30分钟~3小时。
    pip install transformers sentencepiece #安装量化工具依赖
    export ASCEND_RT_VISIBLE_DEVICES=0 #设置使用NPU单卡执行模型量化
    python examples/quantize.py

    详细说明可以参考vLLM官网:https://docs.vllm.ai/en/latest/quantization/auto_awq.html

Step2 权重格式转换

AutoAWQ量化完成后,使用int32对int4的权重进行打包。昇腾上使用int8对权重进行打包,需要进行权重转换。

进入llm_tools代码目录下执行以下脚本:

执行时间预计10分钟。执行完成后会将权重路径下的原始权重替换成转换后的权重。如需保留之前权重格式,请在转换前备份。

python  awq/convert_awq_to_npu.py --model /home/ma-user/Qwen1.5-72B-Chat-AWQ

参数说明:

--model:模型路径。

Step3 启动AWQ量化服务

参考Step3 启动推理服务,在启动服务时添加如下命令。

 --q awq 或者--quantization awq

相关文档