# MLX-LM на Mac: установить и запустить локальную модель

Источник: https://modelium.tech/zhurnal/mlx-lm/

MLX-LM — Python-инструмент для запуска языковых моделей с MLX на Mac с Apple Silicon. Установите пакет в виртуальное окружение, укажите конкретный MLX-репозиторий в `mlx_lm.chat --model` и проверьте ответ на контрольный вопрос. Потребность в памяти зависит от модели и контекста, а не только от размера файла; запуск на Mac редакцией Modelium не выполнялся.

**Сверено 26 сентября 2026 года.** Исходники MLX-LM закреплены на commit `87b7b583a697537aa68f47130b40884700b5f55f`, пример модели — на HF-ревизии `73e3e38d981303bc594367cd910ea6eb48349da8`; руководство MLX по установке — живой документ. Это сверка документации и кода, **не запуск на Mac**. Версия пакета из PyPI может отличаться от исследованного commit; перед использованием команды проверьте справку установленной версии. Запрос «mlx lm mac» найден в подсказках, но частотность и рост не измерялись.

## Когда выбрать MLX-LM на Mac?

MLX-LM — пакет Python для текстовой генерации, интерактивного чата, конвертации и дообучения моделей на MLX. README проекта описывает работу с репозиториями Hugging Face и установку `pip install mlx-lm` [s1](#src-s1). Этот материал рассматривает **Mac с Apple Silicon**. Новая документация MLX также описывает Linux-бэкенды CPU/CUDA; поэтому «MLX существует только на Mac» было бы неверным обобщением [s2](#src-s2)[s6](#src-s6).

Для первого опыта нужен узкий маршрут: **текстовый вопрос → небольшая MLX-совместимая модель → доступная память конкретного Mac → MLX-LM → текстовый ответ в терминале**. В качестве примера выбрана community-конверсия `mlx-community/Qwen3-0.6B-4bit` из Qwen3-0.6B; её карточка указывает MLX, а файл конфигурации — архитектуру Qwen3 и 4-битную квантизацию [s7](#src-s7)[s8](#src-s8). Это кандидат для начального технического теста, **не** рекомендация качества для ваших документов или обещание запуска на любом Mac. GGUF для llama.cpp — другой формат; описание различий есть в [материале о квантизации](/zhurnal/gguf-i-kvantovanie/).

## Что проверить до установки?

Согласно инструкции MLX для стандартной установки на Mac через PyPI нужны Apple Silicon, нативный Python и macOS от 14.0. Зафиксированный `pyproject.toml` **MLX-LM** строже по Python: требуется версия **не ниже 3.11**. Для большого веса или длинного контекста этого недостаточно как оценки памяти: предел зависит от весов, KV-кеша и других процессов; размер файла модели на диске нельзя превращать в минимум unified memory [s6](#src-s6)[s2](#src-s2)[s1](#src-s1). Сравнить варианты устройств можно в [гайде по компьютеру для локальных моделей](/zhurnal/kompyuter-dlya-lokalnyh-modeley/).

На Mac выполните диагностику в Terminal:

uname -msw_vers -productVersionpython3 --versionpython3 -c 'import platform; print(platform.machine())'

Ожидаемый ориентир для этого гайда — `arm64` у нативного процесса Python, подходящая версия macOS и Python от 3.11. Если процесс Python запускается через Rosetta как `x86_64`, установите нативный Python и создайте окружение заново; официальный раздел troubleshooting MLX предупреждает о проблемах поиска совместимого пакета при ненативном Python [s6](#src-s6)[s2](#src-s2). Команды диагностики здесь не выполнялись на Mac редакции.

## Как установить пакет и получить первый ответ?

Создайте отдельную папку и виртуальное окружение. Команда установки из README — `pip install mlx-lm`, а `pyproject.toml` регистрирует исполняемые файлы `mlx_lm.chat` и `mlx_lm.generate` [s1](#src-s1)[s2](#src-s2):

mkdir mlx-lm-first-chat && cd mlx-lm-first-chatpython3 -m venv .venvsource .venv/bin/activatepython -m pip install mlx-lmmlx_lm.chat --helpmlx_lm.chat --model mlx-community/Qwen3-0.6B-4bit --max-tokens 512

Последняя команда выбирает **конкретный HF-репозиторий**, а не тяжёлую модель по умолчанию: README указывает для чата без `--model` другую модель `mlx-community/Llama-3.2-3B-Instruct-4bit`; код `chat.py` принимает HF ID или локальный каталог и лимит генерации через `--max-tokens` [s1](#src-s1)[s4](#src-s4). При первом обращении к нескачанным весам нужен сетевой доступ к Hub; имя репозитория без ревизии может разрешиться в новый commit. Для воспроизводимой проверки зафиксируйте скачанную ревизию и версии `mlx-lm`, `mlx`, Python и macOS, затем укажите **локальный каталог снимка** через `--model`; исследованная карточка относится к HF-ревизии `73e3e38d981303bc594367cd910ea6eb48349da8` [s1](#src-s1)[s4](#src-s4)[s7](#src-s7). Перед использованием весов в работе проверьте их происхождение и лицензию по [гайду Hugging Face](/zhurnal/hugging-face-modeli/).

Введите простой контрольный вопрос, например «Ответь одним предложением: что означает локальный запуск модели?». Критерий для **вашего** теста — завершённая загрузка модели, отсутствие ошибки и содержательный ответ в выбранной сессии, а не только появившийся Python prompt. В чате `q` завершает сессию, `r` сбрасывает её контекст; окно диалога сохраняет предыдущие сообщения до сброса [s1](#src-s1)[s4](#src-s4). Качество на русскоязычных документах, расход памяти и скорость этим одним вопросом не доказываются.

Если нужна одиночная неинтерактивная проверка, `mlx_lm.generate` принимает `--model`, `--prompt` и `--max-tokens`, а исходный код предусматривает применение chat template, если он есть у токенизатора [s3](#src-s3):

mlx_lm.generate --model mlx-community/Qwen3-0.6B-4bit \  --prompt 'Ответь кратко по-русски: что такое локальная модель?' --max-tokens 512

Это инструкция из анализа параметров, не засвидетельствованный вывод модели. Поведение и форма ответа конкретных квантов требуют реального прогона на вашем Mac.

## Что делать, если установка или генерация не удалась?

- `**No matching distribution**`** или процесс x86 под Rosetta:** проверьте `uname -m`, архитектуру самого Python, macOS и `python3 --version`; MLX для установки на Mac требует нативный Apple Silicon Python, а текущий исходный пакет MLX-LM — Python от 3.11 [s6](#src-s6)[s2](#src-s2).

- **Ошибка при загрузке модели:** отделите сетевой доступ к Hub от локального запуска. Проверьте точное написание HF ID и выбранную ревизию/файлы на [Hugging Face](/zhurnal/hugging-face-modeli/); документация MLX-LM описывает загрузку модели из Hub при указании репозитория [s1](#src-s1)[s7](#src-s7). Не вводите закрытые данные, пока способ загрузки и сетевые обращения не выяснены.

- **Модель не помещается или ответ слишком медленный:** начните с меньшего варианта или сократите вход/контекст. README описывает ограничение KV-кеша и уменьшение `--prefill-step-size` для снижения пиковой памяти ценой других свойств, но не даёт универсального «минимума RAM» для всех моделей [s1](#src-s1). Не запускайте предложенную в README команду `sudo sysctl` как первый способ диагностики: она меняет системный лимит памяти и описана отдельно для больших моделей на macOS от 15.0 [s1](#src-s1).

- **Странный ответ:** убедитесь, что выбраны правильный `--model` и шаблон чата; `chat.py` применяет шаблон токенизатора, а в генераторе есть отдельный флаг отключения шаблона. Не оценивайте пригодность модели по одной короткой фразе [s4](#src-s4)[s3](#src-s3).

## Нужен ли HTTP-сервер вместо терминала?

MLX-LM документирует `mlx_lm.server --model ...`, локальный порт `8080` и маршрут `/v1/chat/completions` [s5](#src-s5). Но сам разработчик **не рекомендует этот сервер для production**, поскольку в нём лишь базовые проверки безопасности; не выставляйте тестовый endpoint во внешнюю сеть и не считайте совместимость URL полноценной совместимостью API [s5](#src-s5). Для первого ответа сервер не нужен. Если сравниваете другой runtime и API, откройте [Ollama](/zapusk/ollama/); её формат модели и условия запуска следует проверять отдельно.

`pyproject.toml` указывает лицензию **MIT для кода MLX-LM**; карточка выбранной community-модели помечена **Apache-2.0 для её весов** и ссылается на базовую модель Qwen. Это разные объекты, из меток нельзя автоматически сделать юридический вывод о конкретном коммерческом сценарии [s2](#src-s2)[s7](#src-s7). После первого локального ответа следующий осмысленный шаг — [проверить сетевые соединения](/zhurnal/proverka-offline-kontura-ii/) до работы с настоящими документами: слово «локальный» не подтверждает, что загрузчик и процесс никогда не обращаются к сети.

## Источники

1. [MLX-LM — README: установка, чат, генерация и память](https://github.com/ml-explore/mlx-lm/blob/87b7b583a697537aa68f47130b40884700b5f55f/README.md) — получено 2026-09-26
2. [MLX-LM — pyproject.toml: Python, зависимости и CLI](https://github.com/ml-explore/mlx-lm/blob/87b7b583a697537aa68f47130b40884700b5f55f/pyproject.toml) — получено 2026-09-26
3. [MLX-LM — CLI генерации](https://github.com/ml-explore/mlx-lm/blob/87b7b583a697537aa68f47130b40884700b5f55f/mlx_lm/generate.py) — получено 2026-09-26
4. [MLX-LM — реализация интерактивного чата](https://github.com/ml-explore/mlx-lm/blob/87b7b583a697537aa68f47130b40884700b5f55f/mlx_lm/chat.py) — получено 2026-09-26
5. [MLX-LM — HTTP Model Server](https://github.com/ml-explore/mlx-lm/blob/87b7b583a697537aa68f47130b40884700b5f55f/mlx_lm/SERVER.md) — получено 2026-09-26
6. [MLX — Build and Install](https://ml-explore.github.io/mlx/build/html/install.html) — получено 2026-09-26
7. [mlx-community/Qwen3-0.6B-4bit — карточка модели](https://huggingface.co/mlx-community/Qwen3-0.6B-4bit/blob/73e3e38d981303bc594367cd910ea6eb48349da8/README.md) — получено 2026-09-26
8. [mlx-community/Qwen3-0.6B-4bit — config.json](https://huggingface.co/mlx-community/Qwen3-0.6B-4bit/blob/73e3e38d981303bc594367cd910ea6eb48349da8/config.json) — получено 2026-09-26
