experiments/my-grpo/ with a config inherited from the method’s template, a README of
tuning notes, and a lock file pinning the method version. No GPUs are involved yet.
Before you start
Run it inside a project.tp init my-lab --yes makes one, and every command that needs a
project walks up from the current directory looking for tuneplane.yaml.
name in tuneplane.yaml is the project the console groups your jobs under. Characters
are limited to [A-Za-z0-9._-]. Do not pass --project on submit; it comes from here.
In CI, set TUNEPLANE_CLIENT_REPO_ROOT instead of changing directory. tp login, tp logout
and tp status are global and need no project.
What one experiment holds
custom/custom experiment also gets train.sh, which is its only entrypoint. You can put a
train.py beside it. tp plugin install … --exp adds plugins.lock.json.
The lock file is the method. Adding a framework file to the directory does nothing.
Write only the diff
An experiment inherits from the official bases and holds what you changed:experiments/my-grpo/config.yaml
--profile, so the same experiment runs on a
different GPU type without an edit. See config.yaml for how the layering
resolves.
The top of the scaffold carries a comment block listing the keys people change most, with
useful ranges.
Start from an experiment that already works
--method is ignored, because the lock
comes with it.
Validate before you queue
tp submit runs the same validation. --no-validate skips it, which mostly buys you a queue
wait before the same error.
Browse what you can tune
What else can live in an experiment directory
Check it worked
tp validate my-grpo prints no errors, and experiments/my-grpo/recipe.lock.json names the
method you asked for. Then submit it.
Next
config.yaml inheritance · Submitting a job · SweepsWhy git matters here
Why git matters here
tp submit records the commit, and refuses a dirty tree unless you pass --allow-dirty.
That is what lets you read a result six months later and know which code produced it.Git is not required to submit. Without a repository the run is recorded with no commit, and
the file list changes: instead of git applying .gitignore, the bundle is walked against the
platform’s built-in exclusions and refused above 64 MB, so a checkpoint directory cannot
quietly become an upload. Raise that ceiling with TUNEPLANE_CLIENT_MAX_PACKAGE_MB if a
project genuinely needs to ship something large.