备注

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

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

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

RLlib 工具#

以下是RLlib中所有可用工具的列表。

探索 API#

探索在强化学习中至关重要,它使学习代理能够通过到达环境中的未探索区域来发现新的、潜在的高奖励状态。

RLlib 有几种内置的探索组件,不同的算法会使用这些组件。你也可以通过子类化 Exploration 基类并实现自己的逻辑来定制算法的探索行为:

内置探索组件#

Exploration

实现了一种策略的探索策略。

Random

一个随机动作选择器(当 explore=False 时为确定性/贪婪)。

StochasticSampling

一种仅从分布中采样的探索。

EpsilonGreedy

Epsilon-greedy 探索类,用于生成探索动作。

GaussianNoise

一个向连续动作添加白噪声的探索。

OrnsteinUhlenbeckNoise

一种探索方法,向连续动作添加 Ornstein-Uhlenbeck 噪声。

RE3

用于高效探索的随机编码器。

Curiosity

实现:[1] 基于好奇心的自我监督预测探索 Pathak, Agrawal, Efros, 和 Darrell - 加州大学伯克利分校 - ICML 2017。

ParameterNoise

改变模型参数的探索。

推理#

get_exploration_action

返回一个(可能的)探索性动作及其对数似然。

回调钩子#

before_compute_actions

在调用 policy.compute_actions() 之前的准备工作钩子。

on_episode_start

在剧集开始时处理必要的探索逻辑。

on_episode_end

在剧集结束时处理必要的探索逻辑。

postprocess_trajectory

处理已完成剧情节点的后处理。

设置和获取状态#

get_state

返回当前的探索状态。

set_state

将 Exploration 对象的状态设置为给定的值。

调度器 API#

使用调度器根据(int64)时间步输入为变量(在Python、PyTorch或TensorFlow中)设置预定值。计算的值通常是float32类型。

内置调度器组件#

Schedule

调度类实现了各种依赖于时间的调度模式。

ConstantSchedule

一个值随时间保持不变的计划。

LinearSchedule

initial_pfinal_p 之间进行线性插值。

PiecewiseSchedule

实现了一个分段调度器。

ExponentialSchedule

initial_pfinal_p 的指数衰减调度。

PolynomialSchedule

initial_pfinal_p 之间进行多项式插值。

方法#

value

根据计划逻辑生成给定时间步的值。

__call__

简单地调用 self.value(t)。

训练操作工具#

multi_gpu_train_one_step

多GPU版本的train_one_step。

train_one_step

在本地工作进程中改进 train_batch 中所有策略的函数。

框架工具#

导入工具#

try_import_torch

尝试导入 torch 并返回模块(或 None)。

try_import_tf

尝试导入 tf 并返回模块(或 None)。

try_import_tfp

尝试导入 tfp 并返回模块(或 None)。

Tensorflow 工具#

explained_variance

计算一对标签和预测值的解释方差。

flatten_inputs_to_1d_tensor

根据给定的空间结构,展平任意输入结构。

get_gpu_devices

返回一个GPU设备名称的列表,例如:["/gpu:0", "/gpu:1"]。

get_placeholder

返回一个给定可选提示(如空间)的 tf1.placeholder 对象。

huber_loss

计算给定项和delta参数的huber损失。

l2_loss

计算张量值的L2范数的一半,不包括平方根。

make_tf_callable

返回一个可以在图模式或急切模式下执行的函数。

minimize_and_clip

计算,然后使用目标、优化器和变量列表裁剪梯度。

one_hot

返回一个独热张量,给定一个整数张量和一个空间。

reduce_mean_ignore_inf

与 tf.reduce_mean() 相同,但忽略 -inf 值。

scope_vars

获取给定范围内的变量。

warn_if_infinite_kl_divergence

zero_logps_from_actions

对于某些动作返回虚拟对数概率(0)的有用辅助函数。

Torch 工具#

apply_grad_clipping

optimizer 内部对已经计算的梯度应用梯度裁剪。

concat_multi_gpu_td_errors

在给定 TorchPolicy 的情况下,连接多 GPU(每塔)的 TD 误差张量。

convert_to_torch_tensor

将任何结构转换为 torch.Tensors。

explained_variance

计算一对标签和预测值的解释方差。

flatten_inputs_to_1d_tensor

根据给定的空间结构,展平任意输入结构。

global_norm

返回一个张量列表的全局L2范数。

huber_loss

计算给定项和delta参数的huber损失。

l2_loss

计算张量值的L2范数的一半,不包括平方根。

minimize_and_clip

optimizer.param_groups 中找到的剪辑梯度就地剪辑到给定值。

one_hot

返回一个独热张量,给定一个整数张量和一个空间。

reduce_mean_ignore_inf

与 torch.mean() 相同,但忽略 -inf 值。

sequence_mask

提供与 tf.sequence_mask 相同的行为给 torch。

warn_if_infinite_kl_divergence

set_torch_seed

将 torch 随机种子设置为给定值。

softmax_cross_entropy_with_logits

与 tf.nn.softmax_cross_entropy_with_logits 行为相同。

Numpy 工具#

aligned_array

concat_aligned

convert_to_numpy

stats 中的值转换为非张量的 numpy 或 python 类型。

fc

计算给定权重/偏置和输入的 FC(密集)层输出。

flatten_inputs_to_1d_tensor

根据给定的空间结构,展平任意输入结构。

make_action_immutable

将标志操作设为不可变,以在用户尝试更改时通知用户。

huber_loss

参考: https://en.wikipedia.org/wiki/Huber_loss.

l2_loss

计算张量的L2范数的一半(不带平方根):sum(x**2) / 2。

lstm

计算给定权重/偏置、状态和输入的LSTM层输出。

one_hot

用于numpy的独热编码实用函数。

relu

泄漏 ReLU 函数的实现。

sigmoid

返回应用于 x 的 sigmoid 函数。

softmax

返回 x 的 softmax 值。

检查点工具#

Checkpointable

RLlib 组件的抽象基类,可以将其检查点保存到磁盘。

convert_to_msgpack_checkpoint

将算法检查点(基于pickle)转换为基于msgpack的检查点。

convert_to_msgpack_policy_checkpoint

将策略检查点(基于pickle)转换为基于msgpack的检查点。

get_checkpoint_info

返回一个包含算法/策略检查点信息的字典。

try_import_msgpack

尝试导入 msgpack 和 msgpack_numpy,并返回已修补的 msgpack 模块。

政策工具#

compute_log_likelihoods_from_input_dict

返回给定批次中策略动作的对数似然。

create_policy_for_framework

特定框架的策略创建逻辑。

local_policy_inference

使用环境观察运行一个启用了连接器的策略。

parse_policy_specs_from_checkpoint

从检查点文件中读取并解析策略规范。

其他工具#

utils.tensor_dtype.get_np_dtype

返回给定张量或数组的 NumPy dtype。

common.CLIArguments

用于CLI参数和选项的数据类。

common.FrameworkEnum

用于CLI参数验证的RLlib支持的框架。

common.SupportedFileType

RLlib 支持的文件类型,用于 CLI 参数验证。

core.rl_module.validate_module_id

确保给定的 policy_id 是有效的。

train.load_experiments_from_file

从文件加载实验。