--rollout-function-path miles.rollout.sft_rollout.generate_rollout | Read from disk instead of generating |
--rollout-batch-size = --global-batch-size | One batch read = one optimizer step |
No --n-samples-per-prompt | SFT has one target per input |
--loss-type sft_loss | Cross-entropy instead of policy-gradient |
--calculate-per-token-loss | Standard SFT averages over unmasked tokens |
--disable-compute-advantages-and-returns | No advantage / return needed |
--debug-train-only | Skip SGLang init (we don’t need rollout) |
train_async.py | Async data prefetch overlaps load with train |