Запись архива

Speculative decoding, Medusa и EAGLE: как ускоряют вывод LLM

Обзор трёх линий ускорения вывода LLM из окна 2023–2024: классического speculative decoding, Medusa и EAGLE. Разбираем механику, цифры, гарантии точности и реальные ограничения.

Схема сравнения speculative decoding, Medusa и EAGLE: внешняя draft-модель, встроенные decoding heads и feature-level drafter с последующей проверкой кандидатов деревом

В 2023–2024 годах ускорение вывода LLM стало отдельной инженерной темой: стоимость ответа всё сильнее определялась не только качеством модели, но и числом дорогих autoregressive-проходов. В этом историческом окне появились три важные линии работ: базовый speculative decoding из ICML 2023, Medusa из ICML 2024 и EAGLE/EAGLE-2 из 2024 года. Все они пытаются сделать одну вещь: получить сразу несколько будущих токенов за один дорогой проход большой модели, но делают это по-разному.

Ниже — обзор именно этого слоя 2023–2024, без подмены его более поздними вариантами. Фокус — на механике методов, на том, когда ускорение остаётся lossless, и на том, какие компромиссы эти работы реально предлагают практику.

Коротко

  • Классический speculative decoding ускоряет exact декодирование через схему draft-and-verify: малая модель предлагает токены, большая проверяет их за один проход и сохраняет то же распределение вывода.
  • Medusa убирает необходимость в отдельной малой модели: вместо неё на целевую LLM добавляют несколько decoding heads и проверяют кандидатов через tree attention.
  • EAGLE делает drafter ближе к самой LLM: он предсказывает не токены напрямую, а внутренние признаки второй сверху скрытой слойности, что повышает качество draft.
  • EAGLE-2 добавляет динамическое дерево draft-кандидатов и в материалах 2024 года показывает самый сильный reported speedup среди рассматриваемых здесь lossless-подходов.

Контекст

Проблема, с которой борются все эти методы, проста: обычное autoregressive-декодирование производит один новый токен за один полный проход модели. В работе Fast Inference from Transformers via Speculative Decoding авторы прямо формулируют это как K serial runs для генерации K токенов. В Medusa та же проблема описана системно: вывод LLM часто упирается в пропускную способность памяти, потому что на каждом шаге приходится снова поднимать веса модели.

Отсюда и общая идея: если большая модель всё равно умеет быстро проверять несколько гипотез за один проход, нужно отделить дешёвое выдвижение гипотез от дорогой верификации. Ранние exact-варианты этого подхода оформили Leviathan, Kalman и Matias, а также Chen et al. в работе про speculative sampling.

Важно и другое: в этих работах слово ускорение не всегда означает одно и то же. Где-то речь о latency на одном запросе, где-то о throughput, где-то о greedy decoding, а где-то о sampling. Поэтому любые цифры ниже нужно читать вместе с режимом декодирования, моделью, температурой и бенчмарком.

Метод

1. Классический speculative decoding

Базовая схема устроена так. Есть большая целевая модель p и более дешёвая draft-модель q. Draft-модель быстро предлагает цепочку из нескольких следующих токенов, после чего большая модель одним проходом проверяет всю цепочку. Если часть токенов согласуется с распределением большой модели, они принимаются сразу; если нет, срабатывает rejection/acceptance-механика, сохраняющая корректное распределение вывода. Именно эта часть делает метод lossless в смысле распределения.

С инженерной точки зрения сильная сторона подхода — отсутствие изменений в backbone целевой модели. Слабая — нужно иметь хорошо согласованную малую модель, а это и отдельные веса, и отдельное обслуживание, и не всегда удачный компромисс между скоростью drafter и качеством его предложений.

2. Medusa

Medusa предлагает убрать отдельную малую модель вовсе. Вместо неё поверх целевой LLM добавляются несколько лёгких decoding heads, которые предсказывают не только следующий токен, но и несколько токенов вперёд. Затем эти кандидаты сворачиваются в дерево, а большая модель проверяет их параллельно через tree attention.

У Medusa в материалах 2024 года есть два режима. Medusa-1 обучает только новые heads поверх замороженного backbone и позиционируется как lossless-ускорение. Medusa-2 обучает heads вместе с backbone по специальному recipe, чтобы повысить качество предсказаний и скорость, но это уже более тяжёлый training path. Отдельный нюанс — typical acceptance: он ускоряет non-greedy generation, но не равен строгой exact-схеме классического speculative decoding.

3. EAGLE

EAGLE меняет сам объект draft-предсказания. Вместо прямого угадывания будущих токенов drafter работает на уровне признаков второй сверху скрытой прослойки целевой модели. Авторы исходят из предположения, что автрорегрессия по таким признакам проще, чем по токенам, а значит можно получить более точный draft при меньшем overhead.

Ключевая инженерная деталь EAGLE — в input drafter добавляется сдвинутая на шаг вперёд токенная последовательность, чтобы снять неоднозначность feature-level предсказания при sampling. В результате EAGLE остаётся в семействе speculative methods, но двигает drafter ближе к самой целевой модели: это уже не отдельная маленькая LM, а лёгкий модуль, использующий внутренние представления backbone.

4. EAGLE-2

EAGLE-2 не меняет идею feature-level drafting, а меняет форму дерева кандидатов. Базовый EAGLE использует статическую структуру draft-tree; EAGLE-2 делает её динамической и контекстно-зависимой. Для этого он использует confidence scores drafter как приближение вероятности того, что конкретный узел дерева будет принят целевой моделью.

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

Результаты

Таблица ниже — не единый leaderboard, а аккуратное сопоставление репрезентативных reported-результатов из исходных материалов 2023–2024. Здесь разные модели, разные режимы декодирования и разные экспериментальные установки.

Подход Откуда берётся draft Нужна ли отдельная малая модель Форма проверки Сохранение распределения Репрезентативный reported-результат
Speculative decoding Внешняя малая LM Да Линейная цепочка Да 2X–3X ускорение на T5-XXL относительно standard T5X implementation по PMLR-версии; тот же диапазон повторён в официальном посте Google Research.
Medusa-1 Дополнительные heads на той же LLM Нет Tree attention Да, в lossless-схеме Medusa-1 Свыше 2.2× без ухудшения generation quality по PMLR-публикации и arXiv-версии.
EAGLE Feature-level drafter по признакам второй сверху скрытой прослойки Нет отдельной малой LM Дерево кандидатов Да 2.7x–3.5x на LLaMA2-Chat 70B по paper PDF; тот же диапазон повторён на официальной project page.
EAGLE-2 Тот же feature-level drafter, но с динамическим draft-tree Нет новой отдельной модели сверх EAGLE-drafter Контекстно-зависимое дерево Да 3.05x–4.26x и на 20%–40% быстрее EAGLE-1 по arXiv-версии и EMNLP 2024 paper.

Ещё одна полезная деталь: внутри Medusa есть расхождение между материалами. В ICML/PMLR-версии для Medusa-2 фигурирует диапазон 2.3–2.8×, а в январском обновлении GitHub-репозитория говорится о 2.2–3.6×. Это хороший пример того, почему такие статьи лучше читать вместе с конкретной версией recipe и набора моделей, а не как «вечную» цифру метода.

Интерпретация

Наш комментарий

Если убрать детали, различие между тремя линиями работ сводится к вопросу: где именно живёт drafter. В классическом speculative decoding он внешен по отношению к целевой модели. В Medusa drafter превращается в набор голов внутри той же модели. В EAGLE drafter ещё ближе к backbone: он работает по внутренним признакам самой LLM.

Из этого следует и инженерная логика. Чем ближе drafter к целевой модели, тем проще согласовать его с её поведением, но тем выше зависимость от внутренней архитектуры и training recipe. Внешняя малая модель удобна своей модульностью, зато её нужно отдельно подбирать и обслуживать. Встроенные heads проще в обслуживании, но требуют дообучения. Feature-level drafter потенциально повышает acceptance rate, но уже сильнее завязан на внутренние представления модели.

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

Ограничения

Во-первых, paper numbers плохо сравниваются лоб в лоб. У базового speculative decoding — T5-XXL и своя T5X-среда; у Medusa и EAGLE — в основном Vicuna/LLaMA2-Chat и MT-Bench; у EAGLE-2 — ещё и несколько задач с temperature=0 и temperature=1. Поэтому таблицу выше лучше читать как сравнение идей, а не как общий рейтинг.

Во-вторых, lossless есть не у любого режима. В классическом speculative decoding и в EAGLE/EAGLE-2 авторы явно настаивают на сохранении распределения целевой модели. Но в EAGLE-2 сами авторы отдельно отмечают, что Medusa в non-greedy settings расслабляет acceptance conditions и потому не гарантирует lossless-ускорение в этом режиме. Для production-сценариев это не мелочь, а развилка между exact serving optimization и эвристикой.

В-третьих, часть reported-выигрыша завязана на low-batch setup. В Medusa авторы прямо пишут, что их эксперименты в первую очередь сфокусированы на batch size 1, а репозиторий называет именно такой сценарий основным для локального хостинга. Это не делает результаты неверными, но ограничивает переносимость цифр на высокобатчевый серверный inference.

В-четвёртых, у Medusa есть расхождение между версиями материалов. Для практики это значит, что смотреть нужно не только на название метода, но и на конкретную конфигурацию обучения, версию репозитория и тип модели. В этом обзоре по этой причине безопаснее опираться на консервативное утверждение про Medusa-1 «свыше 2.2×», чем на более широкие диапазоны из последующих обновлений.

Вывод

Исторически картина 2023–2024 выглядит так. Классический speculative decoding задал exact draft-and-verify схему. Medusa показала, что drafter можно встроить в саму LLM через дополнительные heads и tree attention. EAGLE сдвинула drafter на уровень внутренних признаков модели, а EAGLE-2 сделала ещё один шаг — к динамическому дереву кандидатов.

Для инженера главный вывод не в том, что один бренд метода «лучше» другого, а в том, какие компромиссы он выбирает: отдельная малая модель или встроенные heads, строгая lossless-гарантия или relaxed acceptance, статическое или динамическое дерево проверки. Именно эти различия и определяют, что из семейства speculative methods имеет смысл пробовать в вашем inference-стеке.

Источники

  1. Fast Inference from Transformers via Speculative Decoding.
  2. Looking back at speculative decoding.
  3. Accelerating Large Language Model Decoding with Speculative Sampling.
  4. Medusa: Simple LLM Inference Acceleration Framework with Multiple Decoding Heads.
  5. Medusa: Simple LLM Inference Acceleration Framework with Multiple Decoding Heads (arXiv).
  6. Medusa project page.
  7. FasterDecoding/Medusa GitHub repository.
  8. EAGLE: Speculative Sampling Requires Rethinking Feature Uncertainty.
  9. EAGLE project page.
  10. EAGLE-2: Faster Inference of Language Models with Dynamic Draft Trees.
  11. EAGLE-2: Faster Inference of Language Models with Dynamic Draft Trees (EMNLP 2024).

FAQ

Medusa и EAGLE — это speculative decoding или что-то другое?

В широком смысле — это варианты того же draft-and-verify семейства. Разница в том, откуда берётся draft: из отдельной малой модели, из добавленных heads или из feature-level drafter внутри целевой LLM.

Всегда ли ускорение сохраняет точно тот же ответ?

Нет. Сохранение распределения гарантируют lossless-схемы вроде базового speculative decoding и EAGLE/EAGLE-2. У Medusa это зависит от режима: Medusa-1 описана как lossless, а relaxed non-greedy acceptance не даёт той же строгой гарантии.

Почему tree-based методы вообще выигрывают?

Потому что большая модель дорога не столько на одну проверку токена, сколько на сам проход. Если за один проход можно проверить не одну цепочку, а несколько ветвей кандидатов, число дорогих шагов падает.

Читайте также