Перейти к содержанию
Telegram
Публикация AiManual

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

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

Коротко

Что будет в материале

  1. 01

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

  2. 02

    Если вы когда-нибудь ждали, пока локальная LLM допишет большой кусок кода или сгенерирует длинный ответ, вы знаете эту боль. Токены сыплются по одному, GPU загружен...

  3. 03

    Идея EAGLE (от EAGLE1 до EAGLE3) — не использовать отдельную маленькую модель-драфтер, а встроить легковесную "голову" прямо на скрытые состояния основной модели. Это...

  4. 04

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

Смерть автогрессии: как 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 — правда, пока никто не тестировал).

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