テクニカルガイド

データの並列処理

データ並列処理では、1 つのモデルを多くの GPU にレプリケートし、各 GPU がデータ バッチの異なるスライスを処理することで、より高速にトレーニングします。

2分の読書最終更新日

概要

It is the workhorse technique that lets teams scale to dozens or thousands of accelerators.

ディープダイブ

データ並列処理では、すべての GPU がモデルの重みの同一のコピーを保持しますが、トレーニング サンプルの個別のミニバッチを処理します。各デバイスは順方向パスと逆方向パスを個別に計算し、独自の勾配セットを生成します。重みが更新される前に、all-reduce 通信操作を使用してすべての GPU で勾配が平均化されるため、すべてのレプリカは同期を保ち、1 つの大規模な結合バッチでトレーニングしたかのように動作します。これにより、スループットが効果的に倍増します。8 つの GPU は、ステップごとに約 8 倍のデータを処理できます。問題は、各 GPU がモデル全体、その勾配、およびオプティマイザーの状態をメモリに適合させる必要があるため、モデルが 1 つのデバイスに対して大きすぎる場合、単純なデータ並列処理は役に立たないことです。

技術的な洞察

重要な操作は all-reduce で、デバイス間の勾配を合計し、結果を再分配します。 NCCL や Horovod などのライブラリで使用される Ring all-reduce は、論理リングの周囲に勾配チャンクを渡すため、総通信量は GPU 数に依存しません。 PyTorch の DistributedDataParallel は、この通信をバックワード パスとオーバーラップさせて、後の層がまだ計算している間に初期の層の勾配同期を開始し、ネットワーク レイテンシの多くを隠します。

戦略的影響

費用と予算

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

より明確な判決

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

品質管理

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

データ並列処理の未来

純粋なデータ並列処理は、シャーディングおよびモデル並列処理と組み合わせられ、兆パラメータ モデル向けのハイブリッド「nD 並列処理」戦略に組み込まれることが増えています。よりスマートな勾配圧縮、非同期およびオーバーラップ通信、およびノー​​ド内では高速な NVLink とノード間では低速の InfiniBand を利用するトポロジを認識した all-reduce が期待されます。クラスターが成長するにつれて、通信と計算の比率を減らすことが、数千の GPU をビジー状態に保つための主要なエンジニアリング課題のままです。

現実世界の実装

PyTorch DistributedDataParallel を使用して 1 台のサーバー内の 8 GPU で ResNet 画像分類器をトレーニングし、各 GPU が 256 枚の画像バッチのうち 32 枚を処理します。

Horovod を使用して数百の GPU にわたって BERT 事前トレーニングをスケーリングし、ring all-reduce を使用して各ステップの勾配を同期します。

各ノードが異なるユーザー インタラクション シャードを処理するマルチノード クラスターでレコメンデーション モデルを微調整します。

TensorFlow の MirroredStrategy を使用して、最小限のコード変更で単一のワークステーション上の複数の GPU にビジョン モデルのトレーニングを分散します。

リスクとガードレール

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 Data 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

次のガイド

AI データ ガバナンス

よくある質問

What is Data Parallelism?

データ並列処理では、1 つのモデルを多くの GPU にレプリケートし、各 GPU がデータ バッチの異なるスライスを処理することで、より高速にトレーニングします。これは、チームが数十、数千のアクセラレータに拡張できるようにする主力テクニックです。

標準的なデータ並列処理では、各 GPU は何を保持しますか?

各 GPU はモデルの完全なレプリカを保持し、データ バッチの個別の部分を処理します。これにより、モデルの並列処理ではなく「データ」の並列処理が行われます。

各ステップでモデルのレプリカの同期を保つ通信操作はどれですか?

各逆方向パスの後、勾配は all-reduce (通常は合計されて平均化) を介してデバイス間で結合されるため、すべてのレプリカが同じ更新を適用します。

プレーンデータ並列処理の主な制限は何ですか?

すべての GPU はすべての完全なコピーを保持しているため、モデルが大きすぎて 1 つのデバイスに収まらない場合には、データの並列処理は役に立ちません。

リング オール リデュースが GPU 数が多い場合に魅力的なのはなぜですか?

Ring all-reduce は、論理リングの周囲に勾配チャンクを渡すため、参加する GPU の数に関係なく、各 GPU が送信する合計帯域幅は一定に保たれます。

PyTorch DistributedDataParallel はどのように通信遅延を隠しますか?

DDP は、後の層がまだ計算されている間に、前の層の勾配の同期を開始し、ネットワーク通信と計算をオーバーラップさせます。