Pretrain¶
A run spec is one TOML file that says what one training run is; in identifiers a run is an arm,
the name it was published under. Its tables are [arm] (the run's id, backbone, stage and track),
[init] (the checkpoint it starts from: a published checkpoint, a base preset base:<name> or a prior
run's own checkpoint run:<run id>), [data] (the frame index it trains on), [signal] (the compiled
labels it binds), [norm] (the normalisation statistics) and [recipe] (a preset of conf/recipes/,
the seed and the overrides the run needs).
For your method, qvla train pretrain writes it: the run spec of the paper's
pretraining for a backbone, at that backbone's paper budget, with your compiled
labels named by name, under <runs>/<run id>/, and trains it there in
the backbone's environment. The roots (<corpus>, <cache>, <runs>) come from qvla.toml in the
directory you run it from.
What you get. Your method's pretraining run, <runs>/pi05.pretrain.example.keep_top/, and the
command that fine-tunes it.
What you need. GPUs, the backbone's environment (install), the pretraining data and your method's compiled labels (Write a quality method).
| step | command | what it produces |
|---|---|---|
| 1. get the pretraining data | qvla data get corpus |
the pretraining data under <corpus>/qvla-v1-corpus/, about 36 GB |
| 2. pretrain | qvla train pretrain --labels example.keep_top --backbone pi05 |
the run pi05.pretrain.example.keep_top |
| 3. fine-tune and evaluate it | Fine-tune and evaluate | its all-24 success rate |
1. Get the pretraining data¶
About 36 GB, nearly all of it the per-task episodes that π0.5 reads and the merged LeRobot copy that SmolVLA and X-VLA read:
qvla data get corpus
2. Pretrain¶
qvla train pretrain --labels example.keep_top --backbone pi05
It checks the run's inputs before any GPU time, fetches the backbone's base weights if they are not
there yet, and trains. If the backbone's environment is not built, it stops and names the command
that builds it (qvla env build pi05). When it finishes it prints the next command,
qvla train finetune --from pi05.pretrain.example.keep_top: the run's id is
<backbone>.pretrain.<labels name> (--run NAME gives it another name).
--backbone smolvlaor--backbone xvlatrains the same labels on the other backbones. That holds for the example, which only selects frames. A method that sets loss weights or quality tags compiles once more for those two backbones, which weigh or tag the frames their own sampler draws, under another name, as the paper's weighting methods do (axis_qvla/signals/methods/awr.py; compiled labels); pass that name to--labels. Training checks that the backbone can train the labels and names what it lacks.--seed Npretrains another training replicate. The default is the paper's first, 42 for π0.5 and 0 for SmolVLA and X-VLA; another seed gives the run id.s<N>(--seed 43:pi05.pretrain.example.keep_top.s43). A claim about your method needs three, paired with the paper's (Fine-tune and evaluate). A method whose labels involve randomness, like the size-matched control, compiles its labels once per training seed under a per-seed name,python experiments/examples/keep_top.py --scores … --seed 43 --name example.keep_top.s43, and pretrains them under the method's run name,qvla train pretrain --labels example.keep_top.s43 --backbone pi05 --run example.keep_top --seed 43, which makespi05.pretrain.example.keep_top.s43. The compile writes the control alongside, asexample.keep_top.s43.control, which pretrains the same way with--run example.keep_top.control.--printwrites the run spec and prints the one command that trains it, for a SLURM job, without training.- Pretrain the size-matched control the same way, so your result can be contrasted with it:
qvla train pretrain --labels example.keep_top.control --backbone pi05makes the runpi05.pretrain.example.keep_top.control, which Fine-tune and evaluate takes through the same two commands as yours.
Next: Fine-tune and evaluate.