Anti-Outlier
离群值处理旨在解决在模型量化过程中由于数据分布异常导致的量化精度损失问题。在大模型量化中,离群值可能会导致量化后的模型性能下降,因为量化过程需要将连续的浮点数值转换为离散的整数值,而离群值可能会超出预期的量化范围。通过离群值抑制的技术手段可以减少或消除离群值对量化模型性能的影响,确保量化后的模型具有良好的精度表现。

Anti-Outlier量化当前需要配合W8A8量化方式一起使用。
和W8A8量化权重相比,使用了Attention量化的权重将在config.json的“quantization_config”字段中新增“fa_quant_type”描述字段、self_attn字段及下面包含的权重信息,其部分内容如下所示:
"quantization_config": { ... "model.layers.0.input_layernorm.weight": "W8A8", "model.layers.0.input_layernorm.bias": "W8A8", ... }
新增input_layernorm.weight和input_layernorm.bias权重,用于对激活值进行离群值处理。
图1 量化权重推理时流程

Tensor信息 |
input_layernorm.weight |
input_layernorm.bias |
---|---|---|
dtype |
float32 |
float32 |
shape |
[n] |
[n] |
生成权重
以LLaMA3.1-70B-Instruct模型为例,参考LLaMA3.1-70B W8A8量化方法,您可以使用以下指令生成W8A8+Anti-Outlier量化权重。
cd {msmodelslim安装路径}/example/Llama/ python3 quant_llama.py --model_path {浮点权重路径} --save_directory {W8A8量化权重路径} --calib_file ../common/boolq.jsonl --device_type npu --disable_level L5 --anti_method m3 --act_method 3
- Anti-Outlier特性由anti_method参数控制。
父主题: 量化特性