让模型在边缘 AI 加速器上跑得慢的最快方法就是把量化当成一个导出复选框。 在 Jetson 上,许多团队会先选 TensorRT FP16,等需要更高吞吐量时再添加 INT8。在 Qualcomm Dragonwing 上,HTP/NPU 路径从一开始就更常是整数路径。这会改变迁移计划。 快乐路径仍从你已经训练过的同一个模型开始:
为什么这比导出更重要
把 PyTorch 导出到 ONNX 让你在通往可移植图的路上走了大部分。量化决定了那张图在目标加速器上是否准确且快速。 一次迁移可以以三种看起来都像”模型不好”的方式失败:
对于分类器,这可能是 top-1/top-5 准确率。对于 YOLO,可能是 mAP、固定置信度阈值下的召回率以及少量手工检查的边缘案例。对于语音,可能是 WER。对于嵌入,可能是余弦相似度和检索质量。
具体指标取决于产品。重要的是在调优之前先选定它。
用失败的边界来避免指责错误的阶段:
先 PTQ,必要时再 QAT
有两条实用的量化路径:
PTQ 是最简单的好路径:没有重训练循环、快速迭代,对于算子干净且有代表性校准数据的视觉模型往往就够了。
QAT 是更重的路径。AIMET 可以帮助在训练循环中带量化效果地训练模型,但这会增加训练基础设施、模型所有者时间以及新的验证周期。我们建议把 QAT 留给 PTQ 无法通过真实产品关口的情形。
一条好的决策规则:
从真实校准数据开始
校准数据不是形式。它教量化器该模型在设备上会看到的激活范围。 使用与生产匹配的样本:选择一个精度通道
Qualcomm 迁移中常见的精度包括:
对于一个标准的目标检测器,我们的最佳实践是从
a8w8 开始、验证,并且只在产品指标要求时才提升精度。
这让搜索空间保持很小:
一个实用的 QAIRT 量化流程
假设你已经导出并验证了一个静态 ONNX 模型。这里是工件流程的紧凑回顾,好让量化决策有上下文。公共 Dragonwing 文档常展示带qnn-onnx-converter 和 qnn-model-lib-generator 的本地 QNN 模型库通道;DLC 风格的 QAIRT/AI Hub 流程使用 DLC 工件。请对照你已安装的 SDK 验证工具名。
本地 QNN 模型库流程:
--model libQnnModelDlc.so --dlc_path out/model_a8w8.dlc。
对于 IQ-9/QCS9075,围绕 HTP v73 规划。对于 IQ-8275/QCS8275,围绕 HTP v75 规划。通过为你的开发板经过测试的 SDK 示例配置来设置该架构,而不是靠猜。上下文二进制文件对目标敏感,因此当目标 SoC、SDK、BSP 或运行时包变化时都要重建。
重试梯度
当量化损害了准确率时,避免随意寻找标志。使用一个小梯度,并采用第一个通过指标的选项。
当模型所有者可以重训练或微调,并且 PTQ 损失是真实存在的而不是预处理 bug 时,AIMET 就变得有吸引力。
验证应用,而不仅是张量
张量指标有用,但产品指标才是胜负手。 对于检测器,比较:
关键字段是最终决策:哪个工件通过、哪个指标失败、以及哪个重试步骤改变了结果。
最小可用验收关口
对于第一次迁移,让关口保持简单:
这些是起点,不是普世真理。检测器、分割器、嵌入模型或语音模型可能需要不同容差。最好的关口是能预测现场行为的最小那一个。

