AI・機械学習
NVLinkはいつ価値があるのか?
When Is NVLink Worth It? (platform-fools.com)
要約
この記事は、NvidiaのNVLink技術がAIワークロードにおいてどの程度有効かを、RTX 3090 GPUを用いたテストを通じて検証しています。NVLinkは、特にPCIe帯域幅が制限されるコンシューマー向けプラットフォームでのFSDPトレーニングやテンソル並列プロンプト処理において、顕著なパフォーマンス向上をもたらすことが示されました。しかし、Linux環境でサードパーティのドライバパッチを適用できる場合や、サーバーグレードのハードウェアを使用している場合は、その価値が限定的になる可能性も指摘されています。
全文翻訳
Nvidiaはもはやコンシューマー向けGPUでNVLinkをサポートしていません。最後にNVLinkが利用可能だったのはRTX 3090でした。現在(2026年4月)、NVLinkブリッジはかなり高価で、正確なサイズや小売価格で入手できるかどうかによって、200ドルから400ドルします。私は2枚の3090を所有しているので、NVLinkがAIワークロードに実際にどれだけのメリットをもたらすかをテストしたかったのです。
テスト
AI関連ワークロードにNVLinkを追加した場合の効果を測定するために、いくつかのテストを実行しました。レイヤ分割とテンソル並列処理によるモデル推論です。Llama 3.3 70BとGemma 4 31Bでllama-benchを使用しました。レイヤ分割はGPU間の通信をほとんど行いませんが、テンソル並列推論は各レイヤで同期する必要があります。DDPを使用したTinyLlama 1.1BとFSDPを使用したQwen2.5 3Bによるモデルトレーニングです。DDPは各ステップで勾配を計算するために一度だけ同期しますが、FSDPは継続的なデータ転送を必要とします。これにより、GPU間帯域幅の影響を異なる程度で受けるテストの適切な組み合わせができたと感じています。
ハードウェア
CPU: AMD Epyc 7532 (32コア、128 PCIeレーン)
マザーボード: Supermicro H12SSL-i、5つのPCIe 4.0 x16スロット
RAM: 8チャンネル、32GB DDR4-3200、合計256GB
GPU: 2x EVGA RTX 3090、スロット3と6に直接挿入、両方ともフルx16帯域幅で動作
OS: Ubuntu 24.04、Nvidiaドライバ 595
初期結果
すべてのレイヤ分割テストでのパフォーマンスは影響を受けませんでした。テンソル並列処理によるモデル推論では、NVLinkはプロンプト処理を約30%向上させましたが、トークン生成速度は全く同じでした。テンソル並列実行でトークン生成速度が同じだったのは予期せぬことでした。アクティベーションを頻繁に同期する必要があるため、大きな違いがあると思っていました。トークン生成速度は通常ヘッドラインとなる数値ですが、コーディングエージェントのような私の多くの使用パターンでは長いコンテキストウィンドウを使用するため、プロンプト処理速度も依然として非常に重要です。FSDPトレーニングの向上は非常に大きく、ほぼ3倍の改善が見られました。DDPトレーニングは全く影響を受けませんでした。しかし、このデータはいくぶん誤解を招く可能性があると考えています。なぜなら、NVLinkなしのテストでは、当初私が考えていたようにGPUデータ転送がPCIe上で行われているわけではなかったからです。その後のすべてのテスト構成において、レイヤ分割による推論、テンソル並列トークン生成、およびDDPトレーニングは(3%以内のノイズで)全く影響を受けませんでした。これらのテストに関するそれ以上のチャートやデータは省略し、テンソル並列プロンプト処理とFSDPトレーニングのみを表示します。すべてのデータはこちらで入手可能です。
テストでNVLinkを無効にする際の落とし穴
最初のテストでは、NVLinkなしのテストにNCCL_P2P_DISABLE=1を使用しました。GPUが期待するチャネルを使用していることを確認するために、NCCL_DEBUG=INFOも設定していました。テスト開始時に次のような行に気づきました。
gpu:11419:11419 [0] NCCL INFO Channel 03 : 0[0] -> 1[1] via SHM/direct/direct
これは、GPUがPCIe経由のP2P(Peer-to-Peer)を使用する代わりに、SHM(Shared Host Memory)にフォールバックしていることを意味します。SHMはメインメモリへの完全な往復であり、より高いパフォーマンスのペナルティを伴います。NVLinkがインストールされている状態でNVLinkを具体的に無効にし、GPUにP2Pを使用させることは実際には不可能です。NCCL_P2P_DISABLE=1はPCIe上のP2Pも無効にし、転送はSHM経由で行われます。NVLinkブリッジを物理的に取り外してテストを再実行しました。
SHM対P2P、Nvidiaの制限
NVLinkブリッジを取り外した後も、NCCLはSHMを使用しているとログに記録していました。Nvidiaは、おそらく製品セグメンテーションのために、コンシューマー向けGPUでP2Pを完全に無効にしています。これはNvidiaによるドライバレベルでの人工的な制限であり、RTX 3090やその他のコンシューマー向けGPUはP2Pを実行する能力があります。巧妙な人々は、ドライバをパッチすることでこの制限を回避する方法を見つけました。そのソリューションは比較的簡単にインストールできます。それがopen-gpu-kernel-modulesです。パッチをインストールして再度テストしました。今回はP2Pを使用していることを示すNCCLログメッセージを確認しました。
gpu:11090:11152 [1] NCCL INFO Channel 00/0 : 1[1] -> 0[0] via P2P/direct pointer
実際のP2P通信を使用した結果
P2Pを有効にすると、SHMとNVLinkの間の差がほぼ完全に埋められます。プロンプト処理速度は基本的に同等であり、FSDPトレーニングはNVLinkのパフォーマンスの90%以上に達します。では、なぜ誰かがNVLinkブリッジに300ドルも費やすのでしょうか?
コンシューマー向けプラットフォーム
NVLinkは、私の特定のセットアップではあまりメリットがありません。私はすでにサーバーCPUとマザーボード(Epyc 7532 + Supermicro H12SSL-i)を持っており、複数のフルPCIe Gen4 x16スロットが付属しています。複数のGPUをインストールでき、それぞれがフルx16帯域幅を得られます。しかし、平均的なコンシューマーは自宅でサーバープラットフォームを使用していない可能性が高いです。コンシューマー向けCPUは、多くのPCIeレーンをサポートしていません。その結果、これらのCPUのマザーボードにはx16スロットが多くありません。一部のマザーボードは2つのx16スロットを宣伝していますが、実際には2つのx16サイズの Слотがあるという意味であり、そのうちの1つだけがフルx16帯域幅を持っています。さらに、2番目のx16サイズの Слотにカードをインストールすると、メインのx16 Слотの帯域幅が分割され、両方がx8/x8で動作するという注意点があります。私が発見できた最も高価なコンシューマー向けマザーボード2枚は、仕様によると、実際にはフルx16帯域幅のスロットが1つしかないと記載されており、2番目のスロットを使用するとx8/x8構成になります。
MSI MEG X870E GODLIKE X EDITION
Gigabyte Z890 AORUS XTREME AI TOP
$1300
$1000
($1500-1800小売価格)
これらの製品は、名前やマーケティングが(EXTREME AIとGODLIKE EDITION)おかしいですが、残念ながら、コンシューマー向けCPUの制限により、AIワークフローをアップグレードする主な方法である複数のGPUを最大限に活用できません。それらは、はるかに安価なマザーボードと同じPCIe機能を持っています。例えば、Asus ProArt B650 Creatorは約230ドルで販売されており、2つのPCIe x16スロットでx16およびx8/x8モードをサポートしています。これらのすべてのケースで、NVLinkブリッジはPCIeスロットの制限を完全に回避し、GPUが最大帯域幅で通信できるようにします。BIOSでPCIeスロットをx4、次にx8にスロットルして、より一般的なコンシューマーセットアップで何が起こるかをシミュレートしました。
PCIe x8およびx4でのパフォーマンス
テンソル並列推論では、P2Pはx8およびx4でそれぞれ約5%および約15%の低下が見られます。NVLinkベースの実行はすべての構成で同じようにパフォーマンスを発揮し、SHMテストは他の2つよりもはるかに遅いです。PCIeレーン数の減少は、FSDPトレーニングにさらに劇的な影響を与えます。P2Pドライバパッチでさえ、PCIe帯域幅によって制限されると有効性を失い始めます。P2Pドライバを使用している場合、x8/x8で実行していると、NVLinkは約50%高速になり、GPUがx4帯域幅で動作している場合はトレーニング速度が2倍になります。
SHMのボトルネック
興味深い観察として、SHMの結果はP2Pの結果ほど急激に低下しません。x8およびx16の結果はすべてのテストで同一であり、x4ではプロンプト処理とトレーニングの両方で約5%のペナルティがあるだけでした。これは、SHMのボトルネックがPCIeレーンではなく、メインメモリへのパス上の他の何かであることを示唆しています。
GPU ↔︎ GPU帯域幅の直接測定
テスト中に各構成を確認するために、p2pBandwidthLatencyTestを実行しました。私たちが観察した結果の理由は、ここで明確に示されています。NVLinkは、基盤となるPCIe構成に関係なく、同じ100GB/sの帯域幅を提供します。PCIe上のP2PはPCIeレーン数に比例してスケールしますが、SHMは利用可能なPCIe帯域幅をはるかに下回るボトルネックになるようです。
結論
NVLinkは、自宅でデュアルGPUを実行している人々にとって、特定のケースで価値があります。私のセットアップは、偶然にも、そうではない狭い例外の1つです。
NVLinkが意味をなすのは、以下のすべてが真である場合です。
* Linuxを実行していない、またはサードパーティのP2Pドライバパッチを適用する意思がない(Windowsの同等品は見つかりませんでした)
* 複数のGPUがPCIeをx8/x8以下に低下させるコンシューマー向けプラットフォームを使用している
* ワークロードがFSDPトレーニング、または程度は低いですが、テンソル並列プロンプト処理である
GPU間の帯域幅は、すべてのワークロードに均等に影響を与えるわけではありません。私のテストでは、特に低いPCIeレーン幅でFSDPトレーニングが最大のパフォーマンス向上を示し、テンソル並列プロンプト処理は適度な改善が見られました。それは、