pytorch-lightning: CPUからマルチノードGPUまでモデルトレーニングをスケールさせるためのPyTorchエンジニアリングを自動化するディープラーニングフレームワーク
pytorch-lightning: CPUからマルチノードGPUまでモデルトレーニングをスケールさせるためのPyTorchエンジニアリングを自動化するディープラーニングフレームワーク
何を解決するか
通常のPyTorchでディープラーニングモデルをトレーニングする場合、バックプロパゲーション、混合精度、および複数のGPUやノードにわたる分散トレーニングなどのインフラストラクチャタスクを処理するために、反復的でエラーが発生しやすいエンジニアリングコードを記述する必要があることがよくあります。PyTorch Lightningは、このボイラープレート(定型的なコード)を排除し、研究者が基盤となるエンジニアリングではなくモデルの科学に集中できるようにします。
仕組み
Lightningは、PyTorchに対して2つのレベルの抽象化を提供します:
- PyTorch Lightning: モデルのロジック(
LightningModuleで定義)をトレーニングループ(Trainerによって処理)から切り離すことで、PyTorchコードを整理します。これにより、同じコードをCPUからマルチノードGPUやTPUへと、コアとなるモデルロジックを変更することなくスケールさせることが可能になります。 - Lightning Fabric: 複雑なモデル(LLMや基盤モデルなど)に対して、エキスパートレベルの制御を提供します。ユーザーがトレーニングループを制御し続けられるようにしながら、PyTorchのトレーニングループと戦略(
DDP,FSDP,DeepSpeedなど)を軽量にスケールさせる方法を提供します。
対象者
分散トレーニングやハードウェアアクセラレーションの複雑なインフラストラクチャを管理することなく、モデル(LLM、拡散モデル、画像分類器を含む)を事前学習またはファインチューニングしたいAI研究者および開発者。
ハイライト
- ハードウェアに依存しない: シンプルなフラグの変更だけで、コアコードの修正なしにCPU、GPU(
CUDA/MPS)、およびTPUを切り替えることができます。 - 大規模なスケーラビリティ: 複数のノードにわたる数千のGPUでのトレーニングをサポートしています。
- 組み込みの最適化: 16ビット混合精度、および
DeepSpeedやFSDPのような最先端の分散戦略をネイティブにサポートしています。 - 広範な統合:
TensorBoard,Weights & Biases,Comet,MLFlowなどの一般的な実験管理ツールと連携します。 - プロダクション対応: デプロイメントのためにモデルを
TorchScript(JIT) およびONNXにエクスポートするツールが含まれています。
Sources
- undefinedLightning-AI/pytorch-lightning