Skip to main content
Managed training on Veri is dataset + base model → trained checkpoint. You submit a training job; Veri provisions the GPU, runs the loop, streams metrics, and uploads the result. You either download the checkpoint or deploy it directly. The training method you pick decides how outputs are scored. GRPO takes a reward function; SFT and DPO learn directly from examples or preference pairs. For the smallest end-to-end run, see the Managed GRPO quickstart — one decorated reward and one command.

Methods

GRPO is the default. All methods support LoRA and QLoRA.
grpo_agentic is being rebuilt and is not currently runnable as a managed method. To run multi-turn, environment-based RL today, use a custom script with your own framework (for example verl) and environment.

The training loop

What happens at each transition:
  • queued — job row written, balance pre-checked (HTTP 402 if insufficient credit). No spend yet.
  • provisioning — Veri leases a GPU and the instance boots and self-configures the worker. started_at is still null. Once the instance boots, the GPU is rented and cost accrues from this point, even before the first training step. A job that never secures a GPU (for example CAPACITY_UNAVAILABLE) rents nothing and is not billed.
  • running — worker reports its first step. started_at populates. Metrics start streaming.
  • completed | failed | cancelled — pod auto-terminates. Cost is attributed (cost_attributed_at). Stripe credit is deducted (billing_deducted_at). The full stdout is uploaded to S3 and available via GET /v1/training_jobs/{id}/logs/full.
Cancellation is cooperative: the worker terminates at the next checkpoint boundary, not instantly.

Failure modes

When a job ends in failed, error.code carries one of: The last 200 log lines from the worker are surfaced in error.log_tail for fast triage; the full stdout is uploaded to S3 and accessible via GET /v1/training_jobs/{id}/logs/full.

Submitting a job

Choosing a launch region

Capacity is per-region. If your job fails with CAPACITY_UNAVAILABLE, another region may have the GPU you need right now:
Pass region="us-west-2" to client.training_jobs.create, the @veri.train decorator, or veri train --region us-west-2. Omit it to launch in the default region. Unknown or not-yet-available regions are rejected at submit with the list of valid options.

Choosing a GPU provider

Veri supports multiple GPU providers — AWS (NVIDIA, default), Hot Aisle (AMD MI300X), and Vast.ai (NVIDIA marketplace). Pass provider at submit time to choose where your job runs:
See GPU providers for the full provider list, GPU types, pricing, and availability checks.
This snippet uses the low-level client and assumes you have already uploaded a dataset and reward function (the dataset and reward_fn it references). For a runnable end-to-end version that handles those uploads for you with @training_job + veri train, see the Managed GRPO quickstart.
Same shape from the CLI:
with kind = "train" in the TOML config. See the CLI training reference for the full schema.

Where to go next

Managed GRPO quickstart

End-to-end on a small model: one decorator, one command.

Deploy your checkpoint

Skip downloading — serve from Veri with an OpenAI-compatible API.

Evaluate it

Score the trained model on a held-out dataset.

CLI training commands

veri run, veri jobs, veri rewards.