PDMIX量化
简介
PDMIX量化是指在模型推理的Prefill阶段和Decode阶段使用不同的量化方式。
量化方式 |
推理阶段 |
量化特点 |
适用场景 |
---|---|---|---|
W8A8 Pertoken |
Prefill |
每个token(通常指文本中的单词或子词单元)使用独立的量化参数。 |
|
W8A8 Pertensor |
Decode |
在整个张量上应用相同的量化参数。 |
|

仅支持LLama3.1-70B、Qwen2.5-14B、Qwen2.5-72B、Qwen3-14B和Qwen3-32B。
量化后权重目录结构:
├─ config.json ├─ quant_model_weight_w8a8_mix.safetensors ├─ quant_model_description.json ├─ tokenizer_config.json ├─ tokenizer.json └─ tokenizer.model
- 量化输出包含:权重文件quant_model_weight_w8a8_mix.safetensors和权重描述文件quant_model_description.json。
- 目录中的其余文件为推理时所需的配置文件,不同模型略有差异。
以下展示了量化后权重描述文件quant_model_description.json中的部分内容:
1 2 3 4 5 6 7 8 9 10 11 | { "model_quant_type": "W8A8_MIX", "model.embed_tokens.weight": "FLOAT", "model.layers.0.self_attn.q_proj.weight": "W8A8_MIX", "model.layers.0.self_attn.q_proj.weight_scale": "W8A8_MIX", "model.layers.0.self_attn.q_proj.weight_offset": "W8A8_MIX", "model.layers.0.self_attn.q_proj.input_scale": "W8A8_MIX", "model.layers.0.self_attn.q_proj.input_offset": "W8A8_MIX", "model.layers.0.self_attn.q_proj.quant_bias": "W8A8_MIX", "model.layers.0.self_attn.q_proj.deq_scale": "W8A8_MIX", } |
与W8A8量化权重相比,新增weight_scale和weight_offset,用于对Matmul的计算结果进行反量化。
量化权重推理流程同W8A8量化。
此量化方式支持量化bfloat16类型的原始权重。
Tensor信息 |
weight |
weight_scale |
weight_offset |
bias |
input_scale |
input_offset |
quant_bias |
deq_scale |
---|---|---|---|---|---|---|---|---|
dtype |
int8 |
bf16 |
bf16 |
bf16 |
bfloat16 |
bfloat16 |
int32 |
float32 |
shape |
[n, k] |
[n, 1] |
[n, 1] |
[n] |
[1] |
[1] |
[n] |
[n] |

仅当浮点权重存在bias场景时,量化权重才会有bias。
生成权重
以Qwen3-32B为例。
- 进入msModelSlim工具,修改如下文件:${MsModelSlim工具安装位置}/msmodelslim/practice_lab/Qwen/qwen3-dense-w8a8.yaml。
... calib_params: disable_level: L10 ...
- 使用以下指令生成W8A8量化权重。
msmodelslim quant --model_path {浮点权重路径} --save_path {pdmix量化权重路径} --device npu --model_type Qwen3-32B --config_path ./msmodelslim/practice_lab/Qwen/qwen3-dense-w8a8.yaml --trust_remote_code True
- 以上指令展示了生成Qwen3-32B pdmix权重的最优参数配置,不同模型的参数配置不同,请参考模型Readme文件。
执行推理
以Qwen3-32B为例,您可以使用以下指令执行对话测试,推理内容为"What's deep learning?",最长输出20个token。
cd ${ATB_SPEED_HOME_PATH}
torchrun --nproc_per_node 2 --master_port 12350 -m examples.run_pa --model_path {pdmix量化权重路径}
父主题: 量化