评审会上最常被糊弄过去的问题

方案评审,硬件问算法:「INT8 量化掉多少点?」算法答:「不大,很小。」

这个问答每天都在发生,两边都知道对方在含糊。真实答案是:没有通用数字。同一套量化流程,换个模型、换个校准集,结果能差出一个量级。张口就报具体数字的人,要么测过你的模型,要么在编。

但没有通用数字,不等于只能含糊。掉点从哪来、按什么顺序排查、什么时候认输上 QAT,这些是有共识的。

先拆开:权重量化和激活量化是两件事

量化压的是两样东西,代价完全不同。

权重是训练完就固定的张量,分布稳定。逐通道(per-channel)量化给每个通道单独定 scale,是很成熟的做法——视觉模型的权重压到 INT8,多数情况下精度损失可以忽略。

激活是每张图进来都在变的动态值,分布不对称、范围大、逐层各不相同。掉点的主要来源在这里。

所以「INT8 掉多少点」要拆成两句问:权重 INT8 一般温和;激活 INT8 才是主战场。

主要障碍:激活里的离群值

激活分布的麻烦集中在离群值(outlier):少数通道会输出数值很大的激活,把这一层的量化 scale 整体撑大。scale 一大,绝大多数正常值被挤进一两个量化台阶,分辨率没了。

大模型时代这个问题被研究得很透,检测、分割、分类模型里同样存在,只是幅度不同。哪些层有离群、离群多严重,模型之间差异极大——这就是「没有通用数字」的真正原因。

工程上能做的不多但都有效:更细的量化粒度、把敏感层留在高精度、把校准集换成真实业务分布。真正的功夫在于找到自己模型里哪几层在闹事。

INT8 的路线:先 PTQ,不行再 QAT

训练后量化(PTQ):模型不动,拿几百张校准图跑一遍、统计各层数值范围,直接出量化模型。快,不需要训练管线,视觉模型多数情况 PTQ 就能过关。

PTQ 不达标再上量化感知训练(QAT):训练时就模拟量化误差,让模型自己学会适应。代价是要完整的训练数据和训练管线,周期以周计。

顺序别反。QAT 是压箱底的牌,不是第一张。

INT4 的边界:权重可以谈,激活要慎重

INT4 权重量化(权重 INT4、激活留在 INT16 或 FP16)在语言模型上已经普及,卖点是把权重的内存占用压掉一半以上,带宽压力小很多。

视觉检测模型上,INT4 权重通常要配合更细的校准策略才可用;INT4 激活量化对精度伤害明显,端侧识别极少这么部署。

一句话口径:INT4 谈「省内存、提吞吐」成立,谈「无痛」不成立。它换来的每一分吞吐,都要拿精度验证流程去赎。

掉点了,按这个顺序查

每步都有明确的判断点,按序执行:

  1. 校准集换成业务场景真实图。 收银台摄像头拍出来的画面,光线、角度、距离和公开数据集是两个世界。几百张即可,但要覆盖真实分布。成本最低、最常被跳过的一步。
  2. 固定基线配置。 per-channel 权重、per-tensor 激活,是大多数工具链的默认档。先在这个配置下记录逐类别指标,再谈优化。
  3. 跑逐层敏感度分析。 工具链一般都带:把某一层单独留在高精度、看指标变化,扫一遍就知道哪几层贡献了主要掉点。
  4. 敏感层保 INT16 或 FP16,其余 INT8。 混合精度是性价比最高的一档,多数项目走到这就收工。
  5. 还差,再上 QAT。 到这一步说明模型确实量化敏感,PTQ 的手段已经用完。

别只看 mAP 总分

量化后的评估只看 mAP 平均值,是另一个隐形坑。

总分把所有类别摊平了。业务里最关键的类别——长得像的商品、小目标——往往恰好在量化里受伤最重,然后被大类别的稳定表现平均掉。整体看着稳、关键类别明显退步,这种结果真实存在,也真实地砸在门店现场。

评估表里把关键类别单列,量化前后逐类对比。这一栏没做,评估等于没做完。

这套排查的边界

它有一个前提:模型本身训练充分、数据和业务场景匹配。底子差的模型,量化只是把已有问题暴露出来——先把训练问题归到训练,别让量化背锅。

QAT 那步需要训练管线。团队没有训练能力,能走到的最远处就是混合精度,预算算力时就要按「部分层跑高精度」留余量,不能按全 INT8 满打满算。

常见问题

INT8 量化一般掉多少个点?

没有通用数字。掉多少取决于模型结构、离群值分布和校准集质量,同一流程换个模型结果差别可以很大。正确做法不是查经验值,是拿自己的模型跑一遍 PTQ,再做逐层敏感度分析。

量化掉点的主要原因是什么?

激活量化里的离群值。少数大数值把量化范围撑大,绝大多数正常值被压进很少的量化台阶。权重量化因为分布稳定、逐通道方案成熟,通常不是主要矛盾。

校准集怎么选、要多少张?

用业务场景的真实图片,几百张即可,覆盖真实的光线、角度和目标尺寸。用公开数据集做校准、部署到门店场景,是排查清单里要第一个改掉的错误。

INT4 量化能不能用在识别模型上?

权重可以试,激活要慎重。INT4 权重量化省内存的收益明确;INT4 激活量化对精度伤害明显,端侧视觉识别极少部署。判据是逐类别的业务指标,不是吞吐数字。

PTQ 和 QAT 先做哪个?

先 PTQ。多数视觉模型 PTQ 加混合精度就能达标;QAT 需要完整训练管线和训练数据,周期以周计,留到 PTQ 手段用尽之后再上。

数据来源

本文为量化工程方法的通用说明,不引用任何具体模型或芯片的实测数字。掉点幅度因模型与校准集而异,任何具体数字都应以自己模型的量化评估结果为准。