Speculative Decoding
Jak działa
W każdym kroku draft model generuje sekwencję k kandydatów-tokenów autoregresyjnie. Następnie model docelowy w jednym przebiegu równoległym oblicza prawdopodobieństwa wszystkich tych pozycji jednocześnie. Algorytm modified rejection sampling porównuje rozkłady drafter vs. target dla każdej pozycji: jeśli token akceptowany przez drafter ma w target nie mniejsze prawdopodobieństwo — token akceptowany; w przeciwnym wypadku akceptowany z prawdopodobieństwem proporcjonalnym do stosunku rozkładów. Po pierwszym odrzuceniu reszta sekwencji zostaje odrzucona, a w miejscu odrzuconego tokena target generuje token z poprawiającego rozkładu (residual). Dzięki temu każdy krok produkuje co najmniej jeden token (z target) plus 0 do k zaakceptowanych tokenów z drafter — przy zerowej zmianie dystrybucji wyjściowej.
Rozwiązany problem
Standardowe autoregresyjne dekodowanie generuje tokeny sekwencyjnie — jeden po drugim — i każdy krok wymaga ponownego załadowania pełnych parametrów modelu z pamięci HBM/VRAM. Na hardware konsumenckim, gdzie przepustowość pamięci jest niska względem mocy obliczeniowej, jednostki obliczeniowe spędzają większość czasu czekając na dane. Speculative Decoding pozwala wykorzystać ten czas oczekiwania produktywnie.
Implementacja
Jeśli drafter słabo dopasowany do target (inny tokenizer, inna dystrybucja, inny RLHF), acceptance rate spada poniżej 30% i koszt drafter forward-passu pożera oszczędności.
Drafter i target muszą koordynować KV-cache. Naiwna implementacja przelicza kontekst od zera w każdym kroku, niwelując zysk. Współdzielenie KV-cache wymaga ostrożności przy odrzuceniu draft tokenów (rollback cache).
Gdy bottleneck inferencji to compute, a nie memory bandwidth (np. duże modele na H100/H200), parallel verification dodaje znaczący compute overhead i przyspieszenie spada poniżej 2x.
Ewolucja
Leviathan, Kalman i Matias formalizują algorytm i dowodzą zachowania dystrybucji. Demonstrują 2–3x przyspieszenie na T5-XXL.
Chen, Borgeaud, Irving, Lespiau, Sifre i Jumper niezależnie prezentują tę samą koncepcję pod nazwą "speculative sampling", uzyskując 2–2.5x przyspieszenie na 70B Chinchilla w setupie distributed.
Cai i in. proponują dodanie wielu "decoding heads" bezpośrednio do modelu głównego, eliminując potrzebę osobnego drafter-modelu. Tree-attention pozwala równolegle weryfikować wiele wariantów. 2.2–3.6x przyspieszenie.
DeepSeek-V3 (671B MoE, 37B aktywnych) wprowadza Multi-Token Prediction jako auxiliary training objective, dający lepszą jakość modelu i jednocześnie umożliwiający speculative decoding bez osobnego drafter.
Google publikuje eksperymentalne MTP drafter models dla rodziny Gemma 4 z licencją Apache 2.0 i wsparciem MLX, vLLM, SGLang i Ollama. 74M-parametrowe draftery uzyskują 2.5x–3.1x przyspieszenia na hardware lokalnym (Pixel, Apple M4, RTX PRO 6000) bez utraty jakości.
Szczegóły techniczne
Hiperparametry (konfigurowalne osie)
Liczba tokenów generowana przez drafter w jednym kroku przed weryfikacją przez target. Większe k → potencjalnie większe przyspieszenie, ale niższy acceptance rate i większe ryzyko marnowania compute.
Rozmiar modelu draft względem target. Im mniejszy drafter, tym tańsza generacja kandydatów, ale niższa zgodność z target i niższy acceptance rate. Typowo 1–10% rozmiaru target.
Mierzony średni procent tokenów drafter zaakceptowanych przez target. Bezpośrednio determinuje uzyskane przyspieszenie — wysoki acceptance rate (>70%) → bliski teoretycznemu maksimum, niski (<30%) → drobny zysk.
Wymagania sprzętowe
Consumer i prosumer GPU z ograniczoną przepustowością VRAM zyskują najwięcej — niedociążone tensor cores wykonują parallel verification praktycznie za darmo.
Na CPU memory bandwidth jest jeszcze bardziej ograniczająca — speculative decoding daje znaczące przyspieszenie w llama.cpp i podobnych implementacjach.
Praca źródłowa Leviathan i in. demonstruje speedup na TPU (T5-XXL).