最近为了给一台园区巡检车换“大脑”,我把几块主流端侧 AI 算力芯片挨个试了一遍。从最初的“算力焦虑”到后来的“散热焦虑”,再到最后老老实实回头算功耗和时延预算,整个过程走了不少弯路。这次就以具身智能的车载/机载场景为背景,聊聊端侧 AI 算力芯片与硬件选型里那些容易踩的坑,以及我实测下来的真实数据和经验。
这篇内容适合正在做机器人、自动驾驶小车、无人机、工业检测设备的朋友,尤其是准备从“跑通demo”进入“稳定量产”阶段的团队。你可能会看到各种惊艳的TOPS数值,但真正上车、上机之后,决定体验的反而是散热、供电、接口和驱动这些不起眼的细节。
1. 端侧AI算力的真实需求:拆解车载/机载场景的算力瓶颈
1.1 为什么车载/机载场景不能“堆算力”——功耗与热设计约束
做端侧AI的朋友肯定都有过这种冲动:模型太大跑不动,那就上更大的板子,换成更高算力的芯片。但车载和机载场景有个天然限制,那就是所有能量都来自电池,而且机器人的物理空间就那么大,功率预算卡得死死的。
拿我常用的园区巡检车举例,整机电池包大概 48V 20Ah,折合不到 1kWh 电量。底盘电机、传感器、工控机、照明和通信设备加起来,整机平均功耗已经接近 150W。如果选一块最大功耗 60W 的算力板子,意味着整机将近 40% 的能耗都得喂给它,续航直接砍掉一大截。这在固定场景插电使用没问题,但车载/机载一旦离开电源,续航就是硬指标,每多 1W 功耗,都会反映在运营成本和时间效率上。
所以做车载/机载选型,核心矛盾不是“算力不够”,而是“在给定的功耗、散热、体积约束下,算力够不够用”。这里我习惯用“能效比”来评估,也就是每瓦特能提供多少有效推理帧率,而不是单纯看 TOPS 数字。而且 TOPS 本身也有水分,各家厂商对稀疏算力、稠密算力的定义并不完全一致,后面我会详细说。
另一个容易忽略的是散热条件。车载机舱和无人机机架内部基本都是密闭空间,空气流动极差。我见过不少开发者在台式机上跑得好好的模型,搬到车上一开机就降频,原因就是被动散热根本压不住芯片在高负载下的发热。真正的设计流程应该是:先确定功耗墙,再反推可用算力,最后才选芯片,而不是反过来。
1.2 具身智能任务对算力芯片的真实需求:从感知到决策
具身智能和普通视觉识别不太一样,它要求机器人在真实物理环境中感知、认知、决策、行动。典型任务链路包括目标检测、语义分割、深度估计、激光点云处理、SLAM、局部路径规划,近几年还多了一项——端侧直接跑视觉语言模型(VLM)。
不同类型的任务对算力的消耗差异非常大。比如 YOLOv8s 这样的轻量检测模型,在中等算力芯片上能跑到几十 FPS;但如果是 BEV 视角的多传感器融合模型,或者基于 Transformer 的端到端规划模型,算力需求会陡增一个数量级。我在实际项目里遇到过这样的情况:视觉检测只占了 30% 的算力,但后端一接上激光雷达点云处理加路径规划,整机 GPU 占用立刻逼近 100%。
这里给个参考数据:要做基础的障碍物检测加语义分割,并且保证 10Hz 以上的控制频率,端侧 AI 算力至少需要 30TOPS(INT8 稠密算力)左右;如果还要跑 BEV 融合或者端侧 VLM,建议直接上 100TOPS 以上。但这种需求要经过严格拆解,不能拍脑袋定,后面我会讲怎么估算。
1.3 车载/机载环境的三大约束:可靠性、时延、供电
除了功耗散热,车载/机载场景还比实验室多了三座大山:可靠性、时延、供电。
可靠性方面,车规级芯片与商业级芯片的最大区别在于工作温度范围和抗振等级。无人机在夏天暴晒下机舱温度可能超过 70 摄氏度,普通商业级 SSD 和内存条在这个温度下容易出现数据错误。选型时不能只看算力芯片,还要连带关注内存颗粒、存储、接口连接器的工业级/车规级认证。
时延方面,避障和控制回路要求毫秒级响应。我实测过,从摄像头取帧到算法输出控制指令,端到端延迟超过 150ms,小车在稍微快一点的速度下就很容易撞墙。所以选型时要关注的不仅是模型推理延迟,还有图像采集、预处理、串口/CAN 通信的整链路延迟。
供电方面,车载平台启动瞬间会有很大的浪涌电流,电机启停也会导致电压跌落。如果算力板卡的供电设计余量不足,会出现启动失败、运行中莫名重启等问题。这些坑在实验室完全看不出来,一上车全暴露了。
2. 主流端侧算力芯片方案横评:谁更适合具身智能
2.1 NVIDIA Jetson系列:生态与算力的标杆
NVIDIA Jetson 系列在端侧 AI 的地位,相当于开发板界的“iPhone”——性能不是最强,但生态最省心。目前主流产品线里,Jetson Orin Nano 适合轻量推理,Jetson Orin NX 是中坚力量,Jetson AGX Orin 则面向高性能需求。
我实测最多的是 Jetson Orin NX 16GB 版本,官方标称 AI 算力 100 TOPS(INT8 稀疏算力),实际稠密算力大概在 50-60 TOPS 水平。它的优势在于 16GB 统一内存,可以同时跑多个模型,还可以直接上 fp16 精度的 Transformer 模型。我在这块板子上同时跑 YOLOv8s 检测、DeepLabV3 分割和一个轻量级 VLM,帧率虽然下降明显,但都能正常工作,这在很多国产芯片上做不到。
Orin Nano 8GB 的标称算力是 40 TOPS(稀疏),实际稠密大约 20-25 TOPS,适合做入门级设备。它的痛点是内存只有 8GB,而且和 CPU 共享带宽,一旦跑大模型或者多路视频解码,内存带宽会先成为瓶颈。
生态是 Jetson 系列最大的护城河。CUDA、TensorRT、DeepStream、Isaac ROS 这些工具链成熟到“开箱即用”,社区资料多,遇到问题基本搜得到答案。JetPack SDK 把驱动、CUDA、cuDNN、TensorRT 打包在一起,省去了很多环境配置的痛苦。对于团队规模不大、希望快速落地的项目,优先考虑 Jetson 不会是大错。
2.2 国产端侧芯片方案:昇腾、地平线、瑞芯微、算能
这几年国产芯片进步确实明显,在端侧 AI 领域有几家值得关注。
昇腾这边,Atlas 200I DK A2 开发套件用的是昇腾 310B 处理器,标称 20 TOPS INT8 算力,主打低功耗,典型功耗 8W 左右。我拿它跑过 yolov5s,性能和 Orin Nano 接近,但功耗只有一半。它最大的问题是软件栈和 PyTorch 生态有差异,需要把模型转成 om 格式,转换过程中偶尔会碰到算子不支持的情况。
地平线的征程系列在自动驾驶领域很有名,征程 6 系列(J6E、J6M、J6P)算力覆盖从低到高。J6E 标称 10 TOPS 左右,适合做前视一体机;J6P 能做到 560 TOPS,面向高阶自动驾驶。地平线的工具链包括模型量化、编译、部署一套流程,对 CNN 类模型支持得比较好,但 Transformer 支持还在完善中。它的一大优势是 ISP(图像信号处理)能力很强,直接接摄像头画质比很多芯片好。开发板方面,旭日 X3 派和 RDK X5 是地平线官方推出的开发者套件,入门门槛低,适合学习研究。
瑞芯微 RK3588 虽然不是专门的 AI 芯片,但它的 6 TOPS NPU 加上强大的 CPU/GPU 组合,在中等算力需求的场景里性价比很高。关键是这颗芯片的文档和社区资料非常丰富,开源硬件方案也多,自己做载板或者直接买核心板都很方便。缺点是 NPU 算力上限有限,跑大模型会比较吃力。
算能(Sophgo)的 BM1684 / BM1688 系列在视频分析和安防领域用得比较多,BM1684 标称 17.6 TOPS,INT8 精度,功耗 16W 左右。它的特点是视频编解码能力突出,适合做多路视频结构化分析。但作为通用具身智能算力平台,软件生态相对封闭,开发体验不如 Jetson 顺畅。
2.3 参数对比表格与选型逻辑
我把自己实测过的几款芯片关键参数整理成了下表,方便大家快速对比。
| 芯片/模组 | 标称AI算力 | 实测可用算力参考 | 典型功耗 | 内存 | 适合场景 | 生态成熟度 |
|---|---|---|---|---|---|---|
| Jetson Orin Nano 8GB | 40 TOPS (稀疏) | 约 20-25 TOPS INT8 | 7-15W | 8GB LPDDR5 | 轻量检测、入门机器人 | 极佳 |
| Jetson Orin NX 16GB | 100 TOPS (稀疏) | 约 50-60 TOPS INT8 | 15-40W | 16GB LPDDR5 | 多模型并行、VLM、自动驾驶小车 | 极佳 |
| Jetson AGX Orin 64GB | 275 TOPS (稀疏) | 约 140-160 TOPS INT8 | 40-60W | 64GB LPDDR5 | 重负载自动驾驶、多传感器融合 | 极佳 |
| 昇腾 Atlas 200I DK A2 | 20 TOPS INT8 | 约 18-20 TOPS INT8 | 8-15W | 8GB/16GB LPDDR4X | 轻量视觉、低功耗设备 | 中等 |
| 地平线 RDK X5 | 约 10 TOPS | 约 8-10 TOPS INT8 | 5-10W | 4GB/8GB | 教学、轻量机器人 | 中等偏上 |
| 瑞芯微 RK3588 | 6 TOPS NPU | 约 5-6 TOPS INT8 | 5-10W | 4/8/16GB LPDDR4X | 通用边缘计算、低算力需求 | 很好 |
注意:各家标称 TOPS 的精度、稀疏/稠密定义不同,不能直接横向对比。上表中的“实测可用算力参考”是基于我自己的模型实测反推的估算值,不同模型、不同精度设置下会有出入。
选型逻辑按优先级排序,我个人的经验是这样的:先定功耗和散热上限,再估算法力需求,然后看内存容量和带宽,最后才考虑价格和软件生态。如果你只需要跑单路检测,RK3588 甚至都能胜任;但如果你要跑视觉语言模型或者端到端规划,建议直接上 Orin NX 或者更高。
3. 硬件选型实操:接口、载板、散热、供电的细节
3.1 核心模组与载板连接器易踩的坑
在选定算力芯片后,最容易被低估的是载板设计和连接器选型。以 Jetson 为例,Orin NX 模组采用的是 SO-DIMM 金手指接口,AGX Orin 则是更小的 MXM 接口。很多人图方便直接买官方开发套件,但开发套件体积大、接口固定,上车/上机往往不合适,必须自己做载板或用第三方载板。
这里有几个容易踩的坑。
第一,金手指的寿命和锁紧方式。车载振动环境下,如果载板没有做加固设计,模组很容易接触不良导致系统随机重启。我见过一个项目,机器人在园区跑一圈就会重启一次,排查了很久才发现是 Orin NX 模组没有用螺丝锁紧,振动导致金手指松动。解决方案很简单:选带金属锁扣的板对板连接器,或者用螺丝加固定压片把模组压牢。
第二,PCIe 通道的分配。Jetson 模组的 PCIe 通道数量有限,接了相机采集卡、NVMe SSD、网卡之后可能就不够用了。我在设计载板时曾经犯过错误,把 NVMe SSD 放在 PCIe 通道 0 上,结果和相机采集卡冲突,只能重新画板。建议在选型阶段就列一个 PCIe 设备清单,明确每条通道的用途和速度要求。
第三,M.2 接口类型容易混。M.2 有 B-key、M-key、E-key 等不同定义,插槽和引脚完全不同,插错会直接烧设备。做硬件选型时,需要把摄像头(MIPI CSI / USB)、存储(NVMe / SATA)、无线通信(WiFi/5G)等接口类型提前确认清楚,避免到后期才发现接口不匹配。
3.2 散热设计实测:从铝块到涡轮风扇
散热是车载/机载场景里最容易被忽视、但影响最大的环节。芯片的标称算力通常是在理想散热条件下测出来的,实际运行中热量排不出去,芯片会自动降频,算力会大幅缩水。
我在 Orin NX 上做过一组对比测试:在同一环境温度下,分别用被动散热铝块、主动散热风扇、加涡轮风扇加风道三种方案跑同一个模型。结果被动散热时芯片温度很快飙到 85 摄氏度,触发降频阈值,推理帧率掉到原来的 60% 左右;主动散热风扇能稳定在 70 摄氏度附近,帧率基本跑满;加装涡轮风扇和风道之后,温度再降 5-8 摄氏度,高负载持续时间明显延长。
这里的关键是热设计功耗(TDP)和散热能力的匹配。Orin NX 的 TDP 最高可以到 40W,如果整机只能提供被动散热,建议在系统层面把电源模式限制在 15W 或 25W,以保证稳定运行。我在无人机项目里用的是 25W 电源模式加被动散热,牺牲一点峰值算力,换来了长时间运行的稳定性。
另外说一句散热膏和导热垫。很多第三方载板出厂就贴好了导热垫,但厚度和导热系数差异很大。有条件的话,用热成像仪检查芯片表面的温度分布,如果某个角落特别烫,大概率是导热垫和散热器之间的接触压力不均匀。
3.3 供电与电源管理
供电问题在实验室几乎看不出来,但在车载/机载场景是重启故障的主要来源之一。
Jetson 模组对供电电压和电流的要求比较严格:Orin NX 模组主供电是 5V,但瞬间电流峰值可能到 8A 以上。如果电源适配器的标称电流不够,或者 DC-DC 转换电路的余量不足,高负载时电压就会跌落,直接触发欠压保护重启。
我踩过的一个典型坑是:整机用的是 48V 电池,通过 DC-DC 降压到 12V 给设备供电,再通过另一级 DC-DC 从 12V 降到 5V 给 Jetson 供电。两级降压效率本来就低,加上电机启动瞬间拉低母线电压,5V 输出也跟着往下掉,Jetson 直接重启了。后面我在 Jetson 供电入口加了一个大电容阵列缓冲瞬时掉电,并把 DC-DC 的输入输出都加了滤波电感和钽电容,才解决这个问题。
还有一个容易被忽略的是“软启动”。有些 DC-DC 模块上电瞬间会有较大的浪涌电流,如果前面是锂电池保护板,可能直接触发过流保护。建议在电源输入端并接缓启动电路,或者选择带软启动功能的电源模块。
4. 实测过程:从跑分到真实任务的性能验证
4.1 基准测试方法:既跑分又跑真实模型
选型阶段不能只看厂商的标称数据,一定要拿自己的真实模型在同一条件下跑一遍。我的测试方法分两层:第一层是标准跑分,第二层是实际业务模型测试。
标准跑分方面,Jetson 平台可以用 JetPack 自带的 jetson_benchmarks 工具,能测试 CPU、GPU、内存带宽、磁盘 IO 等项目。但这些跑分数据只能反映硬件的理论极限,和真实 AI 任务的相关性有限,所以我更看重第二层测试。
业务模型测试方面,我会准备一套固定测试集,包括:
- 目标检测:YOLOv8s,输入 640x640,批量大小 1
- 语义分割:DeepLabV3,输入 512x512
- 分类:MobileNetV3-Small,输入 224x224
- 多任务组合:上述模型同时运行,模拟真实业务
测试时会记录四个指标:首帧延迟、稳态帧率、功耗、温度。特别强调稳态帧率:很多芯片刚启动时能跑出很高帧率,运行几分钟后温度上来,帧率会明显下降。所以我的测试方法是连续跑 30 分钟,取最后 5 分钟的平均帧率作为有效数据,这个数据才更有参考价值。
为了模拟真实部署环境,我通常用 Docker 容器来隔离测试环境,确保不同芯片上的软件环境一致。比如 Jetson 上用的是 nvcr.io/nvidia/l4t-pytorch 镜像,国产芯片上则用对应厂商提供的 SDK 镜像,虽然不能完全对齐,但至少能保证大版本一致。
4.2 实测数据与结果分析
下面是我在实际测试中得到的部分数据(数值为近似值,环境和模型略有差异),放在一起看会比较直观。
Orin NX 16GB,15W 电源模式,YOLOv8s
- 稳态帧率:约 45 FPS(同时跑分割时降到 22 FPS)
- 整机功耗:约 18W(含载板外设)
- 稳定温度:约 62 摄氏度(主动散热)
Orin NX 16GB,25W 电源模式,YOLOv8s
- 稳态帧率:约 82 FPS
- 整机功耗:约 30W
- 稳定温度:约 71 摄氏度(主动散热)
Orin NX 16GB,40W MAXN 模式,YOLOv8s
- 稳态帧率:约 110 FPS
- 整机功耗:约 45W
- 稳定温度:约 84 摄氏度(主动散热)
Atlas 200I DK A2,YOLOv5s(om 格式)
- 稳态帧率:约 35 FPS
- 整机功耗:约 10W
- 稳定温度:约 58 摄氏度(被动散热)
RK3588,RKNN 格式 YOLOv5s
- 稳态帧率:约 25 FPS
- 整机功耗:约 8W
- 稳定温度:约 55 摄氏度(被动散热)
从这些数据能看出几个规律。第一,功耗和帧率不是线性关系:Orin NX 从 15W 提到 25W,帧率提升近一倍;但从 25W 提到 40W,提升只有 30% 多,能效比明显下降。这就是为什么我通常建议把 Orin NX 设置在 25W 电源模式。第二,轻量模型在低功耗芯片上也能跑出可用的帧率,关键在于量化精度和模型剪枝是否做到位。
4.3 模型部署优化的关键步骤
在端侧部署模型,除了选芯片,还有一套必不可少的优化流程。这里我以 Jetson 平台为例讲讲大致的步骤。
第一步是导出中间表示。以 PyTorch 训练的模型为例,需要先转成 ONNX,再转成 TensorRT 的 engine 文件。转换时要注意算子兼容性:有些模型用了自定义算子,ONNX 导出和 TensorRT 解析时可能报错,可以用 opset 版本匹配、替换算子等方式解决。
第二步是选择精度。TensorRT 支持 FP32、FP16、INT8 三种精度。FP16 基本无损,INT8 需要校准数据,精度会有小幅下降,但推理速度提升明显。我通常的做法是:先用 FP16 验证正确性,再考虑对精度不敏感的任务用 INT8 量化。
第三步是优化数据链路。如果使用 USB 摄像头,采集和预处理会占用大量 CPU,成为瓶颈。建议用 NVIDIA DeepStream 框架直接对接 MIPI CSI 摄像头,通过 GPU 加速解码和预处理,能显著降低 CPU 占用和端到端延迟。
下面是一个非常简单的 TensorRT 转换命令行示例,用的就是 trtexec 工具:
trtexec --onnx=yolov8s.onnx \ --saveEngine=yolov8s_fp16.engine \ --fp16 \ --workspace=2048转换完成后,在 C++ 或 Python 里加载 engine 进行推理。如果发现某个算子性能异常,可以用 trtexec 的 profiling 功能查看各层耗时,再针对性优化。
5. 常见问题与避坑实录
5.1 实测中踩过的坑
这一节把我实际踩过的坑都整理出来,希望能帮大家少走弯路。
第一个坑是散热膏没涂好导致温度过高。我有一块 Orin NX 模组,满载时温度比其他同型号高 20 多摄氏度,一开始以为芯片体质问题,拆开重涂散热膏才发现是原来的导热垫厚度不均匀,芯片和散热器之间有局部空隙。处理方式是换用高导热系数的相变导热垫,并在安装时确保压力均匀。
第二个坑是 USB 摄像头丢帧导致感知中断。USB 摄像头在长时间运行后偶尔会掉帧甚至断连,尤其是在供电不稳的时候。后来我把 USB 摄像头换成 MIPI CSI 接口,并配置 CSI 时钟和电源管理,断连问题基本不再出现。如果必须用 USB 设备,建议通过外部供电的 USB Hub 接到 Jetson,而不是直接从主板取电。
第三个坑是存储速度不足导致系统卡顿。系统装在普通 TF 卡里运行,Swap 分区频繁读写,高负载时整机卡到没法用。换成 NVMe SSD 之后流畅度提升非常明显,尤其是涉及模型加载和日志写入的场景。这个问题在做量产定型时尤其重要,存储性能指标必须在选型阶段就确认好。
第四个坑是模型在 x86 开发机上跑得好好的,部署到 ARM 上就各种报错。原因多半是依赖库的版本不匹配,比如 OpenCV、NumPy 的 ARM 版本和 x86 版本行为有差异。建议从一开始就在 ARM 环境里做开发,或者至少保证 Docker 镜像在 x86 和 ARM 之间的一致性。
5.2 常见问题速查表
下面这张速查表是我在项目里反复用到的排查手册,基本涵盖了车载/机载端侧 AI 最常见的几类问题。
| 问题现象 | 排查思路 | 解决方案 |
|---|---|---|
| 运行一段时间后推理帧率下降 | 检查芯片温度是否触发降频 | 优化散热,或下调电源模式 |
| 开机后间歇性重启 | 检查供电电压、电流余量,测量瞬时压降 | 增加供电电容、更换余量更大的 DC-DC |
| 摄像头断连或丢帧 | 检查 USB 供电、接口接触、驱动版本 | 换用 MIPI CSI 摄像头,或外置供电 USB Hub |
| 模型转换后精度明显下降 | 检查 INT8 量化校准数据集是否充分 | 选代表性数据重新校准,或改用 FP16 |
| 机器人振动后系统死机 | 检查模组金手指和连接器是否锁紧 | 加装固定压片,使用带锁扣连接器 |
| NPU 和 CPU 资源争抢导致卡顿 | 查看进程占用,确认推理放在 NPU/GPU 上 | 设置 CPU 亲和性,合理分配线程 |
注意:排查问题时,最好从电源、温度、连接可靠性三个维度入手。很多“玄学”故障最后都是这几类物理因素导致的,软件层面反而没那么复杂。
写在最后的一些体会
做了这么多轮选型和实测,我最大的感受是:端侧 AI 硬件选型没有“最好的芯片”,只有“最适合你整机约束的芯片”。标称算力再高,如果功耗散热撑不住,也只能当摆设。反而是那些功耗可控、工具链成熟、量产风险低的方案,能让你把精力集中在算法和产品上。
如果你正准备启动一个新项目,建议先花一周时间把整机的功耗、散热、成本预算列清楚,再做芯片选型。不要因为某个芯片跑分高就冲动下单,也别只看开发板的易用性而忽略量产的供应风险。我在实际项目里最常用的一句话是:先算账,再上车,不然到后期换平台的成本远超前期省下的那些时间和精力。
最后分享一个小技巧:如果团队时间紧,优先选 Jetson 系列把原型跑通,同时安排人评估国产芯片方案的迁移路径。这样既保证了 demo 演示稳定,又为后期降本留了后路。这个“一套代码、双平台适配”的思路,帮我躲过好几次供应链波动带来的风险。