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 · arXiv 2021
ライセンス
- オープンアクセス
- 論文: CC BY 4.0
以下の内容はすべて、論文のライセンス(CC BY 4.0)に従い論文全文に基づいています。図は著者のクレジットを付けて掲載しています。
要約
Isaac Gym は PyTorch テンソル API を介して、PhysX シミュレーション、観測、報酬、PPO の学習を 1 枚の GPU 上で実行する。Shadow Hand のキューブ再配向は CPU クラスタでの 30 h から 1 h 未満に短縮された。
重要な理由
以前は CPU クラスタを必要としたタスクを、単一の GPU で数分から数時間で学習でき、移動や器用なマニピュレーションの研究の反復が短くなる。著者らはこの方法で学習した方策を、不整地上の実機 ANYmal と遠隔の実機 TriFinger にも転移しており、シミュレーションの接触物理が sim-to-real の取り組みを支えうることを示している。
課題
ロボットの RL では通常、物理を CPU でシミュレーションし、ネットワークを GPU で学習するため、ステップごとにデバイス間でデータが移動し、シミュレーション速度が学習を制約する。例えば OpenAI の Shadow Hand のキューブの研究では、6144 CPU コアを持つ 384 台のマシンと 8 枚の V100 GPU を 30 時間使用し、その後続のルービックキューブ(Rubik's Cube)の研究ではほぼ 30,000 CPU コアを使用した。
提案手法
Isaac Gym は GPU 上で NVIDIA PhysX を実行し、2 つの追加を行う。シミュレーション結果をステップごとに CPU に取り込まないこと、そして GPU バッファ内で状態を読み取り制御を適用する直接の GPU API である。これらのバッファはコピーなしで PyTorch テンソルとしてラップされるため、数千の並列環境のステップ実行、観測、報酬計算、学習(rl_games の PPO 実装を使用)を 1 枚の GPU 上で行え、ロボットは URDF または MJCF から読み込まれる。
主な知見
- 物理状態、観測と報酬の計算、方策の学習を GPU 上に保つことで、従来の RL パイプラインを制約していた CPU-GPU 間のコピーがなくなる。
- 並列環境を増やすと、環境ごとのホライズンが短くなりすぎるまでは学習が短縮される。ホライズン 32 では Humanoid は 4096 環境を超えると改善がなく、より悪い歩容を学習するが、ホライズンを 2 倍にすると 8192 環境でも 16384 環境でも学習できる。
- シミュレーションのスループットはモデルの複雑さとともに低下する。A100 で、Ant は最大約 700K 環境ステップ毎秒、Humanoid は 200K、Shadow Hand は 150K。
- クリティックがシミュレータの特権状態を受け取り、方策は実ロボットで利用できる観測のみを受け取る非対称 actor-critic が、Shadow Hand OpenAI と TriFinger の設定で sim-to-real 転移を可能にするために用いられている。
- 可動の手首は再配向に役立つ。手首が固定で指がやや長い Allegro Hand は、自由度が少ないにもかかわらず、Shadow Hand より連続成功回数が少ない。
主な結果
- 単一の A100 で:Ant は 20 s で報酬 3000 を超え、Humanoid は 4 min 未満で走る(報酬 5000)ようになり、ANYmal は 2 min 未満で速度目標に追従し、Franka のキューブ積み上げは 25 min 未満で収束する。
- OpenAI の観測とドメインランダム化を用いた Shadow Hand:1 h 未満で 20 回を超える連続成功(フィードフォワード)、6 h 弱で 37 回(LSTM)。OpenAI は 6144 CPU コアと 8 枚の V100 GPU で 30 h と約 17 h を要した。最良の LSTM シードは 2.5 h で 37 回に達する。
- Shadow Hand Standard(ランダム化なし):35 min 未満で 20 回の連続成功。環境数を 256 から 16384 に増やすと、学習時間は 5×10⁴ s(約 14 h)から 3×10³ s(約 1 h)に短縮される。
- AMP によるヒューマノイドキャラクターアニメーション:4096 環境で約 6 min で約 3900 万サンプル。PyBullet の 16 CPU コアでは約 30 h かかり、300× の改善と報告されている。
- Sim-to-real:ANYmal の不整地方策は RTX A6000 で 20 min 未満で学習され、実機に転移された。実機の TriFinger は平均成功率 55% に達し、転移は遠隔で行われた。
- 矛盾する高速化の数値:v1 のアブストラクトは CPU シミュレータによる学習に対して 1-2 桁としているが、v1 の序論と Fig. 2 は 100×-1000× としている。現在の arXiv のアブストラクトは 2-3 桁としている。
制限事項
- Shadow Hand の実験はシミュレーションのみである。OpenAI の研究とは異なり、ハンドの sim-to-real 転移は試みられておらず、ランダム化には行動の遅延やモータのバックラッシュが含まれていない。
- Shadow Hand Standard は実ロボットでは利用できない可能性のある観測を用いているため、著者らは sim-to-real 転移には適さないと述べている。
- Ingenuity は簡略化されたモデルであり、空気力学をシミュレーションする代わりに 2 つのロータに直接力を加えている。
- FleX エンジンではテンソル API の機能が限られ、シーンの構築は CPU 上で行われ、付属の例は PyTorch を使用しており、TensorFlow との統合にはさらなるカスタマイズが必要である。
- ホライズンが短くなると環境を増やしても効果がなくなる。Ant は 8192 環境から 16384 環境で改善がなく、Humanoid はホライズン 32 で 4096 環境を超えると学習が遅くなり、最適でない歩容を学習する。
分野への影響
被引用数 1469。論文は Isaac Gym を NVIDIA からのダウンロード(developer.nvidia.com/isaac-gym)として公開しており、基本的な PPO 実装と RL タスクシステムを含み、結果と動画をプロジェクトサイトで公開している。
概要
Isaac Gym は、多種多様なロボティクスタスクの方策を GPU 上で直接学習させる高性能な学習プラットフォームを提供する。物理シミュレーションとニューラルネットワークの方策学習はどちらも GPU 上にあり、物理バッファから PyTorch テンソルへデータを直接渡すことで通信し、CPU のボトルネックを一切経由しない。これにより、複雑なロボティクスタスクの学習が単一の GPU で非常に高速になり、CPU ベースのシミュレータとニューラルネットワーク用の GPU を用いる従来の RL 学習と比べて 2-3 桁の改善が得られる。結果と動画は https://sites.google.com/view/isaacgym-nvidia で公開しており、isaac gym は https://developer.nvidia.com/isaac-gym からダウンロードできる。
リンク
- arXiv 2108.10470: https://arxiv.org/abs/2108.10470
- DOI https://doi.org/10.48550/arxiv.2108.10470: https://doi.org/https://doi.org/10.48550/arxiv.2108.10470
- PDF: https://arxiv.org/pdf/2108.10470v1
- プロジェクトページ: https://sites.google.com/view/isaacgym-nvidia