• 教學 >
  • PyTorch 分散式概觀
捷徑

PyTorch 分散式概觀

建立於:2020 年 7 月 28 日 | 上次更新:2024 年 10 月 08 日 | 上次驗證:2024 年 11 月 05 日

作者: Will Constable

注意

editgithub 中檢視及編輯此教學。

這是 torch.distributed 套件的概觀頁面。此頁面的目標是將文件分類到不同的主題,並簡要描述每個主題。如果您是第一次使用 PyTorch 建立分散式訓練應用程式,建議您使用此文件來導航到最適合您用例的技術。

簡介

PyTorch 分散式函式庫包含平行模組集合、通訊層,以及用於啟動和除錯大型訓練作業的基礎架構。

平行 API

這些平行模組提供高階功能,並與現有模型組合。

分片基本元件

DTensorDeviceMesh 是用於建構平行性的基本元件,以 N 維處理程序組上分片或複製的張量表示。

  • DTensor 代表已分片和/或複製的張量,並自動通訊以根據操作的需要重新分片張量。

  • DeviceMesh 將加速器裝置通訊器抽象化為多維陣列,該陣列管理多維平行中集體通訊的底層 ProcessGroup 實例。 試用我們的 Device Mesh Recipe 以了解更多資訊。

通訊 API

PyTorch 分散式通訊層 (C10D) 提供集體通訊 API (例如,all_reduce

all_gather) 和 P2P 通訊 API (例如,sendisend),這些 API 在所有平行實作中都在幕後使用。 使用 PyTorch 撰寫分散式應用程式 顯示了使用 c10d 通訊 API 的範例。

啟動器

torchrun 是一個廣泛使用的啟動器腳本,它會在本地和遠端機器上產生進程,以執行分散式 PyTorch 程式。

應用平行來擴展您的模型

資料平行是一種廣泛採用的單程式多資料訓練範例,其中模型在每個進程上複製,每個模型副本為一組不同的輸入資料樣本計算本機梯度,梯度在每個最佳化器步驟之前在資料平行通訊器組中平均。

當模型不適合 GPU 時,需要模型平行技術 (或分片資料平行),並且可以組合在一起以形成多維 (N-D) 平行技術。

在決定為您的模型選擇哪些平行技術時,請使用這些常見準則

  1. 如果您的模型適合單個 GPU,但您希望使用多個 GPU 輕鬆擴展訓練,請使用 DistributedDataParallel (DDP)

  2. 當您的模型無法在一個 GPU 上容納時,請使用 FullyShardedDataParallel (FSDP)

  3. 如果您使用 FSDP 達到擴展限制,請使用 Tensor Parallel (TP) 和/或 Pipeline Parallel (PP)

注意

資料平行訓練也適用於 Automatic Mixed Precision (AMP)

PyTorch 分散式開發人員

如果您想為 PyTorch Distributed 貢獻程式碼,請參考我們的開發者指南

文件

取得 PyTorch 的完整開發者文件

檢視文件

教學

取得適合初學者和進階開發者的深入教學

檢視教學

資源

尋找開發資源並取得您的問題解答

檢視資源