Skip to main content
experiments/my-grpo/config.yaml
Inherit a base, then write only what you changed. 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:
Topology comes from the profile, not from you: the adapter overwrites node and GPU counts from 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.

Unknown keys are errors

The config is validated in struct mode. A misspelled key fails before the job occupies a node, which is the point. Do not add trainer-only keys the recipe did not declare.

Batch-size relationships

Recipes that declare a relationship between rollout batch and train batch check it. Not divisible is an error. Divisible but unequal gives an off-policy warning, which is sometimes what you want.

Check it worked

No output means the config resolves and every key is declared and in range.

Next

Submitting a job · Experiments · Method catalogue