昇腾NPU910B服务器目前不支持模型FP8精度推理,为了进一步提高基于DeepSeek-R1-0528模型推理性能,需要将DeepSeek-R1-0528模型权重BF16转INT8权重,然后基于DeepSeek-R1-0528权重INT8精度进行推理,权重精度的转换基础环境基于昇腾MindIE镜像。
MindStudio ModelSlim量化工具介绍
昇腾模型压缩加速工具:一个以加速为目标、压缩为技术、昇腾为根本的亲和压缩工具。支持训练加速和推理加速,包括模型低秩分解、稀疏训练、训练后量化、量化感知训练等功能,昇腾AI模型开发用户可以灵活调用Python API接口,对模型进行性能调优,并支持导出不同格式模型,在昇腾AI处理器上运行。
配置环境
基于2.xx-800I-A2-py311-openeuler24.03-lts镜像环境,使用MindStudio ModelSlim工具进行DeepSeek-R1-0528权重精度INT8量化,并且本次模型转换是在离线的环境中进行。
(1)下载MindStudio ModelSlim昇腾模型压缩工具:
MindStudio ModelSlim下载路径如下所示:
https://gitee.com/ascend/msit/tree/br_noncom_MindStudio_8.0.0_POC_20251231
(2)搭建模型量化环境,启动容器,启动命令如下:
docker run -itd –privileged –name=deepseek –net=host –shm-size 500g \\
–device=/dev/davinci0 –device=/dev/davinci1 –device=/dev/davinci2 \\
–device=/dev/davinci3 –device=/dev/davinci4 –device=/dev/davinci5 \\
–device=/dev/davinci6 –device=/dev/davinci7 –device=/dev/davinci_manager \\
–device=/dev/hisi_hdc –device /dev/devmm_svm \\
-v /usr/local/Ascend/driver:/usr/local/Ascend/driver \\
-v /usr/local/Ascend/firmware:/usr/local/Ascend/firmware \\
-v /usr/local/sbin/npu-smi:/usr/local/sbin/npu-smi \\
-v /usr/local/sbin:/usr/local/sbin \\
-v /etc/hccn.conf:/etc/hccn.conf \\
-v /usr/local/dcmi:/usr/local/dcmi \\
-v /usr/local/bin/npu-smi:/usr/local/bin/npu-smi \\
-v /usr/local/sbin/npu-smi:/usr/local/sbin/npu-smi \\
-v /models:/models \\
swr.cn-south-1.myhuaweicloud.com/ascendhub/mindie:2.xx-800I-A2-py311-openeuler24.03-lts \\
bash
注:在启动容器时候将下载的MindStudio ModelSlim模型压缩工具挂载到容器中。
(3)离线下载easydict、transformers依赖包,下载示例命令如下:
pip download transformers==4.48.2 –platform manylinux2014_aarch64 –python-version 3.11 –implementation cp –abi cp311 –only-binary=:all: -d ./w8a8_bkg/
其中transformers为下载的依赖包,4.48.2为对应的transformers版本;platform manylinux2014_aarch64: 指定目标平台的兼容性标签,指定了适用于 manylinux2014 标准的 aarch64(ARM 64位架构)平台;python-version 3.11: 指定目标Python版本,这里是指Python 3.11;implementation cp: 指定实现方式,这里的 cp 表示 CPython,即最常用的Python解释器;abi cp311: 指定应用二进制接口,这里的 cp311 对应于 CPython 3.11 的ABI;only-binary=:all:: 这个选项表示只接受二进制分发版,不考虑源代码分发版,:all: 表示对所有包都应用这个规则;-d ./w8a8_bkg/指定下载的文件存放目录,这里的文件将会被下载到当前目录下的 ./w8a8_bkg/ 文件夹内。
(4)在离线内安装依赖包,离线安装命令如下:
pip install transformers==4.48.2 –no-index –find-links=./w8a8_bkg/
pip install easydict –no-index –find-links=./w8a8_bkg/
(5)转到模型压缩文件msit指定路径:
cd msit/msmodelslim
(6)运行安装脚本
bash install.sh
DeepSeek-R1-0528权重INT8精度量化
(1)使用npu多卡量化,配置多卡量化环境,命令如下所示:
export ASCEND_RT_VISIBLE_DEVICES=0,1,2,3,4,5,6,7
export PYTORCH_NPU_ALLOC_CONF=expandable_segments:False
(2)切换到量化脚本目录,示例命令如下:
cd msit-br_noncom_MindStudio_8.0.0_POC_20251231/msmodelslim/example/DeepSeek
(3)修改feature.npy权限,示例命令如下:
chmod 640 ./features.npy
(4)根据问题及解决(1)-(4)的解决方式进行配置文件及量化文件的修改与配置:
(5)执行量化脚本进行量化;
python3 quant_deepseek_w8a8.py –model_path {浮点权重路径} –save_path {W8A8量化权重路径}
问题及解决
(1)报错 This modeling file requires the following packages that were not found in your environment: flash_attn. Run 'pip install flash_attn'?
解决方式:当前环境中缺少flash_attn库且昇腾不支持该库,运行时需要注释掉权重文件夹中modeling_deepseek.py中的部分代码,如下图所示:
(2)modeling_utils.py报错 if metadata.get("format") not in ["pt", "tf", "flax", "mix"]: AttributeError: "NoneType" object has no attribute 'get';
解决方式:说明输入的的权重中缺少metadata字段,需安装更新transformers版本(>=4.48.2)。
(3)报错 Unknown quantization type, got fp8 – supported types are:['awq', 'bitsandbytes_4bit', 'bitsandbytes_8bit', 'gptq', 'aqlm', 'quanto', 'eetq', 'hqq', 'fbgemm_fp8']
解决方式:由于当前昇腾设备不支持FP8格式加载,需要将权重文件夹中config.json中的以下字段删除,如下图所示:
(4)遇到OOM显存不够报错?
解决方式:修改quant_deepseek_w8a8.py脚本,增加卡数,eg: max_memory={0: "50GiB", 1: "50GiB", "cpu": "1500GiB"}, 可以根据自己的卡数以及显存情况设置,如下图所示。
评论前必须登录!
注册