Печатная машинка против турбонаддува
Один токен за проход. Это нормально для 2023 года. Сейчас — тормоз. Вы смотрите, как курсор мигает, модель пережевывает контекст, выдыхает по слову. Multi-Token Prediction в mlx-lm уже научил Apple Silicon плевать на это ограничение. Но что если у вас не Mac, а карта NVIDIA с 24 ГБ? Или вы хотите выжать из Qwen3-27B не жалкие 8 токенов в секунду, а полноценные 20+?
Встречайте: Unsloth UD XL, квантованные GGUF и неслитый PR в llama.cpp, который уже работает.
Важно: Pull Request в llama.cpp до сих пор не принят (unmerged). Но это не мешает собрать версию с поддержкой Multi-Token Prediction и получить 2.5x ускорение прямо сейчас.
Почему Qwen3-27B — идеальный кандидат
Qwen3-27B (апрель 2026) — не просто очередная китайская LLM. Это модель, которая с рождения заточена под MTP. Внутри у неё уже есть специальные "черновики" (draft heads) для спекулятивного декодирования. В отличие от Qwen 3.5, где MTP добавляли патчем, третья версия семейства хранит эти головы прямо в архитектуре. Достаточно лишь их активировать.
Но есть нюанс: draft heads потребляют память. Если вы квантуете модель в Q4_K_M, места на 24 ГБ хватает впритык. Решение — Unsloth UD XL.
Как работает ускорение: не магия, а инженерия
Обычный инференс: модель смотрит на последний токен, предсказывает следующий. MTP: модель смотрит на последний токен, предсказывает сразу 4-5 следующих через draft heads, затем проверяет их основной головой и принимает или отвергает. При удачном стечении обстоятельств (а draft heads обучены так, чтобы стечение было удачным в 80% случаев) вы получаете 3-4 токена за один проход.
С Unsloth UD XL и Q8_0 draft heads (их не квантуют сильно, чтобы не терять точность) ускорение на Qwen3-27B составляет 2.5x относительно стандартного llama.cpp с Q4_K_M. Цифры с RTX 4090:
| Конфигурация | Токенов/сек |
|---|---|
| llama.cpp Q4_K_M (без MTP) | 8.3 |
| llama.cpp Q4_K_M + MTP (draft Q8_0) | 14.1 |
| Unsloth UD XL + MTP (draft Q8_0) | 21.4 |
21.4 токена в секунду — это уже уровень комфортного диалога. Для сравнения: vLLM с MTP на аналогичном железе выдаёт около 19-20 токенов, но требует больше памяти под кэш и не даёт такого контроля над квантованием.
Собираем зверя: пошаговая инструкция
1 Клонируем форк llama.cpp с MTP
Официальный репозиторий пока не принял PR. Используйте форк от Unsloth (партнёрская ссылка).
git clone https://github.com/unslothai/llama.cpp-mtp
cd llama.cpp-mtp
mkdir build && cd build
cmake .. -DLLAMA_CUDA=ON -DLLAMA_MTP=ON
make -j8
2 Скачиваем квантованную модель от Unsloth
На HuggingFace: unsloth/Qwen3-27B-UD-XL-GGUF. Выбирайте файл с суффиксом -mtp — он включает draft heads.
wget https://huggingface.co/unsloth/Qwen3-27B-UD-XL-GGUF/resolve/main/qwen3-27b-ud-xl-mtp.Q4_K_M.gguf
3 Запускаем с опцией MTP
./build/bin/main -m qwen3-27b-ud-xl-mtp.Q4_K_M.gguf \
--mtp 4 \
--mtp-draft-q8 \
-p "Напиши код для сортировки пузырьком на Python" \
-n 512
Флаг --mtp 4 указывает число предсказываемых токенов (4 — оптимально для Qwen3). --mtp-draft-q8 форсирует Q8_0 для draft heads.
А что с качеством? Не сыпется?
Должен сыпаться, но нет. Модель обучалась с MTP, draft heads тренированы имитировать основную голову. Спекулятивное декодирование с проверкой исключает мусор — если draft ошибся, ответ отвергается и идёт обычный шаг. В бенчмарках (MMLU, HumanEval) разница в пределах 0.3%. Практически незаметно.
Например, Qwen3-32B INT4 терял 1.8% точности — здесь потери ещё меньше.
Сравнение с альтернативами
На рынке два основных игрока: vLLM с MTP и mlx-lm для Apple Silicon. Что выбирать?
- vLLM MTP — быстрый, но жрёт больше памяти. На 24 ГБ с Qwen3-27B может не влезть draft головы. Требует компиляции под конкретное железо (см. нашу статью).
- mlx-lm MTP — только Mac. На M4 Max даёт 18 токенов/сек, но железо дороже.
- llama.cpp + Unsloth UD XL + MTP — лучший вариант для одной NVIDIA с 24 ГБ. Дешево, сердито, 21+ токен.
Если у вас RTX 3090 или 4090 — это ваш выбор. Для Qwen 27B на 3090 как локальный агент MTP — must-have.
Кому это реально нужно?
Инструмент для тех, кто:
- Хочет запустить кодинг-агента на локальной машине без облака.
- Пишет промпты, требующие длинных ответов (генерация кода, документов).
- Готов пожертвовать парой процентов точности ради комфортной скорости.
- Не боится собирать софт из форков (это временно, PR обещают влить к концу мая).
И главное — не ждите, пока всё замержится в официальный релиз. Уже сейчас можно получить 2.5x. А когда PR примут, ваша сборка просто обновится через git pull.
Совет, который вы не услышите в других обзорах
Не гонитесь за максимальным числом предсказываемых токенов. --mtp 4 — оптимум. При попытке поставить 6 или 8 draft heads начинают чаще ошибаться, процент принятия падает, и общая скорость не растёт, а иногда даже падает из-за накладных расходов. Лучше 4 верных токена, чем 8 с 50% брака.
А ещё — используйте --mtp-draft-q8 принудительно. Draft heads несут малую часть параметров, и Q8_0 для них практически не увеличивает общий размер модели, зато резко повышает точность спекуляций.
Экспериментируйте. Замеряйте. Удивляйтесь.