effidevFlutter · Cloudflare-Edge · Cloud-Kostenoptimierung
Deutsch

vLLM vs SGLang Inferenz-Engine Vergleich: VRAM & Latenz-Optimierung mit Speculative Decoding & Chunked Prefill

vLLM vs SGLang Speculative Decoding Chunked Prefill VRAM Latency Optimization

vLLM vs. SGLang Inferenz-Engine Vergleich: Optimierung mit Speculative Decoding & Chunked Prefill

Beim Deployment von Large Language Models (LLMs) in Produktionsumgebungen sind GPU-VRAM-Engpässe und hohe Antwortlatenzen die größten Hürden. Mit steigenden Benutzerzahlen wächst der KV Cache Speicherbedarf exponentiell, was zu TTFT-Spitzen und OOM-Crashes führen kann.

Abhilfe schaffen die beiden führenden Open-Source-Serving-Engines: vLLM (mit PagedAttention) und SGLang (mit RadixAttention).

Dieser Leitfaden vergleicht die Speicherarchitekturen von vLLM und SGLang und zeigt, wie die Kombination aus Chunked Prefill und Speculative Decoding VRAM-Verbrauch und Token-Latenz drastisch reduziert.


1. vLLM (PagedAttention) vs. SGLang (RadixAttention)

Merkmal vLLM (PagedAttention) SGLang (RadixAttention)
KV Cache Architektur Virtuelle Speicher-Paginierung gegen Fragmentierung Trie-basierte Radix-Tree-Speicherzuordnung
Prompt-Wiederverwendung Exzellent für Standard-System-Prompts Überlegen für Multi-Turn-Chats, Agenten & Few-Shots
Empfohlene Use Cases Allgemeines RAG, High-Concurrency Chatbots Multi-Agenten-Workflows, JSON Structured Output
Durchsatz (TPS) Branchenweiter Leistungsstandard 1.5- bis 3-mal schneller bei hohem Cache-Hit

2. 2 Schlüsseltechniken zur Latenz- & VRAM-Optimierung

1) Chunked Prefill

Um zu verhindern, dass lange Prompt-Eingaben (Prefill) die Antwortgenerierung (Decode) blockieren, teilt Chunked Prefill Eingaben in feste Blöcke (z. B. 512 oder 1024 Token) auf.

2) Speculative Decoding (Spekulative Dekodierung)

Ein schnelles Draft Model (z. B. Qwen2.5-0.5B) schlägt mehrere Token-Kandidaten vor, die in einem einzigen Durchlauf vom primären Target Model (z. B. Qwen2.5-72B) verifiziert werden. Dies beschleunigt die Generierung um das 2- bis 3-fache.


3. Server-Start-Codebeispiele

vLLM Speculative Decoding CLI Befehl

Seit vLLM v0.9.0 (28.05.2025) sind eigenständige Flags wie --speculative-model und --num-speculative-tokens deprecated und wurden aus dem Quellcode entfernt. Der alte Aufruf endet nun mit einem unrecognized arguments-Fehler — stattdessen wird ein einzelnes JSON-Objekt über --speculative-config übergeben, wie unten gezeigt.

# vLLM: Speculative Decoding (Target: Llama-3.1-70B, Draft: Llama-3.1-8B)
# NOTE: --speculative-model / --num-speculative-tokens were removed in vLLM v0.9.0+.
# Passing them now raises "unrecognized arguments"; use the single --speculative-config JSON flag instead.
python3 -m vllm.entrypoints.openai.api_server \
    --model meta-llama/Meta-Llama-3.1-70B-Instruct \
    --speculative-config '{"model": "meta-llama/Meta-Llama-3.1-8B-Instruct", "num_speculative_tokens": 5}' \
    --enable-chunked-prefill \
    --max-num-batched-tokens 2048 \
    --gpu-memory-utilization 0.90 \
    --tensor-parallel-size 4

SGLang Server-Start mit Speculative Decoding (Python)

Bei Verwendung eines separaten Draft-Modells muss speculative_algorithm="STANDALONE" explizit gesetzt werden. Der Standardwert ist None, sodass Speculative Decoding ohne diese Angabe inaktiv bleibt, selbst wenn Draft-Modellpfad und Token-Anzahl konfiguriert sind.

import sglang as sgl

@sgl.function
def multi_turn_agent(s, system_prompt, user_query):
    s += sgl.system(system_prompt)
    s += sgl.user(user_query)
    s += sgl.assistant(sgl.gen("response", max_tokens=1024, temperature=0.2))

if __name__ == "__main__":
    runtime = sgl.Runtime(
        model_path="meta-llama/Meta-Llama-3.1-70B-Instruct",
        speculative_algorithm="STANDALONE",
        speculative_draft_model_path="meta-llama/Meta-Llama-3.1-8B-Instruct",
        speculative_num_draft_tokens=5,
        mem_fraction_static=0.88,
        tp_size=4
    )
    sgl.set_default_backend(runtime)

4. Benchmark-Zusammenfassung & Entscheidungsmatrix

Metrik Standard Dekodierung Chunked Prefill + Speculative
TTFT (Zeit bis zum ersten Token) 1.8s 0.4s (77 % Reduzierung)
Dekodiergeschwindigkeit (TPS) 24 tokens/sec 58 tokens/sec (2.4x schneller)
VRAM-Einsparung Referenz 35 % VRAM gespart via Cache-Reuse

Empfehlung

  1. Standard RAG & Hohe Gleichzeitigkeit: Wählen Sie vLLM wegen seiner Stabilität und Tooling-Reife.
  2. AI-Agenten & Strukturiertes JSON: Wählen Sie SGLang wegen der RadixAttention Cache-Vorteile.
  3. Speculative Decoding verdoppelt bei beiden Engines den Durchsatz ohne Qualitätsverlust.