モデル並列(Model Parallelism)とは、ニューラルネットワークのモデル自体を複数のGPUに分割して配置する並列化手法です。1台のGPUのメモリに収まりきらない大規模モデルの学習を可能にするために使用され、大規模言語モデルの開発において不可欠な技術です。
モデル並列の必要性
GPT-3(1750億パラメータ)やGPT-4(推定数兆パラメータ)のような超大規模モデルは、1台のGPUのVRAM(80〜192GB)に収まりません。モデル並列により、モデルのレイヤーやテンソルを複数のGPUに分割することで、単一GPUのメモリ制約を超えた巨大モデルの学習が可能になります。
モデル並列の種類
モデル並列は大きく2つに分けられます。パイプライン並列はモデルのレイヤーを層方向に分割し、テンソル並列は個々のレイヤー内のテンソル(行列)を分割します。通常、これらを組み合わせて使用し、さらにデータ並列と組み合わせた3D並列化が大規模学習の標準的なアプローチです。
課題とトレードオフ
モデル並列はデータ並列と比較して通信量が多く、実装が複雑です。GPU間で中間活性化値を転送する必要があるため、NVLinkのような高帯域インターコネクトが重要です。また、パイプラインの「バブル」(一部GPUが待機している時間)を最小化するための工夫(マイクロバッチングなど)が学習効率に大きく影響します。