CALIBRATED 2026-07-27 · REC 012
Local AI Frontier

DISPATCH

vLLM vs SGLang: the serving deep-dive

Ollama is the right default for single-user desktop chat — but when does it stop being enough? This is the answer: when you're serving concurrent users, running agents with shared prefixes, or need structured output at throughput. Here's when to move to vLLM or SGLang, and which one.

By Edgar·2026-07-31·11 min·
softwareserving
vLLM vs SGLang: the serving deep-dive — hero illustration

For most readers of this site, Ollama is the right answer — it's the easy on-ramp for single-user desktop chat, and it's what the $300 starter is built on. But "most readers" isn't everyone. The moment you're serving more than one user, running agentic workloads with overlapping context, or needing structured output at real throughput, Ollama's single-user design starts to bind. That's when you move to a serving engine — and in 2026, the two that matter are vLLM and SGLang.

This is the deep-dive that sits above our Ollama-vs-llama.cpp comparison — the "you've outgrown single-user, now what" piece. We run the lab's serving tier on these engines alongside Ollama; here's the honest picture of when to upgrade and which to pick.

When you've outgrown Ollama

Ollama is a single-user model runner. It serves one person (or a small household) beautifully. It is not built for:

  • Concurrent users. Hit an Ollama endpoint with ten simultaneous requests and it queues them, degrading to serial. There's no real batching of multiple users' requests.
  • High-throughput serving. If you're building an app that calls the model continuously, or serving a team, Ollama's per-request overhead becomes the bottleneck.
  • Shared-prefix workloads. Agents and RAG pipelines often send many requests that share a long common prefix (system prompt, retrieved context, conversation history). A naive server reprocesses that prefix every time.
  • Structured output at scale. Constrained generation (forcing JSON, specific schemas) is increasingly important for agentic work, and the specialized engines handle it better.

If any of those describe your workload, you've outgrown Ollama. The $300 starter explicitly flags this: "if ten teammates hit it concurrently, you've outgrown this recipe and need vLLM/SGLang." This is that next step.

vLLM: the throughput workhorse

vLLM is the established serving engine, and for most "I need real serving" use cases it's the default. Its signature feature is PagedAttention, which manages the KV cache like virtual memory — efficiently packing multiple concurrent requests' contexts into available VRAM, dramatically increasing throughput versus naive serving. The practical result: vLLM squeezes far more requests-per-second out of the same GPU than a single-user runner.

When vLLM is the right pick:

  • Max raw throughput per GPU. For general chat/API serving where you want the most tokens-per-second out of your hardware, vLLM is the benchmark. Its PagedAttention is mature and well-optimized.
  • Broad model and hardware support. vLLM supports the widest range of models and backends, including the AMD ROCm path (our AMD readers, take note). If you're on mixed hardware, vLLM is the safest bet.
  • Standard chat/API workloads. For "serve a model, handle N concurrent users, expose an OpenAI-compatible API," vLLM is the workhorse with the most production mileage.
  • Tensor parallelism for multi-GPU. vLLM's tensor-parallel mode splits a model across multiple GPUs (relevant to our multi-GPU readers) to serve models too big for one card.

The honest caveat: vLLM's strength is raw throughput on independent requests. When your requests share a lot of context (agents, RAG), vLLM reprocesses the shared prefix per request — which is where SGLang pulls ahead.

SGLang: the agent/RAG specialist

SGLang is the newer challenger, and its signature feature is RadixAttention — a different KV-cache architecture that automatically detects and reuses shared prefixes across requests. If a hundred agent calls all start with the same 4K-token system prompt and retrieved context, SGLang processes that prefix once and reuses it; vLLM processes it a hundred times.

When SGLang is the right pick:

  • Agent workloads with high prefix overlap. This is SGLang's defining win. Community benchmarks show SGLang delivering substantially higher throughput (multi-x in some agent tests) than vLLM when requests share >60% of their prefix. If your workload is agents looping over shared context, SGLang is materially faster.
  • Multi-turn RAG pipelines. Same mechanism — shared retrieval context across turns gets reused rather than reprocessed.
  • Structured output (JSON schemas). SGLang's constrained generation is a strength; if you're forcing structured outputs for agentic tool use, SGLang handles it efficiently.
  • You're CUDA/NVIDIA only and fine with that. SGLang's ecosystem and hardware support is narrower than vLLM's — it's more NVIDIA-focused, with less mature AMD support. If you're on AMD, vLLM is the safer bet today.

The honest caveat: SGLang's wins are workload-specific. For independent requests that don't share prefixes (standard chat serving), vLLM's PagedAttention is competitive or better. SGLang is the specialist's choice when your workload matches its strengths, not a universal upgrade.

The decision framework

Three questions, in order:

  1. Are you serving concurrent users or building on the API? If no (single-user desktop chat), stay on Ollama. You don't need a serving engine.
  2. Is your workload agent/RAG-heavy with shared prefixes, or do you need structured JSON output? If yes, SGLang — its RadixAttention reuse and constrained-generation strengths directly apply, and the throughput difference at high prefix overlap is real.
  3. Otherwise (general chat/API serving, mixed hardware, max raw throughput)? vLLM — the mature workhorse with the broadest support and the most production mileage.

The short version: vLLM for general serving and broad hardware support; SGLang for agent/RAG workloads with shared context and structured output. Both are genuine production-grade engines; the choice is workload-driven, not a clear "one is better."

How this fits our fleet

Our lab runs the full stack: Ollama for single-user interactive work (the starter path), the specialized engines for serving. On the Intel Arc side specifically, OpenVINO Model Server (OVMS) is the serving path — in bm-012 we measured OVMS serving Qwen3-30B-A3B at ~68 tok/s on the Arc B60, ~1.76× the Vulkan path. So the full serving picture is: Ollama (single-user) → vLLM/SGLang (NVIDIA/AMD serving) → OVMS (Intel Arc serving). Pick by hardware and workload.

The honest limits of moving up

  • More setup than Ollama. These are server software, not one-command installers. Expect Docker, configuration, and more moving parts. The trade is throughput and concurrency.
  • Hardware tier matters more. Serving engines shine when you're actually loading the GPU — they're wasted on a card that's idle most of the time. If your usage is light, the cost math says stay on Ollama and don't over-engineer.
  • SGLang's hardware support is narrower. If you're on AMD or Intel Arc, vLLM (or OVMS for Arc) is the realistic path; SGLang is more NVIDIA-centric today.
  • The carousel moves fast. Both engines ship frequently and the relative performance shifts between releases. The framework above is stable; the specific benchmark numbers aren't — re-check current performance for your exact hardware and model before committing.

The takeaway

Move off Ollama to a serving engine when you've hit its actual limits — concurrent users, agent/RAG shared-prefix workloads, or structured-output-at-throughput. When you do, vLLM is the default for general serving and broad hardware support; SGLang is the specialist pick for agent/RAG workloads where shared-prefix reuse and constrained generation dominate. Neither is universally better; the right choice falls out of your workload. For most readers, Ollama remains the right answer and this entire article is reference material for when it stops being enough.

Next: Ollama vs llama.cpp for the single-user runtime decision this sits above; OpenVINO beats Vulkan on Arc for the Intel Arc serving path; the home AI server fleet for what a multi-machine serving topology looks like in practice.

vLLM/SGLang characterizations reflect mid-2026 community benchmarks; both engines ship frequently and relative performance shifts. Sources: Spheron vLLM vs SGLang 2026, YottaLabs 2026 comparison, r/LocalLLaMA vLLM vs SGLang.

KEEP READING