趋近智
训练后量化 (PTQ) 可能导致精度下降,尤其是在较低位深时。为解决这个问题,量化感知训练 (QAT) 提供了一种不同的方法。QAT 不对已完全训练好的模型进行量化,而是在训练或微调过程中引入量化的影响。主要思路不是直接使用低精度算术进行整个训练,因为这会给梯度计算带来困难。相反,QAT 在标准浮点训练框架内模拟量化的影响。
实现这种模拟的机制通常被称为“伪量化”或“模拟量化”。它涉及在训练期间将特殊节点或操作插入到模型的计算图中。这些伪量化操作在前向传播中执行以下步骤:
因此,伪量化节点的输出仍然是浮点张量。但是,它的值现在受到了限制;它们仅表示目标低精度数据类型(例如INT8)能够精确表示的那些特定浮点数。
从数学上看,如果 是输入浮点张量,伪量化过程 可以表示为:
在这里, 将 映射到低精度范围(如INT8), 将其映射回浮点范围。关键是 包含了量化过程中固有的误差或信息损失。
在训练的前向传播过程中,这些伪量化操作被策略性地放置在模型架构内。常见的位置包括:
下图说明了伪量化节点如何改变激活张量在两层之间流动时的前向传播。
标准训练与QAT前向传播流程对比。在QAT中,伪量化节点在激活值传递到下一层之前,模拟对激活值进行量化的影响。
通过使用这些略微改变的、“感知量化误差”的张量 () 进行计算,模型在训练期间学会调整其权重。优化过程(如随机梯度下降)在考虑真实量化后将存在的精度限制下,隐式地最小化损失函数。模型调整其参数,以更好地抵抗量化过程引入的噪声和信息损失。
尽管前向传播模拟相对简单,但反向传播却带来了一个难题。量化函数本身(从浮点数到整数的映射)涉及舍入或向下取整操作,这些操作在几乎所有地方的梯度都为零。这种不可微性意味着标准反向传播无法通过伪量化节点内的 quantize 步骤计算梯度。
为解决此问题,QAT 在反向传播期间依赖于一种梯度计算的近似方法。这种被称为“直通估计器 (STE)”的方法,有效使梯度绕过不可微的量化步骤,从而使模型的权重得以更新。我们将在下一节中详细考察STE。
总之,通过伪量化节点在训练期间模拟量化影响是QAT的核心机制。它使模型能够主动适应低精度算术的限制,与PTQ相比,这通常会使最终量化模型获得明显更高的精度,尤其对于激进量化(例如4位)更是如此。
这部分内容有帮助吗?
© 2026 ApX Machine Learning用心打造