モデル並列学習とは
モデル並列学習(Model Parallelism)とは、1つの巨大なモデルを複数のGPUに分割して配置し、協調して学習を行う分散学習の手法です。モデルのパラメータ数が単一GPUのメモリに収まらない場合に必須となる技術で、数百億〜数兆パラメータの大規模言語モデルの学習に不可欠です。
| ひとことで言うと | 1つの巨大なモデルを分割して、複数のGPUに載せて学習する方式。 |
|---|---|
| どこで使う | 1枚のGPUに収まらない大規模モデルの学習。 |
| 注意点 | GPU間の通信が頻発し効率が落ちる。高速な相互接続が前提。 |
テンソル並列(Tensor Parallelism)
テンソル並列は、モデルの各層の重み行列を分割して複数のGPUに配置する手法です。例えば、行列積演算を行の方向や列の方向に分割し、各GPUが部分的な計算を担当します。Megatron-LMが提唱したこの手法は、特にTransformerのAttention層やMLPブロックの並列化に有効です。
1モデルが大きすぎる1枚に載らない
▶
2層で分けて配置前半・後半を別GPUへ
▶
3順に受け渡す計算結果を転送
▶
4学習が可能に通信速度が鍵になる
データ並列との組み合わせ
実際の大規模学習では、モデル並列とデータ並列を組み合わせて使用します。例えば、8GPU のノード内でテンソル並列を適用し、ノード間ではデータ並列を適用するといった構成です。これにより、GPUメモリの制約を克服しつつ、学習速度も向上させられます。
通信コストへの対処
モデル並列ではフォワードパス・バックワードパスの各ステップでGPU間通信が発生するため、通信オーバーヘッドが大きくなります。NVLinkやNVSwitchなどの高速GPU間通信を活用し、通信量を最小化する分割戦略を設計することが重要です。