llama.cpp + vLLM
The serving deep dive. llama.cpp is the single-binary, air-gap-friendly, max-hardware-breadth server (GGUF). vLLM is the production GPU serving engine (PagedAttention, continuous batching, tensor parallelism, AWQ/GPTQ/FP8).
llama.cpp and vLLM are complementary, not competing. llama.cpp is a single C/C++ binary with no Python runtime, maximal hardware breadth (CPU, Metal, CUDA, ROCm, Vulkan), and air-gap friendliness. vLLM is a Python-based GPU serving engine built for production throughput. You choose based on deployment context, not preference.
The quant formats follow the server. llama.cpp uses GGUF (its own format, with k-quants like Q4_K_M). vLLM uses AWQ, GPTQ, and FP8 (GPU-native formats). You cannot serve a GGUF in vLLM or an AWQ in llama.cpp. The quant choice is downstream of the serving choice.
vLLM's throughput comes from PagedAttention and continuous batching. PagedAttention manages the KV cache like virtual memory, eliminating fragmentation waste. Continuous batching admits new requests mid-generation. Together they are why vLLM is the default for production GPU serving with an OpenAI-compatible API.
llama.cpp is the air-gap default. One static binary, no telemetry, no network calls, runs on whatever hardware exists. For HIPAA, government, and disconnected environments (Pillar 7), it is the standard. vLLM is the cloud/production default where GPUs and throughput matter.