當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。