Skip to main content
Training a model on Veri is a two-step CLI flow: register a reward function with veri rewards upload, then submit a job with veri jobs create (or veri run). 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, bundles the reward, resolves the dataset, and submits the job in one call. See veri run for the full decorator + TOML reference.
veri rewards does not have a server-side DELETE today. The CLI’s delete subcommand removes the reward from your local config, not from the control plane. Reward functions are content-addressed, so re-uploading the same file returns the same id.

Reward functions

Upload

upload runs an AST-only structural check before uploading:
  • File parses as valid Python.
  • The file defines at least one function.
The check deliberately stops there — verifying specific signatures (TRL vs DPO vs custom) requires actually 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. Skip validation explicitly when needed:

List, get, delete

veri rewards test (run the reward against a dataset) is not in Phase-1. It depends on dataset row iteration, which is owed by the SDK first.

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

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

Watch progress

There is no --follow log tailer in Phase-1 (deferred until the SDK exposes streaming). For now:

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.

Evaluate it

Score it on a held-out dataset.

The run verb

Config schemas and --set overrides.