ray.rllib.core.learner.learner.Learner.update_from_episodes#

Learner.update_from_episodes(episodes: List[SingleAgentEpisode | MultiAgentEpisode], *, timesteps: Dict[str, Any] | None = None, minibatch_size: int | None = None, num_iters: int = 1, num_total_mini_batches: int = 0, reduce_fn=-1) Dict[源代码]#

对给定的一系列片段执行 num_iters 次小批量更新。

您可以使用此方法对批次进行多次反向传递。在 MultiRLModule 中,所有模块 ID 将使用相同的 minibatch_sizenum_iters

参数:
  • episodes – 要从中更新的剧集对象列表。

  • timesteps – 时间步长字典,必须包含键 NUM_ENV_STEPS_SAMPLED_LIFETIME。 # TODO (sven): 将其改为更正式的结构,并定义自己的类型。

  • minibatch_size – 每次更新使用的最小批次的大小。

  • num_iters – 输入多智能体批次中所有子批次完整遍历的次数。

  • num_total_mini_batches – 要循环遍历的小批次数(跨越所有 num_sgd_iter SGD 迭代)。在多智能体 + 多 GPU 的情况下,这是必需的,因为 MultiAgentEpisodes 本身大致被平均分片,但它们可能包含长度分布非常不均匀的 SingleAgentEpisodes。因此,如果没有这个固定的预计算值,可能会导致一个学习者比其他学习者遍历不同数量的小批次,从而导致死锁。

返回:

一个由调用 self.metrics.reduce() 生成的 ResultDict 对象。返回的字典可以是任意嵌套的,并且其所有叶子节点都必须包含 Stats 对象,这允许下游组件(例如,使用此学习器的用户)进一步减少这些结果(例如,在 n 个并行学习器上)。