[Doubling all2all Performance with NVIDIA Collective Communication Library 2.12 \| NVIDIA Technical Blog](https://developer.nvidia.com/blog/doubling-all2all-performance-with-nvidia-collective-communication-library-2-12/?utm_source=chatgpt.com) にてNVIDIAが提示した、DGXクラスタ向けのリファレンスアーキテクチャにおけるネットワークトポロジ。 定義:"マルチNIC GPUノードの各 ‘rail’ を別々の Leaf に接続する設計" [Setting the InfiniBand Cluster Topology - NVIDIA Docs](https://docs.nvidia.com/networking/display/infinibandclusterbringupprocedure/setting%2Bthe%2Binfiniband%2Bcluster%2Btopology?utm_source=chatgpt.com) NVIDIA, “NVIDIA DGX SuperPOD: Next Generation Scalable Infrastructure for AI Leadership, Reference Architecture”, 2023. ![[Pasted image 20251127101855.png]] ![[Pasted image 20251127101458.png]] - ここで、DGX の各 NIC を同じ Leaf に束ねる構成を示した上で、 **“Such a design is often called rail-optimized.”** と明示的に呼称しています。 ## Validation [Rail Optimized Topology Validation - NVIDIA Docs](https://docs.nvidia.com/networking/display/ibdiagnetusermanualv213/rail%2Boptimized%2Btopology%2Bvalidation?utm_source=chatgpt.com)では、 - `--rail_validation` オプションで「Topology が rail-optimized であるか検証する」機能を定義。 - 「同じ ToR にぶら下がる HCA の PCIe BDF が揃っていること」など、 ノード内 NIC の物理配置と ToRの対応関係を rail-optimized として形式化。 [[2024__HOTI__Rail-only - A Low-Cost High-Performance Network for Training LLMs with Trillion Parameters]] [[Rethinking AI Infrastructure LINEヤフーが描く、内製技術で切り拓くネットワークとエンジニアリングの新時代 – JANOG55 Meeting @Kyoto]]より。 ![[Pasted image 20250122001052.png]] --- 結論から言うと、「Rail-optimized(レール最適化)構成」は**学会論文で提案された新規トポロジ**というより、 NVIDIA が DGX クラスタ向けの**実装ガイド/リファレンスアーキテクチャとして導入したベンダ用語**です。 そのため「これが元祖の1本!」というSIGCOMM論文のようなものはありません。 ただし、**研究論文から見て「オリジナル」とみなせる一次資料**としては、次の2つを押さえておくのが実務的です。 --- ## 1. NVIDIA Developer Blog (NCCL 2.12) – 用語と構成の明示 **NVIDIA, “Doubling all2all performance with NVIDIA Collective Communication Library 2.12”, 2022.** ([NVIDIA Developer](https://developer.nvidia.com/blog/doubling-all2all-performance-with-nvidia-collective-communication-library-2-12/?utm_source=chatgpt.com "Doubling all2all Performance with NVIDIA Collective ...")) - ここで、DGX の各 NIC を同じ Leaf に束ねる構成を示した上で、 **“Such a design is often called rail-optimized.”** と明示的に呼称しています。 - 図中で「NIC-0 は全ノードで Leaf L0 に、NIC-1 は全ノードで Leaf L1 に…」という、 いま一般に言われている **rail-optimized leaf/spine の典型形**が説明されています。 - Rail-optimized トポロジを前提に PXN(PCIe/NVLink 経由フォワード)で all-to-all を最適化する、という文脈。 多くの後続研究(例:Rail-only 論文など)が、このブログを **“rail-optimized ネットワーク” の出典**として引用しています。([arXiv](https://arxiv.org/html/2307.12169v4 "Rail-only: A Low-Cost High-Performance Network for Training LLMs with Trillion Parameters")) > ⇒ 研究論文から見た「元ネタ」としては、まずこのブログを挙げるのが一番素直です。 --- ## 2. NVIDIA DGX SuperPOD Reference Architecture – 公式の構成仕様 **NVIDIA, “NVIDIA DGX SuperPOD: Next Generation Scalable Infrastructure for AI Leadership, Reference Architecture”, 2023.** ([arXiv](https://arxiv.org/html/2307.12169v4 "Rail-only: A Low-Cost High-Performance Network for Training LLMs with Trillion Parameters")) - DGX H100 ベースの SuperPOD を対象に、 **「rail-optimized, full-fat tree NDR400 InfiniBand fabric」** として推奨構成を定義しているリファレンスアーキテクチャ。 - 各 GPU ノードのマルチ NIC を「レール」として扱い、 同じレールの NIC を同じ Leaf/Spine 階層に束ねる設計が図入りで説明されています。 - “Rail-optimized fat-tree” をクラスター規模の**事実上の標準構成**として提示している文献。 > ⇒ 実装寄りの文脈では、**「rail-optimized 構成を公式に提示した一次資料」**としてこのホワイトペーパーを引用するのが一般的です。 --- ## 3. 付随する公式ドキュメント “オリジナル”そのものではありませんが、NVIDIA 内部の定義を補強する資料として: 1. **Rail Optimized Topology Validation – ibdiagnet User Manual** ([NVIDIA Docs](https://docs.nvidia.com/networking/display/ibdiagnetusermanualv213/rail%2Boptimized%2Btopology%2Bvalidation?utm_source=chatgpt.com "Rail Optimized Topology Validation - NVIDIA Docs")) - `--rail_validation` オプションで「Topology が rail-optimized であるか検証する」機能を定義。 - 「同じ ToR にぶら下がる HCA の PCIe BDF が揃っていること」など、 **ノード内 NIC の物理配置と ToR の対応関係**を rail-optimized として形式化。 2. **Setting the InfiniBand Cluster Topology – NVIDIA Docs** ([NVIDIA Docs](https://docs.nvidia.com/networking/display/infinibandclusterbringupprocedure/setting%2Bthe%2Binfiniband%2Bcluster%2Btopology?utm_source=chatgpt.com "Setting the InfiniBand Cluster Topology - NVIDIA Docs")) - 「Fat-Tree is NVIDIA's recommended topology, AI factory should be based on rail optimized.」と明記。 - rail-optimized を「マルチNIC GPUノードの各 ‘rail’ を別々の Leaf に接続する設計」と定義。 > ⇒ これらは「NVIDIA が用語と判定条件をどのように定義しているか」を示す補助的な一次情報です。 --- ## 4. 研究論文側から見た「SOTA としての rail-optimized」 研究コミュニティ側では、たとえば - **W. Wang et al., “Rail-only: A Low-Cost High-Performance Network for Training LLMs with Trillion Parameters”, 2023.** ([arXiv](https://arxiv.org/html/2307.12169v4 "Rail-only: A Low-Cost High-Performance Network for Training LLMs with Trillion Parameters")) が、**“state-of-the-art は rail-optimized ネットワークである”**とした上で、自身の提案(Rail-only)を比較対象にしています。 この論文の参考文献を見ると、rail-optimized の出典として実際に - [17] NVIDIA NCCL 2.12 blog(上記 1) - [19] NVIDIA DGX SuperPOD Reference Architecture(上記 2) が挙げられており、**アカデミックな場での「オリジナル文献扱い」はこの2つ**と考えてよさそうです。([arXiv](https://arxiv.org/html/2307.12169v4 "Rail-only: A Low-Cost High-Performance Network for Training LLMs with Trillion Parameters")) --- ## 5. どう引用するのがよさそうか 論文や技術資料で「Rail-optimized構成のオリジナル」として出典を書きたい場合は、用途に応じて: - **用語・構成パターンの起点** → NVIDIA Developer Blog (NCCL 2.12, 2022) - **クラスタ全体の公式リファレンスアーキテクチャ** → NVIDIA DGX SuperPOD Reference Architecture, 2023 - **研究論文から見た SOTA の整理** → Rail-only 論文(上記を SOTA とみなして比較) という3点セットで引用しておけば、かなり筋の良い整理になります。 --- もし「bibtex 形式でそのままコピペしたい」「日本語資料(JANOG/Techブログなど)も交えて整理したい」などあれば、その形で整形もできます。 --- ざっくり言うと、 > Rail-optimizedは「**DGX/HGX のGPU–NIC・NVSwitch配線がこうなっている**」という前提にガッツリ乗っかったネットワーク設計 なので、「NVIDIAのサーバ内バス構成(NVLink/NVSwitch+PCIe+NICの結線)」に依存している、という言い方になります。 --- ## 1. まず、1台のDGX/HGXの中で何が起きているか H100世代のNVIDIA GPUサーバ(DGX/HGX)は典型的にこんな構造です([Juniper Elevate Community](https://community.juniper.net/blogs/sharada-yeluri/2024/01/02/gpu-fabrics-for-genai-workloads " GPU Fabrics for GenAI Workloads ")) - 8枚のGPUが **NVSwitch** でフルメッシュ接続(GPU間は ~9倍の帯域で相互接続) - 8つの ConnectX-7 NIC(または DPU)があり、 - 「GPU0に“近い”NIC0」「GPU1に“近い”NIC1」…という形で **GPU↔NICに1:1の対応(ローカルな経路)がある** - それぞれの NIC は PCIe(+必要に応じて NVLink ブリッジ)経由で CPU/NVSwitch にぶら下がり、 - 各 NIC には固有の PCIe BDF(0000:xx:00.0 みたいなアドレス)が振られている NVIDIA側の文書では、この「**サーバ内で1本のNIC+その背後のGPUたち**」を「1レール(rail)」= GPUレール/IBレールとして扱っています([NVIDIA Docs](https://docs.nvidia.com/networking/display/infinibandclusterbringupprocedure/setting%2Bthe%2Binfiniband%2Bcluster%2Btopology "Setting the InfiniBand Cluster Topology - NVIDIA Docs")) ibdiagnet の _rail_validation_ 機能がまさにその定義で、 > 「同じToRスイッチにつながるHCAは、各サーバ内で同じPCIe BDFであること」 をチェックして「それはrail-optimized配線ですよ」と判定しています。([NVIDIA Docs](https://docs.nvidia.com/networking/display/ibdiagnetusermanualv213/rail%2Boptimized%2Btopology%2Bvalidation "Rail Optimized Topology Validation - NVIDIA Docs")) --- ## 2. Rail-optimizedトポロジがこの「中身」にどう乗っているか NVIDIAの公式説明だと、rail-optimizedはこう定義されています([NVIDIA Docs](https://docs.nvidia.com/networking/display/infinibandclusterbringupprocedure/setting%2Bthe%2Binfiniband%2Bcluster%2Btopology "Setting the InfiniBand Cluster Topology - NVIDIA Docs")) - 1ノードに複数NIC(=複数レール)があるとき、 - **各レールのNICを別々のLeafスイッチに出す** - 例: 全ノードの NIC0 → Leaf L0, NIC1 → Leaf L1, …(multi-plane fat-tree) これにより: - 同じ「ローカルランク」(例: 全ノードの GPU0 群)同士は - それぞれのノード内で NVSwitch を使って「そのランク専用のNIC」に集約したうえで、 - **1ホップ(Leafだけ)で相互に通信できる**(PXN がここを使う)([NVIDIA Developer](https://developer.nvidia.com/blog/doubling-all2all-performance-with-nvidia-collective-communication-library-2-12/ "Doubling all2all Performance with NVIDIA Collective Communication Library 2.12 | NVIDIA Technical Blog")) - 違うランク/レール間のややレアな通信は、 ノード内NVSwitchを通って「適切なNIC」へフォワードしてから外に出す つまり rail-optimized は > 「ノード内 NVSwitch を“クロスバー”、各 NIC を“ノード外への専用出口”とみなし、 > 同じレールのGPU群をクラスタ全体で1スイッチ階層に揃えてやる」 という設計です。 --- ## 3. なぜ「NVIDIAのサーバ内バス構成に依存している」と言えるのか ここまでを踏まえると、rail-optimized の前提には以下が入っています: 1. **ノード内に高帯域・ほぼ全結合のGPU間ファブリック(NVSwitch)があること** - これがないと「一度別GPUに集約してから“正しいNIC”で出す(PXN)」という芸当ができない([NVIDIA Developer](https://developer.nvidia.com/blog/doubling-all2all-performance-with-nvidia-collective-communication-library-2-12/ "Doubling all2all Performance with NVIDIA Collective Communication Library 2.12 | NVIDIA Technical Blog")) 2. **GPUとNICに“決まった対応関係(GPUローカルランク ↔ NIC/BDF)”があること** - ibdiagnetが「同じLeafにつながるHCAは同じBDFか?」でrailかどうか判定している時点で、 **サーバ内PCIeトポロジの設計が rail の定義に直結**しています([NVIDIA Docs](https://docs.nvidia.com/networking/display/ibdiagnetusermanualv213/rail%2Boptimized%2Btopology%2Bvalidation "Rail Optimized Topology Validation - NVIDIA Docs")) 3. **NCCLがそのトポロジを前提にルーティングや集約(PXN)を実装していること** - 「1GPU:1NIC」や「GPU0群は rail0、GPU1群は rail1…」という前提で all-reduce / all-to-all のリングやツリーが組まれている([NVIDIA Developer](https://developer.nvidia.com/blog/doubling-all2all-performance-with-nvidia-collective-communication-library-2-12/ "Doubling all2all Performance with NVIDIA Collective Communication Library 2.12 | NVIDIA Technical Blog")) この3つは「NVIDIAのDGX/HGX設計(NVSwitch+NIC配置+PCIeレイアウト)」にかなり固有です。 なので、 - 単に「マルチNICノードをマルチプレーンfat-treeに出しました」だけだと **“マルチレール”** ではあっても、 - 上記のようなGPU–NICの1:1対応+NVSwitch前提で組んだ **NVIDIA流のrail-optimized** とは別物 と言えます。実際、Glenn Klockwood の整理でも「8GPUノードで各GPUに対応するHCAを持ち、それぞれ別Leafへ出す構成」をNVIDIAがrail-optimizedと呼んでいる、という書き方になっています。([Glenn K. Lockwood](https://glennklockwood.com/garden/multi-plane "Multi-plane topologies")) --- ## 4. まとめ(超ざっくり) - rail-optimized は「**ノード内NVSwitch+GPU–NIC対応関係をフルに活かすためのクラスタ配線法**」。 - その「GPU–NIC対応関係」は、NVIDIAのDGX/HGXの **PCIe/NVLink/NVSwitch 配線設計** そのもの。 - NCCL/PXN や検証ツール(ibdiagnet)が **“どのBDFのNICがどのGPUレールか”** を知っていて最適化しているので、 結果として **NVIDIAのサーバ内バス構成に強く依存した構成法** になっている。 もし「じゃあAMD MI300X箱や自作HGXサーバで rail-optimized っぽいことをやるには?」という話も気になるなら、 「何が満たされていれば等価になるか(GPU–NIC対応/ノード内ファブリック要件)」も整理できます。