OA0
OA0 是一个探索 AI 的社区
现在注册
已注册用户请  登录
OA0  ›  代码  ›  OpenRL — 面向强化学习训练与评测的通用框架

OpenRL — 面向强化学习训练与评测的通用框架

 
  approve ·  2026-02-27 22:01:02 · 5 次点击  · 0 条评论  

PyPI
PyPI - Python Version
Anaconda-Server Badge
Anaconda-Server Badge
Anaconda-Server Badge
Code style: black

Hits-of-Code
codecov

Documentation Status
Read the Docs

GitHub Org's stars
GitHub stars
GitHub forks
GitHub commit activity
GitHub issues
GitHub pulls
Contributors
GitHub license

Embark
slack badge

OpenRL-v0.2.1 更新于 2023年12月20日

main 分支是 OpenRL 的最新版本,正在积极开发中。如果您只是想尝试 OpenRL,可以切换到 stable 分支。

欢迎来到 OpenRL

文档 | 中文介绍 | 中文文档

满怀热忱打造强化学习框架,期待您的宝贵见解。

OpenRL 是一个开源的通用强化学习研究框架,支持单智能体、多智能体、离线强化学习、自博弈以及自然语言等多种任务的训练。它基于 PyTorch 开发,目标是成为强化学习研究社区中一个简单易用、灵活高效且可持续的平台。

目前,OpenRL 支持的功能包括:

  • 简单易用的通用接口,支持所有任务/环境的训练
  • 支持单智能体和多智能体任务
  • 支持使用专家数据集进行离线强化学习训练
  • 支持自博弈训练
  • 支持自然语言任务(如对话)的强化学习训练
  • 支持 DeepSpeed
  • 支持 Arena,方便在竞争环境中评估各种智能体(甚至包括提交给极地平台的智能体)
  • 支持从 Hugging Face 导入模型和数据集。支持加载 Hugging Face 上的 Stable-baselines3 模型进行测试和训练
  • 提供教程,指导如何将用户自定义环境集成到 OpenRL 中
  • 支持 LSTM、GRU、Transformer 等模型
  • 多种训练加速方法,包括自动混合精度训练和使用半精度策略网络收集数据
  • 支持用户自定义训练模型、奖励模型、训练数据和环境
  • 支持 gymnasium 环境
  • 支持 Callbacks,可用于实现日志记录、保存、提前停止等多种功能
  • 支持字典观测空间
  • 支持流行的可视化工具,如 wandbtensorboardX
  • 支持串行或并行环境训练,并确保两种模式下结果一致
  • 提供中英文文档
  • 提供单元测试和代码覆盖率测试
  • 遵循 Black 代码风格指南和类型检查

OpenRL 目前支持的算法(更多详情请参阅 Gallery):

OpenRL 目前支持的环境(更多详情请参阅 Gallery):

该框架已由 OpenRL-Lab 团队经过多次迭代,并应用于学术研究。它现已成为一个成熟的强化学习框架。

OpenRL-Lab 将继续维护和更新 OpenRL,我们欢迎所有人加入我们的开源社区,为强化学习的发展贡献力量。

有关 OpenRL 的更多信息,请参阅文档

目录

为什么选择 OpenRL

我们在此提供 OpenRL 与现有流行 RL 库的对比表格。OpenRL 采用模块化设计和高层抽象,允许用户通过统一且用户友好的接口完成各种任务的训练。

NLP/RLHF 多智能体 自博弈训练 离线 RL DeepSpeed
OpenRL :heavy_check_mark: :heavy_check_mark: :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
Stable Baselines3 :x: :x: :x: :x: :x:
Ray/RLlib :x: :heavy_check_mark: :heavy_check_mark: :heavy_check_mark: :x:
DI-engine :x: :heavy_check_mark: 不完全支持 :heavy_check_mark: :x:
Tianshou :x: 不完全支持 不完全支持 :heavy_check_mark: :x:
MARLlib :x: :heavy_check_mark: 不完全支持 :x: :x:
MAPPO Benchmark :x: :heavy_check_mark: :x: :x: :x:
RL4LMs :heavy_check_mark: :x: :x: :x: :x:
trlx :heavy_check_mark: :x: :x: :x: :heavy_check_mark:
trl :heavy_check_mark: :x: :x: :x: :heavy_check_mark:
TimeChamber :x: :x: :heavy_check_mark: :x: :x:

安装

用户可以直接通过 pip 安装 OpenRL:

pip install openrl

如果用户使用 Anaconda 或 Miniconda,也可以通过 conda 安装 OpenRL:

conda install -c openrl openrl

想要修改源代码的用户也可以从源码安装 OpenRL:

git clone https://github.com/OpenRL-Lab/openrl.git && cd openrl
pip install -e .

安装完成后,用户可以通过命令行检查 OpenRL 的版本:

openrl --version

提示:无需安装,通过 Colab 在线体验 OpenRL:Open In Colab

使用 Docker

OpenRL 目前提供支持 GPU 和不支持 GPU 的 Docker 镜像。
如果用户的计算机没有 NVIDIA GPU,可以使用以下命令获取不带 GPU 插件的镜像:

sudo docker pull openrllab/openrl-cpu

如果用户希望使用 GPU 加速训练,可以使用以下命令获取镜像:

sudo docker pull openrllab/openrl

成功拉取镜像后,用户可以使用以下命令运行 OpenRL 的 Docker 镜像:

# 无 GPU 加速
sudo docker run -it openrllab/openrl-cpu
# 有 GPU 加速
sudo docker run -it --gpus all --net host openrllab/openrl

进入 Docker 容器后,用户可以检查 OpenRL 的版本,然后使用以下命令运行测试用例:

# 在 Docker 容器中检查 OpenRL 版本
openrl --version
# 运行测试用例
openrl --mode train --env CartPole-v1

快速开始

OpenRL 为强化学习初学者提供了一个简单易用的接口。
以下是一个使用 PPO 算法训练 CartPole 环境的示例:

# train_ppo.py
from openrl.envs.common import make
from openrl.modules.common import PPONet as Net
from openrl.runners.common import PPOAgent as Agent

env = make("CartPole-v1", env_num=9)  # 创建环境,并设置环境并行数为 9。
net = Net(env)  # 创建神经网络。
agent = Agent(net)  # 初始化智能体。
agent.train(
    total_time_steps=20000)  # 开始训练,并设置环境运行总步数为 20,000。

使用 OpenRL 训练智能体只需要四个简单的步骤:
创建环境 => 初始化模型 => 初始化智能体 => 开始训练

对于训练好的智能体,用户也可以轻松地进行测试:

# train_ppo.py
from openrl.envs.common import make
from openrl.modules.common import PPONet as Net
from openrl.runners.common import PPOAgent as Agent

agent = Agent(Net(make("CartPole-v1", env_num=9)))  # 初始化训练器。
agent.train(total_time_steps=20000)
# 创建测试环境,设置环境并行数为 9,渲染模式为 group_human。
env = make("CartPole-v1", env_num=9, render_mode="group_human")
agent.set_env(env)  # 智能体需要一个交互环境。
obs, info = env.reset()  # 初始化环境,获取初始观测和环境信息。
while True:
    action, _ = agent.act(obs)  # 智能体根据环境观测预测下一个动作。
    # 环境根据动作执行一步,获取下一个观测、奖励、是否结束和环境信息。
    obs, r, done, info = env.step(action)
    if any(done): break
env.close()  # 关闭测试环境

在普通笔记本电脑上执行上述代码只需几秒钟即可完成训练。下图展示了智能体的可视化效果:

提示:用户也可以通过终端执行命令行来快速训练 CartPole 环境。

openrl --mode train --env CartPole-v1

对于多智能体和自然语言处理等训练任务,OpenRL 也提供了类似简单易用的接口。

关于如何进行多智能体训练、设置训练超参数、加载训练配置、使用 wandb、保存 GIF 动画等信息,请参阅:

关于自然语言任务训练、加载 Hugging Face 上的模型/数据集

5 次点击  ∙  0 人收藏  
登录后收藏  
0 条回复
关于 ·  帮助 ·  PING ·  隐私 ·  条款   
OA0 - Omni AI 0 一个探索 AI 的社区
沪ICP备2024103595号-2
耗时 27 ms
Developed with Cursor