sail-sg/envpool

C++-based high-performance parallel environment execution engine (vectorized env) for general RL environments.

何を解決するか

EnvPoolは強化学習(RL)環境の並列化に関連するパフォーマンスのボトルネックに対処します。従来のPythonのサブプロセスベースのベクトル環境は、高いオーバーヘッドを抱え、経験収集のスループットを制限する傾向があります。EnvPoolは高性能なC++ベースの実行エンジンを提供し、トレーニング中に処理できるフレーム数やステップ数を大幅に増加させます。

動作方法

EnvPoolはC++で実装されており、pybind11を使用してPythonインターフェースを提供しています。環境プールを管理し、スレッドプールを使って並列で実行します。同期実行(ユーザーがすべての環境がステップを終えるのを待つ)と非同期実行(sendおよびrecv関数を使って、環境が終了したタイミングで対話する)の両方をサポートしています。

対象ユーザー

Atari、MuJoCo、その他の環境を横断的に高速に大量のトレーニングデータを生成したいRL研究者や開発者向けに設計されています。また、標準のGymnasiumやDeepMind dm_env APIの即時置き換えとして利用可能です。

特徴

  • 極めて高いスループット:ハイエンドハードウェア(DGX-A100)で、1秒間に100万フレームのAtariや300万ステップのMuJoCoを処理可能。
  • 広範な環境対応:Atari、MuJoCo、Box2D、Procgen、Google Research Footballなど、多数の環境を統合。
  • API互換性:Gymnasiumおよびdm_env APIと完全互換。Stable-Baselines3、Tianshou、CleanRLなどのライブラリとの統合が容易。
  • クロスプラットフォーム:Linux、macOS、Windowsをサポート。
  • 高度なレンダリング:バッチ処理されたRGB出力と人間用表示モードを内蔵。MuJoCo用にネイティブなC++ピクセル観測をサポート。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト
  • Dispatch