ray.rllib.core.learner.learner_group.LearnerGroup.update_from_episodes#

LearnerGroup.update_from_episodes(episodes: List[SingleAgentEpisode | MultiAgentEpisode], *, timesteps: Dict[str, Any] | None = None, async_update: bool = False, return_state: bool = False, minibatch_size: int | None = None, num_iters: int = 1, reduce_fn=-1, **kwargs) Dict[str, Any] | List[Dict[str, Any]] | List[List[Dict[str, Any]]][源代码]#

基于给定的片段,对学习者执行基于梯度的更新。

参数:
  • episodes – 要处理和执行更新的剧集列表。如果有多个 Learner 工作线程,剧集列表将在这些工作线程之间分割,并将一个列表分片发送给每个 Learner。

  • async_update – 是否应以异步方式向学习者工作者发送更新请求。如果为 True,将返回的不是给定数据上的更新结果,而是迄今为止尚未返回的所有先前异步更新请求的结果。

  • return_state – 是否在返回的结果字典中包含更新步骤后其中一个学习者工作者的状态(在 _rl_module_state_after_update 键下)。请注意,更新后,所有学习者工作者的状态应相同,因此我们在这里使用第一个学习者的状态。这对于避免额外的 get_weights() 调用很有用,例如用于同步 EnvRunner 权重。

  • minibatch_size – 用于更新的最小批量大小。

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

返回:

如果 async_update 为 False,则返回一个字典,包含从学习者(们)更新中得到的结果的简化版本,或者是一个字典列表,包含从学习者(们)更新中得到的结果。如果 async_update 为 True,则返回一个字典列表的列表,其中外层列表对应于对该方法的单独先前调用,内层列表对应于每个学习者(们)的结果。或者,如果结果被简化,则返回一个字典列表,包含每个准备好的 async_update 调用的简化结果。