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