wandb_project, to Weights & Biases. Each forward_backward response also carries service-side metrics for the loss it computed. This page covers what to look at in each place and how to act on what you see.
The console
The Post-training page in the console has two tabs:- Training sessions: Every session in the project, filtered by default to the ones you created. Open a session to see its status, step counter, checkpoints, and the Weights & Biases run it reports to.
- Model resources: Active resources with their status, hourly rate, and estimated spend, with past resources listed below them. Create a resource here, or stop one that’s still running.
Run artifacts
Every cookbook recipe writes a record of the run toruns/<run_name>/:
metrics.jsonl, so you can analyze a run offline without W&B. The per-step completion dumps are the fastest way to see what the model is producing.
Weights & Biases
When a config setswandb_project, the cookbook logs every step to that project. GRPOConfig defaults it to post-training-cookbook, and the SFT and DPO configs leave it unset.
If WANDB_API_KEY isn’t set, wandb.init raises an error, or waits at a login prompt in an interactive terminal, after the model resource is already provisioned. To run without a W&B account, set WANDB_MODE=offline to keep the W&B logs on disk, or set wandb_project=None to turn W&B off.
The cookbook also forwards wandb_project, wandb_entity, wandb_group, and wandb_run_name to the session as metadata, and the console shows them on the session’s page. The cookbook doesn’t send the W&B run ID or URL, so the console shows these fields without a link to the run. The run’s URL is in manifest.json. To compare related runs side by side, such as the arms of a sweep, give them the same wandb_group.
What to watch first
GRPO metrics
Service-emitted metrics
Everyforward_backward call with LOSS_TYPE_GRPO returns a metrics dict, which the cookbook logs under the fb/ prefix. These are the health metrics for the update itself.
loss itself is a poor progress signal for GRPO. It can be flat, slightly negative, or non-monotonic while reward improves. Watch reward and accuracy for progress, and the metrics above for stability.
Cookbook metrics
The cookbook computes these after sampling and scoring. If you write your own loop, compute the equivalents yourself.Dynamic sampling metrics
The cookbook logs these metrics whenmax_sampling_attempts is above 1, which turns on dynamic sampling. Async collection doesn’t log them.
Validation metrics
Everyvalidation_interval steps, the loop samples the validation set greedily and logs:
- Single-turn runs:
val/accuracy,val/reward_mean, andval/mean_response_length. - Multi-turn runs: Per-episode equivalents such as
val/reward_mean,val/num_turns_mean, andval/terminated_ratio.
val/accuracy is the headline metric. It should rise and then plateau. Plateaus are normal. Two patterns signal a problem:
- Reward hacking: Validation accuracy falls while training reward keeps rising.
- Length runaway:
val/mean_response_lengthdrifts upward, even when reward looks fine.
Multi-turn metrics
Multi-turn GRPO replaces per-completion stats with per-episode ones:num_turns_mean, terminated_ratio (episodes that ended on task logic), truncated_ratio (episodes cut short by the turn limit, context overflow, a parse failure, or the environment), parse_failure_ratio, and context_overflow_ratio. Two patterns point to specific fixes:
- Low
terminated_ratiowith hightruncated_ratio: Episodes run out of turns or context before finishing. Raisemax_turnsormax_model_length, or simplify the task. - Rising
parse_failure_ratio: The model is emitting malformed tool calls. Check the system prompt and tool schemas.
Async collection metrics
The cookbook logs these metrics every step whenmax_steps_off_policy is set. Together, they show whether async collection is keeping the generators busy or throwing most of its rollouts away.
For the service’s view of the policy versions, read
policy_state from session.retrieve():
trainer_step: The version the last optimizer step produced.target_weights_version: The version the latestweights_syncpromised the generators.applied_weights_version: The version the generators are serving.
SFT metrics
DPO metrics
Each step, DPO logsloss, which should trend down, and pairs. Every val_interval steps, validation reports:
Next steps
Reinforcement learning with GRPO
The settings each metric points you toward.
Pricing
Turn
timing/step_total_s into a cost estimate.Manage checkpoints
Save the run once the metrics look right.
Manage model resources
The lifecycle states the console shows.