Локальные LLM на Mac: MLX вместо стандартного движка llama.cpp
Когда MLX от Apple обгоняет llama.cpp на Apple Silicon: диапазоны бенчмарков по размеру моделей, три способа перейти и подводные камни.
Если вы поставили Ollama на Mac, скачали модель и решили, что теперь запускаете ИИ локально, — так и есть. Но, скорее всего, вы делаете это не на том движке и теряете от 15% до трёхкратной разницы в скорости машины, даже не замечая этого.
Стандартный путь
Почти все идут одной и той же дорогой. Ставят Ollama, запускают ollama run llama3.2 (или модель, которая в моде на этой неделе), смотрят, как бегут токены, и считают, что это потолок для Mac.
Долгое время это было вполне разумное допущение. Внутри Ollama — обёртка над llama.cpp, движком инференса на C/C++, который работает практически везде: на Windows, Linux, Mac с Intel, даже на Raspberry Pi. Это отличная инженерная работа. Просто она не проектировалась под то, как устроен Apple Silicon.
С конца 2023 года у Apple есть собственный фреймворк машинного обучения MLX, и он построен вокруг того, что отличает чипы серии M: единой памяти. CPU, GPU и Neural Engine используют один общий пул. Бэкенду Metal в llama.cpp приходится это обходить. MLX же с первого дня писали именно под это. Разница между «работает на Apple Silicon» и «сделано для Apple Silicon» оказалась больше, чем многие думали.
Когда с этим согласилась сама Ollama
MLX легко было отмахнуть как проект для энтузиастов, о котором вспоминают на форумах про локальные LLM. Всё изменилось в марте 2026 года, когда Ollama выпустила опциональный бэкенд MLX для Apple Silicon. По сути, самый популярный инструмент для локальных LLM признал, что его движок по умолчанию — не самый быстрый вариант на железе, которое есть у большинства его пользователей Mac. Достаточный повод посмотреть на реальные цифры, а не верить кому-то на слово.
Что даёт переход
Разрыв сильно зависит от размера модели, архитектуры и конкретного чипа, но независимые тесты указывают в одну сторону:
- Модели mixture-of-experts среднего размера, вроде класса Qwen3-Coder-30B, на Mac mini с M4 Pro: около 130 токенов в секунду с MLX против 43 через бэкенд llama.cpp в Ollama. Это трёхкратная разница, далеко за пределами погрешности.
- Плотные модели примерно до 14B параметров: MLX работает на 20–87% быстрее, чем путь llama.cpp через Metal.
- Примерно от 27B параметров: разница сокращается и в основном исчезает. На таком размере упираешься в пропускную способность памяти, а не в вычисления, поэтому скорость RAM важнее движка.
- Время до первого токена — та самая раздражающая пауза перед началом вывода — с MLX тоже сокращается, особенно на чипах поколения M5 с отдельными Neural Accelerators.
Так что честный вывод не в том, что MLX побеждает всегда. Он с большим отрывом выигрывает на тех размерах моделей, которые большинство людей реально запускает локально, а на огромных моделях преимущество тает.
Три способа попробовать
Остаться в Ollama и сменить бэкенд
Начиная с Ollama 0.19 можно включить бэкенд MLX, не уходя из текущей конфигурации. Это требует меньше всего усилий и позволяет сравнить скорость на своём железе, прежде чем что-то решать.
Перейти на нативный mlx-lm
Установите пакет и генерируйте прямо из командной строки:
pip install mlx-lm
python -m mlx_lm.generate --model mlx-community/Qwen3.5-35B-A3B-MLX-4bit --prompt "your prompt here"
Модели в организации mlx-community на Hugging Face уже заранее квантованы под это. Это путь к максимальной скорости, если вас не смущает жить чуть ближе к терминалу.
Использовать LM Studio
Если Python для вас не вариант, LM Studio теперь поддерживает модели MLX — переключатель в один клик в браузере моделей. Это самый простой вход, если вариант с mlx-lm кажется слишком хлопотным.
Подводные камни при переходе
- Это не простая замена модели. MLX нужны собственные квантованные версии моделей (репозитории
mlx-community), а не GGUF-файлы, которые вы скармливали Ollama. Укажите mlx-lm на GGUF — и он просто упадёт. - Запас RAM по-прежнему важен. Единая память эффективна, но на машине, которая и так работает на пределе, — скажем, Mac серии M с 16 ГБ, — уровень квантования нужно выбирать аккуратно. Для машин с менее чем 32 ГБ единой памяти обычно лучший компромисс — 4 бита.
- Модель на 70B прироста не даст. Это согласуется со сближением результатов выше примерно 27B: если загрузить самую большую модель, которая технически влезает в ваш Mac, потолок пропускной способности остаётся тем же, какой бы движок её ни запускал.
- Не удаляйте Ollama. Для быстрых разовых тестов, сценариев с вызовом инструментов и моделей для зрения её экосистема и библиотека по-прежнему удобнее. Разумно перестать использовать её по умолчанию там, где важна производительность, а не сносить её.
Кому это стоит делать
- Mac с Intel: пропустите. MLX требует Apple Silicon, M1 или новее, так что оставайтесь на llama.cpp и Ollama.
- Базовые M1 или M2 с 8–16 ГБ RAM: прирост будет реальным, но меньше. Выигрыш растёт с числом ядер GPU и пропускной способностью памяти, так что базовый M1 не станет ощущаться как M4 Max.
- Чипы Pro, Max и Ultra с моделями примерно от 3B до 20B: здесь переход окупается нагляднее всего и сразу.
- Все, кто запускает MoE-модели от 30B: категория с самым большим выигрышем в бенчмарках выше.
- Все, у кого плотные модели больше примерно 27B: переходите ради небольшого сокращения времени до первого токена, но не рассчитывайте на громкие цифры.
Подбирайте движок под чип
Ничто из этого не делает MLX лучше в каком-то абстрактном смысле. Речь о том, чтобы использовать инструмент на железе, для которого он создан. llama.cpp — блестящая переносимая программа, и именно из-за переносимости её нельзя настроить под одно семейство чипов так же плотно, как фреймворк от компании, которая эти чипы делает.
Если вы всерьёз работаете с локальными моделями на Mac — ради приватности, экономии или контроля, — движок под вашим промптом важен не меньше, чем выбранная модель. Люди часами выбирают, какую модель скачать, и ни разу не спрашивают, что её на самом деле запускает. Проверьте свой — возможно, там простаивает больше производительности, чем вы думаете.