最近 qwen2.5 系列模型有点火,在昇腾上跑了一下,发现性能稍微有点弱,于是想采用量化推理来提升一下性能,在昇腾官网找到了这篇指导:https://www.hiascend.com/software/modelzoo/models/detail/bd96097296c3426aa3827a8a7cbeb8c6于是决定采用 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 卡推理:
由于我们权重转换时。选择的是单卡,所以这里也要改成单卡:
修改之后,执行成功:
评论