llmcompressor.modifiers.autoround
模块
-
base–
类
-
AutoRoundModifier–实现了来自 https://aclanthology.org/2024.findings-emnlp.662.pdf 的 AutoRound 算法。
AutoRoundModifier
基类:Modifier, QuantizationMixin
实现了来自 https://aclanthology.org/2024.findings-emnlp.662.pdf 的 AutoRound 算法。此修改器利用带符号梯度下降 (SignSGD) 优化器和块式损失,在几个步骤内优化舍入值和权重裁剪。
示例 yaml
test_stage:
modifiers:
AutoRoundModifier:
iters: 200
config_groups:
group_0:
targets:
- "Linear"
input_activations: null
output_activations: null
weights:
num_bits: 4
type: "int"
symmetric: true
strategy: group
group_size: 128
生命周期
- on_initialize
- 将配置应用于模型
- on_start
- 向解码层添加输入捕获钩子
- on_sequential_epoch_end
- apply_autoround
- post_autoround_cleanup
- on_finalize
- remove_hooks()
- model.apply(freeze_module_quantization)
参数
-
–config_groups字典,指定要应用于目标模块的量化方案。不符合方案目标的模块将不被量化。
-
–targets如果提供了方案,则为要量化的层名称列表。默认为线性层。
-
–ignore可选的模块类名或子模块名列表,即使它们与 config_groups 中的目标匹配,也不进行量化。默认为空列表。
-
–scheme应用于模型的单个量化方案。这是一个支持 QuantizationScheme 所有键的字典,除了 targets,它将设置为在修改器级别设置的 targets 参数。
方法
-
apply_autoround–对当前解码层应用 AutoRound 量化调优。
-
on_end–通过移除观察者和校准钩子来完成校准
-
on_finalize–禁用 AutoRound 算法使用的量化观察器
-
on_initialize–初始化模型的量化和校准状态。
-
start_calibration–注册激活校准钩子并在我们校准时启用量化
apply_autoround
对当前解码层应用 AutoRound 量化调优。
调优逻辑如下:对于 iter in range(iters): quant_output = forward(layer, cached_inputs) loss = mse_loss(quant_output, original_output) loss.backward() optimizer.step() if loss < best_loss: best_params = update_params(layer)
更多详情,请参考 AutoRound 仓库: https://github.com/intel/auto-round/
源代码位于 llmcompressor/modifiers/autoround/base.py
on_end
通过移除观察者和校准钩子来完成校准
源代码位于 llmcompressor/modifiers/autoround/base.py
on_finalize
禁用 AutoRound 算法使用的量化观察器
参数
-
(stateState) –存储输入模型和校准数据的会话状态
源代码位于 llmcompressor/modifiers/autoround/base.py
on_initialize
初始化模型的量化和校准状态。
参数
-
(stateState) –存储输入模型和校准数据的会话状态
源代码位于 llmcompressor/modifiers/autoround/base.py
start_calibration
注册激活校准钩子并在我们校准时启用量化
参数
-
(modelModule) –准备用于校准的模型