IL_部署推理---工具和语言

IL :Imitation Learning,EAI:Embodied Artificial Intelligence

模仿学习|机器人真机部署 & 推理:工具、语言、库、文件格式、部署方案,优缺点对比

前置背景:模仿学习训练得到模型(MLP / TCN / LSTM / ACT Transformer / DiT / Mamba),真机推理核心诉求:低延迟、确定性、安全、时序状态管理、和机器人控制器 / 传感器链路打通 。

区分两层:

  1. 模型推理层:AI 模型前向计算(策略网络)
  2. 机器人机器人应用层:传感器采集、时序缓存、动作限幅、安全监控、下发关节指令(ROS2 / 原生控制器 SDK)

适用场景:动捕采集数据训练的 BC、ACT、Diffusion Policy、Mamba 等模仿策略;重点对比不同部署路线差异。

一、编程语言

1. C++(真机控制主线语言,头部机器人量产首选)

适用 :底层控制器、实时推理、安全监控线程、关节伺服下发

优点 :内存可控、低延迟、硬实时能力、无 GC 垃圾回收抖动;可跑 RTOS/Linux PREEMPT_RT;直接对接电机驱动、力矩控制器;工业 / 人形(Figure、智元、傅里叶、宇树)底层全部 C++。

缺点:开发周期长,深度学习生态差,原生不支持快速模型迭代;复杂 Transformer/Mamba 手写算子成本极高。

2. Python(原型、预研、实验室真机,极少用于量产闭环)

适用 :快速验证 ACT/Diffusion/Mamba 真机 demo,LeRobot、Robomimic 原生 Python

优点 :深度学习生态完整,PyTorch/TensorRT/Python 库开箱即用;快速调试验证、数据采集、日志录制。

缺点 :GC 垃圾回收带来不可预测抖动,实时性差;多线程时序缓存容易丢帧;不适合 100Hz 以上高频闭环;生产级产品不会把主闭环放在 Python。

3. 混合架构(行业主流方案!绝大多数人形企业采用)

Python:模型加载、离线调试、数据记录;C++:实时传感器采集、时序缓存、安全层、动作限幅、伺服下发;模型推理模块独立进程 / 共享库 。

推理进程可以 C++,也可以 Python 进程 + IPC 通信。

二、模型文件格式(训练端 → 真机推理端)

表格

格式 说明 适用模型 优点 缺点
.pt/.pth PyTorch 原生权重,仅 PyTorch 加载 所有模型,训练输出原始文件 训练 - 调试方便,保留计算图;适合 Python 原型推理 不能直接嵌入式部署;体积大;动态图,延迟不稳定;量产真机不直接用 pt 做高频闭环
ONNX .onnx 开放神经网络交换格式,通用中间表示 MLP、TCN、LSTM、ACT、DiT 跨框架通用;可转 TensorRT/TFLite;算子标准化;主流部署首选交换格式 自定义算子(Mamba、部分 Diffusion 自定义模块)无法导出 ONNX,是 Mamba 最大部署痛点;RNN/Transformer 序列模型需要处理时序状态输出
TensorRT .engine(序列化 plan) NVIDIA TensorRT 编译后的优化引擎文件 GPU 端推理(Jetson Orin、RTX) 算子融合、量化、FP16/INT8 加速,延迟最低;Jetson 平台人形机器人最常用 硬件绑定 NVIDIA,不同 GPU 不能跨设备复用 engine 文件;版本强绑定;Mamba 自定义 SSM 算子需要插件开发
TFLite .tflite TensorFlow 轻量化格式 简单 MLP、小型 TCN 适合 NPU 边缘芯片(瑞芯微、地平线 BPU) 复杂 Transformer/DiT/Mamba 算子支持差;模仿学习大 chunk 策略很少用
TorchScript .ts PyTorch 静态序列化 MLP、LSTM、简单 Transformer 保留 PyTorch 算子,可 C++ libtorch 加载 自定义算子兼容性一般,优化弱于 TensorRT
.bin + .json(HuggingFace 格式) 权重分片 + 网络描述 ACT、Transformer、DiT HuggingFace 生态,方便读取;多用于 Python 预研推理 不适合硬实时闭环,加载慢

重点:Mamba:Mamba1/Mamba2 的选择性 SSM 是 CUDA 自定义算子,原生 ONNX 导出困难,是当前真机部署最大卡点;一般只能使用 CUDA 插件 + TensorRT 或者直接 C++ 手写 SSM。

三、共享库 & 底层推理 SDK(模型推理核心库)

1. LibTorch(PyTorch C++ API)

  • 语言:C++,加载 TorchScript/ONNX
  • 适用 :MLP、LSTM、TCN、ACT
    优点 :C++ 环境直接跑 PyTorch 模型,不用完全重写网络;训练推理代码同源,减少 Sim2Real 代码不一致 bug。
    缺点:优化弱于 TensorRT;体积大;对 Mamba、扩散模型自定义算子支持差。

2. TensorRT(NVIDIA,Jetson Orin/NX 标配)

  • 行业头部人形真机推理首选 SDK (Figure、智元、傅里叶、Agility)
    优点 :算子融合、量化 FP16/INT8,推理延迟大幅降低;支持动态 shape(时序 Chunk、可变观测窗口,对 ACT/Diffusion 非常关键);支持多流推理;Jetson Orin 原生硬件加速。
    缺点:NVIDIA 生态绑定;自定义算子(Mamba、部分扩散模型)需要写 TensorRT Plugin 插件开发,开发难度高;engine 文件硬件绑定。

3. ONNX Runtime(ORT,跨平台推理引擎)

  • CPU/GPU/NPU 都支持;C++/Python API
    优点 :跨硬件(NVIDIA、地平线、RK、CPU),一套 onnx 到处跑;支持动态 shape;部署门槛低于 TensorRT;适合异构硬件。
    缺点:GPU 加速性能弱于 TensorRT;复杂自定义算子支持差。

4. TFLite / TensorFlow Lite

  • 主要面向 NPU,地平线 BPU、瑞芯微 RK 芯片
    优点 :低功耗,NPU 硬件加速。
    缺点 :Transformer、Diffusion、Mamba 支持很差,仅适合简单 MLP 策略(底层步态 MLP 大量使用)。

5. 专用算子库

  • CUDA /cuDNN:GPU 底层算子;Mamba 依赖 mamba-ssm CUDA 算子;
  • Eigen:C++ 矩阵运算,用于简单 MLP、状态机,无 GPU;
  • OpenCV:图像预处理(RGB / 深度图,观测输入),真机必用;
  • Eigen / Sophus:姿态、四元数、坐标系变换(动捕对齐、本体状态)。

四、机器人应用框架(机器人通信、传感器、时序管理、下发动作)

注意:推理 SDK 只做神经网络计算;机器人框架负责观测采集、时序缓存、安全校验、动作下发、日志。

1. ROS2 Humble/Iron/Jazzy(国内人形 / 双臂机器人最通用)

语言 :C++ 主节点 + Python 调试节点

功能:

  • 话题通信:相机 RGB / 深度、IMU、关节状态、力矩数据;
  • 服务 / 动作 Action:机器人运动执行;
  • TF:坐标系转换(手眼、基座、相机,动捕标定复用);
  • 组件化:可拆分为【传感器采集节点】、【时序缓存节点】、【AI 推理节点】、【安全监控节点】、【控制器下发节点】

优点 :生态成熟;模块化;时间戳同步;支持 PREEMPT_RT 实时内核;LeRobot 原生支持 ROS2 桥接;多传感器时间对齐,模仿学习时序任务刚需。

缺点:默认 DDS 有延迟;需要调优 QoS;大图像传输带宽压力;不建议把高频闭环控制放在 ROS2,一般 ROS 只负责观测与指令转发,底层伺服是独立 C++ 控制器。

2. 自研 SDK(头部企业量产方案:Figure、Tesla Optimus、Agility、部分国内人形厂商)

直接对接电机 / 控制器,无 ROS 依赖 ,C++ 裸框架。

优点 :最小延迟,DDS/IPC 完全自主可控;硬实时,无额外中间层开销;安全机制深度集成。

缺点:开发量大,维护成本高;生态封闭,算法迭代慢;需要自研传感器驱动、时序同步。

3. LeRobot(HuggingFace,模仿学习上层应用框架,预研真机首选)

Python 为主,可桥接 ROS2;原生 ACT、Diffusion Policy;内置时序滑动窗口、滚动时域推理、数据记录、HDF5 日志保存。

优点 :仿真和真机同一套策略代码 ,Sim2Real 代码差异最小;一键录制真机示教数据;原生适配动捕数据集格式。

缺点:Python 主线,实时性差;不适合高频 100Hz 量产闭环;人形全身 locomotion 支持弱。

4. Robomimic

Python,多用于桌面机械臂真机实验;数据集回放、评估;真机落地工程化能力弱,几乎不用于产品级部署。

5. FastAPI + WebSocket(轻量 IPC 推理服务,进程分离方案)

将 AI 推理封装为独立服务,机器人 C++ 控制节点通过 websocket/grpc 调用推理服务。

优点 :解耦 AI 模型和机器人控制;方便模型热更新;推理进程崩溃不直接卡死机器人伺服。

缺点:引入 IPC 通信延迟;需要做超时、熔断、安全保护。

五、真机推理部署的主流工程方案(4 大类,详细对比优缺点)

模仿学习真机核心难点:时序观测缓存(LSTM/Transformer/Mamba 需要历史序列)、滚动时域 Receding Horizon 推理、安全限幅、推理与伺服闭环时序对齐。

方案 1:单进程混合(Python 主线,原型验证方案)

架构 :Python 进程,采集 ROS2 图像 / 本体数据 → 维护时序 buffer → PyTorch 推理 → 动作输出 → ROS 下发指令

适用场景 :实验室、ALOHA 双臂 demo、LeRobot 快速验证;不用于量产

优点 :开发最快;训练推理同代码;快速调试 ACT/Diffusion;直接加载 pt 模型。

缺点:Python GC 抖动,延迟不稳定;一旦进程崩溃机器人失控;时序 buffer 线程竞争容易丢帧;最高推荐 30Hz 以内低频任务。

方案 2:双进程 IPC 分离架构【行业最主流!国内绝大多数人形 / 双臂预研采用】

架构拆为两个独立进程:

  1. 实时控制进程(C++,高优先级,PREEMPT_RT):传感器采集、时序状态缓存、安全校验、关节限幅、伺服下发;
  2. AI 推理进程(C++ TensorRT / Python LeRobot) :接收观测序列,运行 ACT/Diffusion/Mamba 策略,输出动作 Chunk;
    两进程之间通过共享内存 / ZeroMQ/GRPC通信。

优点

  1. 安全隔离:AI 推理进程崩溃,C++ 实时进程仍然存活,触发急停,保护硬件;
  2. 实时控制线程不受 AI 推理阻塞;
  3. AI 侧可以独立更新模型,不需要重新编译机器人控制代码;
  4. 时序缓存放在 C++ 实时侧,保证传感器时序对齐,不会丢历史帧(Transformer/Mamba/LSTM 刚需)。

缺点

  1. IPC 引入少量通信延迟;需要做消息队列、超时处理、心跳检测;
  2. 两套进程调试复杂度上升;需要统一时间戳。

选型:共享内存(最快)> ZeroMQ > GRPC;图像大报文一般共享内存传输。

方案 3:全 C++ 端到端部署(TensorRT + LibTorch,头部企业量产闭环方案,Figure、智元量产步态 / 操作策略)

架构 :全部 C++;C++ 读取传感器、时序缓存、TensorRT 推理、安全层、动作下发;无 Python,无独立 AI 进程。

优点 :延迟最低、抖动最小;PREEMPT_RT 硬实时;没有 IPC 开销;适合 100Hz 高频全身人形闭环;时序管理可控。

缺点:开发成本巨大;模型修改、消融实验都要重新编译;Mamba/DiT 自定义算子 C++ 开发难度极高;算法迭代慢。

方案 4:模型蒸馏 + NPU 部署(轻量化量产,底层 MLP 步态策略常用)

将训练好的大模型(Transformer/Mamba)作为 Teacher,蒸馏成轻量 MLP / 小 TCN,转 TFLite 部署到板载 NPU(地平线、RK)。

优点 :低功耗,延迟极低;适合嵌入式端;NPU 硬件加速。

缺点 :蒸馏会损失策略性能;复杂灵巧操作、多模态 VLA 任务性能下降明显;一般不用来部署 ACT/Diffusion 主策略,多用于底层步态策略。

六、不同模仿学习主干网络在真机部署上的差异点

表格

模型主干 推理部署难点 推荐部署方案 典型延迟特点
MLP 最简单,无状态,单帧输入 全 C++ / TensorRT,NPU 蒸馏 极短 < 1ms;适合 100Hz + 高频闭环(底层步态首选)
1D-TCN 固定滑动窗口时序,无隐状态 ORT/TensorRT;窗口在 C++ 预缓存 5~15ms,部署简单
LSTM/GRU 需要维护隐状态(h/c),状态随推理迭代更新 TensorRT/ORT,C++ 维护 hidden state;状态需要跨帧保存 5~20ms;隐状态异常会导致漂移
ACT Transformer 固定观测窗口 + CVAE 隐变量,滚动时域 Chunk 输出 双进程 TensorRT;C++ 维护时序窗口 10~30ms;动态 shape 支持是关键
Diffusion DiT 迭代去噪,多次网络前向,Chunk 输出 TensorRT,FP16 加速;去噪步数调参降延迟 40~120ms;低频任务,一般 10~25Hz 闭环
Mamba SSM 流式隐状态;自定义 CUDA 算子,ONNX 导出困难 双进程,CUDA 插件 + TensorRT;C++ 维护 SSM 状态 10~40ms;算子部署是最大卡点

七、真机推理部署通用关键工程要点

  1. 时序缓冲区管理 :
    ACT、Transformer、Mamba、LSTM 依赖历史观测序列,时序缓存必须放在高优先级实时 C++ 线程,不能放在 Python,防止丢帧、时间戳错位;训练和真机的窗口长度、采样率必须严格对齐,否则策略直接失效。
  2. 安全层独立
    安全逻辑(关节限位、力矩阈值、碰撞检测、急停)必须独立于 AI 推理,AI 进程崩溃不能阻塞安全判断,这是真机实验硬性要求。
  3. 动作后处理
    策略输出原始动作 Chunk → 限幅、平滑滤波、关节限位裁剪、奇异位姿检测,再下发给控制器;模仿学习输出动作经常存在抖动,真机必须做平滑。
  4. 时间同步
    图像、IMU、关节状态的时间戳对齐,和动捕数采时的时间基准保持一致;时间偏移会造成 Sim2Real 巨大 gap。
  5. 日志回流
    真机推理全链路数据(观测、预测动作、力矩、图像)保存 HDF5/Zarr,回流到数据集用于再训练,LeRobot 原生支持。

八、选型总结

  1. 预研、快速验证 ACT/Diffusion、动捕示教真机实验:双进程 IPC 架构,ROS2 + LeRobot(Python 推理进程)+ C++ 实时控制进程,TensorRT/ORT;
  2. 量产高频全身人形闭环策略(MLP 步态):全 C++ + TensorRT/NPU 蒸馏方案;
  3. Mamba 前沿原型真机测试:双进程架构,使用 CUDA 自定义算子,ONNX 导出放弃,直接推理原始 mamba-ssm;
  4. 低成本嵌入式,简单机械臂 MLP 策略:TFLite NPU 蒸馏方案。
相关推荐
楚楚2511 小时前
播客单声道怎么变立体声:先明确需求再选择处理方案
人工智能
俊男无期1 小时前
【AI 和未来】工作(1)
人工智能
IT大白鼠1 小时前
彭大帅的AI运维助手实战案例 5 · 新接手的服务器,先让 AI 摸底
运维·服务器·人工智能
江屿风1 小时前
【Plain Language Large Model】【理清常见国内外大模型的定位和特长】流食般投喂
人工智能·gpt·claude·glm·gemini·千问·deepseek
MicrosoftReactor1 小时前
技术速递|从 Jev 到你的笔记本电脑:使用 Mobius 在 ONNX 中构建“System One”决策模型
人工智能·ai·大模型·onnx
Duang007_1 小时前
Claude Managed Agents 动态工作流:让 Lead Agent 自己写编排程序
人工智能·语言模型·自然语言处理
在所不辞兄1 小时前
为什么PINN非常适合求解有限元模型
人工智能·深度学习·神经网络·算法·机器学习
李福春1 小时前
GPT-6 Intelligent UI 会让传统前端开发消失吗?
人工智能·腾讯云架构师同盟