Skip to main content
Start with SFT, GRPO, or evaluation. Use More algorithms when you need a variant or distillation objective beyond those foundations. Every loop follows this safety envelope:
On error or interruption:
Implement algorithms as caller-owned loops over Whitney primitives. There is no managed recipe submit endpoint and no Whitney SDK requirement for v1.

Runnable reference implementations

Every loop on this page and on More algorithms has a real, runnable counterpart in examples/training/http/ — not pseudocode. sl_loop.py and rl_loop.py are the two foundational loops; most algorithm variants are a single build_loss(sample, cycle, request, ctx) callable plugged into rl_loop.py’s --build-loss flag, ported from tinker-cookbook==0.5.5 (the same version pinned in Whitney’s own backend) where an upstream implementation exists, and cited to it in the code. loss_config values (PPO/GSPO/CISPO’s clip range, DPPO’s divergence thresholds) reaching the provider at all needs a recent fix in Whitney’s Modal trainer bridge — see the note at the top of More algorithms. Every stub file is still a real, non-allocating capability check (python <file>.py --provider ... --model ...) with a docstring explaining exactly what is missing — never a fabricated implementation.