custom. Methods: trl/sft,
dpo, grpo, rm, kto, rloo, opsd.
Observability is platform. TRL’s own metric names (loss, eval_loss, learning_rate) are
aliased onto the console’s series, so the charts fill in without you renaming anything.
Create
train.py in the experiment directory (kind: experiment). Edit that file only if you know you need a fork; hyperparameters belong in config.yaml / --set.
Submit: model and data required
Same idea as verl:--model and --train-data (and usually --validation-data) are required unless the config already has them in the bound fields.
trl/opsd needs a same-vocab teacher (teacher_model in the recipe params). Missing it fails validation.
Gated Hub repos: link HuggingFace on the console so submit preflight can check access. HuggingFace.
Launch
Adapter uses Accelerate (adapter_options.launcher: accelerate). GPU count still comes from --profile / FORGE_CLUSTER_GPUS_PER_NODE.
After training
Checkpoints match HuggingFace layout (checkpoint-*, final_model). Export/eval lifecycle is declared on the recipe (starforge.lifecycle.export_complete, experiment eval.py).