5.2

Check the first step before you trust the run

At step 0 the trainer and the engine hold the same weights, so the first step shows if the setup is correct.

Step 0 is the cheapest test you get. No training has happened yet, so every difference between the trainer and the engine comes from the setup, not from learning.

When you finish this section, you can check the first step of a run and stop a broken run before it trains on wrong numbers.

Check two values at step 0

At step 0, the trainer computes the log probabilities of the samples with the same weights that the engine used. So two values must be at 0 in the step-0 metrics line:

  • train/ppo_kl, the KL between the trainer's old and new probabilities. Before the first update they are the same.
  • train/pg_clipfrac, the share of clipped tokens. Nothing can be clipped before the first update.

Miles asserts both in its own tests: train/ppo_kl below 1e-9 and train/pg_clipfrac below 1e-10. That assert runs only on the Megatron trainer with --ci-test, on the first optimizer step of each rollout. --ci-disable-kl-checker turns it off. On the FSDP trainer, or without that flag, read the values yourself.

All our runs logged a clip fraction of 0 at step 0.

Compare the gap with your range

The gap between the trainer and the engine is never 0 outside true on-policy mode, because the two sides use different kernels. At step 0 it must still sit inside the range of your healthy runs:

Our runsGap at step 0
Qwen3-0.6B, no top-p or top-k, 17 runs0.0148 to 0.0157
Qwen3-0.6B, top-p 0.95 and top-k 640.0136
Qwen3-1.7B0.0109

The gap depends on the model and the sampler, so build the range for your own setup. A step-0 gap several times your range means the two sides do not compute the same model. Common causes are a wrong checkpoint path on one side, or a model format that one side reads in a different way.

Check the weights directly

Add --check-weight-update-equal to a short test run, with -e MILES_NUM_ROLLOUT=2 -e MILES_EXTRA_ARGS="--check-weight-update-equal" on the run of section 1.1. After the first weight update, Miles compares the engine weights with the trainer weights. With FP8 or another low-precision engine, add --check-weight-update-allow-quant-error so that the check allows the expected rounding.

Run this check once for each new model or image, not on every long run.

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