引言 || 什麼是 DDP || 單節點多 GPU 訓練 || 容錯 || 多節點訓練 || minGPT 訓練
什麼是分散式資料並行 (DDP)¶
建立日期:2022 年 9 月 27 日 | 最後更新:2024 年 11 月 14 日 | 最後驗證:2024 年 11 月 5 日
DDP 的底層工作原理
什麼是
DistributedSampler梯度如何在 GPU 之間同步
熟悉 PyTorch 中的基本非分散式訓練
觀看下方或 youtube 上的影片進行學習。
本教程是 PyTorch DistributedDataParallel (DDP) 的溫和介紹,DDP 能夠在 PyTorch 中實現資料並行訓練。資料並行是一種跨多個裝置同時處理多個數據批次以實現更好效能的方法。在 PyTorch 中,DistributedSampler 確保每個裝置獲得不重疊的輸入批次。模型在所有裝置上覆制;每個副本計算梯度,並使用環狀 All-Reduce 演算法與其他副本同時同步。
這個圖解教程從 Python 的角度更深入地介紹了 DDP 的機制。
為什麼應該優先選擇 DDP 而非 DataParallel (DP)¶
DataParallel 是一種較舊的資料並行方法。DP 非常簡單(只需額外一行程式碼),但效能要差得多。DDP 在架構上透過以下幾種方式進行了改進:
|
|
|---|---|
開銷更大;模型在每次前向傳播時都會被複制和銷燬 |
模型只複製一次 |
只支援單節點並行 |
支援擴充套件到多臺機器 |
速度較慢;在單個程序上使用多執行緒,會遇到全域性直譯器鎖 (GIL) 競爭 |
速度更快(沒有 GIL 競爭),因為它使用多程序 |