テクニカルガイド

モデルとパイプラインの並列処理

モデルが大きすぎて 1 つの GPU に収まらない場合、モデルとパイプラインの並列処理によってモデル自体がデバイス間で分割されます。

2分の読書最終更新日

概要

This is what makes training giant language models with hundreds of billions of parameters physically possible.

ディープダイブ

モデルの並列処理により、単一のモデルが複数の GPU に分割されるため、1 つのデバイスがすべての重みを保持する必要はありません。味は主に2つあります。テンソル (層内) 並列処理は、それぞれが出力の一部を計算する GPU 間で大規模な行列乗算を分割するなど、層内の計算を分割します。パイプライン (レイヤー間) 並列処理では、異なる連続レイヤーが異なる GPU に割り当てられるため、レイヤーのブロック 1 は GPU 0 に存在し、ブロック 2 は GPU 1 に存在し、組み立てラインのようにアクティベーションが前方に渡されます。単純なパイプラインの課題は「バブル」です。GPU 0 が最初のバッチで動作している間、ダウンストリーム GPU はアイドル状態になります。パイプライン化により各バッチがマイクロバッチに分割されるため、すべてのステージがビジー状態を維持し、使用率が大幅に向上します。

技術的な洞察

テンソル並列処理 (NVIDIA Megatron-LM など) は、重み行列を列単位または行単位で分割し、all-reduce を使用して部分的な結果を再結合し、高速 NVLink ノード内での通信を維持します。パイプライン並列処理 (GPipe、PipeDream) は、バッチをマイクロバッチに分割し、時差スケジュールでステージを通過し、アイドル状態の「バブル」時間を短縮します。多くの場合、この 2 つはノード内でのテンソル並列処理とノード間のパイプライン並列処理で階層化されます。

戦略的影響

費用と予算

アーキテクチャの決定により、パフォーマンスと運用コストが何年にもわたって推進されます。

より明確な判決

技術教育は、チームが最新のスタックだけでなく、適切なスタックを選択するのに役立ちます。

品質管理

より良いエンジニアリングの選択により、本番環境での信頼性に関するインシデントが減少します。

モデルとパイプラインの並列処理の将来

フレームワークは、コンピューティングと通信のバランスをとるためにプロファイリングと検索を使用して、デバイス間でモデルを分割する方法を決定するという難しい問題をますます自動化しています。テンソル、パイプライン、およびデータ並列処理 (3D 並列処理) のより緊密な統合、パイプライン バブルをほぼ排除するためのよりスマートなマイクロバッチ スケジューリング、およびより高速な相互接続を備えたハードウェアにより、チップ間での単一レイヤーの分割がより安価になり、ますます大規模なモデルにとって日常的になることが期待されます。

現実世界の実装

NVIDIA Megatron-LM を使用して GPT スタイルのモデルをトレーニングします。これは、各トランスフォーマー層の注意を分割し、テンソル並列処理を介して GPU 全体にフィードフォワード行列を分割します。

GPipe を使用して、巨大なビジョンまたは言語モデルのさまざまなレイヤーを個別のアクセラレータに配置し、マイクロバッチ処理でそれらを忙しくさせます。

DeepSpeed のパイプライン エンジンは、数千億のパラメータ モデルを多数のノードにわたるステージに分割します。

単一の 8 GPU サーバー内のテンソル並列処理と、複数のサーバーにわたるパイプライン並列処理を組み合わせて、1 台のマシンには大きすぎるモデルをトレーニングします。

リスクとガードレール

1 つのベンチマークを最適化すると、より広範なシステムの弱点が隠れる可能性があります。

インフラストラクチャとメンテナンスのコストは過小評価されがちです。

システムが複雑になるにつれて、セキュリティと可観測性のギャップが拡大する可能性があります。

実装ロードマップ

1

実装前にレイテンシ、品質、コストの目標を定義します。

2

現実的な負荷とデータ条件でのベンチマーク。

3

エラー、ドリフト、ユーザーへの影響を計測器で監視します。

4

スケーリングの前に、ロールバックとインシデント対応のパスを準備します。

探検を続けましょう

Free newsletter

Get the daily AI briefing

Three verified AI stories every weekday morning, written in plain English. Free forever, no ads.

One email each weekday. Unsubscribe in one click. We never sell or share your address.

Test yourself

Take the Model and Pipeline Parallelism quiz

Instant feedback on every answer, and a shareable certificate with a verifiable ID once you pass a course.

クイズを開始する

Support free AI education. AI Understanding is a 501(c)(3) nonprofit — no ads, no paywall, ever. Make a donation

次のガイド

大規模モデルのテンソル並列処理

よくある質問

What is Model and Pipeline Parallelism?

モデルが大きすぎて 1 つの GPU に収まらない場合、モデルとパイプラインの並列処理によってモデル自体がデバイス間で分割されます。これにより、数千億のパラメータを持つ巨大な言語モデルのトレーニングが物理的に可能になります。

モデルとパイプラインの並列処理はどのような基本的な問題を解決しますか?

モデルとパイプラインの並列処理により、モデル自体がデバイス間で分割され、単一の GPU が保持できるよりもはるかに大きなネットワークのトレーニングが可能になります。

テンソル (層内) 並列処理の分割はどのように機能しますか?

テンソル並列処理は、単一レイヤー内の計算を分割します。たとえば、大きな重み行列を分割して、各 GPU が出力の一部を計算します。

単純なパイプライン並列処理における「バブル」とは何ですか?

パイプライン ステップの初期では、下流ステージにはまだ入力がないためアイドル状態になり、GPU 時間を無駄にします。このアイドルギャップはバブルと呼ばれます。

パイプラインの並列化によってバブルはどのように軽減されるのでしょうか?

バッチをマイクロバッチに分割すると、複数のマイクロバッチが異なるステージを同時に占有することができ、すべての GPU をビジー状態に保ち、アイドル時間を短縮できます。

テンソル並列処理が通常単一ノード内に保持されるのはなぜですか?

テンソル並列処理は部分的な行列の結果を再結合するために頻繁に通信するため、NVLink を介したノード内の相互接続帯域幅が最も高い場所に配置されます。