昇腾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"}, 可以根据自己的卡数以及显存情况设置,如下图所示。

Logo

昇腾计算产业是基于昇腾系列(HUAWEI Ascend)处理器和基础软件构建的全栈 AI计算基础设施、行业应用及服务,包括昇腾系列处理器、系列硬件、CANN、AI计算框架、应用使能、开发工具链、管理运维工具、行业应用及服务等全产业链

更多推荐