Hugging Face 异步机器人推理
Hugging Face 推出了异步机器人推理,这是一种将动作预测与执行解耦的系统,以消除顺序机器人控制循环中常见的空闲期。该方法使机器人在计算下一批动作的同时,继续执行已预测动作的队列,从而在不影响成功率的前提下,实现任务完成时间约 2 倍的加速。
顺序推理的局限性
顺序推理会产生瓶颈,机器人必须在等待策略预测下一段动作时保持空闲。在传统循环中,机器人获取观测,运行策略得到一系列未来动作,然后执行这些动作。当队列为空时,机器人会完全停止,直至下一次推理周期完成。
这种依赖导致两个主要问题:
- 运行时延迟: 随着模型变得更大且计算成本更高,推理延迟增加,主导了交互时间,导致整体任务执行变慢。
- 响应性降低: 机器人在执行一段动作时以开环方式运行,随后完全空闲,导致无法快速响应环境变化。
异步推理架构
异步推理通过计算与执行的重叠消除空闲期。系统被划分为两个独立组件,可部署在通过网络连接的不同机器上:
机器人客户端
RobotClient 在机器人上运行。其主要职责包括:
- 观测流式传输: 将最新观测流式传输到服务器。由于高分辨率相机捕获常常超过 4MB gRPC 消息限制,观测采用流式方式而非单向 RPC 发送。
- 队列管理: 客户端维护本地动作队列。当队列长度低于可配置阈值(
chunk_size_threshold或 $g$)时,触发新的观测请求。 - 动作聚合: 当新的动作块到达时,客户端使用自定义聚合器将其与当前队列合并。支持的策略包括 Replace(用新预测覆盖重叠动作)和 Weighted blend(使用时间权重合并动作)。
策略服务器
PolicyServer 部署在加速硬件(如 GPU 或 TPU)上,以最大化计算资源。其工作流程包括:
- 观测清理: 处理键匹配、预处理和推理准备的流水线。
- 相似性过滤: 为避免冗余计算,服务器使用关节空间相似度比较当前观测与前一次观测。如果观测过于相似,服务器可能跳过推理,除非观测标记为
must_go=True。 - 请求阻塞: 服务器阻塞后续观测,直至前一次观测处理完毕,以确保始终使用最新数据。
技术实现与性能
通信协议
系统使用 gRPC(基于 HTTP/2 并使用协议缓冲区)进行通信。此选择提供低延迟的二进制消息和双向流,在本地网络上使用如 NVIDIA RTX 4090 等硬件时,可实现低于 100 ms 的往返延迟。
调节控制回路
性能受比率 $c = \frac{\mathtt{environment}\mathtt{dt}}{\mathtt{inference}\mathtt{time}}$ 控制。为防止系统退化回顺序控制,用户可以:
- 提升计算能力: 使用更强大的 GPU 来降低 $\mathtt{inference}_\mathtt{time}$。
- 调整阈值 ($g$): 参数 $g$ 表示在发送新观测时的最大块大小的比例。
- $g = 0$ 模拟顺序推理。
- $g = 1$ 每个时间步发送观测,延迟最小但计算量最大。
- 实验表明 $g \approx 0.7$ 是有效的折中,尽管 Hugging Face 推荐的起始值为 $g = 0.5$。
对机器人策略的影响
异步推理兼容支持动作块的策略,如 ACT、OpenVLA、PI0 和 SmolVLA。通过收紧控制回路并允许连续运动,系统实现了更具适应性的控制和更快的任务完成。在 SmolVLA 的测试中,该架构使任务完成时间约提升 2 倍,同时保持了相当的任务成功率。