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 クラスの使用)を追加するだけで、ユーザーはモデル、オプティマイザ、データローダーをあらゆるデバイス構成に準備できます。デバイスの配置とバックワードパスを自動的に処理します。

さらに、accelerate config および accelerate launch というオプションのCLIツールを提供しており、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
  • プロジェクト
  • プロジェクト
  • プロジェクト