llmcompressor.modifiers.logarithmic_equalization
模块
-
base–
类
-
LogarithmicEqualizationModifier–实现了源自
LogarithmicEqualizationModifier
Bases: SmoothQuantModifier
实现了源自 https://arxiv.org/abs/2308.15987 的对数均衡算法。此修改器对激活中的异常值进行通道级别的平滑处理,从而通过减小动态范围使其更易于量化。通过对下一层权重应用逆操作来抵消平滑处理,这使得权重更难量化。
由于此修改器会操纵模型的权重,因此它只能一次性使用,不能在训练期间使用。激活范围是通过让一小组校准数据通过模型来确定的。
此算法与 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