Infrastructure for
continually improving AI.

Welcome back, Demo

Training Jobs

Getting Started
url-extraction-agent-grpojob_harness_ur
running

Qwen/Qwen3-4BGRPO_HARNESS10/21/2026

8× H100-80GBaws

Cost$61.4400
Duration240.0 min
Progress42/100
Loss—
View metrics in W&B
qwen-math-grpo-livejob_grpo_math_
running

Qwen/Qwen3-4BGRPO10/21/2026

2× MI300Xrunpod

llama-support-sftjob_sft_suppor
queued

meta-llama/Meta-Llama-3-8B-InstructSFT10/21/2026

1× A100-80GBrunpod

Convert product usage into foodthat your AI uses to continually improve.

Every request through your endpoint becomes a training example.

Get started →

Start an SFT or RL run on the data you collected. We provision the GPUs, handle checkpointing, and stream logs end to end.

Get started →

Ship a checkpoint to an OpenAI-compatible endpoint in one click.

Get started →

Compare versions on live traffic, then feed the results straight back into the next run. The loop keeps closing.

Get started →

Everything you need to build AI that builds itself.

A self-improving flywheel

Monitors flag what your model gets wrong on live traffic, and the next run trains on it. Run the loop yourself or let your coding agent drive it.

Get started →

Agents that run in our cloud

Give an agent tools and secrets, then run it in a sandboxed cloud session. Every step lands in a transcript you can score.

Get started →

Every primitive, one API

Datasets, SFT, DPO and GRPO training, OpenAI-compatible endpoints, evals, monitors and traces.

Get started →

GPUs without the ops

H100, A100 and L4 on demand, billed by the second. Endpoints autoscale, and every job runs in its own secure sandbox.

Get started →

Meant to be
easy.

Run an experiment in a few lines of code with the Veri SDK, then compare results before they reach production.

SDK
from veri_sdk import training_job@training_job(    base_model="Qwen/Qwen2.5-0.5B-Instruct",    dataset="hf:openai/gsm8k",    dataset_config="main",    column_mapping={"question": "prompt"},    gpu_type="L4-24GB",    gpu_count=1,)def reward(completions, answer, **kwargs):    gold = [a.split("####")[-1].strip() for a in answer]    return [1.0 if g in str(c) else 0.0            for c, g in zip(completions, gold)]

Maximize capability.

Iterate faster.

Get started