07 / THE ARC

The cost of communication

Sending data between GPUs takes time, and that time is not free. While a GPU is waiting for numbers to arrive, it is not computing. The question for any distributed run is whether the waiting is small compared with the work.

Our model gives P of 60 GB, so data parallelism moves 120 GB per GPU on every step. Wiring inside a single machine carries that in about a quarter of a second. A network cable between machines carries the same 120 GB in about two and a half seconds.

Time on the wire, per GPU, per step
Path2P, which is 120 GB3P, which is 180 GB
NVLink, inside one node0.27 s0.40 s
InfiniBand, between nodes2.40 s3.60 s

Each of those four figures is one division: bytes to move, divided by bytes per second the link carries.

TIME = BYTES ÷ BANDWIDTH
NVLink      450 GB/s     120 GB / 450 = 0.2667  ->  0.27 s
                         180 GB / 450 = 0.4000  ->  0.40 s

InfiniBand   50 GB/s     120 GB /  50 = 2.4000  ->  2.40 s
                         180 GB /  50 = 3.6000  ->  3.60 s

And the two byte figures come from P. One copy of the parameters in 16-bit is 30 × 109 × 2 = 60 GB, so 2P is 120 GB and 3P is 180 GB. Nothing else is in those numbers — no overhead, no contention, no latency per message. They are the floor, and a real run is slower.

The 9× gap between the two rows is the same 9× from the terminology page: 450 against 50. Crossing a node boundary costs nine times as much per byte, and the table is just that ratio applied to two payload sizes.

Whether those numbers matter depends entirely on how long the computation itself takes. A step processing one million tokens on 64 H100 cards takes about 7.1 seconds of compute at a realistic utilisation. The same step on 64 B200 cards takes about 3.1 seconds, because the cards are faster.

The same step, two generations of card
Compute per step2P over InfiniBandCommunication as a fraction of compute
64 × H1007.11 s2.40 s34%
64 × B2003.13 s2.40 s77%

That last column is communication divided by compute, which is the standard test for whether a run is limited by its arithmetic or by its wiring. If none of the transfer is hidden, the step takes the sum of the two, so 9.51 seconds on H100 and 5.53 seconds on B200.

64 × H100 — 9.51 s per step compute 7.11 s 2.40 s 64 × B200 — 5.53 s per step compute 3.13 s 2.40 s the copper block is the same width in both rows — nothing about it changed 34% of compute becomes 77% of compute, without a single extra byte crossing the wire
Same bytes, same link, same 2.40 seconds. Only the bar it has to hide behind got shorter.

Faster GPUs raise the ratio of communication to compute. The volume stays at 120 GB while the compute it hides behind gets shorter. This is the most important consequence of buying newer hardware, and it is why the arrangement of the run matters more for a model of this size than it did for earlier and smaller ones.

The ratio is still below 1 in both rows, so a transfer that runs entirely during the computation is still fully hidden. Overlapping the exchange with the backward pass is how that is arranged, and the rise from 34 percent to 77 percent is what turns that arrangement from an optimisation into a requirement.

not overlapped — the step is the sum compute comm 5.53 s overlapped — the step is just the compute compute 3.13 s this only works while the copper bar is shorter than the cream one — ratio below 1
Gradients for the early layers are ready long before the backward pass finishes, so they can be sent while later layers are still computing.
Carry this forward: communication cost is judged as a fraction of step time, and that fraction grows as the cards get faster.

The uncomfortable direction of travel

Faster cards shorten the compute but not the wire. Moving from H100 to B200 cuts the step from 7.1 seconds to 3.1 while the 2.40 seconds of InfiniBand traffic stays exactly where it was. The communication share of a step grows every hardware generation unless the interconnect improves at the same rate, which is why the next few pages care so much about moving less rather than moving faster.

Where 2P comes from, and when it is a lie

The six hops on the previous page are where this number is born. Each hop, a card sends one chunk, and a chunk is one Nth of the gradient. Three hops for the reduce-scatter and three for the all-gather, so with four cards:

6hops
×
15 GBone quarter of P
=
90 GB1.5P, not 2P

The exact figure is 2(N − 1)/N × P. It is 1.5P on four cards, 1.75P on eight, and 1.97P on sixty-four. It approaches 2P from below and never reaches it, so quoting 2P is a convenient overestimate that gets truer as the cluster grows.

From the walkthrough to the bill

The previous page ran four cards, four columns and six hops on a gradient of four numbers. That structure is the real one — it does not change at scale. What changes is how big a column is. Set the run and every stage of the toy example picks up its weight in bytes and seconds.

The walkthrough on the previous page had four cards, four columns and six hops. Nothing about that structure changes at real scale — only the size of a column does. Set the run below and every stage of the toy example gets its real weight in bytes and seconds.

GPUS
LINK
Stage of the walkthroughIn the toy exampleAt 30 billion parameters
reduce-scatter hops — every one performs additions all-gather hops — every one only copies

The strip makes the ZeRO-2 argument concrete before we get there. Half the blocks are copper and do arithmetic; half are cream and only copy. At 8 GPUs on InfiniBand the cream half is 52.5 GB and 1.05 seconds per card per step, spent moving numbers that were already finished.

Work it out

Set the cards and the link, and read both bars against the same pinned axis. Each lane carries a faint vertical line showing where its other option would land — the other card generation on the compute lane, the other interconnect on the network lane — so the effect of a change is visible without switching back and forth.

One training step of a 30 billion parameter model, one million tokens, on 64 GPUs. Data parallelism moves 120 GB of gradients across the link for every GPU on every step. The axis below is pinned from 0 to 10 seconds, so one second is the same width whatever the controls say.

GPU
LINK
ONE TRAINING STEP, ON A PINNED AXIS FROM 0 TO 10 SECONDS
communication time divided by compute time
BACKCollective operations