Das Problem: Autoregressives Decoding ist langsam
LLMs generieren Text 1 Token nach dem anderen. Jedes Token erfordert einen vollstaendigen Vorwaertsdurchlauf durch das Modell – jedes Gewicht, jede Schicht – bevor das naechste Token beginnen kann. Wie How inference works erklaert, ist diese Decode-Phase speicherbandbreitengebunden: Die GPU liest Gigabytes an Gewichten aus dem Speicher, um ein einzelnes Token zu erzeugen, und wiederholt dies dann fuer das naechste. Die Recheneinheiten sitzen die meiste Zeit untätig da und warten auf Daten. Ihre GPU verrichtet keine nuetzliche Arbeit – sie wartet auf den Speicher. Spekulatives Decoding nutzt diese ungenutzte Kapazitaet. Statt 1 Token pro Vorwaertsdurchlauf zu generieren, raet es mehrere Tokens im Voraus und verifiziert sie alle auf einmal.Die Kernidee
Spekulatives Decoding verwendet 2 Modelle, die zusammenarbeiten:- Draft model – ein kleines, schnelles Modell schlaegt N Tokens im Voraus vor (typischerweise 4-8 Tokens).
- Target model – das grosse Modell, das Sie tatsaechlich verwenden wollen, verifiziert alle N vorgeschlagenen Tokens in einem einzigen Vorwaertsdurchlauf.
Speculative Decoding veraendert die Ausgabequalitaet nicht. Das Target-Modell trifft weiterhin jede Akzeptanzentscheidung, daher ist die Ausgabeverteilung mathematisch identisch zum normalen autoregressiven Decoding.
N-Gramm-spekulatives Decoding
Funktionsweise
Funktionsweise
Statt ein separates Draft-Modell zu verwenden, schaut die N-Gramm-spekulative Decodierung die letzten N Tokens in der aktuellen Sequenz an, sucht nach uebereinstimmenden Mustern weiter vorne im Kontext und schlaegt die Tokens vor, die auf dieses Muster folgten. Es ist reine Mustererkennung innerhalb des vorhandenen Textes.Wenn beispielsweise die letzten 4 Tokens
def calculate_total( sind und der Kontext weiter vorne def calculate_total(items): return sum( enthaelt, schlaegt die Engine items, :, return, sum als die naechsten 4 Tokens vor. Das Target-Modell verifiziert sie dann.Wann verwenden
Wann verwenden
Am besten fuer: Code-Generierung, strukturierte Ausgabe, sich wiederholender Text, Vorlagen, Log-Analyse.Am schlechtesten fuer: Kreatives Schreiben, vielfältige offene Antworten, kurze Kontexte ohne sich wiederholende Muster.N-Gramm-Spekulation glaenzt, wenn Ihre Ausgabe wiederholte Strukturen enthaelt – Funktionssignaturen, JSON-Schemata, Boilerplate-Code. Sie versagt stillschweigend (niedrige Akzeptanzrate, Fallback auf normales Decoding), wenn der Text zu vielfaeltig fuer Mustererkennung ist.
Implementierung
Implementierung
Draft-Modell-spekulatives Decoding
Funktionsweise
Funktionsweise
Ein kleineres Modell aus derselben Familie generiert Kandidaten-Tokens. Zum Beispiel erstellt Llama-3.1-8B den Entwurf fuer Llama-3.1-70B. Das kleine Modell fuehrt seine eigene autoregressive Generierung durch, um 4-8 Tokens vorzuschlagen, dann verifiziert das grosse Modell sie alle in 1 Vorwaertsdurchlauf.Die Akzeptanzrate – der Anteil der Draft-Tokens, mit denen das Target-Modell uebereinstimmt – liegt typischerweise zwischen 70% und 85% fuer gut abgestimmte Modellpaare. Hoechere Akzeptanz bedeutet mehr Beschleunigung.
Wann verwenden
Wann verwenden
Am besten fuer: Allgemeine Generierung, wenn Sie VRAM-Reserven fuer das kleinere Modell haben.Speicherkosten: Beide Modelle muessen gleichzeitig geladen werden. Ein 8B-Draft-Modell fuegt etwa 4-5 GB hinzu (bei Q4-Quantisierung) zum Target-Modell. Planen Sie Ihren Modell-Fit entsprechend.Beschleunigung: 1.5-2.5x, abhaengig von Akzeptanzrate und Draft-Token-Anzahl. Abnehmende Erträge jenseits von 6-8 Draft-Tokens, da die Akzeptanz fuer spaetere Tokens in der Sequenz sinkt.
Implementierung
Implementierung
DFlash: Ein Drafter, der mit dem Modell ausgeliefert wird
Die meisten Draft-Modell-Setups ueberlassen es Ihnen, ein kompatibles kleines Modell zu finden und die Paarung selbst abzustimmen. DFlash, Metas Drafter fuer Muse Glimmer 30B, ueberspringt diesen Schritt: Er wird in derselben Veroeffentlichung wie sein Target ausgeliefert und schlaegt Bloecke von 16 Tokens vor, die Muse Glimmer in 1 Vorwaertsdurchlauf verifiziert. Meta berichtet 3.1x auf einer RTX 5090, 1.8x auf einem Apple M5 Max und 1.5x auf einem Apple M4 Max. Dies sind vom Hersteller gemeldete Zahlen ohne unabhaengige Reproduktion, also benchmarken Sie Ihre eigene Hardware, bevor Sie sich darauf verlassen.Modell-native Spekulationskoepfe: MTP und DSpark
Funktionsweise
Funktionsweise
Einige Modellarchitekturen sind darauf trainiert, mehrere zukuenftige Tokens gleichzeitig aus einem einzigen Vorwaertsdurchlauf vorherzusagen. Das Modell selbst erzeugt mehrere Kandidaten-Tokens auf einmal – kein separates Draft-Modell, kein Pattern-Matching. Die eigenen internen Repräsentationen des Modells generieren die spekulativen Tokens.Dies ist grundlegend anders als externe Spekulation: Die Multi-Token-Koepfe werden gemeinsam mit dem Basismodell trainiert, daher teilen sie dasselbe Verstaendnis des Kontexts.
Wann verwenden
Wann verwenden
Am besten fuer: Modelle, die es nativ unterstuetzen. Es gibt keine Konfigurationsentscheidung – wenn das Modell mit MTP-Koepfen trainiert wurde, aktivieren Sie sie; wenn nicht, koennen Sie sie nicht hinzufuegen.Aktuelles DeepSeek-Beispiel:
DeepSeek-V4-Flash-0731 buendelt sein DSpark-Modul im offiziellen Checkpoint. Ausgewaehlte Qwen-Modelle verwenden stattdessen MTP-Koepfe.Vorteil: Kein separates Draft-Modell-Checkpoint oder Modellpaar-Tuning erforderlich.Nachteil: Erfordert spezifisches Modelltraining. Sie koennen MTP nicht auf ein beliebiges Checkpoint anwenden.Implementierung
Implementierung
--speculative-draft-model-path hinzu.Die offizielle 0731-Modellkarte dokumentiert DSpark fuer sowohl vLLM als auch SGLang. Die Hardware-Unterstuetzung variiert noch, verwenden Sie also das passende Runtime-Rezept und benchmarken Sie Ihr genaues Checkpoint. Siehe DeepSeek V4 Flash 0731 lokale Hardware.
EAGLE (Extrapolationsalgorithmus fuer groessere Sprachmodell-Effizienz)
Funktionsweise
Funktionsweise
EAGLE trainiert ein kleines “Head”-Netzwerk auf den versteckten Zustaenden des Target-Modells. Statt ein vollstaendiges Draft-Modell zu laden, bringt es ein leichtgewichtiges neuronales Netzwerk an den intermediären Repräsentationen des Target-Modells an und verwendet diese, um zukuenftige Tokens vorherzusagen.Da das Head-Netzwerk den eigenen internen Zustand des Target-Modells liest, erzielt es hoechere Akzeptanzraten (80-90%) als naive Draft-Modelle. Das Head-Netzwerk ist winzig im Vergleich zu einem vollstaendigen Modell – typischerweise 5-10% der Groesse des Target-Modells.
Wann verwenden
Wann verwenden
Am besten fuer: Wenn verfuegbar, bietet EAGLE das beste Beschleunigungs-zu-Speicher-Verhaeltnis aller Techniken.Aktueller Status: Forschungsstadium mit begrenzter Runtime-Unterstuetzung. vLLM und SGLang haben experimentelle EAGLE-Integration, aber sie erfordert vortrainierte EAGLE-Head-Checkpoints, die fuer die meisten Modelfamilien noch nicht weit verbreitet veroeffentlicht sind.Wenn die EAGLE-Unterstuetzung ausgereift ist, erwarten Sie: 2-3x Beschleunigung bei nur 5-10% Speicher-Overhead – deutlich besser als vollstaendige Draft-Modelle.
Implementierung
Implementierung
EAGLE-Head-Checkpoints sind modell- und architekturspezifisch. Ueberpruefen Sie, dass ein veroeffentlichtes EAGLE-Checkpoint fuer Ihr genaues Target-Modell existiert, bevor Sie diese Technik verwenden.
Vergleich
N-Gramm
Zusaetzlicher Speicher: keiner
Beschleunigung: 1.2-1.5x
Erfordert Training: nein
Runtime-Unterstuetzung: vLLM, llama.cpp
Am besten fuer: Wiederholende Inhalte, Code, strukturierte Ausgabe
Draft-Modell
Zusaetzlicher Speicher: 20-30% zusaetzlich
Beschleunigung: 1.5-2.5x
Erfordert Training: nein (kleineres Modell aus derselben Familie verwenden)
Runtime-Unterstuetzung: vLLM, llama.cpp
Am besten fuer: Allgemeine Generierung mit VRAM-Reserven
Multi-Token-Praediktion
Zusaetzlicher Speicher: keiner
Beschleunigung: 1.5-2x
Erfordert Training: ja (modellspezifisch)
Runtime-Unterstuetzung: vLLM (nur ausgewaehlte Modelle)
Am besten fuer: Modell-native Koepfe wie DeepSeek V4 Flash 0731 DSpark und unterstuetzte Qwen MTP-Varianten
EAGLE
Zusaetzlicher Speicher: 5-10%
Beschleunigung: 2-3x
Erfordert Training: ja (Head-Netzwerk)
Runtime-Unterstuetzung: experimentell
Am besten fuer: Bestes Beschleunigungs-zu-Speicher-Verhaeltnis, wenn verfuegbar
Wann spekulatives Decoding verwenden
Verwenden Sie es, wenn:- Ihre Workload ist decode-bound – lange Generierungen, bei denen die meiste Zeit mit Token-Erzeugung verbracht wird, nicht mit der Verarbeitung des Prompts
- Sie haben VRAM-Reserven fuer ein Draft-Modell (mindestens 5-10 GB frei zusaetzlich zum Target-Modell)
- Sie generieren strukturierte oder repetitive Ausgabe – Code, Vorlagen, JSON, Logs
- Sie bedienen einen einzelnen Benutzer oder eine Workload mit niedriger Parallelitaet
- Ihre Workload ist prefill-bound – kurze Ausgaben mit langen Eingaben (Zusammenfassung, Klassifizierung). Speculative Decoding beschleunigt nur die Decode-Phase.
- Sie sind bereits an Ihrem VRAM-Limit. Das Draft-Modell oder zusaetzliche KV-Cache-Eintraege koennen Sie in den OOM-Zustand treiben. Siehe DGX Spark memory tuning fuer die Kapazitaetsplanung.
- Sie verwenden Continuous Batching mit hoher Parallelitaet. Speculative Decoding steht in den meisten Runtimes im Konflikt mit effizienter Batch-Planung – der Verifikationsschritt geht von einer festen Draft-Laenge pro Anfrage aus, was die Batch-Zusammensetzung erschwert.
Praktischer Einrichtungsleitfaden
N-Gramm-Spekulation in vLLM
Der einfachste Startpunkt – keine zusaetzlichen Downloads, kein zusaetzlicher Speicher:--ngram-prompt-lookup-max-Flag setzt die Fenstergröße fuer die Mustererkennung. Groessere Werte finden mehr Übereinstimmungen in langen Kontexten, verlangsamen den Draft-Schritt aber leicht. Beginnen Sie mit 5 und erhoehen Sie, wenn die Akzeptanz niedrig ist.
Draft-Modell in vLLM
Fuer hoechere Beschleunigung, wenn Sie den VRAM haben:Reduzieren Sie
--max-model-len, wenn Sie auf OOM stossen. Beide Modelle teilen sich denselben VRAM-Pool, und der KV-Cache des Draft-Modells addiert sich zum Gesamtwert.N-Gramm-Spekulation in llama.cpp
--lookup-cache-static-Flag cached N-Gramm-Lookups ueber Tokens hinweg und verbessert die Draft-Geschwindigkeit fuer repetitive Muster.
So messen Sie die Beschleunigung
Fuehren Sie denselben Prompt zweimal aus – einmal mit spekulativem Decoding und einmal ohne – und vergleichen Sie Tokens pro Sekunde:x-tokens-per-second-Header oder berechnen Sie aus usage.completion_tokens geteilt durch die Wanduhrzeit.
Fuer systematisches Benchmarking verwenden Sie das integrierte Benchmark-Tool von vLLM:
Vertiefung
Decode- und Prefill-Leistungsaufnahme
Optimieren Sie Prefill- und Decode-Phasen fuer maximalen Durchsatz auf Ihrer Hardware.
So funktioniert Inference
Verstehen Sie Prefill, Decode und warum Speicherbandbreite der Engpass ist.
vLLM auf DGX Spark
Konfigurieren Sie vLLM mit optimalen Einstellungen einschliesslich spekulativem Decoding.
Modell-Fit
Berechnen Sie, ob Ihr Target-Modell plus ein Draft-Modell in den VRAM passen.
Ihr Deployment testen
Systematische Benchmarking-Methodik fuer lokale LLM-Deployments.