备注

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

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

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

算法#

The Algorithm 类是 RLlib 中负责 RL 算法 何时何事 的最高级 API。例如,何时 我们应该采样算法,何时 我们应该执行神经网络更新等。如何 执行将委托给 RolloutWorker 等组件。它是 RLlib 用户与 RLlib 算法交互的主要入口点。它允许你训练和评估策略,保存实验进度并在继续 RL 运行时从先前保存的实验中恢复。AlgorithmTrainable 的子类,因此完全支持 RL 的分布式超参数调优。

../../_images/trainer_class_overview.svg

一个典型的 RLlib 算法对象: 算法通常由 N 个 RolloutWorker 组成,这些工作由一个 EnvRunnerGroup 对象协调。每个工作器拥有自己的一组 Policy 对象及其每个工作器的神经网络模型,以及每个工作器的一个 BaseEnv 实例。#

算法配置API#

The AlgorithmConfig class represents the primary way of configuring and building an Algorithm. You don’t use AlgorithmConfig directly in practice, but rather use its algorithm-specific implementations such as PPOConfig, which each come with their own set of arguments to their respective .training() method.

构造函数#

AlgorithmConfig

RLlib 的 AlgorithmConfig 根据给定的配置构建一个 RLlib 算法。

公共方法#

copy

创建此配置的深层副本,并在必要时(解)冻结。

validate

验证此配置中的所有值。

freeze

冻结此配置对象,使得不再能设置任何属性。

构建器方法#

build

从此 AlgorithmConfig(或其副本)构建一个算法。

build_learner_group

基于 self 中的设置构建并返回一个新的 LearnerGroup 对象。

build_learner

基于 self 中的设置构建并返回一个新的 Learner 对象。

配置方法#

callbacks

设置回调配置。

debugging

设置配置的调试设置。

environment

设置配置的 RL-环境设置。

evaluation

设置配置的评估设置。

experimental

设置配置的实验性设置。

fault_tolerance

设置配置的容错设置。

framework

设置配置的深度学习框架设置。

multi_agent

设置配置的多代理设置。

offline_data

设置配置的离线数据设置。

python_environment

设置配置的Python环境设置。

reporting

设置配置的报告设置。

resources

指定为算法及其 ray 角色/工作者分配的资源。

rl_module

设置配置的 RLModule 设置。

rollouts

training

设置与训练相关的配置。

Getter 方法#

get_default_learner_class

返回用于此算法的学习器类。

get_default_rl_module_spec

返回用于此算法的 RLModule 规范。

get_evaluation_config_object

self.evaluation_config 创建一个完整的 AlgorithmConfig 对象。

get_multi_rl_module_spec

返回基于给定环境/空间的 MultiRLModuleSpec。

get_multi_agent_setup

self 中的信息编译完整的多代理配置(字典)。

get_rollout_fragment_length

如果设置为“auto”,则会自动推断出适当的 rollout_fragment_length 设置。

杂项方法#

validate_train_batch_size_vs_rollout_fragment_length

检测 train_batch_sizerollout_fragment_length 之间的不匹配。

构建自定义算法类#

警告

从 Ray >= 1.9 开始,不再推荐使用 build_trainer() 实用函数来创建自定义的 Algorithm 子类。相反,请遵循这里的简单指南,直接从 Algorithm 进行子类化。

为了创建一个自定义算法,子类化 Algorithm 类并重写其一个或多个方法。特别是以下方法:

关于如何覆盖算法的示例,请参见此处

算法 API#

构造函数#

Algorithm

一个负责优化一个或多个策略的RLlib算法。

setup

子类应重写此方法以进行自定义初始化。

get_default_config

推理与评估#

compute_actions

在本地Worker上为指定策略计算一个动作。

compute_single_action

在本地工作者上为指定策略计算一个动作。

evaluate

evaluation_config 设置下评估当前策略。

保存与恢复#

from_checkpoint

从给定的检查点创建一个新的算法实例。

from_state

从状态对象中恢复算法。

get_weights

返回一个将模块/策略ID映射到权重的字典。

set_weights

通过模块/策略ID设置RL模块/策略的权重。

export_model

基于 export_formats 导出模型。

export_policy_checkpoint

将导出策略检查点保存到本地目录并返回一个 AIR 检查点。

export_policy_model

将具有给定 policy_id 的导出策略模型导出到本地目录。

restore

从给定的模型检查点恢复训练状态。

restore_workers

尝试恢复不健康的 EnvRunner,如果成功,则与本地同步。

save

将当前模型状态保存到检查点。

save_checkpoint

将检查点导出到本地目录。

训练#

train

运行一次训练的逻辑迭代。

training_step

算法的默认单次迭代逻辑。

多智能体#

add_policy

向此算法添加新策略。

remove_policy

从此算法中移除一个策略。