Massively Parallel Walk:4000 个机器人同时摔倒同时学,20 分钟学会走
🎯 为什么重要:RL 训练时间曾经是机器人学的「死亡螺旋」
2021 年前,机器人 RL 训练慢得让人绝望:
- OpenAI 的方块重定向任务:14 天
- OpenAI 魔方任务:几个月
- 四足感知运动(Lee et al. 2020):120 小时
- 四足 + OC 结合(Miki et al. 2019):82-88 小时
- 纯盲走(Hwangbo 2019):12 小时
论文的目标不是「刷 SOTA」(作者明确说 "purpose is not to obtain the absolute best-performing policy"),而是把训练时间压缩到能反复迭代的程度。20 分钟意味着:午休回来就有一个新策略,下午可以试 10 组超参。
💡 核心思想:把仿真器和训练都「GPU 化」
关键洞察:传统 RL 慢,不是因为算法差,而是因为 CPU-GPU 数据搬运。每一步要:(1) GPU 跑策略推理 → (2) 传 CPU 仿真 → (3) CPU 算 reward → (4) 传回 GPU 更新。PCIe 数据传输比 GPU 计算慢 50 倍(原话 "as much as 50 times slower")。Isaac Gym 把整条流水线都搬上 GPU,加上 PhysX 引擎能并行处理数千个机器人,于是并行度从「CPU 几十个进程」跃升到「GPU 几千个实例」。
🛠️ 4 个工程关键:让 PPO 在 1000× 并行下不崩
直接把 PPO 并行度提到 4000+ 不会自动变快——会崩。作者给出了几个「反直觉但关键」的修改:
| 设计 | 具体改动 | 为什么必要 |
|---|---|---|
| ① Batch size 大幅调整 | $B = n_{\text{robots}} \times n_{\text{steps}}$;并行度 ↑ → 每个 robot 的 $n_{\text{steps}}$ 要 ↓(保持 $B$ 合理)。最终用 B ≈ 100k-200k(远大于常规) | $n_{\text{steps}}$ 太小(<25 步 ≈ 0.5s)→ GAE 拿不到时序信息,PPO 不收敛;太大 → 样本冗余 |
| ② Mini-batch 加大 | mini-batch 取数万样本(远超常规最佳实践) | 大 batch 下稳定化训练;不增加总训练时间 |
| ③ 区分 termination 类型 | 失败 reset 和 time-out reset 分开处理;time-out 时 bootstrap critic | time-out 不可预测,若不 bootstrap 会让 critic 学崩;这是标准 Gym 接口的盲点(很多开源代码都忽略了) |
| ④ Game-Inspired 课程 | 5 种地形(平/斜/粗糙/离散障碍/楼梯)× 多 level;走过界升级、走不完降级;满级随机回放防遗忘 | 4000 个机器人天然给出「性能分布」→ 不需要外部 generator / particle filter,近零开销 |
传统课程(Lee et al. 2020)需要一个 particle filter 来估计「当前 policy 在哪个 level 的成功率」,从而决定下个 batch 用什么难度。但当你有 4000 个机器人时,它们当前的 level 分布本身就是 policy 性能分布的足够好的采样。所以「直接用当前 level 分布」就替代了 particle filter——近零计算开销。这是「并行规模大到一定程度,原本需要单独建模的东西变成自然涌现」的典型例子。
📊 关键数字(PDF 溯源)
| 维度 | 数字 |
|---|---|
| 训练时间(平地) | 不到 4 分钟(单 GPU) |
| 训练时间(复杂地形) | 不到 20 分钟(4096 robots,B=98304,1500 policy updates) |
| 对比 | 相对 Lee 2020(120h)/ Miki 2019(82-88h)提速 数百倍 |
| 硬件 | i9-11900k CPU + NVIDIA RTX A6000 GPU(单工作站) |
| 楼梯成功率 | ≤ 20cm 楼梯接近 100%(接近 ANYmal C 运动学极限) |
| 斜坡 | ≤ 25° 能爬;> 25° 学会滑下来(有一定成功率) |
| 并行度甜点 | 2048-4096 robots(B ≈ 100k-200k);> 4000 throughput 收益放缓;> 极限时单机器人时序信息太少 → 性能反而掉 |
| 跨机器人泛化 | 同套 hyper-param 复用在 ANYmal B、ANYmal C + 机械臂、Unitree A1、Agility Cassie(双足,加单脚站立 reward) |
| 真机部署 | ANYmal C 上 sim2real 验证:能上下楼梯、过障碍;最大速度降至 0.6 m/s(因 elevation map 不完美) |
🌐 在领域中的位置
这篇论文是「大规模并行 RL 训练机器人」的工程范式开端。它把训练时间从「天」压到「分钟」,使「RL + sim2real」从 PhD 论文级项目变成「周报可迭代」的工作流。它没有提出新算法,但它的工程经验(batch / mini-batch / termination 处理)成为后续大规模 RL 的默认最佳实践。后续的 ANYmal-Parkour、ANYmal-C、HugWBC、HOVER 都直接或间接基于此。关联线索:T01 sim2real、T12 敏捷运动。后续工作可看 ANYmal-C、ANYmal-Parkour。
❓ 常见误区
这篇是「新算法」吗?
不是。算法是标准的 PPO(Schulman 2017)+ 标准的 GAE。论文贡献是「怎么让 PPO 在 1000× 并行下不崩」的工程改造(batch size、mini-batch、termination bootstrapping、game curriculum)。这点作者很坦诚:"purpose is not to obtain the absolute best-performing policy"——他们要的是「训练时间的范式转变」。
为什么是 4000 个机器人,不是 40000?
实验做了 trade-off 分析(§4.1 Fig.4)。结论:(1) 并行度 ↑ → 训练时间 ↓(接近线性到 4000);(2) 但并行度太高 → 每个 robot 单次收集 step 数太少 → 时序信息不足 → PPO 不收敛。所以 2048-4096 + B≈100k-200k 是甜点。理论极限是 20000 robots + B=1M,但训练时间又会长——所以并行度不是越大越好。
课程为什么叫「game-inspired」?
因为它像电子游戏的「关卡」:每个地形类型(楼梯 / 斜坡 / 障碍)分多个 level,难度递增;走过界 → 升级;走不完 → 降级;满级 → 随机回放(防遗忘)。这跟 Super Mario Bros 这种平台游戏的难度自适应非常像。区别于「学生-教师」课程(外部网络调难度),这里用「4000 个机器人自身的 level 分布作为难度信号——天然、零开销。
20 分钟训出来的策略真机直接能跑吗?
论文做了真机验证(§4.3 Fig.7),但作者明确说不是 SOTA robustness。最大速度从仿真中的命令值降到 0.6 m/s,因为真机 elevation map 不完美 + 状态估计漂移。论文也指出 Miki 2019 的 teacher-student 范式更鲁棒,他们计划未来合并两者。所以「20 分钟」是「能用的 baseline」,不是「最好的策略」——这是其工程价值的定位。