⏱ ~31 min
里程碑
⭐ 为何重要

NVIDIA 的 Isaac Gym 是 GPU 并行物理仿真 RL 的奠基性基础设施:在单 GPU 上并行数千环境,把四足/灵巧手策略训练从天级压到分钟级。它是 legged_gym、Walk-These-Ways、Extreme Parkour、AMP for quadrupeds 等几乎所有 2021 后腿足/灵巧工作的共同底座,开启了机器人 RL 的『民主化』时代,是 T02(数据集与仿真基础设施)链在 2021 年的核心节点。

Isaac Gym: High Performance GPU-Based Physics Simulation For Robot Learning

作者 / 机构:Viktor Makoviychuk, Lukasz Wawrzyniak, Yunrong Guo, Michelle Lu, Kier Storey, Miles Macklin, David Hoeller, Nikita Rudin, Arthur Allshire, Ankur Handa, Gavriel State(NVIDIA)
发表:NeurIPS 2021 Datasets and Benchmarks
arxiv2108.10470 · 代码github.com/NVIDIA-Omniverse/IsaacGymEnvs · 项目页:developer.nvidia.com/isaac-gym
在线索中的位置:属于 T02「数据集基础设施演化」转折 5 + T01Sim-to-Real」的工程基础
一句话定位:NVIDIA 的 GPU 并行物理仿真器——让 RL 训练从天级压到分钟级(2–3 个数量级加速),是 legged_gym/Walk-These-Ways/Extreme Parkour/AMP-Adroit 等所有现代 locomotion 工作的基础设施。机器人 RL 训练民主化的转折点。


动机

2020 年前,机器人 RL 训练有个巨大瓶颈:仿真器太慢MuJoCo、PyBullet 都是 CPU 仿真,单线程。OpenAI 的灵巧手工作把这种瓶颈推到极致:Learning Dexterity(2018)用 6144 CPU cores + 8 V100 GPU 跑 30 小时才收敛;后续 Solving Rubik's Cube with a Robot Hand(2019)规模更大,达 30,000 CPU cores(920 worker × 32 core)

NVIDIA 的问题:能不能用 GPU 把物理仿真大规模并行,像训练 LLM 那样一次跑几千个环境?现有 GPU 物理工作(如 PhysX 在 RL 中的早期尝试 [12])只把 simulation 搬上 GPU,但 physics state 仍每步 copy 回 CPU 算 obs/reward 再 copy 回 GPU——这种 GPU↔CPU 反复搬运依然是瓶颈。


方法核心

1. 端到端 GPU 训练(核心架构,Sec.2.1.2 + Fig.3)

Isaac Gym 的本质贡献不是「把 physics 放 GPU」(之前工作做过),而是「physics + obs/reward + policy + action 全程不离开 GPU」。为此给 PhysX 加了两个新 feature:

  1. PhysX GPU simulation 可不 fetch 结果到 CPU:每步 step 后结果留在 GPU buffer。
  2. 新增 direct GPU API:在 GPU buffer 直接 access current state / submit state changes / apply control inputs。

由此形成 zero-copy experience collection pipeline(Fig.3b 对比 Fig.3a 传统 CPU 流水线):


传统 RL pipeline(Fig.3a):                       Isaac Gym pipeline(Fig.3b):
  physics step (GPU)                                 physics step (GPU)
  → copy state GPU→CPU       ← 瓶颈 1                →(不 copy,留在 GPU)
  → CPU 算 obs/reward         ← 瓶颈 2                → GPU 算 obs/reward(PyTorch tensor)
  → copy obs/reward CPU→GPU   ← 瓶颈 3                → policy forward(GPU)
  → policy forward (GPU)                               → action 直接喂回 physics(GPU)
  → copy action GPU→CPU       ← 瓶颈 4                全程零 CPU bottleneck
  → copy action CPU→GPU                              

Tensor API(Sec.2.3)是这套的接口层:把 physics buffer 直接 wrap 成 PyTorch tensor,无 copy overhead(靠 CUDA interoperability)。所有 obs/reward/action 计算在 PyTorch 里用 TorchScript JIT 编译,跑在 GPU 上。一行 flag 切 CPU/GPU用户无需写任何 CUDA kernel

2. PhysX GPU 并行的精确机制(Sec.2.1.2 + Sec.3)

关键设计反转:CPU 上要「split envs into multiple scenes」(一个 thread 一个 scene,靠多核 scale);GPU 上相反——把所有 envs pack 进 single physics scene,利用 GPU streaming multiprocessor 的 deep fine-grained parallelism。GPU 在 shape / body / joint 级别做并行(不是 env 级别),high-end GPU 需要数千–数万 object 才能吃满,正好匹配「数千–数万并行 env」的 RL 需求。

Solver:Temporal Gauss-Seidel (TGS)(Sec.3,PhysX 关键):

  • 观察:sub-step + 1 次 Gauss-Seidel 迭代,比大 step + 多次迭代收敛快得多。
  • TGS 把 sub-stepping 折叠进迭代过程:每 iter 算 end-of-iter velocity,accumulate 到 per-body delta buffer(按 $dt/N$ 缩放,$N$ = 迭代数);delta buffer 投影到 constraint Jacobian 加进 bias。
  • 仅比传统 GS 多几步 ops,但达到 sub-stepping 的收敛效果而无需其计算开销。
  • 对 positional joint constraints 加额外 rotational term(处理非线性运动、避免 linearization artifacts),contacts 不加(不需要、且会坏事)。

Tensor 一览(Tab.1,关键 4 类)

TensorShape用途
Actor root state$(N_A, 13)$pos(3)+quat(4)+lin_vel(3)+ang_vel(3),可 Get/Set(reset 用)
DOF state$(N_D, 2)$每个 DOF 的 position+velocity,可 Get/Set
Rigid body state$(N_B, 13)$所有 rigid body 的完整 kinematic state,Get
Jacobian / Mass matrixvariable支持 operational space control / IK
Net contact forces$(N_B, 3)$关键 reward/contact-rich 任务信号

$N_A$=actor 总数、$N_B$=rigid body 总数、$N_D$=DOF 总数。所有 env 的所有 body 平铺在一个大 tensor 里,env index 作一维 → 天然 GPU 向量化。

Control Tensor(Tab.2):DOF actuation forces / DOF position targets / DOF velocity targets / rigid body forces / rigid body torques,覆盖 force/torque/PD 三类控制。

3. Simulation Setup(Sec.2.2 + Tab.4)

  • 支持 URDF + MJCF 加载;single-body actor = rigid dynamics、multi-body = reduced coordinate articulation。
  • 大部分 joint/rigid body 属性可在仿真中实时改 → domain randomization 不停仿真。

8 个 benchmark 环境的精确 sim/control 配置(Tab.4)

EnvControl TypeSim dtControl dtAction Dims
AntJoint Torques1/120s1/60s8
HumanoidJoint Torques1/120s1/60s21
IngenuityRigid Body Forces1/200s1/100s6
ANYmalJoint Position Targets1/200s1/50s12
Franka Cube StackingOp Space Control1/60s1/60s7
Shadow Hand (Std/OpenAI)Joint Position Targets1/120s1/60s 或 1/20s20
Allegro HandJoint Position Targets1/120s1/20s16
TriFingerJoint Torques1/200s1/50s9

通用训练配置:单 A100 + i7-8700K;5 seeds;symmetric actor-critic(policy/value 共享网络);Shadow Hand / TriFinger 用 asymmetric actor-critic(value 看特权);feed-forward 用 $\gamma=0.99$,LSTM 用 $\gamma=0.998$;GAE $\lambda=0.95$,clip $\epsilon=0.2$;adaptive LR + 每 env 的 KL threshold。算法用 rl_games 的 GPU 端到端 PPO

4. 结果:精确训练时间数字(Sec.1 "Summary of Results")

任务训练时间(单 A100)备注
Ant locomotion20 秒
Humanoid locomotion4 分钟
ANYmal locomotion< 2 分钟
Humanoid Character Animation(AMP)6 分钟
Shadow Hand cube rotation35 分钟

与 OpenAI([5])的直接对比(关键数字)——Shadow Hand cube(OpenAI 用 384 CPU×16 cores + 8 V100 + MuJoCo):

指标OpenAI(CPU cluster)Isaac Gym(单 A100)
20 连续成功(feed-forward, tol 0.4 rad)30 小时~1 小时
37 连续成功(LSTM, tol 0.4 rad)17 小时~6 小时(best seed 2.5 小时

2–3 个数量级加速,从「CPU datacenter」降到「单 GPU 桌面」。还做了 ANYmal + TriFinger 的 sim-to-real 验证。

5. Simulation throughput(Sec.5,FPS 曲线)

随 env 数增加 FPS 单调上升,到一定 env 数后 plateau(取决于 GPU 显存 + 网络 forward 时间)。Ant/Humanoid/Shadow Hand 都在数千 env 区间吃到峰值 FPS(Ant 约 700K env steps/s、Humanoid 约 200K、Shadow Hand 约 150K,均 @4096–16384 envs)。env 数 × horizon 反比调节(保总 experience 不变)做公平比较。


为什么重要

1. 训练民主化(最关键)

之前只有 ETH/CMU 这种大实验室能训 locomotion(要有 CPU 集群)。Isaac Gym 之后,任何人一张 GPU 就能训。直接催生了 legged_gym(ETH 的开源 locomotion 训练框架),成为社区事实标准。

2. 开启 RL locomotion 爆发

Walk-These-Ways、Extreme Parkour、DreamWaQ、DrEureka、AMP-Adroit 全部建立在 Isaac Gym 上。没有 Isaac Gym,就没有这波 locomotion 工作。

3. 为大规模并行 RL 提供 template

Isaac Gym 的「GPU 仿真 + GPU 推理 + 大量并行环境 + zero-copy Tensor API」范式,被后续 Isaac Lab、Genesis、MuJoCo MJX 继承。是现代机器人 RL 的基础设施模板。

4. 工程上解决了 GPU 物理的两个关键问题

(a)「physics step 不 fetch CPU」+(b)「direct GPU API for state/control」这两条 PhysX 改动,是后续所有 GPU 物理仿真器(含 Isaac Lab 的 GPU pipeline)的原型。

局限

  1. 已被 Isaac Lab 取代:Isaac Gym 已 deprecated,NVIDIA 推荐用 Isaac Lab(基于 Isaac Sim)。
  2. 接触动力学精度不如 MuJoCo:PhysX 在精细接触上不如 MuJoCo 准,灵巧操作类任务有时不够。
  3. 依赖 NVIDIA GPU:CUDA 锁定,AMD/Intel GPU 用不了。
  4. 渲染开销大:渲染比 MuJoCo 重得多(虽然能开光追)。
  5. GPU memory cap:env 数受显存限制(每个 env 的 rigid body state 都进 tensor);高 DoF 机器人(如人形 + 灵巧手)并行数会比简单 Ant 少。

后续演进

仿真器关系特点
Isaac Gym(2021)本篇GPU 并行,deprecated
Isaac Sim/Lab(2022+)官方继任基于 Omniverse,更完整但更重;继承 Isaac Gym 的 Tensor API + GPU pipeline
MuJoCo MJX(2024)竞争MuJoCo 的 JAX 后端,GPU 并行,精度更高
Genesis(2024)新生纯 Python,最快(43M FPS claim),多物理统一

复现要点

  • 复现门槛:⭐⭐(运行)/ ⭐⭐⭐(开发)
  • IsaacGymEnvs 仓库有大量预置任务(Ant/Humanoid/Cartpole/ShadowHand/Franka 等)。
  • 新项目应直接用 Isaac Lab(NVIDIA 官方继任);但很多老 repo(legged_gym、unitree_rl_gym)仍依赖 Isaac Gym。
  • 如果要跑老 repo,需要 Isaac Gym Preview(不是 Isaac Sim),从 NVIDIA 网站下载。
  • 关键超参(PPO,Tab.17):$\gamma=0.99$、$\lambda=0.95$、clip 0.2、adaptive LR + per-env KL threshold。

相关

  • 建立在:PhysX SDK(含新增的 GPU no-fetch + direct GPU API)、CUDA、TGS solver、PPO(1707.06347)、rl_games。
  • 引出:legged_gym(ETH,开源 locomotion 框架)、Isaac Lab(官方继任,继承 Tensor API + GPU pipeline)、Walk-These-Ways、Extreme Parkour、AMP-Adroit 等几乎所有 2021+ 的 locomotion 工作。
  • 本仓库线索:T02 数据集基础设施 转折 5、T01 sim2real 工程基础
  • 本仓库概念:C-sim2real-methods.md(仿真器选型)
  • 本仓库笔记:P-PHCUHC-2023.mdP-AMP-2021.mdP-ExtremeParkour-2023.md(都建立在 Isaac Gym 上)