边缘AI与PTQ基础:边缘计算、模型量化概述、PTQ与QAT的区别及适用场景
在进入PTQ量化参数检查与scale对齐实操之前,必须先厘清三个基础问题:边缘AI的部署约束是什么?模型量化到底在做什么?PTQ与QAT两条技术路线为何不能混用?本章从工程视角出发,围绕“算力受限、内存受限、功耗受限”三个核心矛盾,建立量化技术的知识坐标系,为后续章节的scale校准、精度调优和算子对齐打下理论基础。
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)→ 编译与算子映射 → 板端推理。其中,量化环节直接决定了最终部署模型的精度和性能平衡。
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。
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更具性价比。
2.5 总结与关键要点
本章建立了边缘AI量化的知识框架。核心要点如下:
- 边缘部署的三大约束(算力、内存、功耗)决定了量化是必选路径。
- 量化的本质是数值映射,scale和zero_point是核心参数,它们的准确性直接决定量化精度。
- PTQ和QAT各有适用场景,边缘项目优先PTQ,精度不足时再考虑QAT或混合精度方案。
- 校准数据的代表性比数量更重要,分布偏差会导致量化参数失真。
- 量化误差主要来自舍入和截断,离群值处理是后续章节的重点。
下一阶段,我们将深入PTQ的具体流程,重点讲解scale的计算方法、校准数据集的构建策略,以及如何通过可视化工具检查量化参数的合理性。这些内容将直接服务于后续的scale对齐实操。