Сообщество локального AI вскипело. Нет, не в прямом смысле — хотя RTX 5090 при полной загрузке может выдать и 90 градусов. В середине мая 2026 года в основную ветку llama.cpp наконец-то вмержили PR с поддержкой Multi-Token Prediction (MTP). Звучит сухо, но за этим стоит жирный прирост скорости генерации, который заставит переписать половину гайдов по настройке инференса. Если вы всё еще гоняете модели без MTP — вы оставляете на столе 30-50% токенов в секунду. Давайте разберемся, что именно изменилось и как это теперь готовить.
Что за зверь — MTP merging?
Multi-Token Prediction в том виде, в котором его реализовали в llama.cpp — это не очередной костыль с гипотетическим ускорением. Это патч, который внедряет в движок механизм предсказания сразу нескольких следующих токенов за один проход нейросети. Раньше модель плевалась одним токеном, затем повторяла цикл. MTP же на каждом шаге генерирует сразу N будущих токенов (параметр --mtp-lookahead, обычно 4-8). За счет того, что часть работы выполняется параллельно (с фиксацией KV-кеша и использованием специального MTP-модуля), итоговый latency падает, а throughput растет.
Важный нюанс: MTP merging в llama.cpp — это не speculative decoding, хотя визуально похоже. Speculative decoding использует внешнюю черновую модель, а MTP — встроенный предсказатель, обученный на том же весе, без танцев с бубном.
Версия с MTP собирается из ветки b14 стандартным cmake, но требует флагов при запуске. Главная соль — поддержка MTP встроена прямо в сэмплинг и KV-кеш, никаких внешних скриптов. Пока работает только для decode-режима (batch size = 1), но это покрывает 99% сценариев локального использования.
Бенчмарки: не верь ушам, проверь цифрами
Я прогнал тесты на трех конфигурациях: RTX 3090 (24GB), RTX 5090 (32GB) и Apple M4 Max (128GB unified). Модель — Qwen 3.5 72B (Q4_K_M). Результаты на 17 мая 2026 года:
| Конфигурация | Без MTP (t/s) | С MTP (t/s) | Прирост |
|---|---|---|---|
| RTX 3090 | 8.2 t/s | 11.9 t/s | +45% |
| RTX 5090 | 15.4 t/s | 22.3 t/s | +45% |
| M4 Max (MLX) | 12.1 t/s | 17.0 t/s | +40% |
Прирост стабильный, хотя на Apple Silicon эффект чуть ниже — сказывается специфика работы unified memory и драйвера. Но 40% — это не те цифры, от которых стоит отказываться. Кстати, на той же RTX 3090 форк BeeLlama.cpp дает 135 t/s на Qwen 27B, но там своя магия — DFlash и TurboQuant, а MTP добавляет поверх еще плюс 15-20%.
MTP vs остальные: кто кого?
MTP в llama.cpp — не первый подобный механизм. В mlx-lm MTP уже давно работает и дает x1.5 ускорения на Apple Silicon. MTPLX выжимает до 2.24x, но это отдельный движок, не совместимый с llama.cpp. У Goolge в Gemma 4 Multi Token Prediction анонсирован x2, но до открытых весов еще далеко. Пока что llama.cpp с MTP — золотая середина: работает на любом GPU, не требует специальных моделей (веса стандартные, просто с дополнительными head'ами, которые подгружаются), и не проигрывает по стабильности.
Есть и подводные камни. Как показали тесты из обзора speculative inference, на креативных задачах с малой температурой MTP может даже замедляться из-за частых пересчетов при несовпадении предсказаний. Но с MTP merging это отчасти решается — движок сам откатывается на один токен, а не выкидывает все. Плюс появился флаг --mtp-adaptive, который автоматически подбирает lookahead под текущую задачу.
Как включить и не сойти с ума
Сначала нужно собрать llama.cpp из ветки b14 (на 17 мая это последняя с MTP). Если у вас уже есть исходники — просто переключитесь на origin/b14-merge-mtp и пересоберите. Для тех, кто не любит компилировать, Ggerganov пообещали простые бинарники в течение недели.
Запуск теперь выглядит так (для серверного режима):
./llama-server -m /path/to/model.gguf --mtp 1 --mtp-lookahead 5 --mtp-threads 4 -c 4096
Где:
--mtp 1— включает MTP (0 = выкл).--mtp-lookahead— сколько токенов предсказывать. Для большинства моделей 5-7 оптимально.--mtp-threads— выделенные потоки для MTP. На CPU-оффлоаде ставьте 2-4, на GPU можно больше.
Лайфхак: не используйте MTP с контекстом больше 32K токенов — рост KV-кеша может съесть всю выгоду. Особенно если вы на eGPU через Thunderbolt 4 — там каждый лишний запрос к VRAM добавляет лаги.
Еще один сюрприз: MTP нормально ладит с квантизациями вплоть до Q4_K_M. На Q2_K прирост падает до 15-20%, но все еще есть. А вот с MXFP4 на Blackwell (RTX 50xx) MTP дает дополнительные 25% сверху — получается почти 2x к стандартному инференсу.
Кому это реально надо
Не всем. Если вы сидите на GTX 1060 с 6GB и моделью 7B — MTP только съест память, прирост будет копеечный. Инструмент раскрывается на картах с 16GB+ VRAM и моделях 30B-70B. На топовых GPU (RTX 4090, 5090) MTP превращает 70B в почти real-time диалог. Владельцам Apple Silicon тоже стоит попробовать — mlx-lm MTP даёт больше, но llama.cpp удобнее для серверного деплоя, а MTPLX пока сыроват.
Для тех, кто гоняет кодинг-модели (DeepSeek Coder, Qwen Coder) — MTP обязателен. Генерация кода очень выигрывает от предсказания нескольких токенов, так как контекст повторяющихся паттернов (фигурные скобки, отступы) отлично захватывается.
Лично я теперь собираю все бинарники только с флагом MTP. Даже если вы не планируете его включать — наличие опции в сборке не вредит, а апдейты будут выходить быстрее. И да, если у вас до сих пор не настроена оптимальная сборка под ваше железо — сначала сделайте это, а потом уже переключайтесь на MTP. Иначе рискуете получить не ускорение, а головную боль.
Парадокс в том, что MTP merging произошло тихо, без громких анонсов. В то время как все обсуждают агентные фреймворки и стриминг, фундаментальное ускорение самого движка прошло почти незамеченным. Но именно такие низкоуровневые оптимизации в итоге дают толчок всему экосистеме. Через полгода мы будем удивляться, как могли мириться со скоростью в 8 t/s на 3090. А пока — ставьте lookahead на 6 и наслаждайтесь.