From proof of concept to production meltdown, and how llm-d keeps your inference stack alive at 128 GPUs and beyond.
Your proof of concept runs beautifully on a single GPU. 140ms TTFT, 80 req/s throughput, 0.2% error rate. vLLM with PagedAttention handles everything gracefully. But production has other plans.
You scale from 1 GPU to 128. Every step reveals a new failure mode that did not exist at smaller scale.
An illustrative simulation: one overloaded pod triggers a chain reaction, and within about 90 seconds the whole cluster reaches zero serving capacity.
Kubernetes-native building blocks — vLLM under an intelligent Inference Gateway — that remove the preconditions for cascade failure.
The Endpoint Picker extends the Gateway API to score every pod on load, queue depth, and cache state instead of routing round-robin.
Sends each request to a pod that already holds matching KV-cache blocks, so shared context skips redundant prefill work.
Requests that share a prompt prefix land on the same pods, keeping cache hit rates high instead of thrashing across the fleet.
Splits compute-bound prefill from memory-bound decode onto separate workers, so long prompts stop stalling token streaming.
A Gateway API Inference Extension resource that manages model-server pods as one pool the gateway understands, keeping endpoint churn off the control plane.
Steers traffic away from saturated pods before they tip over, removing the trigger that turns one slow pod into a cluster-wide cascade.
An illustrative scenario at 128 GPUs, with and without llm-d. The shape of the curve is the point, not the exact numbers.
| Metric | Without llm-d (128 GPUs) | With llm-d (128 GPUs) |
|---|---|---|
| TTFT (p99) | 5,000ms | 95ms |
| Throughput | 3 req/s | 760 req/s |
| Error Rate | 60% | 0.08% |
| Cache Hit Rate | 8% | 85%+ |
| Scheduler Queue | 120 deep | 1.5 |
Every stage builds on the last. llm-d does not replace vLLM. It orchestrates it into a production-grade distributed inference platform.