Skip to main content
This playbook serves the released deepseek-ai/DeepSeek-V4-Pro-0813 checkpoint on one 8×H200 node. It does not use the older preview weights and does not treat the mutable hosted API ID deepseek-v4-pro as an artifact pin.
Vendor-verified · AI Reserve qualification pending. Pin a qualified vLLM image digest before production. The upstream recipe documents 800K context on H200 to preserve KV headroom; that is a configured ceiling, not a promise of useful concurrency at 800K.

Recipe contract

DeepSeek’s repository has no Jinja chat template. Production serving depends on the engine’s deepseek_v4 tokenizer, reasoning, and tool parsers. Raw Transformers loading is not an equivalent serving contract.

0. Set up your shell

Every command on this page is copy-paste. Paste this block once per terminal and replace only the API key; every later step reads these variables.
Two keys, two jobs. AIRESERVE_API_KEY authenticates you to AI Reserve and creates the volume, quote, and instance. VLLM_API_KEY is a password you invent for the vLLM server you are about to start: step 4 passes it as vLLM’s --api-key, so the public HTTP port rejects anyone who does not send it. No vendor issues it and AI Reserve never sees it.
The Python and TypeScript tabs read the same three variables from the environment. The shell tabs need curl and jq; the Python tabs need requests (python -m pip install requests).

Check stock first

A quote is free and creates nothing. Run one before creating storage, because the volume in step 1 is placed next to this hardware and fails the same way when none is in stock:
A response with availability and price means you can continue. An error with code: no_capacity means this shape is not in stock in that region right now: try another region here and in steps 1 and 2, or wait, and read no_capacity reasons.

1. Allocate persistent storage

Available now. The accelerator hint places the volume in a data center where 8×H200 has stock today, so the instance in step 4 can mount it. If step 0 reported no stock, this call fails the same way.
Wait for the operation to finish before you quote compute. Persistent storage bills independently of compute and is not deleted when the instance terminates.

2. Quote the H200 node

Available now. Inspect the all-in hourly rate before launching. A quote expires after 120 seconds, so run step 4 right after it; if it has expired, run this step again.

3. Download and verify the checkpoint

Manual today. AI Reserve has no managed preload job. Use the exact revision on a loader with the same persistent volume, or allow vLLM to populate HF_HOME on first launch. The verification command requires the current hf CLI from huggingface_hub 1.18 or later, not the deprecated huggingface-cli:
Do not replace this checkpoint with DeepSeek-V4-Pro preview, DeepSeek-V4-Pro-DSpark, or an NVIDIA NVFP4 conversion. They are separate artifacts with different draft modules and qualification requirements.

4. Launch vLLM

Available now, runtime qualification pending. DSpark is attached inside the 0813 checkpoint. Probabilistic draft sampling is the upstream recommendation for sampled chat; benchmark it against target-only serving before promotion.
Wait for the launch operation the same way as in step 1 (wait_for and waitFor are already defined there):
A running instance is not a ready model. vLLM still has to load about 893 GB of weights (downloading them first unless step 3 staged them) and shard them across eight GPUs, which takes tens of minutes. Step 5 waits for /v1/models before the first request. To watch progress:

5. Verify reasoning and tools

Set ENDPOINT from the HTTP connection for port 8000. Start with a small output cap only in non-thinking mode; high and max reasoning may legitimately need very large output budgets.
Wait until the model is loaded. The first successful /v1/models is the readiness signal; until then the port returns connection errors or 5xx:
Run low, high, and max; streaming; multi-turn; and tool-call tests. DeepSeek wraps tool calls in its tagged DeepSeek markup language (DSML), which the engine parser converts to OpenAI-shaped tool_calls. With tools, preserve every prior reasoning_content value. Reject malformed tool markup at the application boundary and retry with a bounded policy rather than executing partially parsed arguments.

6. Qualify performance

Run target-only and DSpark servers from clean restarts, using identical model revision, prompts, and scheduler settings:
Repeat with real 4K, 32K, 128K, 384K, and 800K traces. Sweep concurrency until p95 TTFT or TPOT misses the production objective. Capture HBM, KV capacity, queue time, cache hit rate, OOMs, errors, DSpark accepted length, and tool-call validity. Never use synthetic-acceptance modes as evidence.
Raw GPU instances have no managed replica set, load balancer, autoscaler, health policy, traffic drain, durable log archive, or customer metrics API. Those are required production layers. Keep the previous model revision and image digest deployable until the replacement passes a drained canary.

7. Clean up

Primary sources