趋近智
量化 (quantization)感知训练(QAT)通过使用伪量化节点和直通估计器(STE)来模拟量化。这些技术被应用于将量化有效集成到对预训练 (pre-training)大型语言模型(LLM)进行微调 (fine-tuning)的实际操作流程中。
标准微调使用模型原始的高精度权重 (weight)(如FP32或BF16),使预训练模型适应特定的下游任务或数据集。QAT微调遵循类似原理,但有一个重要修改:模型学会执行任务,同时顾及低精度算术的影响。
第一步是取一个预训练 (pre-training)的、全精度模型,并为QAT做好准备。这需要修改模型架构,插入“伪量化 (quantization)”操作。如前所述,这些操作在正向传播时模拟量化和反量化值的效果,同时在反向传播 (backpropagation)时允许梯度不受影响地通过(或使用STE)。
在此准备阶段,重要的决策包括:
nn.Linear)是主要选项,因为它们计算量大。嵌入 (embedding)层也可以考虑,尽管它们的量化有时更敏感。通常,靠近输入或输出的层,或通过性能分析显示敏感的层,可能会被排除在外或量化到更高精度。深度学习 (deep learning)框架通常提供实用工具,根据配置文件或指定设置自动插入这些伪量化节点。例如,您可以指定所有线性层应使用对称逐通道量化将其权重量化为INT8,并使用非对称逐张量量化将其激活量化。
一旦模型准备好伪量化 (quantization)节点,微调过程就开始了。它与标准微调循环大致相同,但量化模拟处于活动状态。
以下是典型训练步骤的分解:
正向传播: 输入数据通过模型传播。当执行到达为QAT准备的层时:
反向传播 (backpropagation): 损失梯度被计算并反向传播通过网络。直通估计器(STE)确保梯度可以流回伪量化节点,在梯度计算时有效忽略真实量化函数 的不可微特性。
权重更新: 优化器根据计算出的梯度更新原始高精度权重。重要的一点是,模型学习到的权重值能够应对正向传播过程中模拟量化过程引入的噪声和信息损失。
这一迭代过程使模型不仅能使其参数 (parameter)适应微调任务,还能适应目标低精度表示的限制。
简化了正向传播过程中QAT已启用层内的数据流,显示了伪量化节点的插入。反向传播使用STE更新原始全精度权重。
使用QAT进行微调 (fine-tuning)会带来一些特定考量:
需要记住,QAT微调 (fine-tuning)过程的输出仍然是一个具有高精度权重 (weight)和伪量化 (quantization)节点的模型。权重已经过优化,在模拟量化下表现良好,但模型本身尚未转换为适合部署的低精度整数格式。
最后一步是将这个经过QAT微调的模型转换为一个真正的量化模型。此转换使用习得的量化参数 (parameter)(通常从QAT期间观察或习得的范围中导出)将优化的FP32权重转换为其INT8(或INT4等)表示。伪量化节点被实际的量化和反量化操作取代(如果硬件支持,则可融合为纯整数操作)。生成模型现在已准备好部署,充分利用了量化感知微调过程带来的精度优势。
这一过程与PTQ(训练后通过单独的校准步骤确定量化参数,且权重未明确训练以抵抗量化噪声)形成对比。通过将这种感知集成到微调循环中,QAT为在最终量化模型中实现更高精度提供了途径,尤其是在较低位宽下。
这部分内容有帮助吗?
© 2026 ApX Machine Learning用心打造