许多边缘 AI 项目最初选择 NVIDIA Jetson 是有充分理由的:开发循环基于熟悉的 Linux、Python、PyTorch、CUDA、TensorRT、OpenCV 以及经常用到的 DeepStream。一个团队可以训练模型、导出它、用 TensorRT 优化它、将它接入摄像头流水线,并快速交付一个可工作的原型。 当同一个团队开始考虑 Qualcomm Dragonwing 硬件时,第一个问题通常是:
best.pt 这样的 PyTorch 检查点,答案基本上是肯定的。
好消息是:如果你已经有训练好的 PyTorch 模型,将它导出到一个干净的静态 ONNX 图,能让许多受支持的视觉模型在通往 Qualcomm 的道路上走完很大一部分。不是 100%,也不是每个算子都可以,但足以让迁移通常变成一个优化和产品化问题,而不是一个重新训练的问题。
最重要的区分是:
.engine 文件无法迁移到 Qualcomm。它已经是一个编译后的、NVIDIA 特定的部署工件,与 TensorRT、CUDA、JetPack 以及它所构建的 GPU 架构绑定。但该引擎背后的源模型仍然有价值。如果你有 .pt 或一个干净的 ONNX 导出,你并不是从零开始。
剩下的工作是让该模型在 Dragonwing 上变得快速、准确、可测量且可交付。
在本系列中,我们将围绕一个 Jetson 智能摄像头应用来展开,它带有一个自定义 YOLO 检测器、一个 TensorRT 引擎、CUDA/DeepStream 风格的预处理,以及一个可选的本地 LLM sidecar。目标平台首先是 Dragonwing IQ-9075,在设置或运行时不同的地方会点出 IQ-8275。
在开始迁移之前,先把无聊但重要的事实收集起来:
Jetson 的心智模型
一条常见的 Jetson 部署路径如下:trtexec 来构建和基准测试:
trtexec、Nsight Systems、Nsight Compute、tegrastats 或 DeepStream 剖析。
这是一个连贯的世界。但它不是 Qualcomm 的世界。
Dragonwing 的心智模型
在 Dragonwing 上,高层路径不同,但第一步很熟悉:入门速度差距是真实存在的
不要把下面这些路径描述成等价的:
Jetson 通常通过一条隐藏了更多硬件特定工作的框架/运行时路径,从”我找到了一个模型”到”推理运行起来”。当模型已经被 AI Hub、GenieX、LiteRT 或另一条已验证的运行时路径覆盖时,Qualcomm 可以提供同样快速的首次结果。差距出现在模型是自定义的时候:导出、量化、上下文生成、目标特定打包和不受支持算子的调试都是真正的门槛。
比起暗示”每个模型在 ONNX 导出后就基本解决了”,下面的实际区分更有用:
Jetson 与 Dragonwing 一览
简短版本:
--backend dsp;GenieX 和产品资料可能称之为 NPU。
硬件目标很重要
最佳实践:不要把每个 Qualcomm 目标都视为可互换的。 命名说明:家族名称常写作 IQ-9/IQ-8,而设置页面和 AI Hub 设备名称通常使用 IQ-9075/IQ-8275 EVK。选择设备或文档时请使用 EVK 名称。 来自当前 Dragonwing 设备文档,注意这些是供应商公布的峰值能力而非实测结果(IQ-9075 EVK 设备概览 和 IQ-8275 EVK 设备概览):
这会影响上下文二进制生成、运行时库、VTCM 设置、性能预期和验证。
例如,最佳实践是在迁移到另一个 SoC 时重建并重新验证上下文二进制文件。QAIRT SDK 更新、BSP 更新、新目标 SoC 或模型更新可能都需要同样的处理。
对于习惯把模型文件当成产品工件的团队来说,这是一个重大转变。
承诺之前:迁移适配性检查
在构建转换流水线之前先做这项检查:
如果这张表存在未知项,请把首个 Dragonwing 里程碑视为一次评估,而不是移植承诺。
迁移的起点只有一个问题:你有源模型吗?
在写新代码之前,先盘点你实际拥有的东西。 如果你有下面这些,你的情况就不错:model.engine,迁移就会阻塞,直到你恢复源模型。TensorRT 引擎不是一种中立的模型交换格式。
在构建转换流水线之前先检查 AI Hub
最快的 Qualcomm 路径通常不是转换,而是复用。在投入自定义转换流水线之前,先检查是否有兼容的工件。 如果你的模型架构已经存在于 Qualcomm AI Hub 中,你或许可以下载一个预构建的工件,或者至少获得针对目标设备的预先测量的性能。 例如:运行时选择是一个产品决策
Dragonwing 提供不止一个执行目标:Qualcomm CPU 执行可以运行浮点模型。GPU 执行可能是有用的中间路径,具体取决于运行时和算子支持。为了获得最佳性能和支持,HTP/NPU 加速通常期望低精度工件,例如 INT8/a8w8 或相关受支持模式。

