GPUクラスタの相互接続(NVLink・InfiniBand)
GPUを何百枚束ねても性能が伸びない原因は演算ではなく通信にあることが多く、その律速構造をNVLinkとInfiniBandの階層から理解できます。
- 1.ノード内はNVLink/NVSwitchで全GPU間を数百GB/s級のメッシュ状に直結し、ノード間はInfiniBand/RoCEでスイッチファブリックを組む二階層構造。
- 2.GPUDirect RDMAはCPU・OSカーネルをバイパスしてGPUメモリ間を直接転送し、レイテンシと余計なメモリコピーを削減する。
- 3.集団通信(AllReduce等)の所要時間はメッセージサイズと段数で決まり、ノード内外の帯域差がスケーリング効率の頭打ちを引き起こす。
なぜ相互接続がボトルネックになるのか
大規模科学技術計算やマルチGPU学習では、各GPUが担当する部分問題(領域分割されたPDE格子、あるいは勾配テンソルの一部)を計算し終えるたびに、他GPUの結果と同期・合算する必要があります。この同期に使うのが集団通信(collective communication)で、代表例がAllReduceです。演算(FLOPs)はGPU内で完結しますが、同期はGPUの外へ出て初めて成立するため、**相互接続の帯域とレイテンシがそのままスケーリング効率の上限を決めます。**GPUクラスタの設計は「演算をどう速くするか」ではなく「通信をどう遅らせないか」が主戦場になります。
GPU数を増やすと1GPUあたりの計算量は減る一方、通信すべきデータ量(勾配やハロー領域)はほぼ変わらないため、GPU数が増えるほど計算時間に対する通信時間の比率が相対的に大きくなります。これが強スケーリング(strong scaling)で効率が頭打ちになる根本原因です。
ノード内: NVLinkとNVSwitchによるメッシュ結合
1ノードに搭載された複数GPUは、PCIeだけで接続すると帯域が数十GB/s程度に制限され、ホストブリッジを経由するため他GPUへのアクセスも間接的になります。これに対してNVLinkはGPU同士を専用の高速シリアルリンクで直結し、1リンクあたり数十GB/s、複数リンクを束ねると片方向で数百GB/sの帯域を実現します。
GPUが2〜4枚程度ならGPU間を直接ペアで結ぶ配線でも足りますが、GPU数が増えると全GPU間を対称に結ぶには配線数が組み合わせ的に増えてしまいます。そこで導入されたのがNVSwitchで、これはノード内の全GPUをクロスバースイッチ経由でフルメッシュ相当に接続するチップです。
ノード内トポロジの違い(GPU数 = N のとき)
GPU間を直接配線 : 配線数はNの2乗のオーダーで増加、GPUごとの直接リンク数が有限
NVSwitch経由のスイッチ結合 : 各GPUはスイッチへの1本のリンクのみでよく
スイッチ内部で全対全のフルバンド幅を仲介
NVSwitchにより、ノード内のどのGPUペアも「ホップなしに近い」実効帯域で通信できるため、ノード内でのAllReduceやAll-to-Allはほぼ線形にスケールします。ここがノード内とノード間の性能特性を分ける決定的な違いです。
ノード間: InfiniBand/RoCEによるファブリック
ノードをまたぐ通信には、InfiniBand、あるいはEthernet上でRDMAを実現するRoCE(RDMA over Converged Ethernet)が使われます。InfiniBandはスイッチファブリックで各ノードを結び、ノード内のNVLinkに比べると帯域は一段低く(1リンクあたり数十GB/s級)、かつスイッチをまたぐホップ数に応じてレイテンシが増えます。
| 階層 | 代表技術 | 帯域の目安 | 特徴 |
|---|---|---|---|
| ノード内GPU間 | NVLink + NVSwitch | 数百GB/s(集約) | スイッチ経由でほぼ全対全均一 |
| ノード間 | InfiniBand / RoCE | 数十GB/s(リンクあたり) | ファブリックのトポロジとホップ数に依存 |
| 旧来のノード内接続 | PCIe経由 | 数十GB/s未満 | ホストブリッジ経由で間接的 |
InfiniBandファブリックの典型構成はFat-Tree(多段のスイッチを木構造に配置し、上位段ほどリンクを増やして帯域を確保するトポロジ)で、これによりどのノードペア間でも比較的均一な帯域を確保します。ただしノード内とノード間の帯域差は依然として大きく、この段差こそがクラスタ全体のスケーリングを律速する構造そのものです。
GPUDirect RDMA: CPUバイパスの仕組み
素朴な実装では、GPU AのメモリからGPU Bへデータを送る際に、GPU側メモリからホスト側メモリへコピーし、CPUがネットワークカード(NIC)にディスクリプタを渡し、受信側でも同様の逆コピーを行います。これはGPUメモリ・ホストメモリ間の複数回のコピーとCPU介入によるレイテンシを生みます。
GPUDirect RDMAは、NICがGPUメモリのアドレス空間へ直接DMA(Direct Memory Access)できるようにする仕組みです。これによりCPUのメモリコピーとカーネル(OS)を経由する処理をバイパスし、GPUメモリからネットワーク経由で相手ノードのGPUメモリへ直接転送できます。
転送経路の比較
GPUDirectなし:
GPUメモリ → (コピー) → ホストメモリ → NIC → ネットワーク
→ 相手ホストメモリ → (コピー) → 相手GPUメモリ
GPUDirect RDMAあり:
GPUメモリ → NIC → ネットワーク → 相手NIC → 相手GPUメモリ
(ホスト側の余分なコピーとCPU介入を除去)
GPUDirect RDMAが効くのは帯域そのものよりも、余分なメモリコピーとCPU起動のオーバーヘッドを消せる点です。特に小さいメッセージを高頻度でやり取りする通信パターン(勾配同期の細切れ送信など)では、コピー回数の削減がレイテンシに直結し、実効スループットを底上げします。
帯域がスケーリングを律速する仕組み
集団通信のアルゴリズム、例えばリング(ring)AllReduceでは、GPU数をNとすると各GPUが送受信する総データ量は2(N-1)/N倍のメッセージサイズで、Nが大きくなるにつれてほぼメッセージサイズの2倍に漸近します(帯域面の効率はGPU数が増えても大きく劣化しない)。一方でステップ数自体は2(N-1)でNにほぼ比例して増えるため、各ステップに固定レイテンシがかかる以上、GPU数が増えるほどレイテンシの総和は積み上がります。各ステップの所要時間は「転送データ量 割る 帯域」と「固定レイテンシ」の和で決まります。
1ステップあたりの通信時間(概念式)
time_per_step ≈ latency + (message_size / bandwidth)
ノード内(NVLink): bandwidthが大きく、time_per_stepは message_size に律速されにくい
ノード間(InfiniBand/RoCE): bandwidthが相対的に小さく、
かつlatencyもホップ数増加で伸びやすい
このため、ノード内で閉じる通信(GPU数が少ない、あるいは同一ノード内のモデル並列)は高い帯域の恩恵をフルに受けられますが、ノード数が増えてノード間通信の比率が上がるほど、実効スループットはInfiniBand/RoCEの帯域とレイテンシで頭打ちになります。これが「GPUを2倍にしても性能が2倍にならない」現象の主因の一つであり、実務では通信パターンを可能な限りノード内(NVLink)に閉じ込め、ノード間を跨ぐ通信量を最小化するようトポロジを意識した並列化戦略(通信の階層構造に合わせたグループ分け)が取られます。
「GPUを増やしても線形にスケールしない理由」を問われたら、答えの軸は「計算量は分割されるが通信量はほぼ変わらないため、GPU数が増えるほど通信時間の相対比率が増す」こと。さらに「ノード内(NVLink/NVSwitch)とノード間(InfiniBand/RoCE)の帯域差が大きく、ノード間通信が支配的になった時点で頭打ちになる」という二階層構造まで説明できれば十分です。
まとめ
- GPUクラスタの性能は演算だけでなく相互接続の帯域・レイテンシに強く律速され、これは集団通信(AllReduce等)がGPUの外へ出て同期するために生じる。
- ノード内はNVLink/NVSwitchで高帯域かつほぼ均一な全対全接続を実現し、ノード間はInfiniBand/RoCEのスイッチファブリック(Fat-Treeなど)で結ぶ二階層構造になっている。
- GPUDirect RDMAはCPU・OSカーネルを経由する余分なメモリコピーを排除し、GPUメモリ間を直接DMA転送することでレイテンシと通信オーバーヘッドを削減する。
- ノード内外の帯域差が大きいため、GPU数(特にノード数)が増えるほどノード間通信の比率が支配的になり、これがスケーリング効率頭打ちの直接原因になる。
HPC・科学技術計算 Article
GPUクラスタの相互接続(NVLink・InfiniBand)を実務で読む
TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。
解決すること
HPC
比較で見る軸
難易度: advanced / カテゴリ: HPC・科学技術計算 / タグ数: 6
導入後に効く点
GPUDirect RDMAはCPU・OSカーネルをバイパスしてGPUメモリ間を直接転送し、レイテンシと余計なメモリコピーを削減する。
先に潰すリスク
用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。
- 難易度
- advanced
- カテゴリ
- HPC・科学技術計算
- タグ数
- 6
判断チェックリスト
- 自社の用途が「HPC / GPU」に近いか確認する。
- 強みである「ノード内はNVLink/NVSwitchで全GPU間を数百GB/s級のメッシュ状に直結し、ノード間はInfiniBand/RoCEでスイッチファブリックを組む二階層構造。」が本当に評価軸になるか確認する。
- 注意点の「用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。」を運用で吸収できるか確認する。
- 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
- 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
- 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。