3行でいうと

  • GPUの間の通信は、1台の中(NVLinkなど)と、台と台の間(InfiniBandなど)で、道の太さが大きく違います。Megatron-LMの論文は、頻繁に通信するテンソル並列は1台の中に収め、台をまたぐ分割はパイプライン並列に任せる、という指針を示しています。
  • 推論でも同じ考え方です。vLLMの文書は、台をまたぐテンソル並列には高速なネットワーク(できればInfiniBand)が必要で、NVLinkのないGPUではパイプライン並列のほうがよい場合がある、と書いています。
  • NVIDIAのNVLinkのページには、世代別のGPUあたりの帯域(900、1,800、3,000 GB/s)が載っています。ただし数値は暫定と明記され、ベンダー自身の資料です。性能の数字は、実際の負荷での測定と合わせて見る必要があります。

この記事は、実際に使って確かめた記録ではありません。この記事は公式の文書と論文を読んでまとめたもので、実際に使って確かめた記録ではありません。数字は2026年10月16日に確認しました。製品や仕様は変わることがあります。

先に結論

前提:なぜGPUの間で通信するのか

大きなモデルは、重みの量だけでGPUのメモリを超えることがあります。そこで、1つのモデルを複数のGPUに分けます。分け方には、おもに次の種類があります(用語は公式文書の呼び方です)。

GPUのメモリの考え方は、別の記事で扱っています。この記事では、分けたあとの「GPU間の通信」に絞ります。

通信の基本:集団通信という「まとめてやる」型

NVIDIAの集団通信ライブラリNCCLの文書によると、NCCLはGPU間の通信のためのライブラリで、機械の構成(トポロジー)を認識します。つなぎ方は、NVLink、PCIe、InfiniBand(Verbs経由)、IPソケットに対応する、とあります。

通信の型は、いくつか決まっています。文書の定義を言い換えると、次のとおりです。

型 何が起きるか
AllReduce 全員の値を要素ごとに合算し、その結果を全員が持つ
AllGather 全員の断片を集めて、全員が全体を持つ(ランク順に並ぶ)
ReduceScatter 合算して等分し、各自が自分の担当の1ブロックだけ持つ
Broadcast 1人の持つ値を全員に配る
Reduce 合算の結果を、1人(ルート)だけが持つ

AllReduceは、分散学習やテンソル並列で何度も出てくる型です。この型が速いか遅いかは、GPUをつなぐ道の太さで決まります。

道の種類:ノード内とノード間

ここでは、1台のサーバー(ノード)の中と、ノードをつなぐ部分に分けます。

1台の中:NVLink

NVIDIAのNVLinkのページによると、NVLinkはGPUどうしをつなぐ道で、GPUあたりの帯域は世代で増えています。数値はページが暫定で変わりうると書いたものです。

世代 アーキテクチャ GPUあたりの帯域
第4世代 Hopper 900 GB/s
第5世代 Blackwell 1,800 GB/s
第6世代 Vera Rubin 3,000 GB/s(3 TB/s)

NVLink Switchを使うと、ラック全体のGPUが互いに全対全で通信できる、とあります。Vera Rubin NVL72は72個のGPUを全対全でつなぎます。ページは、第6世代のNVLinkの帯域がPCIe Gen6の12倍だと述べていますが、PCIeの絶対値は載っていません。

台と台の間:InfiniBand

NVIDIAのInfiniBandのページは、NVIDIA Quantum InfiniBandを、ネットワークの中でも計算(in-network computing)できるプラットフォームと説明しています。SHARPという仕組みで集団通信の演算をスイッチ側に任せ、ネットワークを流れるデータ量を減らす、とあります。適応型ルーティングと輻輳制御も品質の機能として挙がっています。速度については、本文に数字がなく、ページの短い説明(メタ情報)に「最大200Gb/s」とあるのみで、世代別(NDRなど)の数字は、読んだページには載っていませんでした。

具体的な構成の例は、Megatron-LMの論文にあります。論文の実験機(Selene)では、1ノードにA100というGPUが8枚あり、NVLinkとNVSwitchで結ばれています。ノード間には、アプリケーション用に200 Gbpsのカード8枚(と、保存用に2枚)が付いています。

単位に注意が要ります。NVLinkの「GB/s」は1秒あたりのバイト数、論文の「Gbps」は1秒あたりのビット数です。8ビットが1バイトなので、200 Gbpsは1枚で25 GB/sになります(単純な換算で、僕らの計算です)。世代の違う機器の数字を直接は比べられませんが、「1台の中のほうが太い」という方向は、論文も述べています。

学習で効く:Megatron-LMの論文が示す分け方

論文(2021年)は、テンソル、パイプライン、データの3つの並列化を組み合わせて、3,072枚のGPUで1兆パラメータのモデルを学習した報告です。GPUあたり理論ピークの52%、全体で502 petaFLOP/sという数字が書かれています。

通信量の点では、次の指摘があります。

この指摘から、論文は3つの指針を述べています。

  1. テンソル並列は、1台のGPU数までにとどめ、それより先はパイプライン並列で増やす。
  2. モデルがGPUのメモリに収まるよう、テンソル並列とパイプライン並列の合計を決め、さらに増やすときはデータ並列を使う。
  3. マイクロバッチの大きさの最適値は、条件で変わる(ある例では4で、選び方次第で最大15%の差)。

さらに、ノード間の通信を減らす工夫として、テンソルの断片を別々のInfiniBandカードで送り、受け取る側でNVLinkを使って組み立てる方法が紹介されています。

推論で効く:vLLMの文書の読み方

推論での分け方について、vLLMの「Parallelism and Scaling」の文書は、選び方を次のように書いています。

台をまたぐ設定では、NCCLが実際にどの通信路を選んだかを確かめるよう、勧められています。NCCL_DEBUG=TRACEでログを出し、InfiniBand上のGPUDirect RDMA(ネットワークカードがGPUのメモリに直接アクセスする方式)の経路が選ばれていれば効率的で、生のソケットに落ちていれば、台をまたぐテンソル並列には非効率だ、とあります。GPUDirect RDMAには、IPC_LOCKの権限と、十分な大きさの共有メモリ(/dev/shm)が要ります。

エキスパートを持つ種類のモデルでは、別の事情があります。vLLMのデータ並列の文書によると、attentionの層はデータ並列、エキスパートの層はエキスパート並列かテンソル並列にします。エキスパートの層は、毎回の順方向で全ランクが同期し、依頼の少ないランクも空の計算を回し続けます。帯域や遅延の具体的な仕様は、この文書には書かれていません。

見立てです。テンソル並列の通信は、層ごとに起きる構造なので、推論では生成する1トークンごとに通信の待ち時間を払うことになると思います。このため、推論の応答の速さは、計算の速さだけでなく、GPU間の通信の遅延にも左右されると考えます。ただし、これはvLLMの文書に書かれていることではなく、論文の構造からの僕らの推測です。

NVIDIAの技術ブログは、推論の性能を「電力あたりの処理量」と遅延の関係の曲線で示し、スイッチなしの4GPUの網より、8GPUのNVLink Switchのほうが全GPU対で同じ帯域になり、有利だと述べています。72GPUの領域を最も良い構成としていますが、これはベンダー自身の主張で、倍率などの数字は示されていません。

NVLink・スイッチ・集団通信の数字(公式ページの記載)

NVLinkのページ(2026年10月16日に読んだ時点。ページは暫定値と明記)

世代 GPUあたりの帯域 GPUあたりの最大リンク数 スイッチの合計帯域
第4世代(Hopper) 900 GB/s 18 7.2 TB/s(8GPUの領域)
第5世代(Blackwell) 1,800 GB/s 18 130 TB/s(NVL72)
第6世代(Vera Rubin) 3,000 GB/s 36 216 TB/s(NVL72)

NVL72は、8GPUの1台の9倍のGPU数をつなぎます。ページの本文には「3 TB/sの双方向(bidirectional)」という書き方が1か所あります。ただし、仕様表の各世代の値やスイッチの帯域には方向の注記がなく、表の数字が同じ意味かは確認できていません。

NVIDIAの技術ブログ

NVLinkの初登場は2016年、NVLink Switchの8GPU全対全は300 GB/s(2018年)、第5世代の72GPU全対全は1,800 GB/s、72GPUの領域の合計は130 TB/sで、初代の800倍とされています。

Megatron-LMの論文(実測値)

3,072GPUの1兆パラメータの学習で、パイプラインの点対点の通信は実効の二分帯域892 GB/s、データ並列のall-reduceは12.9 TB/sだったと報告されています。A100の16ビットのピークは312 teraFLOP/sです。ノードを結ぶ網は、3層のファットツリーで、スイッチは850台でした。

1層あたりの通信量

論文は、テンソル並列で1デバイスが1マイクロバッチ・1層あたりに動かす値の量を、約 8·b·s·h·(t−1)/t と式で示しています(bはマイクロバッチの大きさ、sは系列の長さ、hは隠れ層の幅、tはテンソル並列の数)。

選び方・判断の基準

見立てです。ここまでの資料から、次のように考えます。

気をつけること

出典

更新履歴