A Deployment is not a Playground Session
Where the model comes from
model_source.kind is one of:
model with no version is what makes tp model promote the only step needed to change what
is being served. See the model registry.
Both are pinned on the way in. An artifact source records which exported step it took, and a
model source with no version resolves production once and stores the number it got. A revision
that loads different weights after a restart is not a revision, and re-following a moving
pointer on every launch is how that happened.
Serving configuration
tensor_parallel_size × pipeline_parallel_size × data_parallel_size must equal gpus. Anything
else is a container that either cannot start or quietly uses fewer cards than it was charged
for, and the second is worse because nothing looks wrong.
For a knob the schema does not model, extra_args is passed to the engine verbatim after the
platform’s own flags, and env sets the engine process environment — VLLM_*, NCCL_*,
HF_HOME. Flags the platform has to be right about, such as --port and --model, are
reserved and refused.
Credentials do not belong in env. A private model source takes a governed Model Credential,
which is never echoed back on a read.
Proxied or direct
serve_mode decides whether the console is in the data path.
A
direct deployment captures nothing, so there is no Reflow buffer to mine
later. Pick it for latency, knowing that.
Which Fleet serves it
fleet_id is yours to choose and the platform never picks for you. A deployment is long-lived
and its address outlives the decision, and Fleets differ on things the platform cannot rank:
which department owns the machines, which data may touch them.
Call it
DELETE /api/model-deployments/<id>/tokens/<token_id>.
Change what it serves
allow_downtime: true skips waiting, for a deployment whose cards
cannot hold both revisions at once.
suspend releases the serving capacity and keeps the identity, the revisions, the address and
the tokens. It is not deletion.
Check it worked
status reads ready and current_revision.internal_endpoint is filled. The console’s
Deployments page shows the same thing, plus logs and metrics for the engine process.
desired_state is what you asked for and status is what is observed. They differ while a
revision starts, and a difference that persists has its reason in last_error.