テクニカルガイド
DeepSpeed および Megatron トレーニング スタック
DeepSpeed (Microsoft) と Megatron-LM (NVIDIA) は、数千の GPU にわたる数十億のパラメーターを使用したトレーニング モデルを実際に実現可能にするソフトウェア スタックです。
このガイドを聴くAIによるナレーション · ~2 min
概要
これらがなければ、今日のフロンティア モデルは単にメモリに収まることも、適切な時間内にトレーニングを完了することもできません。
ディープダイブ
重み、勾配、オプティマイザーの状態が適合しないため、1 つの GPU で大規模なモデルをトレーニングすることは不可能です。これらのスタックは、多くの GPU に作業を分割します。 Megatron-LM は、GPU の各レイヤー内で個々の行列乗算をスライスするテンソル並列処理に加え、異なるレイヤーを異なる GPU に配置するパイプライン並列処理の先駆けとなりました。 DeepSpeed の特徴的な貢献は ZeRO (Zero Redundancy Optimizer) です。これは、オプティマイザーの状態、勾配、パラメーターを複製するのではなく、GPU 全体でシャード化し、GPU ごとのメモリを大幅に削減します。この 2 つは、BLOOM-176B や Megatron-Turing NLG などのモデルをトレーニングするために組み合わせられることがよくあります (Megatron-DeepSpeed)。また、混合精度、アクティベーション チェックポイント、CPU または NVMe へのオフロードも追加されるため、限られたハードウェアで巨大なモデルをトレーニングできます。
現実世界の実装
数百の GPU にまたがる Megatron-DeepSpeed スタックを組み合わせて、オープン多言語 BLOOM-176B モデルをトレーニングします。
Microsoft と NVIDIA は、3D 並列処理を使用して 5,300 億パラメータの Megatron-Turing NLG モデルをトレーニングしました。
ZeRO-Offload を使用すると、オプティマイザの状態を CPU RAM にスピルすることで、研究者が単一のワークステーション GPU 上で数十億のパラメータ モデルを微調整できるようになります。
これらのスタックでアクティベーション チェックポイントを使用すると、すべてを保存するのではなくアクティベーションを再計算することで、より長いコンテキスト ウィンドウに適合します。
DeepSpeed と Megatron トレーニング スタックの将来
PyTorch のネイティブ FSDP (Fully Sharded Data Parallel) とのより緊密な統合が期待されます。FSDP は多くの ZeRO アイデアを吸収し、研究スタックとコア フレームワークの間の境界線を曖昧にします。コンパイラ駆動のアプローチと自動並列化プランナーは、手動チューニングを排除することを目的としています。トレーニング クラスターが数十万のアクセラレータに向けて成長するにつれて、NVIDIA Blackwell やカスタム トレーニング チップなどの新しいハードウェアのサポートと並んで、フォールト トレランス、エラスティック スケーリング、コンピューティングとの重複通信が主要なエンジニアリング フロンティアになります。
実践する
なぜそれが重要なのか
- 費用と予算. アーキテクチャの決定により、パフォーマンスと運用コストが何年にもわたって推進されます。
- より明確な判決. 技術教育は、チームが最新のスタックだけでなく、適切なスタックを選択するのに役立ちます。
- 品質管理. より良いエンジニアリングの選択により、本番環境での信頼性に関するインシデントが減少します。
気をつけてください
- 1 つのベンチマークを最適化すると、より広範なシステムの弱点が隠れる可能性があります。
- インフラストラクチャとメンテナンスのコストは過小評価されがちです。
- システムが複雑になるにつれて、セキュリティと可観測性のギャップが拡大する可能性があります。
次のステップ
- 実装前にレイテンシ、品質、コストの目標を定義します。
- 現実的な負荷とデータ条件でのベンチマーク。
- エラー、ドリフト、ユーザーへの影響を計測器で監視します。
- スケーリングの前に、ロールバックとインシデント対応のパスを準備します。
探検を続けましょう
よくある質問
DeepSpeed および Megatron トレーニング スタックとは何ですか?
DeepSpeed (Microsoft) と Megatron-LM (NVIDIA) は、数千の GPU にわたる数十億のパラメーターを使用したトレーニング モデルを実際に実現可能にするソフトウェア スタックです。これらがなければ、今日のフロンティア モデルは単にメモリに収まることも、妥当な時間内にトレーニングを完了することもできません。
DeepSpeed の ZeRO オプティマイザーの主な目的は何ですか?
ZeRO (Zero Redundancy Optimizer) は、オプティマイザーの状態、勾配、パラメーターを各デバイスで複製するのではなく、GPU 全体に分割することでメモリの冗長性を排除します。
Megatron-LM で先駆的に開発されたテンソル並列処理は、モデルをどのように分割しますか?
テンソル並列処理は、単一レイヤー内の演算 (大きな行列の乗算など) を複数の GPU に分割します。これはレイヤー内分割です。
モデル パラメーター自体もシャーディングすることで、メモリを最大限に節約できるのはどの ZeRO ステージですか?
ZeRO Stage 3 は、勾配とオプティマイザーの状態に加えてパラメーターをシャード化し、それらをオンデマンドで収集し、最大のメモリ削減を実現します。
トレーニング中のメモリを節約するために「アクティベーション チェックポイント」は何を犠牲にするのでしょうか?
アクティベーション チェックポイント処理では、保存される中間アクティベーションの数が減り、バックプロパゲーション中にそれらが再計算され、メモリの削減と引き換えに追加の計算が行われます。
これらの技術を組み合わせることがよく「3D 並列処理」と呼ばれるのはなぜですか?
3D 並列処理では、データ並列処理、テンソル (層内) 並列処理、およびパイプライン (層間) 並列処理という 3 つの直交する戦略が積み重ねられます。