TRL 文件
分散式訓練
加入 Hugging Face 社群
並獲得增強的文件體驗
開始使用
分散式訓練
此部分正在建設中。歡迎貢獻!
使用 TRL 進行多 GPU 訓練
TRL 中的訓練器使用 🤗 Accelerate 來實現在多個 GPU 或節點上進行分散式訓練。為此,首先透過執行以下命令建立一個 🤗 Accelerate 配置檔案
accelerate config
並根據您的多 GPU / 多節點設定回答問題。然後,您可以透過執行以下命令來啟動分散式訓練
accelerate launch train.py
我們還在 示例資料夾 中提供了可用作模板的配置檔案。要使用這些模板,只需在啟動任務時傳遞配置檔案的路徑,例如
accelerate launch --config_file examples/accelerate_configs/multi_gpu.yaml train.py <SCRIPT_ARGS>
這會自動將工作負載分配到所有可用的 GPU 上。
在底層,🤗 Accelerate 為每個 GPU 建立一個模型。每個程序
- 處理自己的資料批次
- 計算該批次的損失和梯度
- 在所有 GPU 之間共享梯度更新
有效批次大小計算如下
要在擴充套件到多個 GPU 時保持一致的批次大小,請確保相應地更新 per_device_train_batch_size
和 gradient_accumulation_steps
。
例如,這些配置是等效的,並且應該產生相同的結果
GPU 數量 | 每裝置批次大小 | 梯度累積步數 | 評論 |
---|---|---|---|
1 | 32 | 1 | 可能記憶體使用率高,但訓練速度快 |
1 | 4 | 8 | 記憶體使用率低,訓練速度慢 |
8 | 4 | 1 | 多 GPU 以兩全其美 |
每個 GPU 一個模型可能導致高記憶體使用,這對於大型模型或低記憶體 GPU 可能不可行。在這種情況下,您可以利用 DeepSpeed,它提供了模型分片、零冗餘最佳化器、混合精度訓練以及解除安裝到 CPU 或 NVMe 等最佳化。請檢視我們的 DeepSpeed 整合指南以獲取更多詳細資訊。
多節點訓練
我們正在編寫一份多節點訓練的指南。敬請期待!🚀
< > 在 GitHub 上更新