Qwen3-MOE 量化案例

模型介绍

  • Qwen3-235B-A22BQwen3-30B-A3B Qwen3 是 Qwen 系列中最新一代大型语言模型,提供全面的密集模型和混合专家 (MoE) 模型。Qwen3 基于丰富的训练经验,在推理、指令遵循、代理能力和多语言支持方面取得了突破性进展。其中Qwen3-MoE结构模型典型代表模型有Qwen3-235B-A22B和Qwen3-30B-A3B。

环境配置

  • 环境配置请参考使用说明
  • transformers版本需要配置安装4.51.0版本
    • pip install transformers==4.51.0

支持的模型版本与量化策略

模型系列 模型版本 HuggingFace链接 W8A8 W8A16 W4A8 W4A16 W4A4 稀疏量化 KV Cache Attention 量化命令
Qwen3-MOE Qwen3-30B-A3B Qwen3-30B-A3B W8A8 /W4A8
Qwen3-235B-A22B Qwen3-235B-A22B W8A8 /W4A8

说明:

  • ✅ 表示该量化策略已通过msModelSlim官方验证,功能完整、性能稳定,建议优先采用。
  • 空格表示该量化策略暂未通过msModelSlim官方验证,用户可根据实际需求进行配置尝试,但量化效果和功能稳定性无法得到官方保证。
  • 点击量化命令列中的链接可跳转到对应的具体量化命令

量化权重生成

- 量化权重可使用[quant_qwen_moe_w8a8.py](./quant_qwen_moe_w8a8.py)脚本生成。

quant_qwen_moe_w8a8.py 量化参数说明

参数名 含义 默认值 使用方法
model_path 浮点权重路径 无默认值 必选参数;
输入Qwen3-MOE权重目录路径。
save_path 量化权重路径 无默认值 必选参数;
输出量化结果目录路径。
layer_count 模型层数 0 可选参数;
用于调试,实际量化的层数。0表示使用所有层。
anti_dataset 反异常值校准数据集路径 ../common/qwen3-moe_anti_prompt_50.json 可选参数;
用于反异常值处理的校准数据集路径。
calib_dataset 量化校准数据集路径 ../common/qwen3-moe_calib_prompt_50.json 可选参数;
量化校准集路径。
batch_size 输入batch size 4 可选参数;
生成量化校准数据时使用的batch size。batch size越大,校准速度越快,但也要求更多的显存和内存,如资源受限,请降低batch size。
mindie_format 是否开启旧的权重配置文件保存格式 False 开启mindie_format时保存的量化权重格式能够兼容MindIE 2.1.RC1及之前的版本。
trust_remote_code 是否信任自定义代码 False 指定trust_remote_code=True让修改后的自定义代码文件能够正确地被加载(请确保所加载的自定义代码文件来源可靠,避免潜在的安全风险)。
rot 开启基于旋转矩阵的预处理 不开启 可选参数;开启即指定。

注:在量化脚本里面通过transformers库对模型进行加载时,调用from_pretrained函数时会指定trust_remote_code=True让修改后的modeling文件能够正确地被加载(请确保所加载的modeling文件来源可靠,避免潜在的安全风险)。

更多参数配置要求,请参考量化过程中配置的参数 QuantConfig 以及量化参数配置类 Calibrator

使用案例

  • 请将{浮点权重路径}和{量化权重路径}替换为用户实际路径。

  • 如果需要使用NPU多卡量化,请先配置环境变量,支持多卡量化:

    export ASCEND_RT_VISIBLE_DEVICES=0,1,2,3,4,5,6,7
    export PYTORCH_NPU_ALLOC_CONF=expandable_segments:False
    

Qwen3-30B-A3B

Qwen3-30B-A3B W8A8混合量化

生成Qwen3-30B-A3B模型W8A8混合量化权重(Attention:w8a8量化,MoE:w8a8 dynamic量化)

python3 quant_qwen_moe_w8a8.py --model_path {浮点权重路径} \
--save_path {W8A8量化权重路径} \
--anti_dataset ../common/qwen3-moe_anti_prompt_50.json \
--calib_dataset ../common/qwen3-moe_calib_prompt_50.json \
--trust_remote_code True
Qwen3-30B-A3B W4A8混合量化

生成Qwen3-30B-A3B模型W4A8混合量化权重(Attention:w8a8 dynamic量化,MoE:w4a8 dynamic量化)

msmodelslim quant --model_type Qwen3-30B --model_path {浮点权重路径} --save_path {W4A8量化权重路径} --quant_type w4a8 --trust_remote_code True

Qwen3-235B-A22B

Qwen3-235B-A22B W8A8混合量化

生成Qwen3-235B-A22B模型W8A8混合量化权重(Attention:w8a8量化,MoE:w8a8 dynamic量化)

python3 quant_qwen_moe_w8a8.py --model_path {浮点权重路径} \
--save_path {W8A8量化权重路径} \
--anti_dataset ../common/qwen3-moe_anti_prompt_50.json \
--calib_dataset ../common/qwen3-moe_calib_prompt_50.json \
--trust_remote_code True \
--rot
Qwen3-235B-A22B W4A8混合量化

生成Qwen3-235B-A22B模型W4A8混合量化权重(Attention:w8a8 dynamic量化,MoE:w4a8 dynamic量化)

msmodelslim quant --model_type Qwen3-235B --model_path {浮点权重路径} --save_path {W4A8量化权重路径} --quant_type w4a8 --trust_remote_code True