Что нового в llama.cpp v0.6.0
llama.cpp v0.6.0 заявлен как релиз, в котором появилась поддержка MTP-спекулятивного декодирования для модели Qwen4Exp. Идея такая: модель предсказывает несколько токенов за один проход вместо одного, и за счёт этого растёт скорость генерации на том же железе.
Что можно утверждать по подтверждённым материалам. В квантованной модели Qwen3.8-Flash-Next-oQ3-mtp сохранена голова multi-token prediction, то есть MTP-голова существует как часть весов, а не как отдельная утилита. Это MLX-квантование смешанной точности, собранное инструментом oMLX v0.7.0: около 84 ГБ весов, запуск требует Mac с более чем 84 ГБ унифицированной памяти, например 128 ГБ. Лицензия Qwen Community License 1.0 унаследована от базовой модели. Сама модель называется иначе, чем Qwen4Exp, и к llama.cpp напрямую не относится.
Дальше начинается зона неопределённости. В подтверждённых источниках нет ни полного списка изменений v0.6.0, ни деталей того, как MTP подключён к рантайму. Поэтому тема статьи - MTP для Qwen4Exp, а не обзор релиза целиком. Список изменений смотрите в release notes и в репозитории, а не в пересказах.
Что подтверждено, а что пока нет
Разделим информацию по достоверности, чтобы не строить планы на догадках.
- Подтверждено: MTP-голова сохранена в Qwen3.8-Flash-Next-oQ3-mtp; это MLX-квантование oMLX v0.7.0; около 84 ГБ весов; нужен Mac с более чем 84 ГБ унифицированной памяти, например 128 ГБ; лицензия Qwen Community License 1.0.
- Заявлено в теме, но не подтверждено: поддержка MTP-спекулятивного декодирования для Qwen4Exp именно в llama.cpp v0.6.0.
- Неизвестно: остальные изменения релиза, точные флаги, требования к памяти для Qwen4Exp, цифры ускорения.
Практический вывод: перед обновлением рабочей сборки откройте release notes своей версии и убедитесь, что MTP для нужной модели там действительно упомянут. Если подтверждения нет, относитесь к апдейту как к эксперименту, а не как к плановому улучшению.
MTP-спекулятивное декодирование: как это работает
Спекулятивное декодирование строится на двух ролях: черновой предсказатель предлагает несколько токенов вперёд, а основная модель проверяет их за один проход. Верификация дешевле поштучной генерации, поэтому при достаточной точности черновика суммарное время на токен падает.
Чем MTP отличается от классического спекулятивного декодирования
Классическая схема использует отдельную маленькую draft-модель: её держат рядом с основной, она должна совпадать по токенизатору и быть архитектурно близкой. MTP-подход встраивает предсказание нескольких токенов в саму модель через дополнительную голову. Плюсы очевидны: не нужна вторая модель, нет расхода памяти на отдельные веса, нет накладных расходов на переключение между двумя сетями. Минусы тоже понятны: качество предсказаний задано обучением, флагами его не подкрутить, а гибкость ниже, чем при подборе draft-модели под конкретную задачу.
По смыслу это близко к автодополнению в редакторе кода: редактор предлагает следующую строку заранее, вы либо соглашаетесь, либо правите руками. Чем шаблоннее код, тем чаще подсказка оказывается верной.
Почему это может ускорять генерацию
Генерация токенов упирается в пропускную способность памяти, а не в вычислительные блоки: на каждый новый токен нужно прочитать веса модели. Если за один проход удаётся принять несколько токенов, число чтений весов на токен падает. Отсюда и прирост.
Ускорение не бесплатное. Нужна память под MTP-голову, нужна поддержка в рантайме, а реальный выигрыш зависит от acceptance rate, доли токенов, которые основная модель приняла без правок. Если предсказания часто отклоняются, накладные расходы на проверку и откат съедают выигрыш, и скорость может даже просесть. Точных цифр ускорения для Qwen4Exp в подтверждённых источниках нет, поэтому проценты из чужих тестов переносите на своё железо с осторожностью.
Как запустить Qwen4Exp локально с MTP в llama.cpp
Порядок действий по шагам выглядит просто, но каждая деталь зависит от сборки и платформы.
- Обновите llama.cpp до нужной версии: сборка из исходников или готовые бинарники под вашу ОС.
- Возьмите GGUF-версию модели с сохранённой MTP-головой.
- Запустите llama-cli или llama-server с включённым спекулятивным режимом.
- Проверьте логи и замерьте скорость с MTP и без него на одном и том же промпте.
Где взять модель и какие форматы подходят
llama.cpp работает с GGUF. Формат MLX, в котором существует Qwen3.8-Flash-Next-oQ3-mtp, относится к экосистеме Apple Silicon и для llama.cpp напрямую не подходит: это отдельный рантайм. Для llama.cpp нужен GGUF-файл именно с MTP-головой внутри, потому что при квантовании её легко потерять. Проверяйте карточку модели: наличие MTP-головы обычно указывают отдельной строкой, а размер файла сразу говорит, сколько памяти понадобится.
Для Apple Silicon есть отдельная линия работ, где MTP связывают с MLX-конвертацией и глубиной draft. Если ваша цель - Mac, ближе к делу будет разбор MTPLX и ускорения Qwen на Apple Silicon.
Проверка, что MTP действительно работает
Флаг в командной строке сам по себе ничего не доказывает. Смотрите логи запуска: рантайм обычно сообщает, загружена ли дополнительная голова и активен ли спекулятивный декодер. Дальше нужен контрольный замер: один промпт, одинаковая температура, одинаковая длина ответа, по два прогона с MTP и без него, сравнение по tokens per second.
Разницу «на глаз» легко не заметить, особенно на коротких ответах. Накладные расходы спекулятивного декодирования на стороне GPU разобраны в материале про CUDA graph для MTP draft в llama.cpp.
Общий вид команды, имена параметров сверяйте с README своей сборки:
./llama-cli -m model-mtp.gguf -ngl 99 -c 8192 --spec-type draft-mtp
Названия флагов отличаются между релизами и форками, а часть параметров может быть доступна только в конкретной ветке. Если аргумент не распознан, рантайм скажет об этом при старте и просто проигнорирует его.
Требования к железу и совместимость
Ориентир по масштабу даёт подтверждённый пример: модель Qwen3.8-Flash-Next-oQ3-mtp весит около 84 ГБ и требует Mac с более чем 84 ГБ унифицированной памяти, то есть практически 128 ГБ. Это не Qwen4Exp, но хорошо показывает, во что обходится запуск крупной MoE-модели с сохранённой MTP-головой.
Сколько памяти съедает MTP-голова
MTP-голова добавляет веса поверх основной модели, их объём зависит от архитектуры и числа предсказываемых токенов. Точных цифр для Qwen4Exp в источниках нет. Рабочая практика: закладывать запас 5-15% сверх размера основной модели и проверять фактическое потребление мониторами вроде nvidia-smi, а на Apple Silicon через системный мониторинг памяти.
Что делать, если модель не влезает
Вариантов несколько, и все они про компромисс. Взять квант меньшей разрядности (Q4, Q3), выгрузить часть слоёв на CPU, сократить длину контекста, выбрать модель меньшего размера. На слабом железе выигрыш от MTP может оказаться незаметным: узкое место там не вычисления, а память, и спекулятивное декодирование его не расшивает. Пример такого компромисса между размером модели, контекстом и скоростью собран в разборе запуска Qwen3 27B на 16 ГБ VRAM с квантом IQ3_XXS и контекстом 131072 токена.
Сравнение с предыдущими версиями llama.cpp
Полного changelog v0.6.0 в подтверждённых материалах нет, поэтому сравнение ограничится общим направлением развития проекта. llama.cpp регулярно получает поддержку новых архитектур и методов ускорения, а MTP-спекулятивное декодирование продолжает линию на спекулятивное декодирование, которое раньше строилось на отдельных draft-моделях.
Критерий для обновления простой. Апдейт имеет смысл, если вы работаете с Qwen4Exp или хотите сами замерить MTP. Если текущая версия стабильна, модель работает и вы не гоняетесь за скоростью, спешить не обязательно: свежий релиз несёт риск регрессий, а откатываться на прошлую сборку придётся руками.
Практические сценарии: где MTP даёт выигрыш
Всё упирается в предсказуемость текста. Чем выше acceptance rate, тем больше токенов принимается за проход и тем заметнее выигрыш.
- Кодогенерация и рефакторинг: шаблонные участки, повторы структур, типовые конструкции, предсказания сбываются часто.
- Длинные ответы в чат-ботах и генерация документов, где модель идёт по устойчивым формулировкам.
- AI-агенты и RAG-пайплайны, где важна пропускная способность: инструментов много, ответы длинные, время на шаг складывается.
Где выигрыш мал или нулевой: короткие ответы на пару токенов, творческие задачи с высокой температурой, редкие языки и нестандартные форматы. Там черновые предсказания часто отклоняются, и накладные расходы гасят ускорение. Похожая логика разбирается на конкретной конфигурации в материале про Qwen 3.8 27B на одной RTX 5090, где отдельно отмечено, что подтверждено по MTP и NVFP4, а что остаётся предположением.
Ограничения и подводные камни
- Не все квантованные версии сохраняют MTP-голову. Проверять нужно карточку конкретного файла, а не название семейства.
- Поддержка MTP в llama.cpp v0.6.0 заявлена, но деталей того, как она устроена внутри, в подтверждённых источниках нет. Тестируйте на своей конфигурации и своей модели.
- Спекулятивное декодирование способно влиять на качество генерации в отдельных задачах. Замеряйте не только скорость, но и качество ответов на своих промптах.
- Лицензия Qwen Community License 1.0 унаследована от базовой модели. Для коммерческого использования читайте её условия, а не полагайтесь на общие представления о «свободных» лицензиях.
- На слабом железе выигрыш бывает нулевым или отрицательным: памяти мало, а накладные расходы остаются.
Итог: стоит ли обновляться до llama.cpp v0.6.0
Обновляться стоит, если вы работаете с Qwen4Exp, хотите сами попробовать MTP и готовы потратить время на замеры. Можно подождать, если текущая версия стабильна, Qwen4Exp вы не используете и отлаживать нечего.
Чек-лист быстрой проверки перед апдейтом:
- Откройте release notes своей сборки и убедитесь, что MTP для нужной модели там упомянут.
- Проверьте в карточке GGUF-файла, что MTP-голова сохранена.
- Посчитайте бюджет памяти: веса, KV-кэш, запас на MTP-голову и контекст.
- Сделайте контрольный замер tokens per second с MTP и без него на одном промпте, и только после этого переносите сборку в работу.
Конкретные цифры ускорения зависят от модели, железа и профиля нагрузки, поэтому проверять их нужно на своём стенде, а не по чужому отчёту.