系统可靠性设计聊完了,从这篇开始我们进入一个新的板块——AI感知与部署。机器人要在真实环境里自主决策,光靠规则不够,需要AI模型来理解周围的世界。这些模型跑在哪里?跑在机器人本体上,也就是边缘端。

边缘计算部署是机器人AI落地的关键环节。模型训练得再好,部署不上去也是白搭。算力有限、功耗受限、实时性要求高,这些约束条件让边缘部署和云端部署完全是两回事。

面试问到项目经验,能把模型从训练到部署的全流程讲清楚,特别是部署阶段的优化和踩坑经历,非常有加分效果。

一、边缘硬件平台

机器人常用的边缘计算平台有好几类,选型要看具体需求。

NVIDIA Jetson系列:Jetson Orin Nano/Orin NX/Orin AGX,算力从40TOPS到275TOPS。支持CUDA,深度学习生态最完善。大多数视觉类机器人都用Jetson。缺点是功耗较高、价格不便宜。

Intel系列:NUC+OpenVINO,或者带Movidius神经计算棒。适合算力需求不高的场景。OpenVINO对Intel硬件优化很好,推理效率不错。

国产平台:地平线旭日/征程、瑞芯微RK3588、华为昇腾。成本优势明显,部分场景性价比很高。但软件生态和文档支持跟NVIDIA还有差距。

FPGA:适合需要极低延迟的场景。可以定制化数据通路,但开发门槛高,需要硬件描述语言经验。

# 查看Jetson设备信息
import jetson_utils
print(jetson_utils.cuda.GetDeviceName())
# 查看GPU利用率
import subprocess
subprocess.run(['tegrastats', '--interval', '1000'])

选型的核心考量:算力够不够跑你的模型、功耗能不能接受、软件生态是否成熟、成本是否可控。不要盲目追求高算力,够用就行。

还有一个容易忽略的问题:散热。边缘设备通常没有主动散热(风扇),长时间高负载运行会触发降频。Jetson在满载推理时温度能到80多度,降频后性能下降30%以上。产品设计时要考虑散热方案——散热片、导热垫、甚至风道设计。功耗和散热是边缘部署绕不开的工程问题。

二、模型轻量化

边缘平台的算力跟云端GPU差几个数量级。直接把云端模型搬过来跑,帧率可能只有个位数。必须做模型轻量化。

模型剪枝:把网络中不重要的连接去掉。结构化剪枝(去掉整个卷积核)比非结构化剪枝(去掉单个权重)更容易在硬件上加速。剪枝后需要微调恢复精度。实际操作中,结构化剪枝30%-50%的稀疏度通常能在精度损失很小的情况下获得显著的加速效果。剪枝率太高精度会断崖式下降,要逐步增加剪枝率做实验。

量化:把浮点数权重压缩成低精度。FP32→FP16几乎不掉精度,推理速度翻倍。FP32→INT8速度提升4倍,但需要校准数据集来做量化感知训练或者训练后量化。

# TensorRT量化示例(后面会专门讲)
import tensorrt as trt
builder = trt.Builder(trt.Logger(trt.Logger.INFO))
config = builder.create_builder_config()
config.set_flag(trt.BuilderFlag.FP16)  # 开启FP16

知识蒸馏:用大模型(教师)指导小模型(学生)训练。学生模型参数量小但能学到教师模型的知识。比如用ResNet152的输出指导ResNet18的训练,ResNet18的精度能提升好几个点。蒸馏的loss通常用soft label(教师模型的softmax输出),温度参数T控制soft程度。

轻量化网络设计:MobileNet系列用深度可分离卷积减少计算量。ShuffleNet用通道混洗提升特征复用率。EfficientNet通过NAS搜索最优网络结构。选一个合适的轻量化骨干网络,比后期优化更有效。

三、推理引擎部署

模型训练完要转换成边缘平台能跑的格式。不同的硬件平台对应不同的推理引擎。

NVIDIA Jetson用TensorRT。把PyTorch模型导出ONNX,再用TensorRT转换成引擎文件。TensorRT会做算子融合、内存优化、精度校准,推理速度比直接用PyTorch快好几倍。

# ONNX导出
import torch
dummy_input = torch.randn(1, 3, 640, 640).cuda()
torch.onnx.export(model, dummy_input, "model.onnx",
                   input_names=['input'], output_names=['output'])

Intel平台用OpenVINO。同样支持ONNX导入,对Intel CPU和集成GPU优化很好。部署流程比TensorRT简单一些。

国产平台各有各的推理引擎。地平线用天工开物工具链、瑞芯微用RKNN、华为用MindSpore Lite。部署流程大同小异——模型转换、量化、部署。

推理引擎的选择直接影响开发效率和推理性能。推荐在选型阶段就把推理引擎的兼容性考虑进去,不要等模型设计完了才发现目标平台不支持某些算子。一个常见的坑是:PyTorch里用了一个自定义算子,导出ONNX的时候这个算子不被TensorRT支持。解决办法是提前查清楚推理引擎支持的算子列表,设计模型时只用标准算子。

四、部署优化实战

模型转换完只是第一步。真正部署到产品里还有很多优化要做。

前处理优化:图像缩放、归一化、色彩空间转换,这些前处理操作要尽量用硬件加速。Jetson上有硬件加速的图像预处理模块(VIC),比CPU处理快很多。

后处理优化:目标检测的NMS(非极大值抑制)在CPU上跑可能很慢。可以用batched NMS(GPU版本)或者把NMS融合到TensorRT引擎里。

流水线并行:推理的时候不要让相机干等着。用多线程实现"采集→推理→后处理"的流水线并行。上一帧在做后处理的时候,下一帧已经在推理了。

# 流水线并行伪代码
while running:
    frame = camera.capture()      # 采集
    result = model.infer(frame)   # 推理
    boxes = postprocess(result)   # 后处理
    display(boxes)                # 显示

内存管理:边缘设备内存有限。要避免重复分配内存——推理的输入输出buffer要预分配并复用。图像数据用零拷贝传输,减少内存占用。Jetson的统一内存架构(UMA)让CPU和GPU共享同一块内存,用好这个特性能大幅减少数据搬运的开销。

批处理:如果同时有多个推理请求,合并成batch一起推理比逐个推理效率高很多。但batch size不能太大,否则显存不够。需要在延迟和吞吐之间做权衡——实时性要求高的场景用小batch或者单帧推理,吞吐优先的场景用大batch。

五、面试高频追问

Q:你怎么选择合适的边缘平台? A:根据模型算力需求和产品成本约束来选。先算清楚模型需要多少TOPS的算力,再选满足需求的最低配置平台。同时考虑软件生态——如果团队熟悉CUDA,选Jetson上手最快。如果成本敏感,国产平台值得考虑。

Q:模型量化后精度下降怎么办? A:先用FP16量化,精度损失通常很小。如果必须用INT8,用量化感知训练(QAT)代替训练后量化,精度损失更可控。实在不行就混合精度——敏感层用FP16,其他层用INT8。

Q:怎么保证推理的实时性? A:模型层面做轻量化(剪枝、量化、蒸馏)。部署层面用推理引擎优化(算子融合、内存优化)。系统层面做流水线并行和内存预分配。如果还是不够快,考虑降低输入分辨率或者减少检测频率。

边缘计算部署是机器人AI落地的最后一公里。硬件选型、模型轻量化、推理引擎、部署优化,这四个方面掌握了,你就能把AI模型真正跑在机器人上。

上一篇:第282篇 系统可靠性设计 

下一篇我们聊云机器人架构。


边缘计算部署是机器人AI落地的关键环节。硬件平台选型、模型轻量化技术、推理引擎部署流程、实战优化策略,这四个维度覆盖了边缘部署的核心内容。下一篇聊云机器人架构。

如果这篇文章对你有帮助,欢迎点赞支持一下,你的鼓励是我持续更新的动力!

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐