最近qwen2.5系列模型有点火,在昇腾上跑了一下,发现性能稍微有点弱,于是想采用量化推理来提升一下性能,在昇腾官网找到了这篇指导:https://www.hiascend.com/software/modelzoo/models/detail/bd96...
于是决定采用w8a8量化进行推理性能优化。
1. 下载模型权重
建议从魔乐社区下载权重,速度很快,不用配置代理:
# 首先保证已安装git-lfs(https://git-lfs.com)
git lfs install
git clone https://modelers.cn/PyTorch-NPU/Qwen2.5_7B_Instruct.git
2. 权重转换
参考官网指导,执行如下代码即可进行权重量化:
- 下载msmodelslim量化工具
- 下载地址为https://gitee.com/ascend/msit/tree/master/msmodelslim
- 根据msmodelslim量化工具readme进行相关操作
注: 安装完cann后 需要执行source set_env.sh 声明ASCEND_HOME_PATH值 后续安装msmodelslim前需保证其不为空
# 执行"jq --version"查看是否安装jq,若返回"bash:jq:command not found",则依次执行"apt-get update"和"apt install jq",或者"sudo yum install jq"
jq --version
cd ${llm_path}
# 指定当前机器上可用的逻辑NPU核心 通过修改convert_quant_weight.sh文件中export ASCEND_RT_VISIBLE_DEVICES值 指定使用卡号及数量
# 7b系列使用单卡 eg: ASCEND_RT_VISIBLE_DEVICES=0
vi examples/models/qwen/convert_quant_weight.sh
# 生成w8a8量化权重
bash examples/models/qwen/convert_quant_weight.sh -src {浮点权重路径} -dst {W8A8量化权重路径} -type qwen_w8a8
执行上面的命令后,结果如下:
量化成功!
3. 执行推理
完成权重量化后,就可以执行推理了,参考官网的指导,执行如下命令进行推理测试:
cd /usr/local/Ascend/atb-models
bash examples/models/qwen/run_pa.sh -m ${weight_path} --trust_remote_code true
但是执行的时候,遇到如下报错:linear type not matched, please check 'config.json' 'quantize' parameter
说实话,如果经验不足,看到这个报错,会去检查config哪里有问题,这样的可能花费很久也找不出原因。
我是怎么发现原因的呢,我看到这个报错出现了多次,数了一下正好是8次,猜测可能是启动了8卡并行推理,于是检查了一下run_pa.sh,发现默认确实是使用了8卡推理:
由于我们权重转换时。选择的是单卡,所以这里也要改成单卡:
修改之后,执行成功:
本文由博客一文多发平台 OpenWrite 发布!
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。