At a glance
| Engine | Strengths | Typical use |
|---|---|---|
| vLLM | High throughput (paged KV cache, continuous batching), wide model support, OpenAI-compatible server, LoRA, quantization | General production GPU serving |
| SGLang | Fast serving with strong prefix/structured-generation optimisations | High-throughput serving, complex prompting patterns |
| TensorRT-LLM (with Triton or NVIDIA NIM) | Maximum performance on NVIDIA GPUs after model compilation | Latency/cost-critical NVIDIA deployments |
| Hugging Face TGI | Simple deployment of HF models, good integrations | Teams standardised on HF ecosystem (check current maintenance status) |
| Ollama | Very easy local setup, model library | Laptops, dev, small PoCs (see the single-VM PoC post) |
| llama.cpp | CPU and Apple Silicon, GGUF quantized models, edge | Offline/edge, CPU-only servers |
Projects move quickly; check current feature support and release cadence.
Decision questions
- Hardware: data-center NVIDIA, AMD, CPUs, Apple Silicon, edge?
- Scale: single user/dev vs many concurrent users?
- Models and formats: Hugging Face weights, GGUF, FP8/INT4 checkpoints?
- Features: OpenAI-compatible API, tool calling, structured output, multi-LoRA serving, vision, speculative decoding?
- Operations: container images, Kubernetes operators/Helm charts, metrics, upgrades?
- Support: community only, or a vendor-supported distribution?
Typical fits
| Situation | Choice |
|---|---|
| Production chat/RAG on NVIDIA GPUs | vLLM or SGLang |
| Squeezing maximum tokens/sec per GPU at large scale | TensorRT-LLM (compare against vLLM with your models) |
| Developer laptops and quick experiments | Ollama |
| CPU-only or edge devices | llama.cpp |
Benchmark your way
- Same model, same precision, same GPU.
- Your prompt/output length distribution and concurrency.
- Measure TTFT, inter-token latency, throughput, memory use, and startup time.
- Include operational tests: rolling upgrade, scale-out, failure recovery (see the HA self-hosted inference post).
Tip
Standardise on one primary engine for production with an OpenAI-compatible API. Applications then don't care which engine runs underneath, and you can switch after re-benchmarking.
Checklist
- Hardware and scale defined
- Required features listed
- Candidates benchmarked with real traffic shape
- Operational tests done
- One production standard chosen behind a stable API