モデル並列学習

Model Parallelism

モデル並列学習とは

モデル並列学習(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間通信を活用し、通信量を最小化する分割戦略を設計することが重要です。