当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python PyTorch monitored_barrier用法及代码示例


本文简要介绍python语言中 torch.distributed.monitored_barrier 的用法。

用法:

torch.distributed.monitored_barrier(group=None, timeout=None, wait_all_ranks=False)

参数

  • group(ProcessGroup,可选的) -要处理的流程组。如果 None ,将使用默认进程组。

  • timeout(datetime.timedelta,可选的) -monitored_barrier 超时。如果 None ,将使用默认进程组超时。

  • wait_all_ranks(bool,可选的) -是否收集所有失败的等级。默认情况下,这是False,rank 0 上的monitored_barrier 将抛出它遇到的第一个失败的 rank,以便快速失败。通过设置 wait_all_ranks=True monitored_barrier 将收集所有失败的排名并抛出包含所有失败排名信息的错误。

返回

None

同步所有类似于 torch.distributed.barrier 的进程,但需要一个可配置的超时,并且能够报告在该超时内未通过此屏障的排名。具体来说,对于非零等级,将阻塞,直到从等级 0 处理发送/接收。等级 0 将阻塞,直到处理来自其他等级的所有发送/接收,并且将报告未能及时响应的等级失败。请注意,如果一个等级未达到monitored_barrier(例如由于挂起),则所有其他等级都将在monitored_barrier 中失败。

该集体将阻塞组中的所有进程/等级,直到整个组成功退出该函数,使其对调试和同步有用。但是,它可能会对性能产生影响,并且只能用于调试或需要在host-side 上完全同步点的场景。出于调试目的,可以在应用程序的集体调用之前插入此屏障,以检查是否有任何等级不同步。

注意

请注意,此集合仅受 GLOO 后端支持。

例子:

>>> # Note: Process group initialization omitted on each rank.
>>> import torch.distributed as dist
>>> if dist.get_rank() != 1:
>>>     dist.monitored_barrier() # Raises exception indicating that
>>> # rank 1 did not call into monitored_barrier.
>>> # Example with wait_all_ranks=True
>>> if dist.get_rank() == 0:
>>>     dist.monitored_barrier(wait_all_ranks=True) # Raises exception
>>> # indicating that ranks 1, 2, ... world_size - 1 did not call into
>>> # monitored_barrier.

相关用法


注:本文由纯净天空筛选整理自pytorch.org大神的英文原创作品 torch.distributed.monitored_barrier。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。