OpenRL 项目介绍
项目概况
OpenRL 是一个开源的通用强化学习研究框架,支持多种任务的训练,如单智能体、多智能体、离线强化学习、自对弈以及自然语言处理等。这个框架基于 PyTorch 开发,旨在为强化学习研究社区提供一个简单易用、灵活、高效和可持续的平台。
OpenRL 的特性
OpenRL 支持多种强化学习特性,具体包括:
- 简单通用的接口:支持所有任务和环境的训练。
- 多智能体任务支持:涵盖单智能体及多智能体的训练。
- 离线强化学习的支持:可使用专家数据集进行训练。
- 自对弈训练:通过自我对弈进行学习和改进。
- 自然语言任务的强化学习:例如对话任务。
- 支持 DeepSpeed,加速深度学习训练。
- 支持 Arena 用于在竞争环境中进行智能体评估。
- 可引入 Hugging Face 的模型和数据集进行训练和测试。
- 指导教程:如何将用户自定义环境整合到 OpenRL 中。
- 支持多种模型,如 LSTM、GRU、Transformer 等。
- 具备多种训练加速方法,包括自动混合精度训练及数据采集中使用半精度策略网络。
- 支持用户自定义的训练模型、奖励模型、训练数据和环境。
- 兼容 gymnasium 环境。
- 支持多种回调机制,实现日志记录、保存、早停等功能。
- 支持字典类观察空间。
- 支持 wandb、tensorboardX 等可视化工具。
- 提供串行和并行环境训练,保证两种模式下的一致性。
- 中文和英文文档支持。
- 提供单元测试和代码覆盖率测试。
- 遵循 Black 代码风格准则和类型检查。
支持的算法
OpenRL 支持多种强化学习算法,包括但不限于:
- 近端策略优化 (PPO)
- 双重剪辑 PPO
- 多智能体 PPO (MAPPO)
- 联合比率政策优化 (JRPO)
- 生成对抗模仿学习 (GAIL)
- 行为克隆 (BC)
- 优势演员-评论家(A2C)
- 深度Q网络(DQN)
- 多智能体 Transformer (MAT)
- 价值分解网络 (VDN)
- 软演员评论家 (SAC)
- 深度确定性策略梯度(DDPG)
支持的环境
OpenRL 支持多种环境,如 Gymnasium、MuJoCo、PettingZoo、MPE、Atari、StarCraft II、Omniverse Isaac Gym 等。
为什么选择 OpenRL?
OpenRL 采用模块化设计和高级抽象,使用户可以通过统一且用户友好的界面完成各种任务的训练,与其他流行的强化学习库相比,OpenRL 提供了更广泛的功能支持,例如多智能体、自对弈训练、离线强化学习等。
安装指南
用户可以通过以下方式安装 OpenRL:
-
使用 pip 安装:
pip install openrl
-
使用 conda 安装:
conda install -c openrl openrl
-
从源码安装:
git clone https://github.com/OpenRL-Lab/openrl.git && cd openrl pip install -e .
-
使用 Docker 安装: OpenRL 提供了带有和不带 GPU 支持的 Docker 镜像。
快速开始
对于新手,OpenRL 提供了简单易用的接口。以下是使用 PPO 算法在 CartPole
环境中训练的示例:
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)
net = Net(env)
agent = Agent(net)
agent.train(total_time_steps=20000)
只需以下四步就可完成训练:创建环境、初始化模型、初始化智能体、开始训练。
贡献和反馈
OpenRL 框架仍在持续开发中,欢迎大家加入我们,共同改善这个项目。您可以通过 GitHub Issues 提出问题或功能请求,也可以通过邮件或社交平台与我们讨论。
许可证
OpenRL 在 Apache 2.0 许可下发布。
对于进一步的详情和使用说明,请参阅 OpenRL 文档。