更新时间:2025-10-14 GMT+08:00
分享

准备W4A8权重

前提条件

请先将FP8权重转换成BF16权重,可以参考如下代码:

git clone https://modelers.cn/MindIE/deepseekv3.git
cd deepseekv3/NPU_inference/
python fp8_cast_bf16.py --input-fp8-hf-path <fp8-model-path> --output-bf16-hf-path <bf16-model-path>

W4A8权重量化

  1. 根据表2获取相应资源的推理基础镜像,并启动容器:
    crictl pull swr.cn-southwest-2.myhuaweicloud.com/atelier/pytorch_2_1_ascend:pytorch_2.1.0-cann_8.2.rc1-py_3.11-hce_2.0.2503-aarch64-snt9b23-20250729103313-3a25129
  2. 准备量化工具。下载量化工具并在容器中安装,whl包名称请根据实际情况修改。
    git clone https://gitee.com/omniai/omniinfer.git
    cd omniinfer/
    git checkout 937baa53c59b57532a5670705ae9f4eed77dd034
    cd tools/quant/python/
    python setup.py bdist_wheel
    pip install dist/optiquant-0.0.1-cp311-cp311-linux_aarch64.whl
  3. 准备配置文件。将FP8权重的配置文件拷贝到量化目录下,例如FP8权重位于/mnt/deepseek/model/fp8,计划将W4A8量化权重保存的目录为/mnt/deepseek/model/w4a8,则拷贝命令如下:
    cp -rf /mnt/deepseek/model/fp8/*.json  /mnt/deepseek/model/w4a8/
    cp -rf /mnt/deepseek/model/fp8/*.py  /mnt/deepseek/model/w4a8/
  4. 指定使用的卡号,不配置则默认使用0号卡:
    export ASCEND_RT_VISIBLE_DEVICES=0
    export PYTORCH_NPU_ALLOC_CONF=expandable_segments:False #关闭NPU虚拟内存
  5. 执行int4量化,量化脚本在tools/quant目录下,权重路径配置请根据实际情况修改:
    cd ..
    python quant_deepseek_kimi2.py --input-bf16-hf-path {BF16权重路径} --output-path {量化权重路径} --device "npu" --w4
  6. 将量化好的权重上传至存储配置中的挂载目录的子目录,例如:/mnt/deepseek/model。权重保存路径不能包含英文句号"."等特殊字符。

相关文档