sail-sg/envpool

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

解決的問題

EnvPool 解決了因環境模擬速度過慢所導致的強化學習(RL)效能瓶頸。傳統的 Python 基礎向量環境通常因子程序開銷過高,限制了經驗收集的吞吐量。EnvPool 提供一個高效率的 C++ 基礎執行引擎,能以遠高於標準 Python 實作的每秒幀數(FPS)對環境進行大規模平行化。

工作原理

EnvPool 使用 C++ 實作,並透過 pybind11 提供 Python 接口。它管理一個環境池,並利用執行緒池並行執行環境。支援兩種主要互動模式:

  • 同步 API:緊密遵循 Gymnasium 和 dm_env API,stepreset 函數預設對一批環境進行操作。
  • 非同步 API:將 step 函數拆分為 sendrecv 操作,允許使用者在不等待整個批次完成的情況下輸入動作並取得狀態,進一步提升效率。

它透過 JAX jit 函數與 XLA 集成,並與 Stable-Baselines3、Tianshou、CleanRL 等主流 RL 庫相容。

適用對象

專為需要快速收集大量經驗以訓練智能體的強化學習研究人員與開發者設計,特別適用於使用計算成本高昂的環境(如 Atari、MuJoCo 或各類機器人模擬器)的使用者。

主要亮點

  • 極致吞吐量:在高階硬體(DGX-A100)上可達約 100 萬 Atari FPS 和約 300 萬 MuJoCo 步/秒。
  • 廣泛環境支援:支援 Atari、MuJoCo、Box2D、DeepMind Control Suite、ViZDoom 等多種環境。
  • 跨平台:支援 Linux、macOS 與 Windows。
  • 靈活 API:相容 Gymnasium 與 dm_env;支援同步與非同步執行。
  • 內建渲染:支援批次 rgb_array 輸出與 human 顯示模式。
  • C++ 可擴充性:提供開發者 API,用於整合自訂 C++ 環境。

相關

  • 專案
  • 專案
  • Dispatch
  • 專案
  • 專案