趋近智
尽管对大型语言模型(LLM)中的大型线性层进行量化 (quantization)通常会带来显著的性能提升,但其他重要组成部分,特别是注意力机制 (attention mechanism)和归一化 (normalization)层,面临着独特的挑战。对这些部分简单地应用标准量化技术可能会过度降低模型准确性,因为它们的操作通常比简单的矩阵乘法对数值精度更敏感。了解这些敏感性对于制定有效的量化策略很要紧。
自注意力 (self-attention)机制是Transformer架构的基础,使模型在处理序列数据时能够权衡不同token的重要性。然而,注意力计算中的几个步骤对量化噪声很敏感。
Softmax函数用于将原始注意力分数()转换为概率,它众所周知难以有效量化 (quantization)。其指数性质意味着输入值的微小变化,特别是接近零的值,可能导致输出概率的较大变化。此外,输出分布被限制在0到1之间。量化,特别是低比特量化,会引入噪声,从而扭曲这些概率,可能导致模型关注不正确的token或将注意力分布得过宽或过窄。
量化输入(原始注意力分数)或softmax计算中的中间值可能导致最终注意力权重 (weight)出现较大误差。由于这种敏感性,一个常见策略是保持softmax计算使用更高精度,例如FP16甚至FP32,即使周围的矩阵乘法(Q、K、V投影)被量化到INT8或INT4等较低比特宽度。
查询点积()的中间结果通常呈现高动态范围。一些分数可能非常大,而另一些则很小但对于捕获细微关系仍可能重要。标准量化 (quantization)方法(如min-max缩放)难以处理此类分布。如果量化范围设置为适应较大的异常值分数,则较小分数的精度会变得非常粗糙,实际上抹去它们的信息。
考虑对称量化中的缩放因子:
其中是被量化的张量,是比特宽度。较大的最大绝对值会导致较大的,从而产生较大的量化步长。这意味着中较小的值在量化后会被映射到接近零的值,丢失它们的信息内容。
解决此问题的策略包括:
注意力机制 (attention mechanism)的最后一步涉及聚合由softmax计算出的注意力概率加权的值向量 (vector)()。在量化 (quantization)或注意力概率过程中引入的误差会在此加权和过程中累积,导致注意力机制输出的不准确性。
像层归一化(LayerNorm)和RMS归一化(RMSNorm)这样的归一化层对稳定训练和提升LLM性能很要紧。它们通过标准化层内的激活值来工作。
LayerNorm计算层内激活值的均值()和方差(),归一化激活值,然后应用可学习的缩放()和平移()参数 (parameter):
RMSNorm是一种更简单的变体,它使用均方根统计量进行归一化,省略了中心化(均值减法)和平移参数 (parameter)():
量化 (quantization)归一化 (normalization)层的主要挑战在于统计量(、或RMS)的计算。这些统计量是根据激活值计算的。如果激活值本身以低精度量化,产生的噪声会显著扰动计算出的均值、方差或RMS。此误差随后通过归一化公式传播,可能使网络不稳定或改变其表征能力。
例如,在计算和之前量化输入可能导致这些统计量的不准确估计。除法运算(通过或)也对分母中的误差敏感,尤其当方差或RMS较小时。
鉴于这些挑战,对整个LLM进行纯粹统一的低比特量化 (quantization)通常是次优的。一种更实用和有效的策略是混合精度量化。这涉及根据模型不同部分的敏感性有选择地对它们应用不同精度级别。
通常:
下图描绘了一个Transformer块段内潜在的混合精度方案。
这是一个Transformer块内潜在混合精度应用的简化视图,其中强调了softmax和归一化计算使用更高精度,而线性投影使用较低精度。输入/输出类型取决于整体模型配置。
成功量化LLM需要摒弃将模型视为统一操作序列的做法。注意力机制 (attention mechanism)和归一化层因其操作特性和对数值精度的敏感性而需要专门考虑。采用混合精度方法,可能与QAT和专门的量化方案结合,经常需要以取得显著的性能提升,而不造成不可接受的模型准确性损失。前几章讨论的PTQ(如GPTQ/AWQ)技术主要侧重于线性层;调整或结合这些与针对敏感组件的策略是高级量化实践的一个重要方面。
这部分内容有帮助吗?
© 2026 ApX Machine LearningAI伦理与透明度•