更新时间:2025-09-12 GMT+08:00
分享

准备W8A8权重

前提条件

DeepSeek模型较大,且存在需要手动适配的点,为了避免浪费时间,还请在运行脚本前,请根据以下步骤对相关内容进行更改。

  1. 昇腾不支持flash_attn库,运行时需要注释掉权重文件夹中modeling_deepseek.py中的部分代码:

  2. 需要安装transformers指定版本4.48.2,执行如下命令:

    pip install transformers==4.48.2

  3. 当前Transformers不支持FP8量化格式加载,需要将权重文件夹中config.json中的以下字段删除:

W8A8权重量化

  1. 权重量化参考昇腾模型压缩工具:https://gitee.com/ascend/msit/blob/master/msmodelslim/README.md
  2. 执行install过程会下载依赖包,因此需要确保能够访问到pip源。
  3. 量化过程依赖NPU资源。

介绍如何将FP8权重量化为W8A8的权重,具体操作步骤如下。

  1. 基于该基础镜像启动容器,进行权重量化。

    crictl pull swr.cn-southwest-2.myhuaweicloud.com/atelier/pytorch_ascend:pytorch_2.5.1-cann_8.1.rc1-py_3.10-hce_2.0.2503-aarch64-snt9b-20250514161205-a9c5055

  2. 按顺序执行以下命令,开始量化:

    # 推荐该验证过的分支
    git clone https://gitee.com/ascend/msit -b 8.0.RC1_ZS2.0_20251230
    
    # 安装msmodelslim,{path}需要替换为msit/msmodelslim所在的绝对路径
    cd msit/msmodelslim
    bash install.sh
    export PYTHONPATH={path}:$PYTHONPATH
    
    cd example/DeepSeek/
    python3 quant_deepseek_w8a8.py --model_path {FP8原始权重路径} --save_path {W8A8量化权重路径}  --dynamic --disable_anti --quant_mtp --from_fp8

    说明:

    1. 如果开启MTP,则需要指定融合权重,参考MTP融合权重
    2. 如果首次加载权重较慢,需要在quant_deepseek_w8a8.py脚本中新增set_initialized_submodules方法,参考首次加载权重较慢

  3. W8A8量化替换配置文件 - config.json替换掉权重文件夹中原来的文件。(V3与R1模型一致)
  4. 将量化好的权重上传至存储配置中的挂载目录的子目录,例如:/mnt/deepseek/model。

量化参数说明:

参数

约束

描述

开启方式

--model_path

必选

输入DeepSeek原始权重路径

需要传参

--save_path

必选

输出量化后权重保存路径

需要传参

--anti_dataset

可选

离群值抑制校准集路径

需要传参

--calib_dataset

可选

量化校准集路径

需要传参

--batch_size

可选

生成量化校准数据时使用的batch size。batch size越大,校准速度越快,但也要求更多的显存和内存,如资源受限,请降低batch size。默认值为4。

需要传参

--from_fp8

可选

指定原模型为FP8权重

指定即开启

--dynamic

可选

是否使用动态量化

指定即开启

--disable_anti

可选

是否禁用离群值抑制

指定即开启

--quant_mtp

可选

是否开启MTP层的W8A8动态量化

指定即开启

相关文档