AB
AiBoss站
百科

什么是量化感知训练(Quantization-Aware Training)?一种让模型在低精度下恢复精度的训练方法

量化感知训练(QAT)是在预训练之后追加一个训练阶段、让模型在前向路径中直接处理量化数值的技术,用于在低精度推理格式下恢复精度。NVIDIA 开发者博客将其与量化感知蒸馏(QAD)并列,视为训练后量化(PTQ)校准不足时的补充手段;arXiv 论文则讨论了全精度阶段与 QAT 阶段之间的算力分配问题。

量化感知训练(Quantization-Aware Training,QAT)是一种在模型预训练完成之后追加训练阶段、让模型在前向路径中直接使用量化数值进行运算的技术,目的是产出一个在低精度推理格式下仍然保持较高精度的量化模型。它要解决的问题是:把全精度模型直接压缩成低精度格式时,精度往往出现明显下降,而 QAT 通过让权重和激活在训练中提前适应低精度的可表示范围,缩小这一落差。

为什么重要

按照 NVIDIA 开发者博客的说明,模型训练完成之后可以用多种压缩技术为部署做准备,其中最常见的是训练后量化(Post-Training Quantization,PTQ):它借助数值缩放技术,用较低精度的数据类型近似表示模型权重。PTQ 的流程简单,不需要重新训练,因此在部署环节被广泛采用。

但博客同时指出,PTQ 依赖一个校准数据集来确定量化参数,当简单的校准无法满足精度要求时,它的效果就会打折扣。QAT 与量化感知蒸馏(Quantization-Aware Distillation,QAD)正是为补上这一缺口而提出的两种策略:它们主动让模型为低精度环境做准备,而不是在训练结束后被动地做数值近似。博客称,这种适应过程使从高精度到低精度的过渡更为平滑,通常能带来更多的精度恢复。

另一层重要性来自算力规划。arXiv 论文《Compute-Optimal Quantization-Aware Training》指出,已有工作表明把训练拆分为一个全精度(FP)阶段加一个 QAT 阶段,其精度优于单独使用 QAT;但两个阶段之间如何分配算力此前并不清楚。该论文通过实验研究这一分配问题,说明 QAT 不只是「多训一会儿」的工程技巧,其训练时长本身就是一个需要规划的变量。

工作机制

根据 NVIDIA 开发者博客的描述,QAT 的核心做法可以拆成以下几个要点。

  • 在量化配方之后插入训练阶段。博客称 QAT 的工作流与 PTQ 几乎相同,关键差别在于:对原始模型应用量化配方(quantization recipe)之后,再注入一个训练阶段。也就是说,量化不再是部署前的最后一步,而是训练流程中的一环。
  • 前向路径使用量化数值。与 PTQ 在全精度训练结束后再做量化不同,QAT 在前向路径中就用量化后的数值训练模型,使高精度的权重和激活去适应新格式的可表示范围。
  • 伪量化(fake quantization)。博客指出,QAT 通常在前向传播中使用「伪量化」的权重和激活:通过量化/反量化(quantize/dequantize)算子,在较高精度的数据类型内部表示低精度。因此 QAT 并不要求硬件原生支持低精度格式——例如针对 NVFP4 的 QAT 可以在 Hopper GPU 上以模拟量化的方式完成。
  • 反向传播保持高精度。博客说明,QAT 可以自然嵌入现有的高精度流水线,反向梯度以较高精度计算,量化则被建模为一个直通操作(straight-through estimation,STE)。此外还可能采用清零离群值梯度等额外步骤。
  • 目标与量化训练不同。博客特别区分了 QAT 与 quantized training:后者的目标是提升训练效率,而 QAT 的目标是产出一个用于推理的高精度量化模型。因此 QAT 可能采用对训练吞吐并不最优、但能让推理模型更准确的方法。

在算力分配层面,arXiv 论文给出了另一组机制性结论。作者在多种算力预算、QAT 位宽以及 86.0M 到 2.2B 的模型规模上开展实验,考察不同 QAT 时长对最终性能的影响。论文称,与此前发现的结论相反,QAT 与 FP 训练之间的损失最优比例会随总算力增加而上升;并且该最优比例可以在较宽的模型规模和量化位宽范围内,用「每参数字节对应的 token 数」(tokens-per-parameter-byte)这一统计量较准确地预测。论文据此推导出一个损失缩放律(loss scaling law),用于预测最优 QAT 比例以及不同 QAT/FP 算力分配策略和 QAT 位宽下的最终模型性能。论文还提出一种冷却与 QAT 融合(cooldown and QAT fusion)的方法,把学习率衰减与量化感知训练合并执行,从而省去冗余的全精度模型更新。

典型例子

NVIDIA 开发者博客给出了一个具体的工具与数据组合。博客称 TensorRT Model Optimizer 提供与 PyTorch 和 Hugging Face 原生兼容的 API,开发者可以用熟悉的训练工作流和 NVFP4、MXFP4 等格式应用 QAT 与 QAD;模型训练完成后可通过 TensorRT-LLM 导出和部署。

在基准测试方面,博客称在 Llama Nemotron Super 上,QAD 在 Math-500 和 AIME 2024 等任务上相对 PTQ 恢复了 4% 到 22% 的精度;而在视觉语言基准上,NVFP4 由于保留了更细粒度的缩放,表现始终优于 MXFP4。需要说明的是,这些数字来自该博客自身的测试,属于厂商给出的结果,并非独立复现的行业基准。

arXiv 论文则提供了实验设计层面的例子:作者在不同算力预算、不同 QAT 位宽和从 86.0M 到 2.2B 的模型规模上做实验,并用推导出的缩放律进一步预测「在给定内存约束下哪种 QAT 位宽最优」,以及不同位宽的 QAT 精度与全精度模型精度之间的比较关系,论文称这些预测经过了实验验证。

边界与常见误解

第一,QAT 不等于量化训练。如 NVIDIA 博客所述,QAT 追求的是推理精度而非训练效率,它可能选择对训练吞吐不利的方法;把它理解为一种加速训练的手段是常见误解。

第二,QAT 不必然需要低精度硬件。由于采用伪量化与直通估计,QAT 可以在不支持目标低精度格式的硬件上以模拟方式完成,博客以 Hopper GPU 上模拟 NVFP4 为例。但这只是训练阶段的便利,并不代表最终推理也能在该硬件上获得低精度格式带来的收益。

第三,QAT 并非总是优于 PTQ,也不是免费的。博客的表述是 QAT 与 QAD 能在 PTQ 校准不足时「成功」,其代价是额外的训练阶段与相应算力。arXiv 论文正是围绕这一代价展开:全精度阶段与 QAT 阶段如何分配算力会显著影响最终损失,且最优比例随总算力变化,不能套用固定配方。

第四,具体收益数字具有条件性。博客中 4% 到 22% 的精度恢复是在 Llama Nemotron Super 及特定任务上得到的,NVFP4 优于 MXFP4 的结论也限定在视觉语言基准范围内,不宜外推为所有模型、所有任务上的普遍规律。

第五,QAT 与 QAD 是两种不同策略。博客将二者并列讨论,QAD 借助蒸馏,而 QAT 是在前向路径中直接使用量化数值;把两者混为一谈会模糊各自的适用条件。

参考资料