离群值处理旨在解决在模型量化过程中由于数据分布异常导致的量化精度损失问题。在大模型量化中,离群值可能会导致量化后的模型性能下降,因为量化过程需要将连续的浮点数值转换为离散的整数值,而离群值可能会超出预期的量化范围。通过离群值抑制的技术手段可以减少或消除离群值对量化模型性能的影响,确保量化后的模型具有良好的精度表现。
Anti-Outlier量化可以配合其他量化方式一起使用。当前支持:W8A8 + Anti-Outlier,W8A16 + Anti-Outlier和W8A8SC + Anti-Outlier。
{ "model_quant_type": "W8A8", "model.embed_tokens.weight": "FLOAT", "model.layers.0.input_layernorm.weight": "FLOAT", "model.layers.0.input_layernorm.module.weight": "W8A8", "model.layers.0.input_layernorm.module.bias": "W8A8" }
新增input_layernorm.module.weight和input_layernorm.module.bias权重,用于对激活值进行离群值处理。
Tensor信息 |
layernorm.module.weight |
layernorm.module.bias |
---|---|---|
dtype |
float32 |
float32 |
shape |
[n] |
[n] |
以LLaMa2-7B为例,您可以使用以下指令生成W8A8量化权重。
cd ${ATB_SPEED_HOME_PATH} python examples/models/llama/convert_quant_weights.py --model_path {浮点权重路径} --save_directory {W8A8量化权重路径} --w_bit 8 --a_bit 8 --disable_level L0 --device_type cpu --anti_method m1 --act_method 1 --calib_file ${llm_path}/examples/convert/model_slim/boolq.jsonl
以LLaMa2-7B为例,您可以使用以下指令执行对话测试,推理内容为"What's deep learning?"。
cd ${ATB_SPEED_HOME_PATH} bash examples/models/llama/run_pa.sh {W8A8量化权重路径}