Skip to main content
An experiment is a self-contained directory: experiments/<name>/, containing config.yaml (the tuning entry point), README.md, and recipe.lock.json (the method lock). Create a repository first with sf init, then run the commands below inside that repository. Disk layout and upload excludes: Lab layout. Inheritance details: config.yaml.

Create an experiment

The scaffold comes from the recipe’s official template: config base, README tuning notes, and lock file all in place at once.

config.yaml: write only the diff

An experiment config inherits from official bases via defaults and only writes the keys you want to change:
experiments/my-grpo/config.yaml
Hardware and distributed details (parallelism, GPU memory tuning, NCCL) are not written in the experiment config — they are delivered from the server-side registry via --profile at submission time. Switching GPU types for the same experiment requires no config change.
The top of the scaffold contains a “tuning cheat sheet” comment block listing the method’s most commonly changed keys (learning rate, batch, sequence length, validation interval, etc.) with empirical ranges.

Local validation

The validator checks against the recipe declaration:
  • Key validity: struct mode; misspelled config keys fail immediately;
  • Types and ranges: learning rate, batch, etc. are checked against declared types and value ranges;
  • Batch size relationships: methods like GRPO validate the divisibility relationship between rollout batch and train batch (divisible but unequal lengths produce an off-policy warning; not divisible is an error);
  • Data declarations: required --model / --train-data for verl / TRL are caught early if missing.
sf submit automatically runs the same validation; --no-validate skips it (not recommended).

Browse methods and hyperparameters

The console Methods page (/methods) has a visual version of the same catalog.

Comparing runs in the console

The jobs area on a project detail page is a dense comparison matrix:
  • Job name and status stay fixed while metric/config columns scroll horizontally;
  • Rows and columns are both virtualized, so hundreds of runs × hundreds of columns render only nearby cells;
  • All latest metrics and config values that vary across runs are visible by default; constant config columns are available from the Columns panel;
  • Search jobs, filter status, search/hide/pin columns, and select 2–4 runs for review comparison.

What else can live in an experiment directory