Profiles
A profile is YAML laid over warmctl's defaults. Only schema, id, model, parallel and hardware are needed; every other key has a default.
schema: warmctl.profile/v1 id: qwen3-8b-h100-tp1 model: {id: Qwen/Qwen3-8B, revision: b968826d…, served_names: [qwen3-8b]} parallel: {tp: 1} hardware: [h100-80gb-sxm] vllm: max-model-len: 32768 max-num-seqs: 64 kv-cache-memory-bytes: 47244640256 enable-chunked-prefill: true graphs: mode: FULL_AND_PIECEWISE decode_batches: [1, 2, 4, 8, 16, 24, 32, 48, 64] warmup: decode_prompt_tokens: 32 prefill_tokens: [512, 2048, 8192] resources: {memory: 96GiB}
The catalog's profiles ship in the binary: warmctl profile list. A key set to null removes the default. build --set vllm.<flag>=…, env.<NAME>=… or ipc=… overrides a key for one build.
Keys
| Key | Default | |
|---|---|---|
schema | warmctl.profile/v1 | |
id | the profile's name | |
image | pinned vLLM image | the engine's container image, by digest |
model.id, .revision | Hugging Face id and the revision the weights are | |
model.served_names | names the API answers to | |
model.container_path | where the weights are mounted in the container | |
parallel | tp, and dp, ep for data and expert parallel, all within one host | |
hardware | the hardware ids the profile is meant for | |
vllm | see below | any vllm serve flag, without the dashes in front |
env | see below | environment of the engine; null unsets a default |
graphs.mode | FULL_DECODE_ONLY | CUDA graph mode: FULL_DECODE_ONLY, FULL_AND_PIECEWISE or PIECEWISE |
graphs.decode_batches | [1, 2, 4, 8] | batch sizes captured as graphs |
graphs.compile_mode | 3 | vLLM compilation level |
warmup.prefill_tokens | prompt lengths warmed before the snapshot | |
warmup.decode_prompt_tokens | prompt length for the decode batches | |
warmup.generated_tokens | 32 | tokens generated per warmup request |
canary.mode | warn | bitwise, tolerance or warn: how strictly a restore must match the donor |
canary.tolerance | 0.001 | for tolerance |
canary.prefix_tokens | 512 | length of the canary prompt |
resources | 64GiB · 16GiB · 16 | memory, shm, cpus, pids of the container |
restore.warmup | canary | what runs after a restore: none, canary or full |
restore.cuda_restore | auto | auto, serial or parallel |
ipc | auto | cross-process GPU memory: auto, interpose (NVIDIA cuInterpose) or native |
Defaults that matter
The engine always runs with what makes a snapshot possible: enable-sleep-mode, enable-nccl-comm-suspend and warmctl's worker extension. It also gets max-model-len: 2048 and 1 GiB of KV cache, so a serving profile sets both. Its compile and JIT caches live under /workspace, which the snapshot carries, and Hugging Face runs offline. warmctl profile show ID prints everything a profile resolves to.
Hardware ids
| Id | GPU |
|---|---|
h100-80gb-sxm | NVIDIA H100 80GB HBM3, NVLink |
h200-141gb | NVIDIA H200 |
b200-180gb | NVIDIA B200 |
l40s-48gb | NVIDIA L40S, PCIe |
A snapshot's platform tag is the GPU count, the hardware id and the driver it was built with: 8xh100-80gb-sxm-580.173.02. Platforms and drivers explains why.