R.5

Index of figures

Every figure of this manual, in order, by the one claim its caption makes.

Each row links to its figure, and the claim is the claim: field of each figure block. Every measured number in a figure comes from our runs on one DGX Spark. The charts read the summary of those runs when the manual is built. The colours follow the palette of the front matter:

  • blue is the trainer: the FSDP actor, its weights, and its optimizer
  • violet is the rollout engine: the SGLang server that writes the answers
  • green is data and rewards: prompts, answers, groups, and scores
  • amber is a lifecycle step, such as a phase of a training step or a weight update
  • teal is durable state: checkpoints, logs, and the summary files
  • rose is a failure: a dead engine, an out-of-memory kill, or a crash
  • grey is outside Miles: the host, Docker, and Ray
Fig.The claim it makes
1.1Each step runs rollout, scoring, log probabilities, training, and a weight update, in that order, on one GPU.
1.2Training and rollout take almost all of a step, and the hand-offs take about 2 s.
1.3Without a watchdog, a dead engine left the job running for 63 minutes with an idle GPU.
1.4The reward of one step jumps around, and the trend over 48 steps goes up for every seed.
1.5The mean answer length falls from about 720 to about 460 tokens, so fewer answers hit the 1,024-token cap.
2.1The estimated trainer state of a 4B model is about half the machine, and both 4B runs reached the Ray limit.
2.2On the steps that were clean in both runs, the engine kept loaded saved 0.6 to 1.8 s of each rollout.
2.3On a GB10, Ray reads one memory for the whole node, so its kill means the machine is close to full.
2.4From 0.6B to 1.7B, the weight update grew 1.4 times, and the trainer offload grew 2.6 times.
3.1The reward gain with 4 and with 16 answers per prompt fell inside the range of three seeds with 8.
3.2A step that dropped 16 groups or fewer needed one batch of 48 prompts, and a step that dropped more needed two.
3.3Over 12 steps on one seed, the reward counted before the filter was higher in 8 of the 12 steps.
4.1With top-p and top-k replay, the gap was lower at every one of the 12 steps.
4.2The two deterministic Triton runs gave the same gap at step 0, and all four runs kept a gap near 0.015.
5.1Steps that overlapped a heat pause took about 45 s longer than the clean steps.
7.1Each of the five symptoms we hit has one first check and one fix.
8.1Deterministic inference fixes the engine half, and only the true on-policy contract makes both halves the same.
8.2Only one side holds the GPU memory at a time, and the timed hand-offs take about 2 s of each step.

Miles radixark/miles:latest, Miles main of 2026-10-15 · 08752a1 · 2026-10-15 · Edition 2026.10