llmcompressor.modifiers.logarithmic_equalization.base
类
-
LogarithmicEqualizationModifier–实现了对数均衡算法
LogarithmicEqualizationModifier
Bases: SmoothQuantModifier
实现了来自 https://arxiv.org/abs/2308.15987 的对数均衡算法。该修改器对激活中的离群值进行通道级别的平滑处理,通过减小动态范围使其更容易量化。通过将反向操作应用于下一层权重来抵消平滑,使权重量化稍微困难一些。
由于此修改器会操作模型的权重,因此应仅在一次性(one-shot)应用中使用,而不能在训练期间使用。激活范围是通过让一小部分校准数据通过模型来确定的。
该算法与 SmoothQuant 非常相似,仅在平滑缩放的计算方式上有所不同。此修改器继承了 SmoothQuantModifier 的大部分功能。
示例配方
LogarithmicEqualizationModifier:
mappings: [
[["re:.*q_proj", "re:.*k_proj", "re:.*v_proj"], "re:.*self_attn_layer_norm"],
[["re:.*fc1"], "re:.*final_layer_norm"]
]
ignore: ["model.decoder.final_layer_norm"]
参数
-
–mappings列出要平滑的激活层,以及要缩放输出以实现激活平滑的层。映射列表的每个条目本身都应该是一个列表,其中第一个条目是共享相同输入激活(要平滑的激活)的层列表,第二个条目是输出被缩放以实现平滑的层。如果使用正则表达式,它将匹配模块名称中重叠最大的层。
-
–ignore要忽略的层列表,即使它们匹配映射中的正则表达式。它应该匹配其输出被缩放以实现平滑的层的名称(映射列表的第二个条目)。
-
–num_calibration_steps用于校准的样本数量,或 None 表示使用整个数据集
-
–calibration_function用于前向传播的可选函数,或 None 表示使用默认的 tensor_module_forward