Compute in Transit: Results

The simulation

When does computing the band in transit pay?

Training_Transit_Sim is a SimPy model of data-parallel training across data centres. It takes the experiment's bytes per step and its measured steps to a loss, and asks how long, and how much energy, each way of syncing needs to reach 3.158 with 8 workers. The module is a photonic link module (arXiv:2608.21536) modelled as a link kernel: a port, the optics, a compute budget and an FPGA stage.

Time to the target against WAN bandwidth

The curves are the simulation's closed forms, ported to TypeScript and run in your browser; the dots are its recorded points, which the curves pass through (the port reproduces every recorded cell of its results.md: step times, times to the target, hot spots, energy and break-evens). Press play to sweep the bandwidth.

Loading the bandwidth explorer…

Inside the module: the slowest stage wins

A stream through the module passes four pipelined stages, and the slowest sets its rate. With the optical transform charged against a compute budget in the series' bracket of tens of GFLOP/s, the budget is the bottleneck; it stops binding at 140.0 GFLOP/s, above which the optics does. One worker's dense delta through the module (ms per stage; the stages are pipelined, the slowest sets the time): module port 1.267, module optics 2.262, module compute 3.199, FPGA 0.792 at [high]; the compute stage is 31.667 ms at [low] and zero when the transform is not charged.

Loading the module stages…

Break-even curves

Where two variants take equally long to reach 3.158. The pluggable all-gather never breaks even with AdamW (none in range); summing in the network can, below a few GB/s of WAN, and the margin depends on whether E's fewer steps (the hypothesis) are real.

Loading the break-even curves…

Every break-even of results.md section 7a (28 rows)
XYModuleStepsBreak-evenX - Y at 0.1 GB/s (s)X - Y at 1,000 GB/s (s)Faster below
E' band in transit, summed at the switch (hypothetical)A AdamW, dense ring all-reducefreeE1.57 GB/s (12.5 Gb/s)-85.24+5.80E'
E' band in transit, summed at the switch (hypothetical)A AdamW, dense ring all-reducefreeC (exact)0.83 GB/s (6.64 Gb/s)-64.98+8.89E'
E' band in transit, summed at the switch (hypothetical)A AdamW, dense ring all-reducehighE1.22 GB/s (9.72 Gb/s)-83.55+7.48E'
E' band in transit, summed at the switch (hypothetical)A AdamW, dense ring all-reducehighC (exact)0.648 GB/s (5.19 Gb/s)-62.49+11.39E'
E' band in transit, summed at the switch (hypothetical)B DeMo top-k, all-gatherfreeE0.461 GB/s (3.69 Gb/s)-21.70+6.00E'
E' band in transit, summed at the switch (hypothetical)B DeMo top-k, all-gatherfreeC (exact)0.116 GB/s (0.927 Gb/s)-1.45+9.10E'
E' band in transit, summed at the switch (hypothetical)B DeMo top-k, all-gatherhighE0.36 GB/s (2.88 Gb/s)-20.01+7.69E'
E' band in transit, summed at the switch (hypothetical)B DeMo top-k, all-gatherhighC (exact)none in range+1.05+11.59B
E' band in transit, summed at the switch (hypothetical)C' fixed band on the GPU, ring all-reduce (hypothetical)freeE0.366 GB/s (2.93 Gb/s)-12.48+4.68E'
E' band in transit, summed at the switch (hypothetical)C' fixed band on the GPU, ring all-reduce (hypothetical)freeC (exact)none in range+7.78+7.78C'
E' band in transit, summed at the switch (hypothetical)C' fixed band on the GPU, ring all-reduce (hypothetical)highE0.269 GB/s (2.16 Gb/s)-10.79+6.37E'
E' band in transit, summed at the switch (hypothetical)C' fixed band on the GPU, ring all-reduce (hypothetical)highC (exact)none in range+10.27+10.27C'
E band in transit (pluggable), all-gatherA AdamW, dense ring all-reducefreeEnone in range+21.17+5.47A
E band in transit (pluggable), all-gatherA AdamW, dense ring all-reducefreeC (exact)none in range+92.68+8.41A
E band in transit (pluggable), all-gatherA AdamW, dense ring all-reducehighEnone in range+22.86+7.16A
E band in transit (pluggable), all-gatherA AdamW, dense ring all-reducehighC (exact)none in range+95.18+10.91A
E band in transit (pluggable), all-gatherB DeMo top-k, all-gatherfreeEnone in range+84.71+5.67B
E band in transit (pluggable), all-gatherB DeMo top-k, all-gatherfreeC (exact)none in range+156.22+8.61B
E band in transit (pluggable), all-gatherB DeMo top-k, all-gatherhighEnone in range+86.40+7.36B
E band in transit (pluggable), all-gatherB DeMo top-k, all-gatherhighC (exact)none in range+158.72+11.11B
E band in transit (pluggable), all-gatherC fixed band on the GPU, all-gatherfreeE1.81 GB/s (14.5 Gb/s)-64.84+3.92E
E band in transit (pluggable), all-gatherC fixed band on the GPU, all-gatherfreeC (exact)none in range+6.67+6.86C
E band in transit (pluggable), all-gatherC fixed band on the GPU, all-gatherhighE1.25 GB/s (10 Gb/s)-63.15+5.60E
E band in transit (pluggable), all-gatherC fixed band on the GPU, all-gatherhighC (exact)none in range+9.16+9.35C
C' fixed band on the GPU, ring all-reduce (hypothetical)A AdamW, dense ring all-reduce–measured6.58 GB/s (52.7 Gb/s)-72.76+1.11C'
C' fixed band on the GPU, ring all-reduce (hypothetical)B DeMo top-k, all-gather–measured0.799 GB/s (6.39 Gb/s)-9.22+1.32C'
C fixed band on the GPU, all-gatherA AdamW, dense ring all-reduce–measurednone in range+86.02+1.55A
B DeMo top-k, all-gatherA AdamW, dense ring all-reduce–measurednone in range-63.54-0.20B

A shared WAN: queueing

The closed forms assume the WAN is the training job's alone. The simulation's discrete-event engine can share it: other jobs send 1 MB transfers at a given fraction of each inter-DC link's capacity, queued first come, first served with the sync. This page cannot rerun that (it needs the SimPy engine; the port has only the closed forms), so the animation and the table below are the simulation's recorded runs, from its results.json and results.md section 9, at seed 0.

Loading the shared-WAN animation…

At 0.9 load, AdamW's step grows from 4.075 ms to 26.291 ms, because it sends the most bytes over the WAN; E′, which sends only the band sum across it, from 3.726 ms to 5.442 ms. In these runs a busy WAN hurts most the variants that send most across it; the closed forms, and so the break-evens above, leave this out.

results.md section 9, as recorded (mean step in ms)
VariantClosed form (ms)Load 0Load 0.3Load 0.6Load 0.9WAN busy at 0.9, incl. background
A AdamW, dense ring all-reduce4.0754.0754.6096.61726.291100.0%
B DeMo top-k, all-gather2.3152.3152.3543.36212.929100.0%
C fixed band on the GPU, all-gather1.4431.4431.4791.8406.552100.0%
C' fixed band on the GPU, ring all-reduce (hypothetical)0.8100.8100.8941.0782.97597.3%
E' band in transit, summed at the switch (hypothetical) [free]3.7263.7263.8153.9775.44294.3%

Extrapolations: bigger models, rarer syncs

Model size

Bytes scale with the parameter count by each variant's measured bytes per parameter, and compute with it too. At the Llama-3-8B shape (8.03B parameters, 2 DC x 4, 100 GbE) the order is unchanged: top-k fastest, the fixed band on the GPU slower than AdamW because it needs more steps, and the in-transit variants slowest, bound by the module. The E and E′ rows use E's steps, so they also carry the hypothesis (one seed). Chart: computed by the port (the same closed forms, at that size); table: results.md's.

  • A · AdamWhot spot: inter-DC link
    806 s
  • B · DeMo top-khot spot: inter-DC link
    453 s
  • C · fixed band on the GPUhot spot: inter-DC link
    1,844 s
  • E [high] · band in transit (pluggable)hot spot: module compute
    4,381 s
  • E [free] · band in transit (pluggable)hot spot: module optics
    3,526 s
  • C′ · hypotheticalhot spot: compute
    961 s
  • E′ [high] · hypotheticalhot spot: module compute
    4,200 s
  • E′ [free] · hypotheticalhot spot: module optics
    3,345 s
300 s1,000 s3,000 s10,000 sEXTRAPOLATED seconds to 3.158 at the Llama-3-8B shape, if the measured steps held (log; hollow: hypothetical)
Variant15.8M (measured): time (s)1B: time (s)Llama-3-8B shape: time (s)hot spot at the largest
A AdamW, dense ring all-reduce1.63100.46806.45inter-DC link
B DeMo top-k, all-gather0.9356.48453.35inter-DC link
C fixed band on the GPU, all-gather3.85229.871,844.39inter-DC link
E band in transit (pluggable), all-gather [high]8.78545.694,380.89module compute
E band in transit (pluggable), all-gather [free]7.10439.203,525.75module optics
C' fixed band on the GPU, ring all-reduce (hypothetical)2.16119.91961.04compute
E' band in transit, summed at the switch (hypothetical) [high]8.39523.164,200.18module compute
E' band in transit, summed at the switch (hypothetical) [free]6.71416.673,345.04module optics

Syncing every H steps (DiLoCo-style)

Syncing every H steps instead of every step divides each step's communication by H. The steps to 3.158 are assumed unchanged, which is the larger assumption: DiLoCo also changes the optimiser. On this 100 GbE WAN, E′ is already slower than AdamW at H = 1 (6.71 s against 1.63 s); at H = 100 AdamW takes 0.21 s and E′ 0.94 s. Rarer syncs shrink the very communication the band saves, and with it the band's only advantage.

VariantH = 1: time (s)H = 10H = 100
A AdamW, dense ring all-reduce1.630.340.21
B DeMo top-k, all-gather0.930.270.20
C' fixed band on the GPU, ring all-reduce (hypothetical)2.161.401.32
E' band in transit, summed at the switch (hypothetical) [free]6.711.470.94

What the simulation says

  • At the experiment's scale AdamW's step is mostly communication, and the band needs many more steps. On 2 DC x 4, 100 GbE, compute is 12.1% of AdamW's step. Top-k reaches 3.158 in 0.93 s and AdamW in 1.63 s (400 steps each); the fixed band on the GPU needs 3.85 s (2,667 steps) and the band in transit (E, ENOB 8) 1,800 steps.
  • With the transform charged against the budget, the module is the bottleneck. At 10 GFLOP/s the band in a pluggable takes 33.348 ms a step against 1.443 ms for the band on the GPU, and module compute holds 95.0% of it. The budget would need 140.0 GFLOP/s before the optics, not the budget, set the module's rate, which is above the series' bracket of 10 to 99 GFLOP/s.
  • A pluggable also caps its worker's port: module port holds 13.6% of the [free] pluggable step, because a 25 GB/s QSFP56 module sits on a 50 GB/s port.
  • The pluggable all-gather never breaks even with AdamW or top-k over 0.1 to 1,000 GB/s of WAN (section 7a): an all-gather of the band still sends 13,854,288 bytes per worker, 0.25 of AdamW's 55,417,152, while it needs 1,800 steps to AdamW's 400.
  • Summing in the network is where a fixed band could gain. E' (band computed and summed at the switch, each worker's own band looped back) beats AdamW below 1.57 GB/s (12.5 Gb/s) of WAN and top-k below 0.461 GB/s (3.69 Gb/s), with E's steps and the transform not charged. With the exact band's steps (no hypothesis) the AdamW crossing falls to 0.83 GB/s (6.64 Gb/s).
  • The same summation without a module does better. C' (the band computed on the GPU and ring all-reduced, no module) beats AdamW below 6.58 GB/s (52.7 Gb/s); with both on the exact band's steps, E' never beats C' in range. Only E's single-seed step advantage (the hypothesis) lets E' beat C' at all.
  • ENOB. ENOB 6 never reaches a ladder loss. Where an in-transit variant wins at all, the break-even ENOB is 8 (section 7c): the lowest measured ENOB that trains.
  • Energy is mostly the devices'. The compute column (each device's static power for the whole step plus its energy per FLOP) is the largest in every row of section 5; the modules add 7.2% of E' [free]'s energy per step on 2 DC x 4, 100 GbE, and E' [free] uses 8.87 kJ to 3.158 against 1.95 kJ for AdamW.
  • Every figure above rests on one model size, 8 workers, single seeds for E, and the series' own optics noise model; larger models and DiLoCo-style syncing are extrapolations (section 10).

Energy on 2 DC x 4, 100 GbE: the devices dominate. AdamW uses 1.95 kJ to 3.158; E′ with the transform not charged uses 8.87 kJ, its modules 7.2% of it.