experiments/my-grpo/config.yaml
tp validate and tp submit resolve this
file with the same code the cluster-side launcher uses.
A custom job can ignore this file entirely, if its train.sh never reads it. Catalogue methods
always read it.
How defaults resolve
defaults entries are paths relative to this file. Each one is resolved recursively, so a
base may have defaults of its own. Later entries win over earlier ones, and keys in the
experiment file win last.
The comment block at the top of the scaffold lists the keys people change most, with ranges
taken from the recipe. It is a cheat sheet, not configuration.
Which layer wins
Four layers, later wins:TUNEPLANE_CLUSTER_NUM_NODES and TUNEPLANE_CLUSTER_GPUS_PER_NODE. Going from four GPUs to
eight is a different --profile, never a config edit.
--set is type-checked against the recipe’s declared parameters before anything is uploaded. A
typo fails on your machine.
Replace a whole mapping instead of merging it
Deep merge is the default. Put_override_: true in a mapping to replace it wholesale. The
marker is stripped and never reaches the trainer.
Interpolation
${...} values stay as strings, and tp validate skips numeric checks on them — it cannot see
the value. Two forms are understood when checking that a local data path exists,
${oc.env:GSM8K_DATA_DIR}/train.jsonl and ${GSM8K_DATA_DIR}/train.jsonl, for the names
GSM8K_DATA_DIR, ALPACA_DATA_DIR and QA_RL_DATA_DIR. Anything else containing ${ is left
alone.