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)
| X | Y | Module | Steps | Break-even | X - 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-reduce | free | E | 1.57 GB/s (12.5 Gb/s) | -85.24 | +5.80 | E' |
| E' band in transit, summed at the switch (hypothetical) | A AdamW, dense ring all-reduce | free | C (exact) | 0.83 GB/s (6.64 Gb/s) | -64.98 | +8.89 | E' |
| E' band in transit, summed at the switch (hypothetical) | A AdamW, dense ring all-reduce | high | E | 1.22 GB/s (9.72 Gb/s) | -83.55 | +7.48 | E' |
| E' band in transit, summed at the switch (hypothetical) | A AdamW, dense ring all-reduce | high | C (exact) | 0.648 GB/s (5.19 Gb/s) | -62.49 | +11.39 | E' |
| E' band in transit, summed at the switch (hypothetical) | B DeMo top-k, all-gather | free | E | 0.461 GB/s (3.69 Gb/s) | -21.70 | +6.00 | E' |
| E' band in transit, summed at the switch (hypothetical) | B DeMo top-k, all-gather | free | C (exact) | 0.116 GB/s (0.927 Gb/s) | -1.45 | +9.10 | E' |
| E' band in transit, summed at the switch (hypothetical) | B DeMo top-k, all-gather | high | E | 0.36 GB/s (2.88 Gb/s) | -20.01 | +7.69 | E' |
| E' band in transit, summed at the switch (hypothetical) | B DeMo top-k, all-gather | high | C (exact) | none in range | +1.05 | +11.59 | B |
| E' band in transit, summed at the switch (hypothetical) | C' fixed band on the GPU, ring all-reduce (hypothetical) | free | E | 0.366 GB/s (2.93 Gb/s) | -12.48 | +4.68 | E' |
| E' band in transit, summed at the switch (hypothetical) | C' fixed band on the GPU, ring all-reduce (hypothetical) | free | C (exact) | none in range | +7.78 | +7.78 | C' |
| E' band in transit, summed at the switch (hypothetical) | C' fixed band on the GPU, ring all-reduce (hypothetical) | high | E | 0.269 GB/s (2.16 Gb/s) | -10.79 | +6.37 | E' |
| E' band in transit, summed at the switch (hypothetical) | C' fixed band on the GPU, ring all-reduce (hypothetical) | high | C (exact) | none in range | +10.27 | +10.27 | C' |
| E band in transit (pluggable), all-gather | A AdamW, dense ring all-reduce | free | E | none in range | +21.17 | +5.47 | A |
| E band in transit (pluggable), all-gather | A AdamW, dense ring all-reduce | free | C (exact) | none in range | +92.68 | +8.41 | A |
| E band in transit (pluggable), all-gather | A AdamW, dense ring all-reduce | high | E | none in range | +22.86 | +7.16 | A |
| E band in transit (pluggable), all-gather | A AdamW, dense ring all-reduce | high | C (exact) | none in range | +95.18 | +10.91 | A |
| E band in transit (pluggable), all-gather | B DeMo top-k, all-gather | free | E | none in range | +84.71 | +5.67 | B |
| E band in transit (pluggable), all-gather | B DeMo top-k, all-gather | free | C (exact) | none in range | +156.22 | +8.61 | B |
| E band in transit (pluggable), all-gather | B DeMo top-k, all-gather | high | E | none in range | +86.40 | +7.36 | B |
| E band in transit (pluggable), all-gather | B DeMo top-k, all-gather | high | C (exact) | none in range | +158.72 | +11.11 | B |
| E band in transit (pluggable), all-gather | C fixed band on the GPU, all-gather | free | E | 1.81 GB/s (14.5 Gb/s) | -64.84 | +3.92 | E |
| E band in transit (pluggable), all-gather | C fixed band on the GPU, all-gather | free | C (exact) | none in range | +6.67 | +6.86 | C |
| E band in transit (pluggable), all-gather | C fixed band on the GPU, all-gather | high | E | 1.25 GB/s (10 Gb/s) | -63.15 | +5.60 | E |
| E band in transit (pluggable), all-gather | C fixed band on the GPU, all-gather | high | C (exact) | none in range | +9.16 | +9.35 | C |
| C' fixed band on the GPU, ring all-reduce (hypothetical) | A AdamW, dense ring all-reduce | – | measured | 6.58 GB/s (52.7 Gb/s) | -72.76 | +1.11 | C' |
| C' fixed band on the GPU, ring all-reduce (hypothetical) | B DeMo top-k, all-gather | – | measured | 0.799 GB/s (6.39 Gb/s) | -9.22 | +1.32 | C' |
| C fixed band on the GPU, all-gather | A AdamW, dense ring all-reduce | – | measured | none in range | +86.02 | +1.55 | A |
| B DeMo top-k, all-gather | A AdamW, dense ring all-reduce | – | measured | none in range | -63.54 | -0.20 | B |
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 link806 s
- B · DeMo top-khot spot: inter-DC link453 s
- C · fixed band on the GPUhot spot: inter-DC link1,844 s
- E [high] · band in transit (pluggable)hot spot: module compute4,381 s
- E [free] · band in transit (pluggable)hot spot: module optics3,526 s
- C′ · hypotheticalhot spot: compute961 s
- E′ [high] · hypotheticalhot spot: module compute4,200 s
- E′ [free] · hypotheticalhot spot: module optics3,345 s
| Variant | 15.8M (measured): time (s) | 1B: time (s) | Llama-3-8B shape: time (s) | hot spot at the largest |
|---|---|---|---|---|
| A AdamW, dense ring all-reduce | 1.63 | 100.46 | 806.45 | inter-DC link |
| B DeMo top-k, all-gather | 0.93 | 56.48 | 453.35 | inter-DC link |
| C fixed band on the GPU, all-gather | 3.85 | 229.87 | 1,844.39 | inter-DC link |
| E band in transit (pluggable), all-gather [high] | 8.78 | 545.69 | 4,380.89 | module compute |
| E band in transit (pluggable), all-gather [free] | 7.10 | 439.20 | 3,525.75 | module optics |
| C' fixed band on the GPU, ring all-reduce (hypothetical) | 2.16 | 119.91 | 961.04 | compute |
| E' band in transit, summed at the switch (hypothetical) [high] | 8.39 | 523.16 | 4,200.18 | module compute |
| E' band in transit, summed at the switch (hypothetical) [free] | 6.71 | 416.67 | 3,345.04 | module 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.
| Variant | H = 1: time (s) | H = 10 | H = 100 |
|---|---|---|---|
| A AdamW, dense ring all-reduce | 1.63 | 0.34 | 0.21 |
| B DeMo top-k, all-gather | 0.93 | 0.27 | 0.20 |
| C' fixed band on the GPU, ring all-reduce (hypothetical) | 2.16 | 1.40 | 1.32 |
| E' band in transit, summed at the switch (hypothetical) [free] | 6.71 | 1.47 | 0.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.