MTP на Qwen3-27B: 2.5x ускорение с Unsloth UD XL GGUF | AiManual
AiManual Logo Ai / Manual.
06 Май 2026 Инструмент

Multi-Token Prediction на Qwen3-27B: ускорение в 2.5x с Unsloth UD XL и квантованными GGUFs

Как запустить Multi-Token Prediction на Qwen3-27B с Unsloth UD XL и получить 2.5x прироста скорости. Инструкция, бенчмарки, сравнение с vLLM и llama.cpp.

Печатная машинка против турбонаддува

Один токен за проход. Это нормально для 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.

💡
Unsloth UD XL — это метод динамического квантования, который адаптирует разрядность под каждую группу весов. Для Qwen3-27B удалось сжать модель до ~16 ГБ (средняя битность 3.5) без заметной потери качества. Подробнее в гайде по GGUF от Unsloth.

Как работает ускорение: не магия, а инженерия

Обычный инференс: модель смотрит на последний токен, предсказывает следующий. 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 для них практически не увеличивает общий размер модели, зато резко повышает точность спекуляций.

Экспериментируйте. Замеряйте. Удивляйтесь.

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