4、训练后量化(PTQ)入门:PTQ原理、校准数据集、PTQ vs QAT 对比

好,咱们今天聊聊训练后量化,也就是 PTQ。

说实话,PTQ 是我在实际项目中用得最多的量化方式。为什么?因为它快,而且够用。你想想看,一个已经训好的模型,你不想再花几天甚至几周去重新训练它。PTQ 就是干这个的——拿来即用,几乎零成本。

4.1 PTQ 的核心原理

PTQ 的原理其实不复杂。说白了,就是拿一小部分数据,跑一遍推理,统计出每一层激活值的分布。然后根据这个分布,算出最佳的缩放因子和零点偏移。

我习惯把 PTQ 分成三步:

  1. 收集统计量——用校准数据跑一遍前向,记录每层的 min/max 或直方图
  2. 计算量化参数——根据统计量算出 scale 和 zero_point
  3. 替换算子——把浮点算子替换成量化算子,生成量化模型

嗯,这里要注意一点:PTQ 只做前向,不做反向传播。所以它不会改变模型的权重,只是把权重和激活值从 FP32 映射到 INT8。

核心公式(对称量化):

scale = max(|x_min|, |x_max|) / 127
x_int8 = round(x_fp32 / scale)

就这么简单。但实际工程中,你还要考虑截断、校准方法的选择,这些才是坑。

4.2 校准数据集——PTQ 的命门

校准数据集选不好,PTQ 基本就废了。我在项目中遇到过这种情况:用验证集做校准,量化后精度掉了 2%。换成训练集的一小部分,精度只掉了 0.3%。

为什么会这样?因为校准数据集要能代表模型在真实场景下的输入分布。你拿猫狗分类的模型,校准数据里全是猫,那量化后遇到狗就崩了。

我个人习惯的做法:

  • 从训练集中随机抽取 500~2000 张,覆盖所有类别
  • 确保数据多样性——光照、角度、背景都要有变化
  • 不要用验证集做校准——验证集是用来评估的,用了就泄露了
  • batch size 不要太大——我一般设 16 或 32,太大容易让统计量偏

小技巧:如果你不确定校准数据够不够,可以跑两次 PTQ,每次用不同的随机子集。如果两次量化后的精度差不多,说明数据量够了。如果差很多,那就再加数据。

4.3 PTQ vs QAT 对比

很多同学问我:到底该用 PTQ 还是 QAT?

我的回答是:先试 PTQ,不行再上 QAT。你想想看,PTQ 几分钟就搞定了,QAT 要重新训一遍模型。时间成本差了两个数量级。

下面这张表是我自己总结的,你可以参考:

对比维度 PTQ QAT
是否需要训练 不需要 需要(微调或重训)
耗时 几分钟 几小时到几天
精度损失 通常 0.5%~2% 通常 <0.5%
适用场景 大模型、快速部署 精度敏感、小模型
实现难度 低(调 API 即可) 高(需要改训练代码)
硬件适配 通用 需要模拟量化算子

我曾经在一个目标检测项目里,PTQ 后 mAP 掉了 1.8%。客户要求不能超过 1%。没办法,只能上 QAT。结果 QAT 训了 3 天,精度只掉了 0.3%。但说实话,如果当时我多花点心思调校准数据,也许 PTQ 就够了。

避坑指南:我曾经犯过一个错误——在 PTQ 之后直接部署,没做精度验证。结果模型在线上跑了一周,召回率掉了 5%。后来才发现,校准数据里缺少了夜间场景。所以,一定要用独立的测试集做量化后精度验证。

4.4 知识体系图

下面这张图帮你理清 PTQ 的核心逻辑:

PTQ 训练后量化知识体系 预训练模型 (FP32) 校准数据集(500~2000 样本) 统计每层激活值分布(min/max/直方图) 计算 scale / zero_point INT8 量化模型 关键要点 • 只做前向推理 • 不更新权重 • 校准数据要多样 • 验证集不可用于校准 • 精度损失通常 <2% • 耗时仅几分钟

4.5 实战建议

最后,给你几个我踩过坑后的建议:

  • 先跑 PTQ,再决定要不要 QAT——别一上来就搞 QAT,浪费时间
  • 校准数据一定要有代表性——我吃过亏,你记住就行
  • 量化后一定要做精度验证——用独立的测试集,别偷懒
  • 如果精度掉太多,先调校准方法——比如从 min-max 换成 KL 散度,或者 percentile

PTQ 这东西,说白了就是「用少量数据换大量加速」。你只要把校准数据选好,精度损失完全可以控制在 1% 以内。我见过很多项目,PTQ 后推理速度翻了 2~3 倍,精度只掉了 0.5%。这买卖,划算。

我的个人习惯:每次做 PTQ,我都会先跑一个「快速验证」——只用 100 张校准数据,看看精度掉多少。如果掉得不多,再加大校准数据量做最终版。这样能快速排除明显不行的方案。

好了,PTQ 的核心内容就这些。记住一句话:能用 PTQ 解决的问题,别上 QAT。省下来的时间,喝杯咖啡不香吗?

可可精品资料库