备注
Ray 2.10.0 引入了 RLlib 的“新 API 栈”的 alpha 阶段。Ray 团队计划将算法、示例脚本和文档迁移到新的代码库中,从而在 Ray 3.0 之前的后续小版本中逐步替换“旧 API 栈”(例如,ModelV2、Policy、RolloutWorker)。
然而,请注意,到目前为止,只有 PPO(单代理和多代理)和 SAC(仅单代理)支持“新 API 堆栈”,并且默认情况下继续使用旧 API 运行。您可以继续使用现有的自定义(旧堆栈)类。
请参阅此处 以获取有关如何使用新API堆栈的更多详细信息。
RLlib: 工业级强化学习#
RLlib 是一个用于强化学习(RL)的开源库,它支持生产级别的、高度分布式的RL工作负载,同时为各种行业应用提供统一且简单的API。无论您希望在**多智能体**设置中训练您的智能体,纯粹从**离线**(历史)数据集中训练,还是使用**外部连接的模拟器**,RLlib 都为您的决策需求提供了简单的解决方案。
如果你已经将你的问题编码(用Python)为一个 RL 环境 或者拥有大量预先记录的历史行为数据来学习,你将在短短几天内启动并运行。
RLlib 已经被许多不同行业的领导者用于生产中,例如 气候控制、工业控制、制造和物流、金融、游戏、汽车、机器人、船只设计 等等。
60秒了解RLlib#
只需几个步骤即可在笔记本电脑上启动并运行您的第一个 RLlib 工作负载。
RLlib 不会自动安装深度学习框架,但支持 TensorFlow**(包括 1.x 版本和静态图模式以及 2.x 版本和 eager 模式)以及 **PyTorch。根据您的需求,请确保安装 TensorFlow 或 PyTorch(或两者都安装,如下所示):
备注
对于在运行Apple Silicon(如M1)的计算机上安装,请按照`这里 <https://docs.ray.io/en/latest/ray-overview/installation.html#m1-mac-apple-silicon-support>`_ 的说明进行操作。为了能够运行我们的Atari示例,您还应安装 pip install "gym[atari]" "gym[accept-rom-license]" atari_py
。
这就是你开始使用 RLlib 进行编码所需的一切。以下是一个在 Taxi 领域 上运行 PPO 算法的示例。我们首先为算法创建一个 config
,设置正确的环境,并定义我们想要的所有训练参数。接下来,我们 构建
算法并对其进行总共 5
次迭代训练。一次训练迭代包括环境工作者并行收集样本,以及对收集到的批次进行损失计算和模型更新。作为最后一步,我们 评估
训练好的算法:
from ray.rllib.algorithms.ppo import PPOConfig
config = ( # 1. Configure the algorithm,
PPOConfig()
.environment("Taxi-v3")
.env_runners(num_env_runners=2)
.framework("torch")
.training(model={"fcnet_hiddens": [64, 64]})
.evaluation(evaluation_num_env_runners=1)
)
algo = config.build() # 2. build the algorithm,
for _ in range(5):
print(algo.train()) # 3. train it,
algo.evaluate() # 4. and evaluate it.
请注意,你可以使用任何 Farama-Foundation Gymnasium 环境作为 env
。在 rollouts
中,你可以指定用于从环境中收集样本的并行工作者的数量。framework
配置允许你在执行时选择 “tf2”、”tf” 和 “torch”。你还可以调整 RLlib 的默认 model
配置,并设置一个单独的 evaluation
配置。
如果你想了解更多关于 RLlib 训练 API 的信息,你可以在这里了解更多。此外,请参阅 这里以获取一个简单的示例,了解如何在训练后编写动作推理循环。
如果你想快速预览 RLlib 支持哪些 算法 和 环境 ,请点击下面的下拉菜单:
功能概览#
RLlib 关键概念
了解更多关于 RLlib 的核心概念,如环境、算法和策略。
RLlib 算法
查看 RLlib 中许多可用的 RL 算法,包括无模型和基于模型的 RL、在线和离线训练、多智能体 RL 等。
RLlib 环境
开始使用 RLlib 支持的环境,例如 Farama 基金会的 Gymnasium、Petting Zoo,以及许多用于向量化和多智能体环境的自定义格式。
以下是 RLlib 最显著特性的总结。点击下面的图片查看每个列出特性的示例脚本:
高度分布式学习:我们的 RLlib 算法(如我们的“PPO”或“IMPALA”)允许您设置 num_env_runners
配置参数,从而使您的工作负载可以在数百个 CPU/节点上运行,从而实现并行化和加速学习。
gym.Envs
转换为多智能体环境,并开始以以下任何一种方式训练您的智能体:自定义 RLlib#
RLlib 提供了简单的API来定制您的训练和实验工作流程的所有方面。例如,您可以使用 Farama-Foundation 的 gymnasium 或 DeepMind 的 OpenSpiel 在 Python 中编写自己的 环境,提供自定义的 TensorFlow/Keras- 或 Torch 模型,编写自己的 策略和损失定义,或定义自定义的 探索行为。
通过将您的环境中的一个或多个代理映射到一个或多个策略,多代理强化学习(MARL)成为我们用户易于使用的低级原语。