枢纽
机器人ANYmal
上真机
物理感知
实时
输入模态proprioception

Massively Parallel Walk:4000 个机器人同时摔倒同时学,20 分钟学会走

Nikita Rudin, David Hoeller, Philipp Reist, Marco Hutter(ETH Zurich + NVIDIA)。CoRL 2021 / arXiv:2109.11978v3。 legged_gym (开源) · locomotionparallel RLsim2realcurriculum

🧠 一句话心智模型:以前训一个四足机器人走路要 12-120 小时,这篇说「4000 个 ANYmal 一起在 GPU 上摔倒一起学,20 分钟就够」。秘诀不是更聪明的算法,而是更暴力的并行——Isaac Gym 把仿真+训练全塞进一张 GPU,4000 个机器人同时跑,加上一个「像游戏关卡一样自动调难度」的课程。这一下把训练时间砍了 1-2 个数量级。

🎯 为什么重要:RL 训练时间曾经是机器人学的「死亡螺旋」

2021 年前,机器人 RL 训练慢得让人绝望:

几个真实数字(出自原论文 §1)
  • OpenAI 的方块重定向任务:14 天
  • OpenAI 魔方任务:几个月
  • 四足感知运动(Lee et al. 2020):120 小时
  • 四足 + OC 结合(Miki et al. 2019):82-88 小时
  • 纯盲走(Hwangbo 2019):12 小时
问题在于:调一次超参就要等好几天。RL 训练时间不是「科研成本」,是「科研瓶颈」——你只能试少数几组配置。

论文的目标不是「刷 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 几千个实例」。

传统:CPU 仿真(少量并行) GPU 策略 PCIe (慢!) CPU 仿真 回 GPU ~64-1024 个并行 worker 12-120 小时 数据搬运是瓶颈 Isaac Gym:全 GPU 流水线 所有计算留 GPU 策略推理 PhysX 仿真 reward + obs 4000-20000 个机器人同时跑 🎮 游戏 inspired 课程:自动调难度 Level 1 平地 + 5cm 走过界 Level 2 + 斜坡 Level 3 + 楼梯 10cm Level 4 + 障碍 15cm Level 5 最高 20-25° ✗ 走不过 → 降级 ✓ 走过 → 升级 / 满级后随机回放 每个机器人独立 level;利用「数千机器人当前 level 分布」当作 policy 性能分布 → 不需要外部采样器
图 1:上:CPU 仿真的 PCIe 瓶颈 vs 全 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 critictime-out 不可预测,若不 bootstrap 会让 critic 学崩;这是标准 Gym 接口的盲点(很多开源代码都忽略了)
④ Game-Inspired 课程5 种地形(平/斜/粗糙/离散障碍/楼梯)× 多 level;走过界升级、走不完降级;满级随机回放防遗忘4000 个机器人天然给出「性能分布」→ 不需要外部 generator / particle filter,近零开销
🔮 直觉:为什么「4000 个机器人」能省掉课程的外部采样器?
传统课程(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 不完美)
关键洞察:作者明确说,目的不是刷 SOTA,而是「转变研究者对训练时间的预期」。论文另一个隐藏贡献:开源的 legged_gym 代码库——此后几乎所有用 Isaac Gym 训四足 / 双足的工作(包括大量人形)都基于它。这是「工程论文 + 开源」改变研究范式的典型案例。

🌐 在领域中的位置

MuJoCo / Bullet CPU 仿真(Hwangbo 2019, Lee 2020, 12-120h) Isaac Gym 大规模并行(Rudin 2021, <20min)⭐ Isaac Lab / Genesis / MuJoCo MJX(2023-,进一步加速 + 异构) 人形大规模训练(HFH, HugWBC, HOVER 都基于此)

这篇论文是「大规模并行 RL 训练机器人」的工程范式开端。它把训练时间从「天」压到「分钟」,使「RL + sim2real」从 PhD 论文级项目变成「周报可迭代」的工作流。它没有提出新算法,但它的工程经验(batch / mini-batch / termination 处理)成为后续大规模 RL 的默认最佳实践。后续的 ANYmal-Parkour、ANYmal-C、HugWBC、HOVER 都直接或间接基于此。关联线索:T01 sim2realT12 敏捷运动。后续工作可看 ANYmal-CANYmal-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」,不是「最好的策略」——这是其工程价值的定位。