• 教程 >
  • 使用 DDP 訓練“真實世界”模型
快捷方式

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

使用 DDP 訓練“真實世界”模型

建立日期:2022 年 9 月 27 日 | 最後更新:2025 年 1 月 23 日 | 最後驗證:2024 年 11 月 5 日

作者:Suraj Subramanian

你將學到什麼
  • 編寫分散式訓練指令碼時的最佳實踐

  • 在雲端儲存/載入工件時提高靈活性

  • DDP 不適用的情況

GitHub 上檢視本教程中使用的程式碼

前提條件

觀看下方影片或在 youtube 上跟隨學習。

在本影片中,我們將回顧多節點 DDP 中訓練 GPT 模型的過程。我們首先克隆 minGPT 倉庫,並重構 Trainer 使其類似於本系列中使用的結構。觀看影片瞭解這些更改的詳細資訊。

我們使用 hydra 集中管理訓練執行的所有配置。程式碼重構完成後,我們首先在帶有 4 個 GPU 的單節點上執行它,然後在 slurm 叢集上執行。

用於訓練的檔案

  • trainer.py 包含 Trainer 類,該類使用提供的資料集在模型上執行分散式訓練迭代。

  • model.py 定義了模型架構。

  • char_dataset.py 包含用於字元級別資料集的 Dataset 類。

  • gpt2_train_cfg.yaml 包含資料、模型、最佳化器和訓練執行的配置。

  • main.py 是訓練任務的入口點。它設定 DDP 程序組,讀取所有配置並執行訓練任務。

從雲端儲存和載入

在上面的影片中,我們將訓練快照直接儲存到雲端。這使得我們可以靈活地從任何可以訪問雲端儲存桶的節點繼續訓練。

使用混合精度

為了加快速度,您可以使用混合精度來訓練模型。在混合精度中,訓練過程的某些部分以較低精度進行,而對精度下降更敏感的其他步驟則保持 FP32 精度。

何時 DDP 不夠用?

典型的訓練執行的記憶體佔用包括模型權重、啟用、梯度、輸入批次和最佳化器狀態。由於 DDP 在每個 GPU 上覆制模型,因此只有當 GPU 有足夠的容量容納全部記憶體佔用時才能工作。當模型變得更大時,更激進的技術可能會很有用

  • 啟用檢查點:在正向傳播期間,不儲存中間啟用,而是在反向傳播期間重新計算啟用。在這種方法中,我們執行更多的計算,但節省了記憶體佔用。

  • 全分片資料並行:在這裡,模型不是複製的,而是在所有 GPU 上“分片”,計算與前向和後向傳播中的通訊重疊。閱讀我們的部落格,瞭解我們如何使用 FSDP 訓練具有 1 萬億引數的模型。

文件

獲取 PyTorch 的全面開發者文件

檢視文件

教程

獲取面向初學者和高階開發者的深度教程

檢視教程

資源

查詢開發資源並獲取問題解答

檢視資源