第一章:Jetson平台选型与硬件架构解析
做嵌入式AI项目,第一步就是选平台。
很多朋友一上来就问:「Jetson Nano够用吗?」「要不要直接上AGX?」
说实话,这个问题没有标准答案。我见过用Nano跑轻量级检测跑得飞起的项目,也见过用AGX做多路视频处理还嫌算力不够的。关键看你做什么、做到什么程度、量产后成本能扛多少。
这一章,我就把Jetson家族几个主流型号掰开揉碎讲清楚。包括GPU、CPU、DLA、PVA这些核心单元到底干嘛用的,以及功耗和算力之间怎么权衡。
1.1 Jetson家族:Nano / Orin / AGX 怎么选?
先看一张对比表,心里有个底。
| 型号 | AI算力 | GPU架构 | CPU核心 | 典型功耗 | 量产适用性 |
|---|---|---|---|---|---|
| Jetson Nano | 472 GFLOPS | Maxwell 128核 | 4核A57 | 5W~10W | 低功耗原型/小批量 |
| Jetson Orin NX | 70 TOPS | Ampere 1024核 | 8核A78AE | 10W~25W | 主流量产首选 |
| Jetson AGX Orin | 275 TOPS | Ampere 2048核 | 12核A78AE | 15W~60W | 高性能/多路传感器 |
我个人习惯是:先定功耗预算,再选算力。你想想看,如果产品是电池供电的移动机器人,Nano或者Orin NX的低功耗模式更合适。如果是固定工位的视觉检测站,AGX Orin的60W功耗完全不是问题。
核心观点:算力不是越高越好。够用、稳定、能量产,才是王道。
1.2 GPU:AI推理的主力军
Jetson的GPU不是用来打游戏的。它负责跑神经网络推理,尤其是卷积运算。
Nano用的是Maxwell架构,128个CUDA核心。说实话,现在看有点老了。跑MobileNet v2还行,但YOLOv5s就有点吃力。我在一个智能门禁项目里试过,Nano跑YOLOv5s只能到15FPS左右,勉强能用。
Orin系列用的是Ampere架构。这个架构有个好东西——稀疏化计算。说白了,模型里很多权重是0,Ampere可以直接跳过这些计算,速度能翻倍。我建议你在训练模型时就做结构化剪枝,这样部署到Orin上能白嫖性能。
小技巧:用TensorRT做INT8量化,GPU推理速度能提升2~3倍。我在一个工业缺陷检测项目里,把FP16模型转成INT8,精度只掉了0.3%,帧率从30涨到了85。
1.3 CPU:不只是跑Linux的
很多人觉得CPU就是跑操作系统的,AI推理交给GPU就行。其实不对。
CPU在Jetson上承担着数据预处理和后处理的重任。比如图像解码、缩放、归一化,还有NMS(非极大值抑制)这些操作,GPU不擅长,CPU反而更快。
Nano的4核A57,说实话有点弱。我做过一个项目,GPU推理只用了5ms,但CPU做图像解码花了15ms,整个流程被CPU拖慢了。后来我换成Orin NX的8核A78AE,这个问题才解决。
为什么会这样?因为A78AE是ARM v8.2架构,支持SVE(可伸缩向量扩展),做图像处理时能并行处理更多像素。A57是v8.0架构,没有这个能力。
注意:如果你的应用需要同时处理多路摄像头,CPU核心数和频率非常关键。我曾经在Nano上接4路USB摄像头,CPU直接跑满100%,系统卡死。后来换成Orin NX,8核分担下来,CPU占用率只有40%。
1.4 DLA:深度学习加速器
DLA(Deep Learning Accelerator)是NVIDIA专门为深度学习推理设计的硬件加速单元。说白了,它是一个专用芯片,专门做卷积、激活、池化这些操作。
Nano没有DLA。Orin NX有1个DLA,AGX Orin有2个。
DLA的好处是什么?功耗低、效率高。GPU跑推理时功耗可能到15W,DLA跑同样的模型可能只要3W。我在一个无人机项目里,用DLA跑目标检测,整机功耗控制在8W以内,续航时间从20分钟延长到了35分钟。
但DLA也有局限。它只支持固定的算子集合。如果你的模型里有自定义算子,DLA就跑不了,得回退到GPU。所以我的建议是:先用GPU跑通,再尝试把模型切一部分给DLA。
经验之谈:用DLA时,尽量用NVIDIA官方支持的层类型。Conv、ReLU、MaxPool、FC这些都没问题。但像Swish激活、GroupNorm这些,DLA不支持,会回退到GPU。我曾经踩过这个坑,模型里用了Swish,结果DLA完全没干活。
1.5 PVA:视觉加速器
PVA(Programmable Vision Accelerator)是Jetson上容易被忽略的一个单元。它专门处理传统计算机视觉算法,比如光流、立体匹配、特征点提取。
为什么需要PVA?因为有些视觉任务用深度学习做太慢、太耗电。比如光流法做运动检测,用GPU跑一个光流网络可能要10ms,用PVA跑传统算法只要1ms,功耗还低。
AGX Orin有2个PVA,Orin NX有1个,Nano没有。
我记得在一个安防项目里,客户要求做运动目标检测。我一开始用YOLOv5做,但帧率上不去。后来改用PVA做背景差分+光流,CPU做简单分类,整个系统功耗降了40%,帧率还翻了一倍。
建议:如果你的项目涉及运动检测、深度估计、特征匹配这些传统视觉任务,优先考虑用PVA。它比GPU省电,比CPU快。NVIDIA提供了VPI(Vision Programming Interface)库,封装了PVA的调用接口,用起来很方便。
1.6 功耗与算力的权衡:我的选型方法论
说了这么多,到底怎么选?我总结了一个三步法:
- 定功耗上限:你的产品是电池供电还是插电?电池供电的话,整机功耗不能超过多少?比如移动机器人,通常控制在15W以内。
- 算力需求估算:你的模型需要多少算力?可以用TensorRT的profiler工具测一下。如果没有硬件,可以按经验估算:一个YOLOv5s模型在FP16下大约需要10 TOPS算力。
- 匹配型号:在功耗和算力之间找交集。比如15W功耗下,Orin NX能提供70 TOPS,Nano只能提供0.5 TOPS。显然Orin NX更合适。
我的建议:如果预算允许,尽量选Orin NX。它功耗灵活(10W~25W可调),算力足够(70 TOPS),而且有DLA和PVA。我最近三个量产项目都用的Orin NX,从原型到量产一路顺畅。
嗯,这一章就到这里。下一章我会讲Jetson的软件环境搭建,包括JetPack、CUDA、TensorRT的安装和配置。到时候我会分享一些踩坑经验,比如怎么避免刷机变砖、怎么配置交叉编译环境。
记住一句话:选型定生死,架构定性能。把这一章吃透,你的项目就成功了一半。