簡介 || 什麼是 DDP || 單節點多 GPU 訓練 || 容錯能力 || 多節點訓練 || minGPT 訓練
什麼是分散式資料平行 (DDP)¶
建立於:2022 年 9 月 27 日 | 最後更新:2024 年 11 月 14 日 | 最後驗證:2024 年 11 月 05 日
DDP 在底層是如何運作的
DistributedSampler
是什麼梯度如何在 GPU 之間同步
熟悉 PyTorch 中的 基本非分散式訓練
請觀看下方或 youtube 上的影片。
本教學課程簡要介紹了 PyTorch DistributedDataParallel (DDP),它可在 PyTorch 中進行資料平行訓練。 資料平行是一種跨多個裝置同時處理多個資料批次,以實現更佳效能的方法。 在 PyTorch 中,DistributedSampler 確保每個裝置都獲得一個非重疊的輸入批次。 模型會在所有裝置上複製;每個副本計算梯度,並使用 ring all-reduce 演算法 與其他副本同時同步。
此說明性教學課程提供了 DDP 機制的更深入的 python 檢視。
為什麼您應該偏好 DDP 而不是 DataParallel
(DP)¶
DataParallel 是較舊的資料平行方法。 DP 非常簡單(只需額外一行程式碼),但效能要差得多。 DDP 在架構上進行了一些改進
|
|
---|---|
更多額外負荷;模型在每次前向傳遞時都會複製並銷毀 |
模型僅複製一次 |
僅支援單節點平行 |
支援擴展到多台機器 |
速度較慢;在單個進程上使用多執行緒,並遇到全域直譯器鎖定 (GIL) 競爭 |
速度更快(沒有 GIL 競爭),因為它使用多處理 |
延伸閱讀¶
使用 DDP 進行多 GPU 訓練(本系列中的下一個教學課程)