RLlib:行业级、可扩展的强化学习#
RLlib 是一个开源的强化学习 (RL) 库,它为生产级、高度可扩展和容错的 RL 工作负载提供支持,同时为各种行业应用维护简单统一的 API。
无论是训练 多智能体 设置中的策略,还是从历史 离线 数据中训练,或是使用 外部连接的模拟器,RLlib 都为这些自主决策需求提供了简单的解决方案,并使您能够在数小时内开始运行您的实验。
行业领导者在游戏、机器人、金融、气候和工业控制、制造和物流、汽车 和 船舶设计 等众多垂直领域中,在生产环境中都使用 RLlib。
RLlib 60 秒速览#
只需几个步骤,即可在您的笔记本电脑上启动并运行您的第一个 RLlib 工作负载。安装 RLlib 和 PyTorch,如下所示:
pip install "ray[rllib]" torch
注意
要在运行 Apple Silicon 的计算机(如 M1)上安装,请 在此处按照说明操作。
注意
为了能够运行 Atari 或 MuJoCo 示例,您还需要执行以下操作:
pip install "gymnasium[atari,accept-rom-license,mujoco]"
这就全部完成了,您现在可以开始针对 RLlib 进行编码。以下是一个在 Taxi 域 上运行 PPO 算法 的示例。您首先为该算法创建一个 config,它定义了 RL 环境 以及任何其他所需的设置和参数。
from ray.rllib.algorithms.ppo import PPOConfig
from ray.rllib.connectors.env_to_module import FlattenObservations
# Configure the algorithm.
config = (
PPOConfig()
.environment("Taxi-v3")
.env_runners(
num_env_runners=2,
# Observations are discrete (ints) -> We need to flatten (one-hot) them.
env_to_module_connector=lambda env: FlattenObservations(),
)
.evaluation(evaluation_num_env_runners=1)
)
接下来,build 该算法并将其 train 五次。一次训练迭代包括 EnvRunner actor 的并行、分布式样本收集,然后是基于收集数据的损失计算和模型更新步骤。
from pprint import pprint
# Build the algorithm.
algo = config.build_algo()
# Train it for 5 iterations ...
for _ in range(5):
pprint(algo.train())
在脚本的最后,您将评估训练好的算法并释放其所有资源。
# ... and evaluate it.
pprint(algo.evaluate())
# Release the algo's resources (remote actors, like EnvRunners and Learners).
algo.stop()
您可以使用任何 Farama-Foundation Gymnasium 注册的环境,并通过 env 参数进行指定。
在 config.env_runners() 中,您可以指定——除其他许多内容外——用于从环境中收集样本的并行 EnvRunner actor 的数量。
您还可以通过调整 RLlib 的 DefaultModelConfig 来调整所使用的神经网络架构,还可以通过 config.evaluation() 方法为评估 EnvRunner actor 设置单独的配置。
如果您想了解更多关于 RLlib 训练 API 的信息,请参见此处。此外,请参见此处,了解如何编写训练后的动作推理循环。
如果您想快速预览 RLlib 支持哪些 算法 和 环境,请点击下面的下拉菜单。
为什么选择 RLlib?#
了解更多#
RLlib 核心概念
详细了解 RLlib 的核心概念,如算法、环境、模型和学习器。
RL 环境
开始使用 RLlib 支持的环境,例如 Farama Foundation 的 Gymnasium、Petting Zoo 以及用于向量化和多智能体环境的许多自定义格式。
模型 (RLModule)
了解如何配置 RLlib 的默认模型,并通过 RLModule API 实现您自己的自定义模型,这些 API 支持使用 PyTorch 的任意架构、复杂的多个模型设置以及具有智能体之间共享组件的多智能体模型。
算法
请参阅 RLlib 提供的众多 RL 算法,用于在线和离线策略训练、离线和基于模型的 RL、多智能体 RL 等。
自定义 RLlib#
RLlib 提供了强大且易于使用的 API,用于自定义您的实验和生产训练工作流的各个方面。例如,您可以使用 Python 编写自己的 环境,使用 Farama Foundation 的 gymnasium 或 DeepMind 的 OpenSpiel,提供自定义 PyTorch 模型,编写自己的 优化器设置和损失定义,或者定义自定义 探索行为。
RLlib 的 API 堆栈: RLlib 构建在 Ray 之上,提供现成的、分布式的、容错的算法和损失函数、PyTorch 默认模型、多 GPU 训练和多智能体支持。用户通过子类化现有抽象来定制他们的实验。#
引用 RLlib#
如果 RLlib 有助于您的学术研究,Ray RLlib 团队鼓励您引用这些论文。
@inproceedings{liang2021rllib,
title={{RLlib} Flow: Distributed Reinforcement Learning is a Dataflow Problem},
author={
Wu, Zhanghao and
Liang, Eric and
Luo, Michael and
Mika, Sven and
Gonzalez, Joseph E. and
Stoica, Ion
},
booktitle={Conference on Neural Information Processing Systems ({NeurIPS})},
year={2021},
url={https://proceedings.neurips.cc/paper/2021/file/2bce32ed409f5ebcee2a7b417ad9beed-Paper.pdf}
}
@inproceedings{liang2018rllib,
title={{RLlib}: Abstractions for Distributed Reinforcement Learning},
author={
Eric Liang and
Richard Liaw and
Robert Nishihara and
Philipp Moritz and
Roy Fox and
Ken Goldberg and
Joseph E. Gonzalez and
Michael I. Jordan and
Ion Stoica,
},
booktitle = {International Conference on Machine Learning ({ICML})},
year={2018},
url={https://arxiv.org/pdf/1712.09381}
}