




OpenRL-v0.0.7 is updated on April 29, 2023
欢迎来到OpenRL
English | 中文文档 | Documentation
OpenRL是一个开源的通用强化学习研究框架,支持单智能体、多智能体、自然语言等多种任务的训练。 OpenRL基于PyTorch进行开发,目标是为强化学习研究社区提供一个简单易用、灵活高效、可持续扩展的平台。 目前,OpenRL支持的特性包括:
简单易用且支持单智能体、多智能体训练的通用接口
支持自然语言任务(如对话任务)的强化学习训练
支持从Hugging Face上导入模型和数据
支持LSTM,GRU,Transformer等模型
支持多种训练加速,例如:自动混合精度训练,半精度策略网络收集数据等
支持用户自定义训练模型、奖励模型、训练数据以及环境
支持gymnasium环境
支持字典观测空间
支持wandb,tensorboardX等主流训练可视化工具
支持环境的串行和并行训练,同时保证两种模式下的训练效果一致
中英文文档
提供单元测试和代码覆盖测试
符合Black Code Style和类型检查
该框架经过了OpenRL-Lab的多次迭代并应用于学术研究,目前已经成为了一个成熟的强化学习框架。 OpenRL-Lab将持续维护和更新OpenRL,欢迎大家加入我们的开源社区,一起为强化学习的发展做出贡献。 关于OpenRL的更多信息,请参考文档。
目录
安装
用户可以直接通过pip安装OpenRL:
pip install openrl
如果用户使用了Anaconda或者Miniconda,也可以通过conda安装OpenRL:
conda install -c openrl openrl
用户也可以从源码安装OpenRL:
git clone https://github.com/OpenRL-Lab/openrl && cd openrl pip install -e .
安装完成后,用户可以直接通过命令行查看OpenRL的版本:
openrl --version
快速上手
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) # 开始训练,并设置环境运行总步数为20000
使用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
env = make("CartPole-v1", env_num=9) # 创建环境,并设置环境并行数为9
net = Net(env) # 创建神经网络
agent = Agent(net) # 初始化智能体
agent.train(total_time_steps=20000) # 开始训练,并设置环境运行总步数为20000
在普通笔记本电脑上执行以上代码,只需要几秒钟,便可以完成该智能体的训练和可视化测试:

Tips: 用户还可以在终端中通过执行一行命令快速训练CartPole
环境:
$$
openrl --mode train --env CartPole-v1
$$
对于多智能体、自然语言等任务的训练,OpenRL也提供了同样简单易用的接口。
关于如何进行多智能体训练、训练超参数设置、训练配置文件加载、wandb使用、保存gif动画等信息,请参考:
关于自然语言任务训练、Hugging Face上模型(数据)加载、自定义训练模型(奖励模型)等信息,请参考:
关于OpenRL的更多信息,请参考文档。
Gallery
为了方便用户熟悉该框架, 我们在Gallery中提供了更多使用OpenRL的示例和demo。 也欢迎用户将自己的训练示例和demo贡献到Gallery中。
使用OpenRL的研究项目
我们在 OpenRL Project 中列举了使用OpenRL的研究项目。 如果你在研究项目中使用了OpenRL,也欢迎加入该列表。
反馈和贡献

OpenRL框架目前还在持续开发和文档建设,欢迎加入我们让该项目变得更好:
维护人员
目前,OpenRL由以下维护人员维护:
欢迎更多的贡献者加入我们的维护团队 (发送邮件到huangshiyu@4paradigm.com申请加入OpenRL团队)。
支持者
↳ Stargazers

↳ Forkers

Citing OpenRL
如果我们的工作对你有帮助,欢迎引用我们:
$$
@misc{openrl2023, title={OpenRL}, author={OpenRL Contributors}, publisher = {GitHub}, howpublished = {\url{https://github.com/OpenRL-Lab/openrl}}, year={2023}, }
$$
Star History

License
OpenRL under the Apache 2.0 license.
Acknowledgments
The development of the OpenRL framework has drawn on the strengths of other reinforcement learning frameworks: