Skip to main content
A deployment is a model running on a GPU you control, exposed at an HTTPS endpoint that speaks the OpenAI Chat Completions API.
Deployments are in early access. GPU capacity for serving is limited, so creates can hit capacity errors and larger shapes may not be orderable — check veri gpu list for what’s live before planning around a specific GPU. Training is fully supported and is the platform’s primary focus today.
The smallest viable example is in the Deploy a HF model quickstart. This page is the mental model and the surface map.

Model sources

To name, store, and reuse a trained checkpoint as a deployable model, see Custom models. A huggingface deployment can also cache the model in your library (cache: true), and it automatically serves from a cached copy when you have one — faster starts, no hub download.

Deployment parameters

You set these at create time, whether from the SDK (client.deployments.create(...)), the CLI (veri deployments create), or a kind = "deploy" config. min_replicas, max_replicas, concurrency_target, scale_to_zero_window_seconds, and idle_delete_after_days can also be changed later on a live deployment — see Scaling. Model, GPU, and provider are immutable: changing those means a new deployment. At call time, chat also accepts a session key for cache-warm routing across replicas.

The deployment lifecycle

Deployments consume GPU credit only while replicas are running — billing is metered per replica, from each GPU box’s launch (warmup included) to its termination. scaled_to_zero charges nothing. Once stopped, billing stops; the deployment row stays for history.
A deployment with min_replicas of 1 or more (the default) never stops billing on its own — you asked for an always-warm floor. Either call stop when you’re done, or create with min_replicas: 0 so it parks itself after the idle window and wakes on the next request.

Calling a deployment

Once a deployment is serving, it accepts OpenAI-shaped requests at https://api.veri.studio/v1/deployments/{dep.id}/chat/completions. Three equivalent ways to call:
Anything that already talks OpenAI works without changes — point base_url at https://api.veri.studio/v1/deployments/{id} (the OpenAI SDK appends /chat/completions for you).
The chat surface is a passthrough to vLLM: streaming (stream=true, real SSE) works, and request parameters beyond temperature / max_tokens (top_p, stop, seed, response_format, tools, …) are forwarded to the engine untouched — vLLM is the schema authority. See OpenAI compatibility for details and caveats (tool calling needs vLLM tool parsing enabled via vllm_extra_args).

Sizing the GPU

Pick a GPU large enough to hold the weights with headroom. Some rough starting points: Serving usually needs less GPU than training the same model. A 7B you trained on 8×A100 typically serves on 1×A100.

Serving newer architectures

Deployments run a platform-managed vLLM version by default. A model architecture released after that version fails to start (vllm_failed_to_start) because vLLM doesn’t recognize it yet. To serve one, pin the deployment to a newer official vLLM image:
Or in a deploy config:
How it behaves:
  • Only official upstream images are accepted: vllm/vllm-openai:<tag> (NVIDIA) or vllm/vllm-openai-rocm:<tag> (AMD). Anything else is rejected at create.
  • The image runs via Docker on the deployment’s box, on every provider, and is used exactly as written: the platform never rewrites or substitutes it.
  • The image is pulled from Docker Hub when the box boots. This pull can be too slow or rate limited to provision reliably, and a deployment that hits the provisioning timeout fails. Explicit images are supported as literal overrides; the supported route for a newer architecture is the platform’s next validated vLLM version.
  • Without vllm_image, the deployment runs the platform-managed vLLM version for its provider, which never pulls at boot.
  • engine: vllm only.
  • The image is set at create and immutable, like model and GPU.
Check the vLLM release notes for the minimum version your architecture needs.
A vllm_image deployment keeps its Hugging Face download inside the serving container, so it can’t be combined with cache: true model-library uploads — the cache upload is skipped.

Observability

Every deployment records request, token, latency, error, cost, and engine-health telemetry. The Deployment observability guide includes an end-to-end smoke test plus dashboard, SDK, REST, and MCP workflows. Lifetime counters and recent requests are available directly from the SDK:
Or via CLI:
Deployments created with trace_bodies: true additionally capture full request/response bodies as traces, browsable from the dashboard, CLI, and API.

Billing

Running deployments consume GPU credit until you stop them (or, with min_replicas: 0, until they park themselves). See Billing for states and cadence.

Where to go next

Quickstart: deploy a model

Spin up + chat + stop in ~10 minutes.

Train your own model

Then deploy it from a training_job source.

Monitor your deployment

Request metrics, GPU telemetry, and logs.

CLI deployment commands

veri deployments create / chat / stop.