TRL 文件

分散式訓練

Hugging Face's logo
加入 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 之間共享梯度更新

有效批次大小計算如下批次大小=per_device_train_batch_size×num_devices×gradient_accumulation_steps \text{批次大小} = \text{per\_device\_train\_batch\_size} \times \text{num\_devices} \times \text{gradient\_accumulation\_steps}

要在擴充套件到多個 GPU 時保持一致的批次大小,請確保相應地更新 per_device_train_batch_sizegradient_accumulation_steps

例如,這些配置是等效的,並且應該產生相同的結果

GPU 數量 每裝置批次大小 梯度累積步數 評論
1 32 1 可能記憶體使用率高,但訓練速度快
1 4 8 記憶體使用率低,訓練速度慢
8 4 1 多 GPU 以兩全其美

每個 GPU 一個模型可能導致高記憶體使用,這對於大型模型或低記憶體 GPU 可能不可行。在這種情況下,您可以利用 DeepSpeed,它提供了模型分片、零冗餘最佳化器、混合精度訓練以及解除安裝到 CPU 或 NVMe 等最佳化。請檢視我們的 DeepSpeed 整合指南以獲取更多詳細資訊。

多節點訓練

我們正在編寫一份多節點訓練的指南。敬請期待!🚀

< > 在 GitHub 上更新

© . This site is unofficial and not affiliated with Hugging Face, Inc.