Как я перестал выбирать между удобством и контролем при запуске LLM на Mac

17 апр 2026
21,831
1,885
114
2 недели

Знакомая ситуация: хочется покрутить новую модельку локально, но каждый раз это превращается в квест. Либо ты ставишь тяжеловесное приложение «всё в одном», которое съедает всю память и не дает ничего настроить, либо возишься с консольными скриптами, пытаясь подружить зависимости и веса.

Недавно наткнулся на проект oMLX, который пытается усидеть на двух стульях. Это сервер для инференса больших языковых моделей, заточенный под Apple Silicon. Он дает интерфейс в трее macOS, но при этом под капотом у него взрослые оптимизации вроде непрерывного батчинга и хитрого кэширования.

Что это вообще такое

Если коротко, oMLX — это обертка над библиотекой MLX от Apple, которая превращает ваш Mac в полноценный сервер для нейросетей. Автор проекта, разработчик под ником jundot, явно вдохновлялся vLLM. Он хотел инструмент, который позволит «приколотить» любимые модели в памяти, автоматически подгружать тяжелые веса по запросу и при этом не лезть в терминал каждый раз, когда нужно сменить контекст.

Проект поддерживает не только текстовые модели, но и зрение (VLM), OCR и даже эмбеддинги. Всё это работает через API, совместимый с OpenAI и Anthropic, так что его легко подцепить к любому привычному клиенту или IDE.

oMLX Admin Dashboard

Реклама

Двухуровневый кэш и другие фишки

Самое интересное здесь скрыто в управлении памятью. В oMLX реализовали концепцию Hot и Cold кэша для KV-блоков.

  • Hot tier (RAM): то, что используется прямо сейчас, лежит в оперативной памяти для мгновенного доступа.
  • Cold tier (SSD): когда память заканчивается, блоки сбрасываются на диск в формате safetensors.

Когда вы возвращаетесь к старому диалогу, сервер не пересчитывает весь контекст с нуля, а подтягивает его с SSD. Это критично, если вы используете локальные модели для работы с кодом (например, через Claude Code), где контекст может раздуваться до огромных размеров.

Еще пара моментов, которые зацепили:

  • Continuous Batching: сервер умеет обрабатывать несколько запросов одновременно, эффективно распределяя ресурсы.
  • Умное вытеснение (LRU): если вы запустили новую модель, а памяти не хватает, oMLX сам выгрузит ту, которой вы дольше всего не пользовались.
  • Pinning: можно закрепить конкретную модель в памяти, чтобы она всегда была готова к работе.

Как это выглядит в работе

У проекта есть нативное приложение для macOS (на PyObjC, никакого Electron, что радует). После установки в менюбаре появляется иконка, через которую можно мониторить нагрузку и управлять сервером.

oMLX Menubar

Для тех, кто предпочитает веб-интерфейс, есть админка по адресу /admin. Там можно скачивать модели прямо с HuggingFace в один клик, настраивать параметры сэмплинга для каждой модели отдельно и даже прогонять бенчмарки, чтобы понять, сколько токенов в секунду выдает ваша «прошка» или «эйр».

oMLX Model Downloader

Техническая сторона вопроса

Под капотом связка из FastAPI и движков на базе mlx-lm и mlx-vlm. Архитектура довольно прозрачная: есть пул движков, планировщик запросов и менеджер памяти, который следит, чтобы система не ушла в OOM (Out of Memory). По умолчанию лимит стоит на уровне «вся RAM минус 8 ГБ», но это настраивается.

Интересно реализована поддержка инструментов (Tool Calling). Сервер умеет распознавать форматы вызова функций для целого зоопарка моделей: от Llama и Qwen до специфичных Kimi или Mistral.

Кому стоит попробовать

Если у вас Mac на M1/M2/M3/M4 с macOS 15.0+ и вы устали от того, что локальные LLM либо слишком сложные в настройке, либо слишком ограничены в возможностях, oMLX выглядит как отличный «средний путь».

Он особенно хорош для:

  1. Разработчиков, которым нужен стабильный локальный бэкенд для автодополнения кода.
  2. Тех, кто экспериментирует с разными моделями и не хочет вручную чистить кэш и память.
  3. Любителей визуального контроля — админка и дашборд в трее действительно экономят время.

Проект активно развивается, и хотя в нем еще хватает открытых issue, база выглядит очень солидно. Установить можно через обычный .dmg или через brew:

brew tap jundot/omlx https://github.com/jundot/omlx
brew install omlx
brew services start omlx

Пожалуй, это одно из самых вменяемых решений для тех, кто хочет выжать максимум из железа Apple Silicon, не превращаясь при этом в системного администратора нейросетей.

🍪 Мы используем файлы cookie и сервис аналитики Яндекс.Метрика, чтобы сайт работал лучше. Продолжая пользоваться devtrends.ru, вы соглашаетесь с обработкой данных согласно Политике конфиденциальности.