Repolode
sail-sg

sail-sg/envpool

基于 C++ 的强化学习批量环境引擎,用线程池并行运行大量 Gym 风格环境。

Star
1,533
Fork
147
未关闭 Issue
16
最近提交
17天前

这是什么?

EnvPool 是一个强化学习环境的并行执行引擎。它用 C++ 和线程池管理一组环境,通过 pybind11 提供 Python 接口,一次调用即可同时推进多个环境。接口兼容 Gymnasium 与 dm_env,支持同步和异步两种模式,默认以批量方式交互。

项目覆盖的环境类型较多,包括 Atari、MuJoCo、DeepMind Control Suite、Box2D、ViZDoom、Procgen、Minigrid、MPE2、MetaWorld、PGX 和 Jumanji 等。开发者也可以通过 C++ 接口接入自定义环境。它还支持批量 RGB 渲染,并可通过 XLA 配合 JAX 的 jit 使用。PyPI 提供 Linux、macOS 和 Windows 的预编译包。

仓库中的基准测试对比了它与基于 Python subprocess 的向量环境和 for 循环在 12 到 256 个 CPU 核心机器上的吞吐量。

核心功能

  • 01基于 C++ 线程池和 pybind11 绑定,批量推进环境。
  • 02兼容 Gymnasium 与 dm_env 接口。
  • 03支持同步与异步执行,也支持单人和多人环境。
  • 04覆盖 Atari、MuJoCo、DeepMind Control、Procgen 等多类环境。
  • 05支持批量 RGB 渲染,并可通过 XLA 配合 JAX jit 使用。

适用场景

  • 在多核机器上加速强化学习训练的数据采集。
  • 配合 Stable-Baselines3、Tianshou、CleanRL 等库运行 Atari 或 MuJoCo 实验。
  • 用高吞吐的 C++ 实现接入自定义环境。

快速上手

  1. 1

    从 PyPI 安装 EnvPool

    pip install envpool
  2. 2

    打开 Python 控制台导入 envpool 以确认安装成功

使用前须知

  • 在 Linux 上使用 MuJoCo 渲染需要系统自带的 EGL/OpenGL 运行时,例如 Ubuntu 上的 libegl1、libopengl0 和 libgl1-mesa-dri。
  • 在 Linux 上使用 Procgen 环境需要单独安装系统 Qt 5 运行时,从源码构建同样需要 Qt 5。

收录于专题

标签

#reinforcement-learning#parallel-processing#gym#simulation#cpp#python-bindings#vectorized-environment#atari-games#box2d#cpp17

常见问题

envpool 是什么?
基于 C++ 的强化学习批量环境引擎,用线程池并行运行大量 Gym 风格环境。 EnvPool 是一个强化学习环境的并行执行引擎。它用 C++ 和线程池管理一组环境,通过 pybind11 提供 Python 接口,一次调用即可同时推进多个环境。接口兼容 Gymnasium 与 dm_env,支持同步和异步两种模式,默认以批量方式交互。
envpool 可以免费使用吗?用的什么许可证?
envpool 以 Apache-2.0 许可证开源。用于商业产品前,请先确认许可证条款。
envpool 还在维护吗?
活跃维护中。envpool 最近一次提交是在 2026年10月21日。
envpool 适合用来做什么?
在多核机器上加速强化学习训练的数据采集。 配合 Stable-Baselines3、Tianshou、CleanRL 等库运行 Atari 或 MuJoCo 实验。 用高吞吐的 C++ 实现接入自定义环境。
envpool 怎么安装和运行?
从 PyPI 安装 EnvPool: pip install envpool 打开 Python 控制台导入 envpool 以确认安装成功
在哪里获取 envpool?
源代码和安装说明在 GitHub 上:https://github.com/sail-sg/envpool

概要由 AI 根据项目 README 生成;GitHub 数据每日更新。

相关项目