How to Self-Host Kimi K2 Instruct With vLLM
Pulling the weights for Kimi K2 Instruct costs nothing. Serving it is the expensive part. This is a realistic look at what self-hosting a large mixture-of-experts model takes, and when the API is simply the better deal.
Why self-host a model this big?
Three reasons hold up. Data never leaves your network. You avoid per-token pricing at high volume. And you keep full control over versioning — a hosted model can be updated under you overnight, breaking prompts you had tuned.
Everything else is a reason not to: hardware cost, operations load, and the fact that you become the on-call engineer for a GPU cluster.
What hardware do you actually need?
| Setup | VRAM | Notes |
|---|---|---|
| FP8, full quality | ~1TB | Multi-node, datacenter only |
| INT4 quantised | ~250-350GB | 4x 80GB GPUs, feasible |
| Smaller quantised | ~150GB | 2x 80GB, quality loss grows |
Because it is MoE, inactive experts still occupy memory even though they do not compute. You cannot squeeze it the way you would a dense model of similar active size. Budget for the whole set of weights, not the active slice.
How do you serve it with vLLM?
- Install vLLM with
pip install vllmand confirm your CUDA version matches the wheel. - Download the quantised weights from Hugging Face into a shared directory.
- Launch with tensor parallelism across your GPUs:
vllm serve moonshotai/Kimi-K2-Instruct --tensor-parallel-size 4 --max-model-len 32768. - Expose the OpenAI-compatible endpoint and point your client at it.
- Cap
max-model-len— the KV cache for very long contexts can exhaust VRAM and crash the server.
Where does self-hosting go wrong?
Cold starts are brutal. Loading hundreds of gigabytes from disk takes minutes, so autoscaling on demand does not work — you must keep instances warm, which means paying 24/7. Quantisation often looks fine in benchmarks and then degrades on your specific task, so always test before committing.
Throughput is the other trap. A single user query might feel fine. Ten concurrent users can queue badly if tensor parallelism and batching are not tuned, and tuning MoE throughput is a genuine skill, not a config flag.
When is the API the smarter choice?
Almost always, unless one of the three reasons above is decisive. Do a break-even calculation: the monthly cost of reserved GPUs versus your current token spend. For most teams below a billion tokens a month, the GPUs cost more and come with real operational risk.
Self-host when data rules forbid the API, when you cross high volume consistently, or when version stability is a hard requirement. Otherwise, rent the model and spend your engineering time on the product.
Key Takeaways
- Kimi K2 Instruct weights are free but need roughly 250GB+ VRAM when quantised.
- MoE inactive experts still consume memory, so small quantisation does not help much.
- vLLM serves it via an OpenAI-compatible endpoint with tensor parallelism.
- Always-on GPU cost and slow cold starts undercut any autoscaling plan.
- Self-host for privacy or scale; otherwise the API is cheaper and safer.
