ray.rllib.algorithms.algorithm.Algorithm#
- class ray.rllib.algorithms.algorithm.Algorithm(config: AlgorithmConfig | None = None, env=None, logger_creator: Callable[[], Logger] | None = None, **kwargs)[源代码]#
基类:
Checkpointable
,Trainable
,AlgorithmBase
一个负责优化一个或多个策略的RLlib算法。
算法在
self.env_runner_group
下包含一个 EnvRunnerGroup。EnvRunnerGroup 由一个本地 EnvRunner(self.env_runner_group.local_env_runner
)组成,作为要训练的神经网络的参考副本,并且可选地包含一个或多个用于并行生成环境样本的远程 EnvRunner。EnvRunnerGroup 具有容错性和弹性。它跟踪所有管理的远程 EnvRunner 角色的健康状态。因此,算法永远不应直接访问底层角色句柄。相反,应始终通过分配了底层 EnvRunner ID 的所有 foreach API 来访问它们。每个 EnvRunners(远程或本地)包含一个 PolicyMap,它本身可能包含一个策略用于单代理训练,或者一个或多个策略用于多代理训练。策略会定期使用 ray.remote 调用自动同步。确切的同步逻辑取决于所使用的特定算法,但这通常发生在从本地工作者到所有远程工作者,并在每次训练更新之后。
你可以通过从
Algorithm
或其任何内置子类派生来编写自己的算法类。这允许你重写training_step
方法以实现你自己的算法逻辑。你可以在各自的主 .py 文件中找到不同内置算法的training_step()
方法,例如 rllib.algorithms.dqn.dqn.py 或 rllib.algorithms.impala.impala.py。算法公开的最重要API方法是
train()
、evaluate()
、save_to_path()
和restore_from_path()
。方法
初始化一个算法实例。
将一个新的(单智能体)RLModule 添加到此算法的 MARLModule 中。
向此算法添加新策略。
在本地Worker上为指定策略计算一个动作。
在本地工作者上为指定策略计算一个动作。
在
evaluation_config
设置下评估当前策略。基于 export_formats 导出模型。
将导出策略检查点保存到本地目录并返回一个 AIR 检查点。
将具有给定 policy_id 的导出策略模型导出到本地目录。
从给定的检查点创建一个新的算法实例。
从状态对象中恢复算法。
返回由 Tune 传递的配置。
返回一个给定配置的默认策略类。
返回可写入的JSON元数据,进一步描述实现类。
返回具有
model_id
的(单一代理)RLModule(如果未找到 ID 则返回 None)。返回指定id的退货政策,或为None。
返回一个将模块/策略ID映射到权重的字典。
将完整的算法配置字典与部分覆盖字典合并。
从此算法的MARLModule中移除一个新的(单智能体)RLModule。
从此算法中移除一个策略。
重置试用以用于新的配置。
在不重新启动试验的情况下重置配置。
从给定的模型检查点恢复训练状态。
尝试恢复不健康的 EnvRunner,如果成功,则与本地同步。
将当前模型状态保存到检查点。
将检查点导出到本地目录。
将实现类的状态(或
state
)保存到path
。通过模块/策略ID设置RL模块/策略的权重。
实现主
Algorithm.train()
逻辑。释放此可训练对象使用的所有资源。
运行一次训练的逻辑迭代。
运行多个训练迭代。
算法的默认单次迭代逻辑。
此算法类的环境验证器函数。
属性
当前训练迭代。
此可训练模型的结果和检查点的目录。
当前训练迭代次数(与
self.iteration
相同)。Trainable 对应试验的试验 ID。
与此可训练对象对应的试验名称。
当前分配给此可训练对象试验的资源。