Что такое Speculative Decoding?

💡 Tip
Speculative Decoding (спекулятивное декодирование) — это метод оптимизации вывода больших языковых моделей, при котором маленькая быстрая модель-«черновик» предлагает несколько токенов вперёд, а большая целевая модель проверяет их за один параллельный проход. Итог: скорость генерации растёт в 2–3 раза без какого-либо ухудшения качества ответов.

Представьте, что вы проверяете чужую рукопись. Автор-ассистент быстро набрасывает целый абзац, а редактор-эксперт читает его один раз и либо одобряет, либо исправляет. Это намного эффективнее, чем если бы редактор диктовал каждое слово по отдельности — именно так работает Speculative Decoding.


Проблема, которую решает эта техника

Любая авторегрессионная языковая модель (GPT, Llama, Gemini и другие) по умолчанию генерирует текст по одному токену за шаг. Каждый новый токен требует полного прохода через миллиарды параметров модели. Это узкое место делает генерацию медленной, особенно для длинных ответов.

«Однотокенный процесс — не жёсткое требование природы, а лишь следствие стандартного способа генерации. Speculative Decoding разрывает эту цепочку.»

Главная причина медлительности — аппаратная: при малых размерах батча GPU большую часть времени тратит на загрузку весов модели из памяти, а не на вычисления. Маленькая черновая модель требует несравнимо меньшей полосы пропускания памяти.


Как это работает: шаг за шагом

Архитектура Speculative Decoding строится на двух участниках:

  • Draft model (черновая модель) — маленькая и быстрая. Обычно в 10–50 раз меньше целевой. Предлагает последовательность из K токенов вперёд.
  • Target model (целевая модель) — большая и качественная. Верифицирует все K токенов за один параллельный проход.

Цикл выглядит так:

  1. Черновая модель быстро генерирует, например, 5 токенов-кандидатов.
  2. Целевая модель берёт исходный контекст + эти 5 токенов и проверяет их все сразу.
  3. Принятые токены попадают в выходную последовательность; отвергнутый заменяется вариантом от целевой модели.
  4. Цикл повторяется.

Ключевое свойство: целевая модель верифицирует черновые токены, не изменяя своего распределения вероятностей. Итоговый текст математически эквивалентен тому, что модель сгенерировала бы самостоятельно, без всяких «черновиков».


Сравнение методов ускорения вывода LLM

МетодНа что влияетКачество выводаСложность внедрения
Speculative DecodingЗадержка последовательной генерацииНе снижается (lossless)Средняя
КвантизацияРазмер модели и объём памятиНезначительно снижаетсяНизкая
Continuous BatchingПропускная способность при параллельных запросахНе снижаетсяСредняя
ДистилляцияРазмер и скорость моделиСнижается умеренноВысокая
Medusa / EAGLEЗадержка (без отдельной черновой модели)Не снижаетсяСредняя

Speculative Decoding, квантизация и батчинг решают разные узкие места — в продакшене их часто комбинируют.


Варианты реализации

Со временем появились разные подходы к «черновику»:

  • Draft-model — отдельная небольшая модель той же архитектурной семьи.
  • N-gram speculation — черновые токены берутся из повторяющихся паттернов в уже сгенерированном тексте (отлично работает для кода и структурированных данных).
  • Medusa — несколько лёгких «голов декодирования» прикрепляются прямо к целевой модели, убирая нужду в отдельном черновике.
  • EAGLE — черновая голова обучается с учётом неопределённости признаков целевой модели, что увеличивает acceptance rate.
  • Self-speculative decoding (SWIFT) — модель сама пропускает промежуточные слои при черновой фазе, без какой-либо вспомогательной модели.

Реальные примеры применения

  • AI-агенты с длинными ответами — чем длиннее генерируемый текст, тем ощутимее выигрыш от Speculative Decoding.
  • Генерация кода — структурированные повторяющиеся паттерны отлично принимаются черновой моделью, acceptance rate растёт.
  • Chatbot с низкой задержкой — пользователь видит ответ быстрее, ощущение «живого» диалога усиливается.
  • Cloud inference API — снижение задержки при том же железе = больше запросов в секунду = дешевле обслуживание.
💡 Tip
Поддержка в популярных фреймворках: vLLM, NVIDIA TensorRT-LLM и SGLang уже включают встроенную поддержку Speculative Decoding. NVIDIA продемонстрировала прирост пропускной способности в 3,6× на GPU H200.

Ограничения

  • Выигрыш зависит от acceptance rate: если черновая модель плохо угадывает токены целевой, накладные расходы перевешивают ускорение.
  • Техника наиболее эффективна при маленьком размере батча и когда узким местом является именно последовательная генерация, а не prefill или очередь запросов.
  • Требует держать в памяти две модели одновременно (целевую + черновую), что увеличивает потребление GPU-памяти на 1–8 ГБ.

См. также: Инференс (Inference), Токен (Token), Квантизация модели, Авторегрессионная генерация, KV-кэш