MountainAI
Войти
← Посиделки на холмах

Speculative Decoding: от идеи до SOTA

Bones Kos
10 мая 2026 г.

Speculative Decoding: от идеи до SOTA

1. Почему вообще декодинг медленный

Autoregressive-инференс LLM упирается не в compute, а в memory bandwidth. Чтобы сгенерировать один токен, нужно прочитать все веса модели из HBM в SRAM GPU. Арифметическая интенсивность при batch=1 крайне низкая — тензорные ядра простаивают.

Ключевое наблюдение: forward pass на токенах стоит почти столько же по времени, сколько на токене (пока невелико), потому что bottleneck — загрузка весов, а не вычисления. Это и эксплуатирует speculative decoding.

2. Базовая идея (Leviathan et al. 2023, Chen et al. 2023)

Берём две модели:

  • Target модель с распределением — большая, медленная, качественная.
  • Draft модель с распределением — маленькая, быстрая, чуть менее точная.

Цикл генерации:

  1. Draft модель авторегрессивно генерирует токенов: .
  2. Target модель за один forward pass считает для всех .
  3. Слева направо принимаем/отклоняем токены по правилу rejection sampling.
  4. Если все приняты — бонусом сэмплируем -й токен из .

3. Математика: почему это корректно

Хотим, чтобы итоговое распределение принятого токена было ровно .

Acceptance rule. Для принимаем с вероятностью

Resampling rule. Если отклонили, сэмплируем из скорректированного распределения

Теорема. Итоговое распределение равно .

Доказательство.

Подставляем:

Складываем:

Главный вывод: декодинг бесплатный по качеству — никакой деградации распределения.

4. Ожидаемое ускорение

Пусть:

  • — средняя вероятность принятия токена,
  • — отношение латентности draft/target,
  • — число draft-токенов на цикл.

Ожидаемое число сгенерированных токенов за цикл (геометрическая сумма):

Время цикла: . Ускорение относительно ванильного декодинга:

Оптимальное обычно лежит в диапазоне 4–8; при и получаем 2.5–3x.

5. Откуда брать draft-модель

Подход Суть
Готовая малая модель Llama-7B для Llama-70B, Qwen-0.5B для Qwen-72B и т.п.
Дистилляция Тренируем draft под распределение target
Self-speculative Target сама себе draft через layer-skip / early exit (LayerSkip, Draft&Verify)
N-gram / Prompt Lookup Достаём n-грамм-кандидатов прямо из контекста — отлично для кода и шаблонов
Retrieval (REST) Достаём кандидатов из внешнего корпуса по префиксу

6. Tree-based верификация (SpecInfer, Medusa)

Вместо одной цепочки draft-токенов строим дерево кандидатов и верифицируем все ветви одновременно через специальную tree attention mask. За один target forward pass проверяем сразу много гипотез — ожидаемое число принятых токенов растёт.

Medusa (Cai et al. 2024) — приклеивает к target модели дополнительных голов, каждая предсказывает токен на позиции напрямую из текущего hidden state :

Топ-кандидаты от каждой головы образуют дерево, проверяемое одним forward pass. Отдельная draft модель не нужна — только дообучить головы.

7. EAGLE — SOTA-семейство (2024)

Главная идея EAGLE: предсказывать не токены, а признаки (hidden states предпоследнего слоя). Feature space гораздо регулярнее token space и лучше моделируется маленькой сетью.

Архитектура: 1-слойный autoregressive transformer-head, который на вход получает — feature на шаге и embedding следующего токена — и предсказывает .

Loss:

  • EAGLE-1: статическое дерево драфтов, 3x speedup.
  • EAGLE-2: динамическое дерево по предсказанной confidence — больше принятых токенов при том же бюджете.
  • EAGLE-3: убрана feature-regression регуляризация (она ограничивала draft), добавлен training-time test — моделирование ошибок драфта на обучении. До 5x на современных бенчмарках.

8. Lookahead Decoding

Другой подход — без draft-модели вообще. Использует Jacobi iteration для параллельного решения системы уравнений авторегрессии и поддерживает n-gram pool из истории — совпадения подставляются как draft-кандидаты. Удобно, когда тренировать draft неоткуда.

9. Что выбрать на практике

Сценарий Метод
Есть малая модель того же семейства Vanilla speculative decoding
Plug-and-play поверх готовой модели Medusa / EAGLE (тренируем только головы)
Код, JSON, повторяющиеся шаблоны Prompt Lookup Decoding
Production-serving (vLLM, SGLang) EAGLE-2 / EAGLE-3
Очень длинный контекст Self-speculative с layer-skip

10. Подводные камни

  • Температура. При высокой распределение размывается, падает — speedup тает.
  • Batched serving. При больших batch size target уже compute-bound, выигрыш существенно меньше.
  • Tree attention. Требует поддержки custom масок и position ids — не везде из коробки.
  • Потолок acceptance. Даже идеальный драфт ограничен энтропией — для творческих задач редко выше 0.8.
  • KV-cache. Отклонённые токены требуют отката KV-кэша target модели — реализация неаккуратно может съесть весь выигрыш.

11. TL;DR

Speculative decoding — это rejection sampling над авторегрессивной генерацией, эксплуатирующее тот факт, что target forward pass на K токенах почти так же дёшев, как на 1. Корректность доказывается одной строчкой (), ускорение задаётся формулой . Современная линия развития — feature-level prediction + динамические деревья (EAGLE-2/3), дающая 3–5x без потери качества.

📊 Опрос

Все ли понятно

  • Да100% · 1
  • Нормально, но можно попроще0% · 0
  • Нет, надо проще писать0% · 0

1 голос · войди, чтобы проголосовать

Поделиться:Telegram

● Ответы (0)

Войдите, чтобы ответить