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
- 项目
- 项目
- 项目