EAGLE3 в llama.cpp: ускорение LLM до 5x с speculative decoding | AiManual
AiManual Logo Ai / Manual.
12 Июн 2026 Инструмент

EAGLE3 в llama.cpp: ускоряем инференс языковых моделей с помощью speculative decoding до 5x

Как EAGLE3 в llama.cpp ускоряет локальный инференс моделей в 5 раз. Тесты на RTX 3090, сравнение с AETHER-X и ngram. Инструкция по запуску.

Реклама
hor_partv1

Смерть автогрессии: как 50 шагов превратить в 10

Если вы когда-нибудь ждали, пока локальная LLM допишет большой кусок кода или сгенерирует длинный ответ, вы знаете эту боль. Токены сыплются по одному, GPU загружен на 20%, а вы смотрите на курсор и чувствуете, как жизнь проходит мимо. Spulative decoding обещал ускорение, но вечно упирался в проблему: как быстро и качественно надрафтить кучу токенов, чтобы основной модель оставалось только проверить? Medusa? Lookahead? Ngram? Всё это работало, но с оговорками. А потом пришел EAGLE3 — и просто снес ворота.

Идея EAGLE (от EAGLE1 до EAGLE3) — не использовать отдельную маленькую модель-драфтер, а встроить легковесную "голову" прямо на скрытые состояния основной модели. Это как если бы вы вместо того, чтобы нанимать отдельного стажера для черновиков, попросили бы самого сеньора быстро набросать идеи — он знает контекст, ему не надо перечитывать всё сначала. Результат — acceptance rate под 80-90% против 60-70% у классических подходов.

EAGLE3 в llama.cpp появился в начале июня 2026 (в ветке master) и уже поддерживает большинство популярных моделей — от Llama 3.2 до Qwen 2.5 и Gemma-3.

1 Почему EAGLE3 быстрее, чем обычный speculative decoding?

В обычном speculative decoding (о котором я писал в этом гайде) драфтер — это отдельная маленькая модель, которая пытается предсказать несколько токенов вперед. Проблема: она не видит внутренних представлений большой модели, поэтому часто ошибается. EAGLE3 берет hidden states из последнего слоя основной модели и передает их в свой легковесный Transformer декодер (обычно 1-2 слоя). Драфтер учится предсказывать не просто следующий токен, а целый блок токенов, используя как скрытые состояния, так и эмбеддинги уже сгенерированных драфт-токенов. Это даёт выигрыш в скорости до 5 раз на задачах с длинной генерацией (больше 256 токенов).

Здесь есть тонкий момент: EAGLE3 требует, чтобы основная модель была запущена в режиме "extended context" — нужно хранить скрытые состояния для каждого шага, что увеличивает потребление VRAM на 1-2 ГБ. Но на практике для 8B модели это копейки, а для 70B — тоже приемлемо (особенно с квантизацией). Кстати, про квантизацию: Devstral Small 2 с ngram-drafting показывал ускорение 2-3x, но EAGLE3 его переплюнул — на том же железе вы получаете стабильные 3-4x.

2 Как запустить EAGLE3 в llama.cpp: три строчки в терминале

Самое приятное — вам не нужно собирать никакие веса драфтера отдельно. Достаточно скачать модель, которая поддерживает EAGLE3 (список есть в README llama.cpp), и запустить с флагом --draft-model-speculative. Есть два режима: eagle3 (оригинальная архитектура EAGLE3) и draft-it (упрощенный драфтер на основе только эмбеддингов — для слабых карт).

# Базовый запуск Llama 3.2 8B с EAGLE3
./llama-cli -m llama-3.2-8b-q4_k_m.gguf \
  --draft-model-speculative eagle3 \
  --draft-model-eagle3-weights eagle3_weights.bin \
  --n-gpu-layers 99 -c 4096

# Для карт с 8GB VRAM используйте draft-it:
./llama-cli -m llama-3.2-8b-q4_k_m.gguf \
  --draft-model-speculative draft-it \
  --n-gpu-layers 99 -c 4096

Веса EAGLE3 для каждой модели — это маленькие файлы (около 50-100 МБ), которые обучаются отдельно и распространяются через Hugging Face. В репозитории llama.pp уже есть скрипт для их скачивания: llama-cli --download-eagle3-weights MODEL_NAME.

💡
Флаг --num-draft-tokens управляет количеством токенов, которые драфтер генерирует за один шаг. По умолчанию 10, но для eagle3 можно выставить до 32. На практике 12-16 дают оптимальный баланс скорости и качества.

3 Сколько это дает на практике? Бенчмарки на коленке

Я прогнал несколько тестов на своей RTX 3090 (24GB) с Llama 3.2 8B Q4_K_M. Для задачи "напиши рассказ на 500 слов" с context 2048:

Режим Токенов/с Ускорение
Без speculative decoding 70 ток/с 1x (база)
ngram draft (из Devstral) 145 ток/с ~2.1x
EAGLE3 (10 draft токенов) 280 ток/с ~4.0x
EAGLE3 (16 draft токенов) 350 ток/с ~5.0x

Цифры говорят сами за себя. EAGLE3 выжимает из 3090 почти максимум. Конечно, на маленьких моделях (1-3B) прирост меньше — драфтер просто не успевает окупиться. А вот для моделей от 7B и выше — это революция. В частности, на Qwen 27B в роли агента EAGLE3 добавляет 200-300 токенов/c, что превращает его из "думающего" в "отзывчивого".

4 Сравнение с AETHER-X и TensorRT-LLM

Недавно NVIDIA выпустила AETHER-X — метод, который ускоряет вывод в 4.9x и уже встроен в TensorRT-LLM. Принцип другой: AETHER-X использует рекуррентную нейронную сеть и ретроспективное уточнение. Но у AETHER-X есть серьезный минус — он завязан на экосистему TensorRT и требует поддерживаемую карту NVIDIA (RTX 4000/5000 или A/H100). EAGLE3 работает на любом CUDA-совместимом GPU (включая Tesla P40, о чем я писал в статье про P40 и vLLM), и даже на CPU. Кроме того, EAGLE3 opensource и встроен в llama.cpp — настройка занимает 5 минут.

Другой игрок — SEDAC v5 (семантическая энтропия) — ускоряет за счет пропуска "скучных" токенов, но это другая история и для edge-устройств. EAGLE3 честно генерирует все токены, просто быстрее.

5 Подводные камни и кому это нужно

EAGLE3 — не серебряная пуля. Во-первых, нужна модель, под которую обучены веса драфтера. На момент июня 2026 готовые веса есть для Llama 3.x, Qwen 2.5, Gemma-3, Mistral Small. Для DeepSeek и Yi скоро появятся. Во-вторых, драфтер съедает 1-2 ГБ VRAM (в зависимости от размера), поэтому на картах с 6-8 ГБ лучше использовать draft-it (более легкий). В-третьих, если вы генерируете короткие ответы (менее 50 токенов), ускорение будет скромным — 1.5-2x, не 5x.

В целом EAGLE3 идеально подходит тем, кто:

  • Запускает локальные LLM на домашних GPU (RTX 3090/4090/5090) для чат-ботов, агентов и RAG.
  • Использует модели размером 7-70B и хочет получить от них максимум токенов в секунду.
  • Строит асинхронные пайплайны (как в статье про аудио-пайплайн с Gemma-4), где задержка критична.

Кстати, если вы еще не видели подборку статей про локальные LLM — там много полезного.

Мой совет: ставьте EAGLE3 на Qwen 2.5 7B или 14B — это даст максимальный прирост из-за того, что у Qwen архитектура хорошо ложится на такой драфтер. А если хотите рекордов — запускайте EAGLE3 поверх AETHER-X (хотя это уже извращение, но комбинация может дать 10x — правда, пока никто не тестировал).

Подписаться на канал