备注

Ray 2.10.0 引入了 RLlib 的“新 API 栈”的 alpha 阶段。Ray 团队计划将算法、示例脚本和文档迁移到新的代码库中,从而在 Ray 3.0 之前的后续小版本中逐步替换“旧 API 栈”(例如,ModelV2、Policy、RolloutWorker)。

然而,请注意,到目前为止,只有 PPO(单代理和多代理)和 SAC(仅单代理)支持“新 API 堆栈”,并且默认情况下继续使用旧 API 运行。您可以继续使用现有的自定义(旧堆栈)类。

请参阅此处 以获取有关如何使用新API堆栈的更多详细信息。

RLlib: 工业级强化学习#

../_images/rllib-logo.png

RLlib 是一个用于强化学习(RL)的开源库,它支持生产级别的、高度分布式的RL工作负载,同时为各种行业应用提供统一且简单的API。无论您希望在**多智能体**设置中训练您的智能体,纯粹从**离线**(历史)数据集中训练,还是使用**外部连接的模拟器**,RLlib 都为您的决策需求提供了简单的解决方案。

如果你已经将你的问题编码(用Python)为一个 RL 环境 或者拥有大量预先记录的历史行为数据来学习,你将在短短几天内启动并运行。

RLlib 已经被许多不同行业的领导者用于生产中,例如 气候控制工业控制制造和物流金融游戏汽车机器人船只设计 等等。

60秒了解RLlib#

../_images/rllib-index-header.svg

只需几个步骤即可在笔记本电脑上启动并运行您的第一个 RLlib 工作负载。

RLlib 不会自动安装深度学习框架,但支持 TensorFlow**(包括 1.x 版本和静态图模式以及 2.x 版本和 eager 模式)以及 **PyTorch。根据您的需求,请确保安装 TensorFlow 或 PyTorch(或两者都安装,如下所示):

pip install "ray[rllib]" tensorflow torch

备注

对于在运行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 的核心概念,如环境、算法和策略。

RLlib 算法

查看 RLlib 中许多可用的 RL 算法,包括无模型和基于模型的 RL、在线和离线训练、多智能体 RL 等。

RLlib 环境

开始使用 RLlib 支持的环境,例如 Farama 基金会的 Gymnasium、Petting Zoo,以及许多用于向量化和多智能体环境的自定义格式。

以下是 RLlib 最显著特性的总结。点击下面的图片查看每个列出特性的示例脚本:

../_images/rllib-sigil-distributed-learning.svg

高度分布式学习:我们的 RLlib 算法(如我们的“PPO”或“IMPALA”)允许您设置 num_env_runners 配置参数,从而使您的工作负载可以在数百个 CPU/节点上运行,从而实现并行化和加速学习。

../_images/rllib-sigil-multi-agent.svg
多智能体强化学习 (MARL): 通过几个简单的步骤将您的 (自定义) gym.Envs 转换为多智能体环境,并开始以以下任何一种方式训练您的智能体:
1) Cooperative with shared or separate policies and/or value functions.
2) Adversarial scenarios using self-play and league-based training.
3) Independent learning of neutral/co-existing agents.
../_images/rllib-sigil-external-simulators.svg

外部模拟器:你的模拟不是作为 gym.Env 在 Python 中运行?没问题!RLlib 支持外部环境 API,并附带一个即插即用的 客户端/ 服务器 设置,允许你在“外部”(例如 Windows 云)运行数百个独立的模拟器,连接到一个中央 RLlib 策略服务器,该服务器学习并提供动作。或者,可以在客户端计算动作以节省网络流量。

../_images/rllib-sigil-offline-rl.svg

离线强化学习和模仿学习/行为克隆: 你没有针对特定问题的模拟器,但有大量由传统(可能是非RL/ML)系统记录的历史数据?这个强化学习分支适合你!RLlib 提供了几种 离线强化学习 算法(CQLMARWILDQfD),允许你纯粹 行为克隆 现有系统或学习如何进一步改进它。

自定义 RLlib#

RLlib 提供了简单的API来定制您的训练和实验工作流程的所有方面。例如,您可以使用 Farama-Foundation 的 gymnasium 或 DeepMind 的 OpenSpiel 在 Python 中编写自己的 环境,提供自定义的 TensorFlow/Keras-Torch 模型,编写自己的 策略和损失定义,或定义自定义的 探索行为

通过将您的环境中的一个或多个代理映射到一个或多个策略,多代理强化学习(MARL)成为我们用户易于使用的低级原语。

../_images/rllib-stack.svg

RLlib 的 API 栈: 基于 Ray 构建,RLlib 提供了开箱即用的高度分布式算法、策略、损失函数和默认模型(包括自动将神经网络包装为 LSTM 或注意力网络的选项)。此外,我们的库还内置了服务器/客户端设置,允许您通过网络将数百个外部模拟器(客户端)连接到 RLlib 服务器进程,该进程提供学习功能并处理动作查询。用户自定义通过子类化现有抽象实现,并通过重写这些子类中的某些方法来定义自定义行为。#