huggingface/accelerate

🚀 A simple way to launch, train, and use PyTorch models on almost any device and distributed configuration, automatic mixed precision (including fp8), and easy-to-configure FSDP and DeepSpeed support

解決的問題

PyTorch 使用者經常發現,編寫和維護分散式訓練(多 GPU、TPU 或混合精度)所需的樣板程式碼既乏味又複雜。 🤗 Accelerate 透過抽象化硬體特定的設定來減輕這種負擔,同時允許使用者完全控制其訓練迴圈。

工作原理

Accelerate 為 PyTorch 提供了一個輕量級封裝。透過在標準訓練指令碼中添加幾行程式碼(特別是使用 Accelerator 類別),使用者可以為任何裝置配置準備好他們的模型、優化器和資料載入器。它會自動處理裝置放置和反向傳播。

此外,它還提供選用的 CLI 工具(accelerate configaccelerate launch),無需手動管理 torch.distributed.run 或 TPU 啟動器即可配置環境並啟動指令碼。它還支援 DeepSpeed、FSDP 和 Megatron-LM 等進階整合。

適用對象

更喜歡編寫自己的 PyTorch 訓練迴圈,但希望在任何硬體配置(單 CPU、多 GPU、TPU)上執行程式碼,而無需編寫硬體特定樣板程式碼的開發人員和研究人員。

亮點

  • 硬體無關性:支援跨單個或多個節點的單/多 CPU、單/多 GPU 和 TPU。
  • 混合精度:內建對 FP16、BFloat16 和 FP8 混合精度的支援。
  • 極少的程式碼更改:只需極少的修改即可整合到現有的 PyTorch 指令碼中。
  • CLI 工具:透過專用 CLI 簡化環境配置和啟動流程。
  • Notebook 支援:包含用於在 Colab 或 Kaggle 等環境中進行分散式訓練的 notebook_launcher

相關

  • Dispatch
  • Dispatch
  • 專案
  • 專案
  • 專案