[email protected]

Basics · Local AI for Business

SGLang vs. vLLM: which inference engine for which load?

Editorial note: Versions, commands and prices may change. Please verify critical steps independently before production use. This guide does not replace individual professional, legal or tax advice.

Deciding which engine to run language models on in your company? In LLM hosting, vLLM runs with an OpenAI-compatible API and operations by WZ-IT. Anyone who needs a dedicated GPU can use the managed GPU server from €699 net per month. View LLM hosting · Clarify the sizing together

The question "SGLang or vLLM" is usually answered with a factor: x times faster, y percent lower GPU costs. Such numbers hold for one model, one version, one GPU and one load profile, and published tests reach opposite results. This article therefore compares what both projects document and provides a decision table and a measurement plan for your own load. The statements come from the project documentation, the repositories and the GitHub API, the benchmark statements from the source pages named, as of 28 October 2026. The article contains no benchmarks of its own.

Table of contents

Short answer

Both engines are Apache-2.0 licensed, run on NVIDIA and AMD hardware, speak the OpenAI API and cover the usual features. The difference lies less in the feature list than in behaviour under load with recurring prefixes and in maturity per model and platform.

  • Without a noticeable prefix share (single documents, classification, batch), two published tests show a tie, a third sees vLLM ahead on throughput and first token. The choice then follows model support and operations.
  • With a high prefix share (agents with long tool descriptions, long system prompts, multi-turn conversations), two vendor tests report advantages for SGLang, a third with a different load sees vLLM ahead. A comparison of your own is worthwhile here.
  • Blanket factors from blog articles do not transfer, see the table of test conditions below.

Architecture: two data structures for the same purpose

vLLM manages the KV cache in blocks (PagedAttention, paper) and groups requests with continuous batching. Prefix caching (APC) forms a hash for every full block from the hash of its predecessor, the tokens of the block and extra values such as the LoRA ID or a cache salt for tenant isolation; only full blocks are cached (vLLM, design). In the source code the method is on by default as long as the model supports it (arg_utils.py).

SGLang stores the KV cache in a radix tree (RadixAttention, paper). The tree is on by default (--disable-radix-cache is False); for individual models and operating modes SGLang switches it off itself, for example on decode servers of prefill/decode separation. Under memory pressure a policy picks the prefixes to evict: lru as default, plus lfu, slru, priority and tlru, the last one for agents and multi-turn conversations with a target for time to first token (SGLang, eviction). HiCache adds two further tiers for the KV cache: CPU memory and external storage.

For an identical system prompt, both behave the same: the shared part is not recomputed. How a hash over blocks and a radix tree differ for partially overlapping prompts depends on block size and load profile; no documentation quantifies it. Both methods only shorten prefill. vLLM itself states that prefix caching brings no gain for long answers, because generation dominates there (vLLM, APC).

Features and hardware according to the documentation

Feature vLLM SGLang
Licence Apache-2.0 Apache-2.0
Steward listed on pytorch.org as a PyTorch Foundation project hosted by LMSYS (non-profit)
Orientation per README "Easy, fast, and cheap LLM serving for everyone" optimised for agentic workloads, large-scale serving and RL rollouts
Hardware NVIDIA, AMD, Intel, CPUs (x86, ARM, PowerPC, IBM Z experimental); via plugins e.g. TPU, Gaudi, Ascend, Apple Silicon NVIDIA (e.g. RTX PRO 6000, DGX Spark), AMD Instinct, TPU v6e/v7, Intel, Apple Silicon, Ascend
Speculative decoding EAGLE, MTP, draft model, PARD, n-gram, suffix, DFlash EAGLE-2/3, MTP, draft model, NGRAM, DFlash, UNO
Structured output xgrammar, guidance xgrammar (default), Outlines, llguidance
Tool calling parser per model (--tool-call-parser) parsers e.g. for DeepSeek, Llama, Qwen, Mistral, GLM, Kimi K2
Multi-LoRA dense and MoE several adapters per batch (S-LoRA, Punica)
Quantisation FP8, MXFP8/MXFP4, NVFP4, INT8, INT4, GPTQ, AWQ, GGUF and more FP8, MXFP4, AWQ, GPTQ, ModelOpt (FP8/FP4) and more
Prefill/decode separated documented, marked experimental PD disaggregation with Mooncake and NIXL
Expert parallelism --enable-expert-parallel, DeepEP backends, load balancing EPLB (--enable-eplb) --moe-a2a-backend (DeepEP, Mooncake, NIXL), load balancing EPLB
API OpenAI-compatible, Anthropic Messages, gRPC OpenAI-compatible, Anthropic- and Ollama-compatible
Metrics Prometheus /metrics, prefix vllm:, prefix cache hits Prometheus with --enable-metrics, prefix sglang:, cache_hit_rate
Container vllm/vllm-openai lmsysorg/sglang (CUDA images only with CUDA 13 now)

Sources vLLM: README, features, installation, metrics, PyTorch Foundation. Sources SGLang: README, documentation, speculative decoding, PD separation, expert parallelism, metrics.

The table shows that something is documented, not that it runs smoothly for a particular model on a particular GPU. Only a test with the target model shows that.

Maturity and release cadence

vLLM SGLang
Current version v0.32.0, 18 October 2026 v0.5.22, 19 October 2026
Previous versions v0.31.0 (5 Oct), v0.30.0 (22 Sep), v0.29.0 (9 Sep), v0.28.0 (26 Aug) v0.5.21 (2 Oct), v0.5.20 (18 Sep), v0.5.19 (5 Sep), v0.5.18 (22 Aug)
Interval 13 to 14 days 13 to 17 days

Both projects release roughly every two weeks and carry a version number below 1.0. In practice that means: pin versions, read release notes, test updates. Examples of breaking changes from the documentation: since v0.5.20 SGLang no longer publishes CUDA 12 images (last tag v0.5.19-cu129, installation); vLLM removed the request fields guided_* in v0.12.0 in favour of structured_outputs (vLLM, structured outputs). GitHub stars are deliberately not a criterion here: they measure awareness, not suitability.

Benchmarks: sources and their conditions

Source Who measures Conditions per the source Result (qualitative) Limit
SGLang paper, December 2023 SGLang authors comparison with systems of the time (including vLLM v0.2.5), mostly A10G GPUs, tasks such as agent control, JSON decoding, RAG, multi-turn chat up to 6.4x higher throughput status of 2023; vLLM has had prefix caching since
Spheron, updated 19 October 2026 GPU cloud provider 1x H100, Llama 3.3 70B in FP8, vLLM v0.18.0 and SGLang v0.5.9; runs with unique prompts and with 80% shared prefix tie without prefix, SGLang with shorter time to first token for a shared prefix versions far below today's
RunPod, updated 13 September 2026 GPU cloud provider 2x H100, DeepSeek-R1-Distill-Llama-70B, multi-turn prompt with about 7,000 tokens of context SGLang ahead on cache hits; vLLM faster on a single request without context single requests, no load
Jarvislabs, 18 May 2026 GPU cloud provider H100, Qwen2.5-7B, Qwen3-30B-A3B, Qwen3-32B; ShareGPT and RULER 16K vLLM as the strongest default; SGLang with lower decode latency in some runs but a later first token versions not stated
Red Hat Developers, 14 October 2026 trade article, reports the Modal measurement Modal: more than a dozen models, ten combinations of input and output length, NVIDIA GPUs, default settings, prompts from random novel excerpts both comparable hardly any shared prefixes; the article names this limit itself
InferenceX (SemiAnalysis), continuous analyst firm, Apache-2.0 repository runs through public GitHub Actions workflows, recipes in the repository, many models and GPUs no single figure in this article hardware provided by AMD, NVIDIA and cloud providers according to its acknowledgements

The deviations follow from the conditions: versions differ by more than ten releases, models and quantisation change, and the metric is sometimes throughput in tokens per second, sometimes time to first token, sometimes latency per output token. A test with a high prefix share and one with random prompts measure different things. Numbers from these sources therefore do not belong in a hardware decision, but the direction does: the prefix share is the quantity that tips the balance.

Measuring your own comparison

  1. Derive the load profile from your own logs: input and output length, share of common prefixes (system prompt, tools, conversation history), concurrent requests at peak. The number of concurrent users is usually smaller than the number of people with access.
  2. Create equal conditions: same GPU, same model, same quantisation, pin container tags, record both versions, start parameters from the projects' recipes.
  3. One measurement client for both endpoints: for production servers vLLM recommends GuideLLM (vLLM, benchmark CLI); python -m sglang.bench_serving supports a vllm backend (SGLang, bench serving).
  4. Concurrency levels instead of a single value: one request, the target value and double it, several runs per level after warm-up; report cold and warm cache separately.
  5. Read metrics together: time to first token (p50 and p95), latency per output token, throughput under a fixed latency limit and the cache hit rate from /metrics.
  6. Spot-check quality: compare outputs and tool calls for the same prompts.
  7. Include operations in the assessment: start-up time, memory footprint, behaviour under overload, update path.

Decision table

Load First candidate Rationale To measure
Chat assistant with a shared system prompt on one GPU server, 5 to 50 concurrent users vLLM; test SGLang against it with a high prefix share Both cache the shared prompt; the difference shows with branching histories time to first token (p95), hit rate
Agents with long tool descriptions, many steps test SGLang, vLLM as reference SGLang names agentic workloads as its target and offers tlru for multi-turn conversations latency per step, time to finished task
Batch with varying prompts (classification, extraction) vLLM the prefix advantage disappears; two tests show a tie, one has vLLM ahead requests per second under a latency limit
Large MoE models across several GPUs or nodes assess both on equal terms both document expert parallelism and prefill/decode separation; the recipe for the model decides the project's recipe, network (RDMA)
JSON schema output with high repetition both both support xgrammar duration with and without schema
AMD, TPU or Apple Silicon check the hardware pages of both projects support differs per model and version model runs stably

Operations and switching

Both engines provide an OpenAI-compatible API; a switch usually changes only the base URL and model name for clients. Check tool call parser, chat template, reasoning parser and structured output per model. A gateway such as LiteLLM can run both behind one address, for example for an A/B test with real traffic. For operations: metrics (vllm: and sglang: prefix), pinned image tags and an update window per release. GPU sizing is separate from the engine choice: GPU and VRAM for LLMs and multi-GPU inference cover it.

As of and methodology

Retrieved on 28 October 2026: versions, release dates and licences via the GitHub API and the LICENSE files (both Apache License 2.0); features and hardware from the README and documentation of both projects (source files of the documentation repositories); default behaviour of prefix caching from vllm/engine/arg_utils.py and the SGLang server argument reference. Benchmark sources are listed with date and the conditions they state; numbers from them are not adopted. It was not checked whether every listed feature works with every model. The tables are updated with new releases.

Our approach at WZ-IT

vLLM runs in LLM hosting, on the managed GPU server and in the AI Cube, together with Open WebUI for teams with several concurrent users. Sizing starts with the load profile, that is concurrent users, context lengths and prefix share; model and hardware follow. The difference from Ollama is covered in vLLM vs. Ollama.

Further guides

Which engine fits your load is shown by a measurement with your model. We size hardware and model to your load profile; vLLM runs as the model server. View LLM hosting · Book a call

Rather have it operated?

You'd rather not run Local AI for Business yourself? WZ-IT handles setup, operations and maintenance - privacy-focused from Germany.

Enquiry

Assess local AI for your use case

Start with the AI Cube or have us assess a custom AI platform, knowledge connection, or integration.

  • Straight with Timo and Robin - no sales team, no pitch
  • A professional assessment of your situation
  • Concrete next steps for infrastructure, software or AI

The conversation is free and non-binding.

I got to know Timo and Robin as dedicated and professional partners who make a lot of things possible for their clients that initially seem impossible. I felt very well advised. The services offered have thoroughly convinced me. (translated)
Andrea PawlowskiCommunications Manager, Golem.de, Germany
Timo and Robin, founders of WZ-IT

Assess local AI for your use case

I got to know Timo and Robin as dedicated and professional partners who make a lot of things possible for their clients that initially seem impossible. I felt very well advised. The services offered have thoroughly convinced me. (translated)
Andrea PawlowskiCommunications Manager, Golem.de, Germany

Frequently Asked Questions

Answers to the most important questions

Knowledge

More on Local AI for Business

All Local AI for Business articles

Companies worldwide trust WZ-IT

  • Stadtwerke Brühl
  • DGHO e.V.
  • solarwerkstatt berlin
  • Krüger Dirndl
  • ABCO Water Systems
  • Golem.de
  • EVADXB
  • nextGYM
  • AInergy
  • ml&s
  • Odiseo Solutions
  • Annota
  • ARGE
  • SweetConnect GmbH
  • Aphy AG
  • CORGOS
  • Rekorder
  • SolidProof
  • Yonju
  • Keymate
  • Paritel
  • Mr. Clipart
  • Millenium
  • Negosh
  • Führerscheinmacher
  • BTI
  • Deutsche Gesellschaft für Datenschutz
Read client reviews