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


Python PyTorch ChildFailedError用法及代碼示例


本文簡要介紹python語言中 torch.distributed.elastic.multiprocessing.errors.ChildFailedError 的用法。

用法:

class torch.distributed.elastic.multiprocessing.errors.ChildFailedError(name, failures)

可以從用 @record 裝飾器注釋的函數引發特殊異常類型,以使子進程(根異常)按原樣在堆棧中傳播(例如,不包含在父進程的回溯中)。

在父進程是一個簡單的 Nanny 進程而子進程(工作進程)實際上正在執行有意義的計算的情況下很有用。在這種情況下,錯誤通常發生在子進程上,因為父進程沒有做任何重要的事情,並且子錯誤應該傳播到調度程序以進行準確的根本原因診斷。

注意

傳播依賴於錯誤文件而不是異常處理來支持函數和二進製啟動。

例子:

# process tree on a host (container)
0: scheduler-init-process:
           |- 1: torchelastic_agent:
                    |- 2: trainer_0 (ok)
                    |- 3: trainer_1 (fail) -> error.json
                    |- ...
                    |- n+2: trainer_n (ok)
           |- n+3: other processes
           |- ...

在上麵的示例中,trainer 1 的失敗(寫入 error.json)是根本原因,應該報告給調度程序的 init 進程。火炬彈性劑引起ChildFailedError("trainer", {1: "trainer_1/error.json"})在檢測到訓練器 1 的故障時,會將訓練器 1 的錯誤文件的內容傳播到調度程序的 init 進程。

相關用法


注:本文由純淨天空篩選整理自pytorch.org大神的英文原創作品 torch.distributed.elastic.multiprocessing.errors.ChildFailedError。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。