Skip to main content
Training a model on Veri is a single CLI step: submit a job with veri jobs create (or veri run). GRPO jobs carry their reward function as a local Python file, attached to the job at submit. Once submitted, manage the job through completion with list / get / cancel / download.
For a script-driven flow, you can also use veri train <file.py>: it reads a @training_job(...)-decorated function from the file, attaches the decorated function’s source as the job’s reward, resolves the dataset, and submits the job in one call. See veri run for the full decorator + TOML reference.

Reward files

A method=grpo job needs a reward function (see Reward functions for the contract). Point the config at a local file:
Or pass it from the command line (this overrides reward.file in the config):
Before submitting, the CLI runs an AST-only structural check on each reward file:
  • File parses as valid Python.
  • The file defines at least one function.
The check deliberately stops there: verifying the exact signature would require importing user code, which the CLI refuses to do in its own process. If your reward function imports modules missing from the training runtime, the failure surfaces in the training logs once the job starts. Multiple weighted rewards:
Limits: up to 8 files, 256 KiB each. The server re-validates at submit and rejects violations with HTTP 400. The submitted source is stored with the job and viewable on the job’s dashboard page.

Training jobs

Submit from a config

The config must declare kind = "train". See veri run for the full schema. create returns the job ID. Pipe-friendly form:

Submit inline (no config file)

Inline form requires --base-model AND --dataset. Pass --reward for grpo; omit for sft_video_gen.

Override config values

The convenience flags --base-model, --gpu-type, --gpu-count, --dataset, --reward expand to --set internally. See Override syntax for type coercion and conflict detection.

List, get, cancel, delete

list supports --limit, --after, --status, --method. All commands accept --format json.

Stream logs

veri jobs logs prints everything the job has logged so far (bootstrap and worker output) and exits. Pass -f/--follow to attach to the live stream until the job reaches a terminal state:
Ctrl+C while following detaches; the job keeps running. Cancel explicitly with veri jobs cancel. Following an already-finished job prints its full log. For scripting, poll status instead:

Download a completed checkpoint

The download URL is only populated after the job reaches completed. Trying to download an in-flight job exits 1 with a clear message.

Exit codes

What’s next

Deploy this model

Serve the checkpoint with an OpenAI-compatible endpoint.

Manage datasets

Upload, connect, and validate training data.

The run verb

Config schemas and --set overrides.