2026年11月15日(日) 記事を探す決算カレンダー広告掲載このサイトについて
トップ › 仕組み
仕組み

モデル並列とは 重みの行列を割ってGPUで分担、Megatronは83億の重みを512基で

モデル並列は、1つのAIのモデルを複数のGPUに切り分けて置き、協力して計算する方法です。エヌビディアの研究者は2019年、83億個の重みのモデルを512基のGPUで学習し、1基の場合に比べ76%の効率を保ったと報告しました。

ポイント
  • モデル並列は、モデルそのものを分けて複数のGPUに置く方法です。データを分けるデータ並列と組み合わせて使います。
  • 代表は、1つの層の重みの行列を縦や横に割って分担する「テンソル並列」です。
  • テンソル並列は通信が多く、GPU同士を速い専用の道(NVLink)でつないだ範囲の中で使うのが基本です。
  • メタのLlama 3 405Bは、テンソル並列を1台のサーバーの8基に収めました。

モデルが大きくなると、重みが1基のGPUのメモリに入りません。4,050億個の重みは、16ビットで持つだけで約810GBになり、H100の80GBの10倍を超えます(計算)。そこで、モデルを切り分けて複数のGPUに置きます。これがモデル並列です。

切り分け方には2通りあります。1つの層の中の計算を割る方法(テンソル並列)と、層の並びを前後で区切る方法(パイプライン並列)です。ここでは主に前者を扱います。

行列を割って、答えを寄せる

言語モデルの計算の中心は、大きな行列の掛け算です。テンソル並列では、重みの行列を列や行の方向に割り、各GPUに一部ずつ持たせます。各GPUは自分の分の掛け算をし、その結果を寄せ集めて次の計算に進みます。

この「寄せ集め」が、層ごとに何度も起こります。GPU同士の通信が遅いと、計算より待ち時間のほうが長くなります。テンソル並列は、通信の速さに最も敏感な分け方です。

Megatron-LMの数字

エヌビディアの研究者が2019年に公表した「Megatron-LM」は、テンソル並列を言語モデルに広く使う出発点になりました。論文の要旨によると、数字は次の通りです。

Megatron-LMの論文の数字(2019年)
項目数字
モデルの重み最大83億個
使ったGPU512基
全体で出した計算の速さ毎秒15.1ペタFLOPS
1基の場合と比べた効率76%
1基の場合の計算の速さ毎秒39テラFLOPS(理論値の30%)

手法は、PyTorchの中に少しの通信の命令を足すだけで済むと論文は説明しています。新しいコンパイラや言語は要りませんでした。

速い道の範囲で使う

テンソル並列は、NVLinkでつながったGPUの範囲に収めるのが基本です。メタのLlama 3 405Bの学習では、テンソル並列の数を8とし、1台のサーバーの8基に収めました。サーバーをまたぐ通信が要る分け方は、外側に置いています。

この範囲を広げたのが、ラック単位の製品です。エヌビディアのGB200 NVL72は72基のGPUをNVLinkでつなぎ、1基あたり双方向で毎秒1.8テラバイト、合計で毎秒130テラバイトの帯域を持ちます。8基を超えてテンソル並列を組む余地ができました。

専門家混合型(MoE)のモデルでは、別の切り分けも使われます。多数の「専門家」の部品を、GPUごとに分けて置く「専門家並列」です。6,710億個の重みのうち1語ごとに370億個を動かすDeepSeek-V3のようなモデルで、専門家を多数のGPUに散らして置きます。

関連する用語

  • テンソル並列:層の中の重みの行列を割って分担する方法。
  • パイプライン並列:層の並びを区切ってGPUに割り当てる方法。
  • 専門家並列:MoEのモデルの専門家をGPUごとに分けて置く方法。
  • NVLink:エヌビディアのGPU同士をつなぐ専用の道。

Megatron-LMの名前は、エヌビディアが公開している大規模学習のソフト群に今も使われています。

この記事は公開資料をもとに作成しています。売買をすすめるものではありません。誤りを見つけたら訂正します(編集方針)。

関連する記事