一、PTQ基础概念:什么是PTQ、PTQ与QAT的区别、PTQ的适用场景与优势

1.1 什么是PTQ?

PTQ,全称是Post-Training Quantization,中文叫训练后量化。

说白了,就是模型训练完了,我再动手做量化。你不需要重新训练,也不需要动你的训练流程。直接把训练好的浮点模型拿过来,跑一小部分校准数据,就能得到量化后的定点模型。

我个人习惯把PTQ比作「给模型换衣服」。模型本身已经训练好了,身材(权重分布)已经固定了。我们只需要找几件合适的衣服(量化参数),给它穿上就行。不用重新训练它去适应新衣服。

具体怎么做呢?大致流程是这样的:

  1. 准备好训练好的浮点模型(FP32)
  2. 准备一小批校准数据集(通常几百到几千张图片/样本)
  3. 跑一遍前向推理,收集每一层的激活值分布
  4. 根据分布计算量化参数(scale和zero_point)
  5. 把权重和激活值量化到INT8或INT4

嗯,这里要注意:校准数据集不需要带标签。你只需要让数据流过模型,观察它的激活值长什么样就行。

核心要点:PTQ不需要反向传播,不需要梯度计算,也不需要修改训练代码。这是它最大的优势。

1.2 PTQ与QAT的区别

QAT是Quantization-Aware Training,量化感知训练。这两个东西经常被拿来对比。

我刚开始接触量化时,也搞不清什么时候该用PTQ,什么时候该用QAT。后来踩过坑才明白——它们本质上是两种不同的策略。

直接看对比表吧:

对比维度 PTQ(训练后量化) QAT(量化感知训练)
是否需要训练 不需要 需要(微调或重训)
需要的数据量 很少(几百样本) 较多(需要训练集)
是否需要标签 不需要 需要
精度损失 较小到中等 极小(几乎无损)
部署时间 几小时到一天 几天到几周
适用场景 快速部署、资源受限 精度敏感、有训练资源

为什么会这样?

PTQ是「事后补救」。模型已经训练好了,我们只能尽量去拟合它的分布。如果模型本身的分布比较规整,PTQ效果就很好。但如果分布很散,或者有异常值,PTQ就容易翻车。

QAT是「事前预防」。在训练过程中就模拟量化误差,让模型学会适应量化带来的噪声。所以QAT的精度通常更高,但代价是你要重新跑一遍训练流程。

我的经验:如果你做的是8bit量化,PTQ通常就够了。但如果你要做4bit甚至更低比特的量化,我建议你老老实实用QAT。我曾经在4bit量化上硬用PTQ,结果精度掉了5个点,后来换成QAT才救回来。

1.3 PTQ的适用场景

PTQ不是万能的,但它确实在很多场景下是首选。我个人总结了几类典型场景:

  • 快速原型验证:你想看看量化后模型能不能跑在目标硬件上,先拿PTQ试一下。不行再换QAT,不耽误时间。
  • 数据隐私受限:有些项目训练数据不能外泄,但你又需要做量化。PTQ只需要少量无标签数据,甚至可以用合成数据。我在一个医疗影像项目里就遇到过这种情况,训练数据根本拿不到,只能用PTQ加合成数据搞定。
  • 模型太大,重训成本高:比如大语言模型,动辄几十亿参数,重新训练一次的成本你想想看。PTQ几乎是唯一可行的方案。
  • 部署周期紧:产品下周就要上线,你哪有时间重新训练?PTQ一天搞定,直接部署。

避坑指南:我曾经在一个目标检测项目里,直接用ImageNet的校准数据去做PTQ,结果精度掉了3个点。后来换成跟实际部署场景一致的数据,精度只掉了0.5个点。校准数据集的选择,比你想象的重要得多。

1.4 PTQ的优势

说了这么多,PTQ到底好在哪?我总结了几点:

  1. 速度快:不需要训练,几小时就能完成量化。QAT至少需要几天。
  2. 数据需求低:几百张无标签图片就够了。QAT需要整个训练集加标签。
  3. 流程简单:不需要修改训练代码,不需要调超参。拿来即用。
  4. 硬件兼容性好:大多数推理框架都支持PTQ,比如TensorRT、ONNX Runtime、OpenVINO等。
  5. 精度可控:对于8bit量化,精度损失通常在1%以内。很多场景下完全可接受。

嗯,这里要补充一句:PTQ不是没有缺点。它对模型结构敏感,对校准数据敏感,对量化算法也敏感。但只要你掌握了正确的方法,这些都不是问题。

1.5 PTQ知识体系总览

为了让你对PTQ有个整体认识,我画了一张图。这张图涵盖了PTQ的核心模块和它们之间的关系:

PTQ训练后量化知识体系 PTQ训练后量化 校准数据集构建 量化算法选择 精度评估与调优 硬件部署适配 子模块 • 数据来源选择 • 数据预处理 • 数据量确定 子模块 • 对称/非对称量化 • 逐层/逐通道量化 • 校准方法选择 子模块 • 精度损失分析 • 敏感层定位 • 混合精度策略 子模块 • 推理框架适配 • 算子支持检查 • 性能基准测试 PTQ的核心:用最少的数据和计算量, 在精度和效率之间找到最佳平衡点

这张图展示了PTQ的四个核心模块。你会发现,校准数据集构建是第一步,也是最基础的一步。数据选不好,后面再怎么调算法也白搭。

好了,这一章就到这里。PTQ的基础概念你大概心里有数了。下一章我们开始深入聊校准数据集的具体构建方法。


公众号:蓝海资料掘金营,微信deep3321