云计算百科
云计算领域专业知识百科平台

基于昇腾NPU910B服务器DeepSeek-R1-0528模型权重BF16精度转INT8精度

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

赞(0)
未经允许不得转载:网硕互联帮助中心 » 基于昇腾NPU910B服务器DeepSeek-R1-0528模型权重BF16精度转INT8精度
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!