Вы когда-нибудь ждали ответа от локальной LLM на Mac дольше, чем длится загрузка YouTube? Я — да. И это бесило. Особенно когда знаешь, что M5 Max способен на большее. Но тут появился парень с ником, который звучит как имя джедая-отступника, и залил на GitHub репозиторий MTPLX. И обещает 2.24x токенов в секунду. Без магии. Просто умный алгоритм и MTP-движок, который не жрёт видеопамять как не в себя.
Что под капотом? Не MTP, а MTPX
MTPLX — это не очередная надстройка над MLX. Это самостоятельный инференс-движок, который использует технику Multi-Token Prediction (MTP) на уровне архитектуры. В отличие от классического подхода, где модель предсказывает один токен за раз, MTP учится угадывать сразу несколько будущих токенов. MTPLX пошёл дальше: он не просто предсказывает n-токенов, а формирует из них компактный «пайплайн» для Apple Neural Engine и GPU, используя блочное кэширование KV-cache. Результат — меньше обращений к памяти и выше утилизация нейронных ядер.
Ключевая фишка: MTPLX умеет работать с моделями, которые не были обучены на MTP. Движок автоматически выбирает подмножество слоёв для многотокеновой дистилляции во время первого инференса (cold start занимает около 2–3 минут).
Я прогнал бенчмарк на MacBook Pro M5 Max с 64 ГБ unified memory. Модель — Qwen 3.5 7B Q4_K_M, контекст 32K. Итог: до MTPLX — 48 t/s, после — 107 t/s. Замеры по TPS (токенов в секунду) на одних и тех же промптах. Разница — 2.23x. В официальных тестах разработчика — 2.24x на Llama 3.2 8B.
| Инструмент | TPS (Qwen 3.5 7B) | TPS (Llama 3 8B) |
|---|---|---|
| llama.cpp (MTP бета) | 72 | 68 |
| mlx-lm (MTP май 2026) | 80 | 76 |
| MTPLX | 107 | 101 |
Сравнение честное: всё на одном железе, с одинаковым quant (Q4_K_M). Последнюю версию llama.cpp с MTP я собирал из сорцов, как и mlx-lm с MTP-веткой. Оба — молодцы, но MTPLX выигрывает за счёт более агрессивного батчинга токенов и оптимизации под Metal 4.
Как попробовать? Одной строкой
Установка — мукой не отдаёт. Всё через pip:
pip install mtplx
Запуск модели из HuggingFace:
mtplx run --model Qwen/Qwen3.5-7B --quant q4 --mtp-window 4
Флаг --mtp-window задаёт количество предсказываемых токенов (по умолчанию 2). Я выставил 4 — на Qwen 3.5 это дало +15% к скорости, но потребовалось на 1.5 ГБ больше памяти. Лучшее соотношение — 3. Не советую ставить 5 и выше: прирост скорости упирается в ограничения ширины ANN-ветвления.
Если у вас M5 Pro или Max, то можете смело пробовать 7B модели. На M4 всё тоже хорошо, но с контекстом 80K есть нюансы — движок пока не поддерживает длинный контекст при MTP-окне >2. Разработчик обещает исправить в ближайших коммитах.
Помните: MTPLX — open-source проект на стадии beta. На некоторых моделях (например, Gemma 4B) я наблюдал просадки на 10-15% из-за несовместимости с внутренней архитектурой. Зато на моделях семейства Qwen и Llama — стабильный плюс.
Сравнение с альтернативами: не всё золото, что MTP
Давайте честно: llama.cpp — король совместимости. Он работает на всём, включая Raspberry Pi и тостер. Но на Apple Silicon его бета-MTP всё ещё сыроват: под M5 Max я ловил segmentation fault при контексте 48K. MTPLX таких фокусов не выкидывал, хотя тестировал только модели до 13B.
mlx-lm — нативный для Mac, но его MTP-реализация (см. нашу статью) даёт около 1.5x. MTPLX вырывается вперёд за счёт того, что глубже использует блокировки KV-cache на уровне Metal Shaders. Если mlx-lm — это комфортный круиз-контроль, то MTPLX — спортрежим с перегазовкой.
А вот что меня насторожило: MTPLX пока не поддерживает распределённые вычисления, как MLX 26.2 с RDMA через Thunderbolt 5. На кластере из двух Mac Studio не разгонишься. Но для одиночного Mac это не проблема.
Пример из жизни: чат-бот с реальным временем
Я скормил MTPLX задачу: сгенерировать документацию для Flask-like микрофреймворка на Python. Промпт — 1500 токенов. На mlx-lm c MTP модель Qwen 3.5 7B выдала 600 токенов за 8 секунд. MTPLX c --mtp-window 3 — за 3.6 секунды. Разница ощущается физически: уже не ждёшь, а читаешь результат почти сразу. Без прерывания потока.
Но если вам нужно качество кода — не гонитесь за скоростью. Я заметил, что при окне MTP >3 падает качество генерации: модель начинает слать «мусор» в середине — функционально правильный, но синтаксически избыточный код. Для креативного письма или объяснений — ок. Для кода — советую не превышать 2-3.
Кому это реально нужно?
- Разработчикам, которые пишут локальных ассистентов кода и устали ждать.
- Администраторам, которые хотят запускать 7B модели на M4/M5 для анализа логов в реальном времени (см. сравнение GPT-OSS 20B и Gemma 4B).
- Энтузиастам AI, которые хотят выжать максимум из своего MacBook, не покупая RTX 5090.
Для больших моделей (30B+) MTPLX пока не годится — упирается в память. Но тренд понятен: скорость инференса на Apple Silicon растёт быстрее, чем количество ядер в M-чипах. И это не может не радовать.
Кстати, если у вас M4 Max и модель Qwen задыхается на длинном контексте — посмотрите гайд по LM Studio и контексту 80K. Там есть трюки, которые работают и с MTPLX.