Pidoku

The NVL72 Rack

Module 7 Lesson 7.d 50 min Difficulty 4/5

Prerequisites 03, 6.a, 6.b, 8.c

The idea in one minute#

On an 8-GPU server, GPUs talk over NVLink at 900 GB/s each way; the moment a job needs a ninth GPU, traffic drops to a network card at 50-100 GB/s. That cliff shaped how every large model was split.

The NVL72 moves the cliff. It wires 72 GPUs and 36 CPUs in one liquid-cooled rack so that every GPU reaches every other through NVLink switches in one hop at full speed. To software it is a 72-GPU machine with 13-21 TB of HBM. The price is a rack that draws as much power as a small office building and weighs about 1.4 tonnes. Facts checked on 16 October 2026.

A picture#

GB200 NVL72 · ONE RACK, ONE NVLINK DOMAINBlackwell · 72 GPUs + 36 CPUs · front elevation · checked 16 Oct 2026management switchpower shelfpower shelfpower shelfpower shelfcompute 01compute 02compute 03compute 04compute 05compute 06compute 07compute 08compute 09compute 10NVLink switch 1NVLink switch 2NVLink switch 3NVLink switch 4NVLink switch 5NVLink switch 6NVLink switch 7NVLink switch 8NVLink switch 9compute 11compute 12compute 13compute 14compute 15compute 16compute 17compute 18power shelfpower shelfpower shelfpower shelfNVLink spine(rear, copper)1234HOW THE RACK IS BUILT118 compute traysEach: 2 GB200 superchips = 4 B200 GPUs + 2 Grace CPUs, NICs and drives (previous figure).29 NVLink switch traysEach holds 2 NVLink switch chips. Every GPU has a link to every switch chip, so any GPUreaches any other in one hop at full 1.8 TB/s.3The spineOver 5,000 copper cables (about 3 km) at the rear connect trays to switches. Copper, notoptics: cheaper and lower power over a metre.4Power and coolingPower shelves turn facility AC into DC bus bars. About 120-140 kW per rack, nearly allremoved by liquid; a typical air-cooled rack is 10-20 kW.Why one domain matters: every GPU, one hop from every otherGPUs (18 of 72 shown)NVLink switch traysCompare an 8-GPU HGX server: beyond 8 GPUs, traffic leaves NVLink for aNIC at 100 GB/s per GPU, an 18x drop. NVL72 moves that cliff from 8 GPUs to 72. GB200 NVL72GB300 NVL72Vera Rubin NVL72GPUB200B300RubinHBM per GPU186 GB HBM3e288 GB HBM3e288 GB HBM4HBM per rack13.4 TB20.7 TB20.7 TBBandwidth / GPU8 TB/s8 TB/s~22 TB/sNVLink / GPU1.8 TB/s1.8 TB/s3.6 TB/sNVLink, rack130 TB/s130 TB/s260 TB/sCPU36 Grace36 Grace36 VeraGPUS / CPUS72 / 36B200 + GraceHBM3E13.4 TBGB300: 20.7 TBNVLINK TOTAL130 TB/s1.8 TB/s per GPUFP4 (GB200)~720 PFdense; 1.44 EF sparsePOWER~120-140 kWliquid cooledWEIGHT~1.4 tone 48U MGX rackTray order follows NVIDIA's MGX NVL72 reference design (Oberon); OEM racks differ in shelf counts. GB300 NVL72 uses the same rack with Blackwell Ultra.
The rack from the front, with the NVLink spine drawn beside it. On the right, why one NVLink domain matters, and how the three NVL72 generations compare.

How it really works#

What is in the rack#

PartCountJob
Compute tray (lesson 03)182 superchips each: 4 GPUs + 2 CPUs, NICs, DPU, drives
NVLink switch tray92 NVLink switch chips each, 18 chips in all
NVLink spine1Over 5,000 copper cables at the rear joining trays to switches
Power shelves~8Turn facility AC into DC on a busbar; several PSUs each, with spares
Liquid manifold1Supply and return lines to every cold plate, fed by a coolant distribution unit

Why every GPU is one hop from every other#

Each B200 has 18 NVLink 5 links. There are 18 switch chips. Each GPU sends one link to each switch chip, so each chip has 72 GPU ports. Any GPU reaches any other by going up to any switch chip and straight down: one hop, and the full 1.8 TB/s per GPU is available no matter which partner it talks to. The total, 72 × 1.8 TB/s, is the advertised 130 TB/s.

This is a non-blocking, switched fabric. Contrast Google’s TPU pods, which are a direct torus with no switches (see Google TPU): cheaper per link, but distant chips are several hops apart.

Why copper, and why liquid#

  • Copper. Inside a rack the longest NVLink run is about a metre. Copper cables there need no optical transceivers, which would have added thousands of lasers and many kilowatts. NVIDIA put the saving at around 20 kW per rack. Beyond a rack, copper cannot carry these speeds, which is why the NVLink domain stops at the rack (until Rubin Ultra’s Kyber racks, lesson 05).
  • Liquid. About 120-140 kW in one rack footprint is several times what air can remove. Cold plates sit on every CPU and GPU; a coolant distribution unit exchanges heat with the building’s water loop. Fans remain for power supplies and some boards. 8.c covers the facility side.

What the domain buys you#

The fast domain decides how a model is split (6.b):

  • Tensor parallelism needs an all-reduce in every layer and only works inside NVLink. On HGX it stops at 8 GPUs; on NVL72 it can go wider.
  • Expert parallelism for mixture-of-experts models sends every token to a few experts on other GPUs and back, in every MoE layer. Spread over 64-72 GPUs inside one NVLink domain, each GPU holds only a few experts and the all-to-all stays on NVLink. That is why trillion- parameter MoE models are served on NVL72 racks.
  • KV cache and memory. 13.4 TB of HBM (GB200) or 20.7 TB (GB300) in one domain holds a very large model plus a large shared KV cache.

GB200, GB300, Vera Rubin#

The rack (NVIDIA’s “Oberon” design, built by OEMs from MGX parts) stays the same across three generations, as the table in the figure shows. GB300 swaps in Blackwell Ultra; Vera Rubin NVL72 doubles NVLink to 3.6 TB/s per GPU and brings HBM4.

Code#

Time one MoE layer’s all-to-all (dispatch tokens to experts, then combine results) when the experts are spread across 64 GPUs, either inside one NVL72 or across eight 8-GPU HGX servers.

Go
// alltoall.go — the MoE all-to-all inside an NVL72 vs across HGX servers.
package main

import "fmt"

func main() {
	const (
		hidden      = 7168.0 // model width (DeepSeek-V3-class)
		bytesPerVal = 1.0    // FP8 activations
		topK        = 8.0    // experts per token
		gpus        = 64.0   // expert-parallel group
	)
	nvlink := 900e9 // NVLink 5, bytes/s each way per GPU
	nic := 100e9    // one 800G NIC per GPU, bytes/s each way

	fmt.Println("tokens/GPU   NVL72 (all NVLink)   8 x HGX (8 per node)   slowdown")
	for _, tokens := range []float64{64, 256, 1024, 4096} {
		// each token is sent to topK experts and its results come back: 2 transfers
		bytes := tokens * topK * hidden * bytesPerVal * 2
		inRack := bytes / nvlink

		// on HGX, a uniformly random expert is on the same node with probability 7/63
		local := 7.0 / (gpus - 1)
		tNV := bytes * local / nvlink
		tNIC := bytes * (1 - local) / nic
		hgx := max(tNV, tNIC)
		fmt.Printf("%9.0f   %15.1f µs   %18.1f µs   %7.1fx\n",
			tokens, inRack*1e6, hgx*1e6, hgx/inRack)
	}
	fmt.Println("\nA 61-layer MoE model with ~58 MoE layers pays this ~58 times per forward pass.")
}

The slowdown is roughly the ratio of NVLink to NIC bandwidth, about 8x, on every MoE layer of every step. Overlapping communication with compute hides some of it on HGX, but not 8x. That single number is the business case for the rack.

Remember this#

  • NVL72 = 72 GPUs + 36 CPUs, 18 compute trays, 9 switch trays, one NVLink domain.
  • Each GPU links once to each of the 18 switch chips: any-to-any, one hop, 1.8 TB/s per GPU.
  • Copper inside the rack saves power; it is also why the domain ends at the rack.
  • The rack exists for wide tensor and expert parallelism and for one huge pool of HBM.
  • ~120-140 kW, liquid cooled, ~1.4 t: the building has to be designed for it.

Try it#

  1. Run alltoall.go. Change the NIC to 400G (50 GB/s). What happens to the slowdown?
  2. Change topK to 2 (a Mixtral-style model). Does the case for NVL72 weaken or stay the same? Why?
  3. Rubin doubles NVLink to 3.6 TB/s per GPU. Recompute the in-rack time at 4,096 tokens per GPU.

Check yourself#

  1. Why does each GPU need exactly one link to each of the 18 switch chips?
  2. What forces the NVLink domain to end at the edge of the rack?
  3. Which parallelism strategy benefits most from NVL72, and why?
  4. Name two facility requirements an NVL72 rack imposes that an air-cooled server rack does not.

Sources#

↑↓ navigate↵ openesc close

100% drag to pan · scroll or pinch to zoom · double-click to zoom in