一句话定义
量化感知训练(AI 词典:Quantization">Quantization-Aware Training, QAT)是在训练或微调阶段就模拟低精度计算,让模型参数提前适应量化误差的压缩方式。
量化到底丢了什么
量化就是把连续的浮点数(比如 fp16)塞进有限几格刻度里。int8 只有 256 格,int4 更少,格与格之间还有距离,落不到格子上的数只能就近取整——误差就是这么来的。
训练后量化(Post-Training Quantization, PTQ,AWQ、GPTQ 都属于这一类)的做法是:模型已经练好了,拿一批校准数据看看权重分布,算一个缩放因子,然后把权重四舍五入塞进刻度里。快、省事,但误差一旦产生,模型只能被动挨着。
打个比方:这像考试交卷之后,老师才说"答案必须压到一百字以内"。你只能硬删,删掉的可能是关键步骤。
QAT 是怎么做的
QAT 把这句话提前说:训练一开始就告诉你只能写一百字。具体做法是在前向计算里插入"假量化"(fake quantization)节点——先按低精度取整,再还原回浮点。数值表面还是浮点,但已经带上了真实部署时会有的那份误差。
难点在于取整没法求导。工程上的近似办法叫直通估计器(Straight-Through Estimator, STE):反向传播时把梯度原样传过取整操作,当作它不存在。于是训练过程中模型反复看到"我量化之后会变成什么样",权重会主动往刻度点上靠,把重要信息挤进能表示的格子里。误差不再是被动承受,而是变成了训练目标的一部分。
和 PTQ 的区别
| 维度 | 事后量化 PTQ(AWQ/GPTQ) | QAT |
|---|---|---|
| 时机 | 训练完成后 | 训练或微调过程中 |
| 成本 | 低,通常只需少量校准数据 | 高,要走完整训练流程 |
| 低位宽表现 | 8 位一般够用,4 位以下掉点明显 | 4 位及更低时通常更稳 |
| 适用场景 | 快速部署现成开源模型 | 精度敏感、要极致压缩的自研模型 |
关键在于:PTQ 是"先跑起来再挤进去",QAT 是"一开始就按挤进去的方式跑"。位宽越低,前者越容易崩,后者越占优——所以 AWQ、GPTQ 常能撑住 8 位甚至 4 位,再往下压就得靠 QAT 这类训练期手段。
对从业者的实际意义
QAT 不等于从头预训练。实践中更常见的做法是在已有模型上做量化感知微调,甚至和低秩适配(LoRA)结合,用一次轻量微调的成本换更低的位宽,比重新训一遍划算得多。
如果发现模型 4 位量化后数学推理、代码生成、长尾任务明显退化,而校准数据怎么调都救不回来,那大概率不是校准技巧的问题,而是该把量化提前到训练阶段了。
对普通人的意义
手机上跑的语音助手、本地文档问答、端侧翻译,之所以反应快又省电,往往是因为模型被压到了很低的位宽。QAT 就是让这种"小体积、不掉智商"成为可能的那一环。各家推理框架对量化格式的支持细节不同,实际部署时以官方页面为准。
