Глава 9 — Спекулятивный декодинг

Опубликовано: 2026-05-01 Последнее обновление: 2026-07-07 Версия: 1
Глава 9 — Спекулятивный декодинг

Глава 9 — Спекулятивный декодинг

Девятый пост поглавного разбора LLM Primer VI: Scaling AI Systems. Глава, показывающая, что у последовательного узкого места авторегрессии есть математическая лазейка, и раскрывающая арифметику, когда она окупается.


Зачем эта глава существует

Главы 7 и 8 атаковали параллельность, удерживая GPU занятым многими последовательностями. Ни одна не меняет факт, что каждая последовательность всё ещё получает один выходной токен за итерацию. Этот пол выглядит неизбежным, потому что прямой проход трансформера действительно зависит от предыдущего выбранного токена. Спекулятивный декодинг — наблюдение, что зависимость на генерации, а не на верификации: имея кандидата для токена t+1, целевая модель может запустить один прямой проход, который одновременно спрашивает «выбрал бы я это?» и вычисляет распределение для t+2 в предположении, что кандидат верен. Глава 9 обходит механизм, алгоритмы черновиков (EAGLE, Medusa, Lookahead, MTP, n-gram, suffix) и арифметику того, когда спекуляция — выигрыш.

Если коротко: спекулятивный декодинг платит за дешёвую догадку и слегка расширенный прямой проход верификации, и если догадка достаточно часто верна, целевая модель производит несколько токенов за стенное время одного.

9.1 Инсайт верификации сохраняет корректность точно

Дешёвый черновой механизм предлагает N кандидатов токенов. Цель — дорогая модель, которую мы хотим — запускает один прямой проход на префиксе, конкатенированном с N кандидатами. Поскольку прямой проход трансформера параллелен по позициям, цель производит своё распределение следующего токена в каждой из N+1 позиций в этом одном проходе. Самый длинный префикс, на котором кандидаты совпадают с целью, принимается; первое расхождение — точка, где движок принимает собственный выбор цели и отбрасывает остальное. Правило приёма — принимать x, взятый из чернового q, с вероятностью min(1, p(x)/q(x)), иначе брать из нормализованного остатка (p−q)₊ — делает выходное распределение идентичным обычному сэмплированию из цели. Спекуляция сохраняет корректность; черновик влияет только на скорость. На современных GPU проход верификации на N=4 стоит примерно 1,2–1,5× обычного шага декодинга, потому что внимание теперь охватывает N+1 query-позицию, но остаётся хорошо внутри memory-bound-режима.

9.2 EAGLE привязывает черновик к скрытому состоянию цели

Ранние реализации использовали отдельную маленькую модель как черновик — Llama-7B, черновой для Llama-70B, — что работает, но стоит второго потока HBM для весов черновика и ограничивает приём, потому что две модели не делят представлений. EAGLE, уточнённая через EAGLE-2 и EAGLE-3 в 2024–2025 годах, привязывает черновик к цели: один слой трансформера, обученный предсказывать скрытое состояние следующего слоя цели, проецируемый через собственный выходной эмбеддинг цели. Нет отдельного набора весов на 7B, который нужно стримить; черновая голова — несколько сотен мегабайт. EAGLE-2 добавляет динамическое расширение чернового дерева — дерево кандидатов, верифицируемое в один attention-проход с кастомной маской, — так что цель выбирает лучший из нескольких путей вместо единственной догадки черновика. EAGLE-3 добавляет многослойное смешение фич, поглощая промежуточные слои цели, а не только предпоследний. Скорости приёма ложатся на 75–85 процентов на чате и коде при N в 5–8, что переводится в сквозные ускорения 3–4× относительно обычного декодинга. Medusa идёт альтернативным путём — параллельные черновые головы, предсказывающие несколько будущих токенов в один проход, а не авторегрессивно, — с более простой историей обучения и слегка меньшим приёмом. N-gram и suffix decoding — бесплатный обед для повторяющихся нагрузок (правка кода, шаблонный вывод), где черновик — просто поиск в недавнем контексте.

9.3 Сам проход верификации становится потолком

Формула ускорения точна ровно настолько, чтобы её выписать: E[accepted_tokens] / (T_draft/T_decode + 1 + α·N), где α — оверхед верификации на позицию, обычно 0,05–0,15. Показываются два потолка. Во-первых, α·N растёт с N, поэтому увеличение N до бесконечности не помогает; пик — около N=6–8 при p=0,8, N=10–12 при p=0,9. Движки, жёстко зашивающие N, промахиваются мимо оптимума при вариации нагрузки. Во-вторых, и более тонко, асимптотическое ускорение при p, стремящемся к 1, — это 1/α: около 10× при α=0,10, 20× при α=0,05, — потому что сам проход верификации и есть стена. Продакшен-движки замеряли пиковые ускорения в этом диапазоне на сильно повторяющихся нагрузках и не превышали их. Спекуляция также взаимодействует с батчингом: при высоких размерах батча прямой проход цели уже близок к вычислительно-ограниченному, и дополнительные токены верификации толкают его дальше, поэтому ускорение сокращается с ростом батча. Сладкая точка спекуляции — от низкого до среднего батча на нагрузках, критичных к задержке, — ровно тот режим, где живут недоиспользованные вычисления из главы 1.

Стоит запомнить: спекуляция тратит простаивающие вычисления, чтобы выкупить задержку последовательного узкого места. Она дополняет батчинг, а не заменяет его — при очень высоком батче цель уже использует свои вычисления, и проход верификации ест пропускную, а не добавляет к ней.

Что подготавливает глава 9

Главы 5–9 исчерпали инструментарий модели-и-рантайма — квантизация, обрезка, дистилляция, батчинг, страничный KV, спекулятивный декодинг. Ничего из этого не поставляется как библиотека, которую можно pip install и забыть. Кто-то должен соединить их в среде исполнения, которая владеет моделью на GPU, гоняет непрерывный батч и выставляет API инференса. Эта среда — движок. Глава 10 обходит пять движков, доминирующих в стеке 2026 года — vLLM, TensorRT-LLM, SGLang, TGI, Ollama — и механические компромиссы, решающие, какой правильный для конкретного развёртывания.


Дальше — Глава 10: Слой движка LLM. vLLM, TensorRT-LLM, SGLang, TGI, Ollama — движки как рантайм одиночного узла, выбираемые по механизму, а не по бенчмарку.

Хочется всю картину? В книжной главе — исполняемый внутренний цикл спекулятивного декодинга, архитектура параллельных голов Medusa, варианты обучения Lookahead и MTP, случаи n-gram/suffix-нагрузок и анализ взаимодействия с батчингом, сжимающий или расширяющий ускорение в зависимости от нагрузки. LLM Primer VI на Amazon →

SHO
SHO
CTO и основатель RECEIPTROLLER. Ориентирован на данные, движим инновациями, всегда любознателен.