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 config 和 accelerate 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
- 專案
- 專案
- 專案