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_size
和num_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 个并行学习器上)。