Одной из самых эффективных технологий ускорения больших языковых моделей сегодня считается speculative decoding. Именно она позволяет заметно увеличить скорость генерации без ухудшения качества ответов. Но у этой технологии долгое время была серьёзная проблема, которая проявлялась в реальных условиях эксплуатации.
Команды EAGLE Team, vLLM Team и TorchSpec Team представили EAGLE 3.1 — новую версию популярного алгоритма speculative decoding, которая устраняет проблему attention drift и значительно повышает стабильность работы моделей на длинных контекстах.
Разберёмся, что именно было исправлено и почему это важно для всех, кто запускает LLM в продакшене.
Что такое Speculative Decoding
Идея speculative decoding выглядит довольно просто.
Вместо того чтобы заставлять большую модель генерировать каждый токен самостоятельно, используется дополнительная маленькая и быстрая модель.
Схема работы выглядит так:
- Небольшая draft-модель заранее предлагает несколько следующих токенов.
- Большая целевая модель проверяет их одновременно.
- Если предсказания верны — токены принимаются.
- Если нет — система автоматически возвращается к обычной генерации.
Такой подход позволяет существенно увеличить скорость вывода без потери качества ответов.
Именно поэтому семейство алгоритмов EAGLE стало одним из самых популярных решений для ускорения инференса больших языковых моделей.
Проблема, которая проявлялась в реальных системах
На тестовых наборах speculative decoding показывал отличные результаты.
Но в реальных сценариях начали появляться проблемы.
Особенно заметно это было в трёх случаях:
- при использовании нестандартных chat templates;
- на длинных контекстах;
- при необычных системных промптах.
Разработчики обнаружили причину.
Оказалось, что по мере увеличения глубины спекуляции возникает эффект, который получил название attention drift.
Что такое Attention Drift
Проблема связана с поведением draft-модели.
Когда глубина speculative decoding увеличивается, модель начинает уделять всё меньше внимания исходному контексту и всё больше внимания собственным ранее сгенерированным токенам.
Проще говоря:
вместо того чтобы опираться на исходный запрос пользователя, система начинает всё чаще ориентироваться на свои же предположения.
Из-за этого:
- уменьшается длина принимаемых последовательностей;
- снижается стабильность генерации;
- ухудшается качество работы на длинных контекстах.
Почему это происходило
Исследователи нашли сразу две причины.
Первая проблема
Входное представление постепенно разбалансировалось.
Скрытые состояния верхних слоёв начинали доминировать над остальными компонентами входа draft-модели.
Вторая проблема
При каждом шаге декодирования увеличивалась амплитуда скрытых состояний.
Причиной оказался residual path без нормализации.
По отдельности эти эффекты уже создавали проблемы.
Вместе они делали работу draft-модели всё менее стабильной по мере увеличения глубины speculative decoding.
Два исправления в EAGLE 3.1
Для решения проблемы разработчики внесли два архитектурных изменения.
Исправление №1 — FC Normalization
Теперь после каждого скрытого состояния целевой модели применяется дополнительная нормализация перед FC-слоем.
Это позволяет удерживать значения скрытых состояний в контролируемом диапазоне и предотвращает их постепенный рост.
В результате draft-модель получает более стабильные входные данные независимо от глубины спекуляции.
Исправление №2 — Post-Norm Feedback
Второе изменение касается передачи скрытых состояний между шагами декодирования.
Теперь на следующий шаг передаются уже нормализованные hidden states.
По словам разработчиков, благодаря этому алгоритм начинает работать так, словно draft-модель рекурсивно вызывает саму себя, а не просто получает дополнительные слои поверх целевой модели.
Что дали эти изменения
После исправления attention drift система стала заметно устойчивее.
По сравнению с EAGLE 3 новая версия демонстрирует:
- лучшую переносимость между обучением и инференсом;
- более стабильную работу на длинных контекстах;
- устойчивость к разным chat templates;
- меньшую чувствительность к системным промптам;
- более стабильную длину принимаемых последовательностей.
Самый интересный результат связан именно с длинным контекстом.
В таких задачах EAGLE 3.1 показывает до двух раз большую длину принятия токенов, чем EAGLE 3.
TorchSpec получил поддержку EAGLE 3.1
Для обучения новых draft-моделей используется платформа TorchSpec.
Разработчики добавили полноценную поддержку EAGLE 3.1 и будущих алгоритмов speculative decoding.
Это должно значительно ускорить исследования и эксперименты в области ускорения LLM.
Кроме того, команда уже открыла обученную draft-модель для Kimi K2.6, которая может служить примером практического использования нового алгоритма.
Интеграция в vLLM
EAGLE 3.1 уже встроен в vLLM.
Причём разработчики сохранили полную обратную совместимость с существующими чекпоинтами EAGLE 3.
Для запуска используется практически тот же путь speculative decoding.
Пример конфигурации:
vllm serve nvidia/Kimi-K2.6-NVFP4 \
--trust-remote-code \
--tensor-parallel-size 4 \
--tool-call-parser kimi_k2 \
--enable-auto-tool-choice \
--reasoning-parser kimi_k2 \
--attention-backend tokenspeed_mla \
--speculative-config '{"model":"lightseekorg/kimi-k2.6-eagle3.1-mla","method":"eagle3","num_speculative_tokens":3}' \
--language-model-only
Результаты тестирования
Для проверки производительности команда протестировала EAGLE 3.1 на модели Kimi-K2.6-NVFP4 с использованием SPEED-Bench Coding.
Результаты оказались весьма впечатляющими.
Прирост пропускной способности на одного пользователя составил:
- 2,03× при concurrency = 1;
- 1,71× при concurrency = 4;
- 1,66× при concurrency = 16.
Для инфраструктуры, обслуживающей тысячи запросов в секунду, подобный прирост означает серьёзное снижение затрат на вычислительные ресурсы.
Почему это важнее, чем кажется
Большинство новостей про LLM сегодня посвящены новым моделям.
Но на практике огромную роль играют технологии инференса.
Даже если модель уже обучена, улучшение алгоритма генерации может дать двукратный прирост скорости без необходимости переобучения и без ухудшения качества ответов.
Именно этим и интересен EAGLE 3.1.
Вместо очередной гонки параметров разработчики нашли конкретную проблему в speculative decoding, разобрались в её причинах и устранили её двумя относительно небольшими архитектурными изменениями.
В результате получился более быстрый, более стабильный и более надёжный механизм ускорения LLM, который уже доступен в vLLM и совместим с существующей экосистемой EAGLE.