Robocikowo>ROBOCIKOWO
Wnioskowanie

Speculative Decoding

2022AktywnyOpublikowany
Speculative Decoding to technika przyspieszania inferencji autoregresyjnych modeli językowych. Mały model "draft" przewiduje kilka kolejnych tokenów, a duży model docelowy weryfikuje je w jednym równoległym przebiegu — pozwala to wygenerować kilka tokenów w czasie zbliżonym do generacji jednego tokena standardową metodą.
Kluczowa innowacja
Akceleracja autoregresyjnego dekodowania bez zmiany dystrybucji wyjściowej modelu — lekki model "draft" generuje kandydatów wielu tokenów naraz, a model główny weryfikuje je w jednym przebiegu równoległym, akceptując zgodne i odrzucając błędne.
Kategoria
Wnioskowanie
Poziom abstrakcji
Pattern
Poziom operacji
Ewaluacja (runtime)
Zastosowania
Przyspieszenie inferencji LLM na hardware konsumenckim (GPU, telefony, laptopy)Lokalna inferencja modeli open-weight (Gemma, Llama, DeepSeek)Skrócenie latencji odpowiedzi w aplikacjach interaktywnych (chat, code completion)Redukcja kosztów inferencji w data center przy zachowaniu jakości

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

Pułapki implementacyjne
Niski acceptance rate niszczy zyskWysoka

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.

Rozwiązanie:Trenuj drafter na tej samej dystrybucji co target lub używaj drafter pochodzącego z destylacji target.
KV-cache managementŚrednia

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).

Rozwiązanie:Używaj sprawdzonych frameworków (vLLM, SGLang) lub implementacji referencyjnych zamiast pisać własną.
Spadek zysku przy szybkim hardwareNiska

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.

Rozwiązanie:Speculative decoding daje największy zysk na consumer GPU, urządzeniach mobilnych i mniejszych modelach data-center. Na frontier-hardware mierz ROI ostrożnie.

Ewolucja

Oryginalny paper · 2022 · ICML 2023 (Oral); Google Research · Yaniv Leviathan
Fast Inference from Transformers via Speculative Decoding
Yaniv Leviathan, Matan Kalman, Yossi Matias
2022
Speculative Decoding (Google)
Punkt przełomowy

Leviathan, Kalman i Matias formalizują algorytm i dowodzą zachowania dystrybucji. Demonstrują 2–3x przyspieszenie na T5-XXL.

2023
Speculative Sampling (DeepMind)

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.

2024
Medusa: drafter-free speculative decoding

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.

2024
DeepSeek-V3 łączy MTP training z speculative decoding

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.

2026
Gemma 4 MTP drafters (Google)

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)

Draft length (k)Wysoka

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.

4Typowa wartość w pracach Leviathan i Chen.
5–8Często stosowane w produkcyjnych implementacjach (vLLM, SGLang).
Drafter sizeKrytyczna

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.

74M (Gemma 4 MTP drafter, target multi-billion)Konfiguracja Gemma 4 MTP 2026.
Chinchilla 4B drafter dla 70B targetKonfiguracja DeepMind 2023.
Acceptance rateWysoka

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

Podstawowe

Consumer i prosumer GPU z ograniczoną przepustowością VRAM zyskują najwięcej — niedociążone tensor cores wykonują parallel verification praktycznie za darmo.

Dobry fit

Na CPU memory bandwidth jest jeszcze bardziej ograniczająca — speculative decoding daje znaczące przyspieszenie w llama.cpp i podobnych implementacjach.

Dobry fit

Praca źródłowa Leviathan i in. demonstruje speedup na TPU (T5-XXL).