PyTorch 分散式概述#
創建於: 2020年7月28日 | 最後更新: 2025年7月20日 | 最後驗證: 2024年11月05日
作者: Will Constable, Wei Feng
注意
在 github 上檢視和編輯此教程。
這是 torch.distributed 包的概述頁面。本頁面的目標是將文件分類到不同的主題中,並簡要描述每個主題。如果您是第一次使用 PyTorch 構建分散式訓練應用程式,建議使用本文件來導航到最能滿足您用例的技術。
簡介#
PyTorch 分散式庫包含一系列並行模組、一個通訊層以及用於啟動和除錯大型訓練作業的基礎設施。
並行 API#
這些並行模組提供高階功能,並與現有模型結合使用
通訊 API#
- PyTorch 分散式通訊層 (C10D) 提供了集體通訊 API(例如,all_reduce
和 all_gather)以及 P2P 通訊 API(例如,send 和 isend),這些 API 在所有並行實現中都有使用。 使用 PyTorch 編寫分散式應用程式 展示了使用 c10d 通訊 API 的示例。
啟動器#
torchrun 是一個廣泛使用的啟動指令碼,它在本地和遠端機器上生成程序來執行分散式 PyTorch 程式。
應用並行化以擴充套件您的模型#
資料並行是一種廣泛採用的單程式多資料訓練正規化,其中模型在每個程序上覆制,每個模型副本為不同的輸入資料樣本計算區域性梯度,在每次最佳化器步驟之前,梯度會在資料並行通訊器組內進行平均。
當模型無法放入 GPU 時,需要模型並行技術(或分片資料並行),並且可以將它們組合起來形成多維 (N-D) 並行技術。
在決定為模型選擇哪種並行技術時,請遵循以下通用指南
如果您的模型適合單個 GPU,但您想使用多個 GPU 輕鬆擴充套件訓練,請使用 DistributedDataParallel (DDP)。
當您的模型無法放入單個 GPU 時,請使用 FullyShardedDataParallel (FSDP2)。
另請參閱: FSDP2 入門
如果您在使用 FSDP2 時達到擴充套件限制,請使用 張量並行 (TP) 和/或 流水線並行 (PP)。
嘗試我們的 張量並行教程
另請參閱: TorchTitan 3D 並行端到端示例
注意
資料並行訓練也適用於 自動混合精度 (AMP)。
PyTorch 分散式開發者#
如果您想為 PyTorch 分散式做出貢獻,請參閱我們的 開發者指南。