边缘AI与PTQ基础:边缘计算、模型量化概述、PTQ与QAT的区别及适用场景

在进入PTQ量化参数检查与scale对齐实操之前,必须先厘清三个基础问题:边缘AI的部署约束是什么?模型量化到底在做什么?PTQ与QAT两条技术路线为何不能混用?本章从工程视角出发,围绕“算力受限、内存受限、功耗受限”三个核心矛盾,建立量化技术的知识坐标系,为后续章节的scale校准、精度调优和算子对齐打下理论基础。

边缘AI部署约束 算力受限 CPU/GPU/NPU算力有限 内存受限 SRAM/DRAM容量小、带宽低 功耗受限 散热与电池续航约束 核心诉求 模型压缩 + 推理加速 保持精度可接受 模型量化核心 数值映射 FP32 → INT8/INT16 scale & zero_point 量化参数决定映射精度 对称 vs 非对称 分布特征决定量化格式 量化误差来源 舍入误差 + 截断误差 动态范围不匹配 量化方案选择 PTQ(训练后量化) 无需重新训练 少量校准数据 快速部署,精度略降 QAT(量化感知训练) 需要重新训练/微调 训练数据需求大 精度更高,周期更长 选择依据:精度/周期/数据 边缘场景以PTQ为主

2.1 边缘计算与AI部署的现实约束

边缘AI(Edge AI)是指在靠近数据源头的设备端完成推理,而非将数据上传至云端。典型的边缘设备包括智能摄像头、工业控制器、车载计算单元、无人机、穿戴设备等。这些设备的共同特点是:算力有限(通常为几TOPS到几十TOPS)、内存带宽受限(LPDDR4/LPDDR5或片上SRAM)、功耗预算严格(几瓦到几十瓦)。

以一款主流边缘NPU为例,其INT8算力可达10 TOPS,但FP32算力往往只有INT8的1/4到1/8。这意味着,如果模型以FP32格式运行,不仅速度慢,而且内存占用高——一个30 MB的FP32模型,在内存仅为512 MB的设备上,可能挤占其他任务的资源。因此,模型量化成为边缘部署的“必选项”而非“可选项”。

从工程角度看,边缘AI部署的完整链路包括:模型训练(云端)→ 模型转换与优化(工具链)→ 量化校准(PTQ或QAT)→ 编译与算子映射 → 板端推理。其中,量化环节直接决定了最终部署模型的精度和性能平衡。

核心认知:边缘AI的量化不是“锦上添花”,而是“雪中送炭”。没有量化,大多数边缘设备根本无法运行现代深度学习模型。理解这一点,是后续学习scale对齐和参数检查的前提。

2.2 模型量化概述:从FP32到INT8

模型量化的本质是将连续的浮点数值映射到离散的整数空间。最常见的量化格式是INT8,即用8位整数(-128到127)表示原本的32位浮点数。量化过程涉及两个关键参数:scale(缩放因子)和zero_point(零点)。

对于对称量化,zero_point固定为0,映射关系为:q = round(r / scale),其中r为浮点值,q为量化后的整数。对于非对称量化,映射关系为:q = round(r / scale) + zero_point。scale的计算通常基于张量的数值范围:scale = (max - min) / (qmax - qmin)。

量化粒度方面,常见的有逐张量(per-tensor)和逐通道(per-channel)两种。逐张量量化对整个张量使用同一个scale,实现简单但精度损失较大;逐通道量化对每个输出通道单独计算scale,精度更高,但硬件支持要求也更高。在边缘NPU上,逐通道量化已成为主流。

量化类型 数值范围 适用场景 精度表现 硬件要求
FP32(原始) ±3.4×10³⁸ 训练、高精度推理 基准 通用
FP16 ±65504 GPU推理、部分NPU 接近FP32 需FP16支持
INT8(对称) -128~127 边缘NPU、移动端 通常损失1%~3% 需INT8加速
INT8(非对称) 0~255 激活值分布偏移场景 优于对称(分布偏置时) 需支持zero_point
INT16 -32768~32767 对精度敏感的场景 接近FP32 部分NPU支持

量化误差主要来源于两个方面:舍入误差(浮点值映射到整数时的精度损失)和截断误差(超出量化范围的数值被截断)。当张量分布存在长尾或极端离群值时,截断误差会显著增大。这也是为什么后续章节要重点讨论scale对齐和校准数据集的选择。

2.3 PTQ与QAT:两条技术路线的对比

PTQ(Post-Training Quantization,训练后量化)和QAT(Quantization-Aware Training,量化感知训练)是两种主流的量化方案。它们的核心区别在于:量化过程是否参与模型训练。

PTQ的流程是:先训练好一个FP32模型,然后使用少量校准数据(通常几百到几千张图片)统计各层的数值范围,计算scale和zero_point,最后将模型转换为量化版本。PTQ不需要重新训练模型,因此速度快、成本低,非常适合边缘部署的快速迭代。但PTQ的精度受限于校准数据的代表性和模型本身的鲁棒性。

QAT的流程是:在训练过程中模拟量化误差,即在forward过程中插入伪量化节点(fake quant),让模型在训练时就适应量化的噪声。QAT通常能获得比PTQ更高的精度,但需要重新训练或至少微调模型,训练周期长、计算资源消耗大。

对比维度 PTQ(训练后量化) QAT(量化感知训练)
是否需要重新训练 否 是(或至少微调)
所需数据量 少量校准数据(数百张) 完整训练集或大规模微调集
部署周期 小时级 天级到周级
精度表现 通常损失1%~5% 通常损失0.5%~2%
计算资源需求 低(单GPU即可) 高(多GPU训练集群)
适用场景 快速原型验证、已有模型部署 精度敏感、模型可重新训练
工具链支持 TensorRT、ONNX Runtime、RKNN PyTorch QAT、TensorFlow QAT

在实际边缘项目中,PTQ是首选方案,因为大多数场景下模型已经训练完成,重新训练的成本过高。只有当PTQ精度损失超过业务容忍阈值(例如mAP下降超过3%)时,才会考虑QAT。此外,还有一种折中方案——部分量化,即只量化对精度不敏感的层(如卷积层),而保留敏感层(如检测头、分类头)为FP16或FP32。

经验建议:在项目启动时,先跑一遍PTQ基线。如果精度损失在可接受范围内,直接采用PTQ;如果损失过大,先检查校准数据集是否具有代表性,再考虑逐层量化敏感度分析,最后才升级到QAT。不要一上来就做QAT,那会浪费大量时间。

2.4 案例拆解:智能摄像头目标检测模型的量化方案选型

某安防厂商需要将YOLOv5s目标检测模型部署到一款边缘智能摄像头上,该摄像头搭载一颗8 TOPS的NPU,内存为2 GB LPDDR4x,功耗预算为5 W。原始模型为FP32,权重文件大小约28 MB,在PC上mAP@0.5为0.72。

初始目标:在保持mAP下降不超过2%的前提下,将模型转换为INT8格式,并确保单帧推理延迟低于50 ms。

关键约束:模型训练数据属于客户私有数据,无法获取完整训练集;项目周期仅有两周;NPU工具链支持PTQ和QAT两种模式。

分析过程:由于无法获取完整训练集,QAT方案基本不可行。团队决定先采用PTQ方案,使用500张现场场景图片作为校准数据。首次PTQ后,mAP从0.72降至0.68,下降4%,超出2%的容忍阈值。

排查与调整:团队进一步分析发现,校准数据中夜间场景占比过高(60%),而白天场景仅占40%,导致模型对白天目标的量化误差偏大。重新调整校准数据集,使白天/夜间比例接近1:1,并加入部分逆光场景。第二次PTQ后,mAP回升至0.705,下降约2.1%,接近阈值。

进一步优化:团队对检测头(Detect Head)的卷积层采用FP16保留,其余层使用INT8。最终mAP为0.71,下降1.4%,满足要求。单帧推理延迟为38 ms,内存占用从28 MB降至9 MB。

复盘经验:校准数据集的分布直接影响PTQ精度;敏感层保留高精度是有效的折中策略;在边缘部署中,PTQ+部分层高精度保留往往比直接QAT更具性价比。

常见误区:很多工程师认为PTQ精度差是模型本身的问题,实际上,校准数据选择不当、量化粒度设置不合理、未检查离群值分布,才是PTQ精度下降的主要原因。在动手调参之前,先检查校准数据和量化参数的可视化分布。

2.5 总结与关键要点

本章建立了边缘AI量化的知识框架。核心要点如下:

  • 边缘部署的三大约束(算力、内存、功耗)决定了量化是必选路径。
  • 量化的本质是数值映射,scale和zero_point是核心参数,它们的准确性直接决定量化精度。
  • PTQ和QAT各有适用场景,边缘项目优先PTQ,精度不足时再考虑QAT或混合精度方案。
  • 校准数据的代表性比数量更重要,分布偏差会导致量化参数失真。
  • 量化误差主要来自舍入和截断,离群值处理是后续章节的重点。

下一阶段,我们将深入PTQ的具体流程,重点讲解scale的计算方法、校准数据集的构建策略,以及如何通过可视化工具检查量化参数的合理性。这些内容将直接服务于后续的scale对齐实操。