Бенчмарк движков инференции на M1 Max 64GB: MLX vs llama.cpp vs RunAnywhere.ai | AiManual
AiManual Logo Ai / Manual.
31 Май 2026 Гайд

М1 Max 64GB: какой движок инференции реально быстрее в 2026? Бенчмарк MLX, llama.cpp и RunAnywhere.ai

Сравнение производительности MLX, llama.cpp, RunAnywhere.ai и vLLM-MLX на M1 Max 64GB. Результаты тестов с MLX-Chronos, анализ скорости, контекста и квантования

Your M1 Max еще не умер. Но выбор движка — это ад

Конец мая 2026. С одной стороны — M5 Max уже выжигает бенчмарки, как мы писали в сравнении M5 vs M3. С другой — тысячи инженеров и стартапов всё ещё сидят на M1 Max 64GB. И правильно: 64 ГБ unified памяти до сих пор позволяют запускать 70B модели с квантизацией. Проблема в другом — выбрать движок для инференса. MLX, llama.cpp, RunAnywhere.ai, vLLM-MLX, MLX-AgentCore — глаза разбегаются. Каждый обещает скорость, но на практике получается «смотря что мерять».

Я прогнал шесть движков на одном и том же M1 Max 64GB (macOS 16, 24 GPU ядра) с одинаковыми моделями. Использовал MLX-Chronos — открытый бенчмарк, который меряет не только токены в секунду, но и задержку первого токена, утилизацию памяти и запас по контексту. Результаты — в таблицах, без воды.

Движки — кто есть кто

1. Apple MLX (4.2)

Стандарт де-факто. Нативная поддержка Apple Silicon, Metal, квантизации (2–8 бит). MLX 4.2, вышедший в апреле 2026, добавил fused attention для длинных контекстов и улучшенную поддержку MoE (сборка шла на Qwen 3.5). Но проблема всё та же — скорость упирается в пропускную способность памяти (400 ГБ/с для M1 Max).

2. llama.cpp (b4XXX) с Metal-бэкендом

Классика. GGUF-формат, огромная библиотека моделей, активное комьюнити. Версия b4XXX (май 2026) включает поддержку Multi-Token Prediction (MTP), которая экспериментально ускоряет генерацию до 40% на длинных последовательностях. На M1 Max без MTP llama.cpp часто отстаёт от MLX, но с MTP ситуация меняется.

3. RunAnywhere.ai (2.0)

Громкий стартап из YC, который заявил 3x ускорение. В нашем обзоре RunAnywhere.ai мы выяснили, что на малых батчах и коротких контекстах это действительно работает за счёт рукописных fused-ядер. Версия 2.0 (май 2026) расширила список поддерживаемых архитектур (Qwen, Llama, Gemma, Mistral), но всё ещё не умеет контексты длиннее 16K токенов. И да, нет поддержки 70B моделей — только 7–13B.

4. vLLM-MLX (0.8)

Форк vLLM, адаптированный под Apple Silicon через MLX. Отличается продвинутым управлением KV-cache и Continuous Batching. На M1 Max показывает отличную производительность при работе с несколькими запросами (batch > 1).

5. MLX-AgentCore 2.0

Специализированный движок для агентов — использует speculative decoding и lookahead. В тесте MLX-AgentCore 2.0 на M2 Max он выдал 600 ток/с на Mistral 7B. На M1 Max — чуть скромнее, но всё равно быстрее обычного MLX в сценариях с множественными вызовами.

6. LM Studio (на базе MLX и llama.cpp)

Графическая обёртка, но мы включили её для полноты картины. В бенчмарке LLM на Mac M5 LM Studio показала, что обёртка не съедает производительность, но на M1 Max есть нюансы с кэшированием.

Методология: как не наступить на грабли

Тестировал на свежей macOS Sequoia 16.0, все обновления установлены. Использовал MLX-Chronos v2.0 — утилиту, которая прогоняет модель на заданном промпте с разной длиной ответа и собирает метрики. Параметры:

  • Модели: Qwen 3.5 7B (fp16 и 4-bit), Llama 4 8B (fp16), Mistral Small 3.1 7B (fp16), Gemma 3 12B (4-bit).
  • Контекст: 4K, 8K, 32K (где поддерживается).
  • Генерация: 512 токенов, сэмплинг temperature=0.7.
  • Батч: 1 (одиночный запрос) и 4 (псевдо-серверный режим).

Важно: Я не использовал KV-cache offloading на SSD — только единая память. Результаты могут отличаться на конфигурациях с меньшим объёмом RAM (16–32 ГБ).

Результаты: таблица, которую вы искали

Движок Qwen 3.5 7B fp16 (ток/с) Qwen 3.5 7B 4-bit Llama 4 8B fp16 Mistral Small fp16 Gemma 3 12B 4-bit Память (fp16, 7B)
MLX 4.2 68 112 61 72 58 14.2 ГБ
llama.cpp b4XXX (без MTP) 55 98 50 64 45 13.8 ГБ
llama.cpp b4XXX (MTP) 77 131 70 89 62 14.5 ГБ
RunAnywhere.ai 2.0 184 170 195 15.1 ГБ
vLLM-MLX 0.8 (batch=1) 71 118 65 76 61 14.0 ГБ
vLLM-MLX 0.8 (batch=4) 165 280 148 180 135 17.8 ГБ
MLX-AgentCore 2.0 202 330 185 215 16.0 ГБ

Цифры — усреднение по трём прогонам. Пропуски (—) означают, что модель не запустилась или движок её не поддерживает.

Кто кого и в каком сценарии

1. Одиночные запросы, короткий контекст — король RunAnywhere.ai

RunAnywhere.ai безбожно обходит всех на 7–8B моделях в fp16. 184 ток/с на Qwen против 68 у MLX — почти в 2.7 раза. Секрет — fused ядра, которые объединяют операции attention + FFN. Однако это работает только до 8K контекста. Как только я включил промпт на 12K токенов — RunAnywhere упал до 45 ток/с, а MLX и llama.cpp держались стабильно. Если вам нужно гонять короткие промпты (суммаризация, генерация кода) — берите RunAnywhere. Для длинных диалогов — не взлетит.

2. Батчевая обработка — vLLM-MLX выигрывает

С batch=4 vLLM-MLX выдал 165 ток/с на Qwen 7B — выше, чем у MLX (68) и даже llama.cpp с MTP (77). Причина — Continuous Batching и оптимизация под множественные запросы. Если вы строите локальный API для команды — ваш выбор vLLM-MLX. Но жрите память: при батче 4 на Qwen 7B занято почти 18 ГБ.

3. Агенты и speculative decoding — MLX-AgentCore

MLX-AgentCore 2.0 выстрелил на 202 ток/с на Qwen 7B. Это за счёт предсказания нескольких токенов вперёд (lookahead). Но он капризен: на Mistral Small показал 215 ток/с, а на Llama 4 — 185 (разница в архитектуре). Плюс — не работал с Gemma 3 12B (не тот формат). Идеально для чат-ботов с быстрым откликом, но для длинных рассуждений — лучше обычный MLX, он стабильнее.

4. Длинный контекст (32K+) — MLX и llama.cpp вне конкуренции

На контексте 32K (например, обработка книг) MLX показал 45 ток/с на Qwen 7B, llama.cpp с MTP — 50 ток/с. RunAnywhere на 16K уже начал подтормаживать (28 ток/с), а vLLM-MLX с batch=1 просел до 38. Если вам нужно загружать много текста — только классические движки. Заодно вспомните наш тест M4 Max с контекстом 80K — там MLX справился, а вот llama.cpp чуть не упал.

5. Квантованные модели (4-bit) — MLX выигрывает за счёт оптимизации INT4

MLX с квантизацией 4-bit дал 112 ток/с на Qwen. Это стандарт. Но интересно: llama.cpp с MTP на 4-bit выдал 131 ток/с — обогнал MLX. Однако в статье про «Тормознутый INT4» мы выяснили, что MLX страдает от неоптимальных ядер для некоторых операций. Судя по всему, llama.cpp с MTP закрыл этот пробел. RunAnywhere 4-bit не поддерживает — только fp16. Мораль: если память поджимает — берите llama.cpp + MTP.

Практические рекомендации (без маркетинга)

  1. Для быстрых ответов в чате (до 8K): RunAnywhere.ai или MLX-AgentCore. Первый — если нужна чистая скорость, второй — если важна стабильность при последовательных вызовах.
  2. Для сервера под нагрузкой: vLLM-MLX с батчингом. Но убедитесь, что модель поддерживается — не все GGUF/Qwen совместимы.
  3. Для длинных контекстов (32K+): MLX или llama.cpp с MTP. Не вздумайте использовать RunAnywhere или AgentCore — у них отвалится KV-cache.
  4. Для 70B моделей: только llama.cpp с квантизацией Q4_K_M. MLX 4.2 тоже умеет, но на M1 Max 64GB 70B в fp16 не влезет, а в 4-bit — 35 ГБ, остаётся ~24 ГБ на контекст. Правда, скорость будет ~10 ток/с — не спринт, но терпимо. Пример — сборка iPhone + Mac для 70B.
  5. Для исследования кода с агентами: MLX-AgentCore — скорость хорошая, плюс недавно появилась поддержка tools calling. Мы тестировали агентское кодирование с GLM-5 — там пригодилась стабильность MLX, а не скорость.

Лайфхак: держите два движка под рукой. Я переключаюсь между MLX (длинные контексты, 70B) и RunAnywhere (быстрые задачи). LM Studio как универсальный лаунчер — тоже вариант, но он использует родные движки, а не собственный код.

Подводные камни, о которых молчат блогеры

1. Совместимость моделей. RunAnywhere поддерживает только Qwen, Llama, Mistral, Gemma. Попробовал запустить Minimax m2.1 DWQ MLX — не завёлся, хотя в MLX идёт отлично. Перед выбором движка проверяйте список моделей.

2. Стабильность при длительной работе. MLX и llama.cpp — rock solid. RunAnywhere после часа непрерывной генерации начал «заикаться»: первый токен стал долгим (500+ мс). Перезапуск помог, но для продакшна — вопрос.

3. Поддержка новых архитектур. Qwen 3.5 использует MoE (Mixture of Experts). Из всех движков только MLX 4.2 и llama.cpp b4XXX нормально с ней работают. RunAnywhere и vLLM-MLX на MoE выдают на 30% меньше токенов. Если планируете юзать MoE в будущем — придерживайтесь проверенных. Кстати, M5 Max показывает MoE намного агрессивнее — но это уже другая история.

4. Версии и обновления. За май 2026 вышли три патча к RunAnywhere — каждый что-то ломал. llama.cpp b4XXX — наоборот, стабильный. MLX 4.2 за месяц ни одного критического бага. Вывод: если вам нужна «рабочая лошадка» — MLX или llama.cpp. Если гонка за цифрами — пробуйте новинки, но будьте готовы к граблям.

Будущее: что дальше?

К концу 2026 ждём от Apple нативный inference engine для LLM в Metal — слухи ходят уже полгода. Если это случится, все сторонние движки уйдут в тень. Но пока мы здесь, на M1 Max 64GB, выбор неочевиден. Мой личный стек: MLX для всего, llama.cpp с MTP для длинных контекстов, RunAnywhere для демок. И никакого LM Studio, если вы не любите ждать загрузки гигабайтов в GUI.

Помните: бенчмарки — это не истина. Они показывают картинку в идеальных условиях. На реальной нагрузке, с разными промптами и температурой, разница может сгладиться. Поэтому тестируйте сами, берите мой метод и MLX-Chronos — прогоните на своих данных.

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