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,
step和reset函数默认对一批环境进行操作。 - 异步 API:将
step函数拆分为send和recv操作,允许用户在不等待整个批次完成的情况下输入动作并获取状态,进一步提升效率。
它通过 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
- 项目
- 项目