評價此頁

簡介 || 什麼是 DDP || 單節點多 GPU 訓練 || 容錯 || 多節點訓練 || minGPT 訓練

什麼是分散式資料並行 (DDP)#

創建於: 2022年9月27日 | 最後更新: 2024年11月14日 | 最後驗證: 2024年11月05日

作者: Suraj Subramanian

您將學到什麼
  • DDP 的工作原理

  • 什麼是 DistributedSampler

  • 跨 GPU 的梯度如何同步

先決條件

請觀看下面的影片或在 YouTube 上觀看以進行學習。

本教程是對 PyTorch DistributedDataParallel (DDP) 的初步介紹,它支援 PyTorch 中的資料並行訓練。資料並行是一種在多個裝置上同時處理多個數據批次以獲得更好效能的方法。在 PyTorch 中,DistributedSampler 可確保每個裝置獲得不重疊的輸入批次。模型被複制到所有裝置上;每個副本計算梯度並使用 ring all-reduce 演算法 同時與其他副本進行同步。

這個 示例教程 提供了 DDP 工作機制更深入的 Python 視角。

為什麼你應該偏好 DDP 而不是 DataParallel (DP)#

DataParallel 是一種較舊的資料並行方法。DP 非常簡單(只需額外一行程式碼),但效能要差得多。DDP 在以下幾個方面改進了架構:

DataParallel

DistributedDataParallel

開銷更大;模型在每次前向傳播時都會被複制和銷燬

模型僅複製一次

僅支援單節點並行

支援擴充套件到多臺機器

速度較慢;在一個程序上使用多執行緒,並遇到全域性直譯器鎖 (GIL) 爭用

速度更快(無 GIL 爭用),因為它使用多程序

進一步閱讀#