Зачем держать LLM локально 🎯 #
Рабочий день разработчика всё больше обвязан вокруг подсказок от LLM: автодополнение, рефакторинг, объяснение чужого кода, генерация тестов. Облачные модели делают это качественно, но за это приходится платить тремя вещами: подпиской, скоростью соединения и доверием к провайдеру в части того, какой код вы туда отправляете.
Локальная модель снимает все три. Подписка обнуляется, latency определяется только железом, а код никуда не уходит за пределы ноутбука. Цена вопроса — модель меньше топовых облачных, чуть больше суеты с настройкой и постоянное место на диске.
В этом посте разбираемся с Qwen3-Coder-Next-MLX-4bit: квантованной версией кодовой модели от Alibaba, оптимизированной под Apple Silicon. Что это такое, как поставить, как подключить к Codex CLI и когда честно лучше остаться в облаке.
Что это такое и почему именно эта сборка #
Qwen3-Coder — линейка моделей от Alibaba, специально натренированных на коде. Базовая модель — около 8 млрд параметров. Это не GPT-4-class, но для большинства повседневных задач (понять код, написать функцию, сгенерить тесты, отрефакторить) — более чем достаточно.
MLX — относительно новый ML-фреймворк от Apple. Создан с нуля под Apple Silicon: использует unified memory (CPU и GPU делят одну RAM), zero-copy между ними, lazy evaluation. Для пользователя это значит, что модель работает заметно быстрее, чем тот же файл, запущенный через PyTorch с MPS-бэкендом.
4-bit квантизация — каждое значение веса хранится в 4 битах вместо стандартных 16. Это уменьшает память в 4 раза с заметной, но обычно приемлемой потерей качества.
Важно не путать форматы: MLX хранит модели в собственном формате (.safetensors обёрнутый в MLX-структуру), а не в .gguf (это формат llama.cpp). При выборе модели в LM Studio это нужно учитывать: «MLX»-вариант и «GGUF»-вариант — это разные файлы для разных движков, не одно и то же.
Для Qwen3-Coder-Next-MLX-4bit характеристики такие:
- Параметры: ~8B (тот же что и у не-квантованной версии).
- Формат: MLX (
.safetensors). - Размер на диске: ~5.5 GB.
- Контекст: 32 768 токенов.
- Минимум RAM: 16 GB (модель + накладные).
- Комфортный минимум: 24-32 GB (если ещё нужна работа с IDE и браузером параллельно).
Установка через LM Studio 📦 #
LM Studio — desktop-приложение для работы с локальными LLM. Поддерживает и MLX, и GGUF, плюс встроенный OpenAI-совместимый сервер на localhost.
Шаги:
- Поставить LM Studio с официального сайта.
- Открыть Discover (вкладка с моделями).
- В фильтре указать «MLX» (важно — без этого подсунет GGUF-вариант).
- Найти
Qwen3-Coder-Nextили подобную сборку. - Скачать (~5.5 GB).
- Загрузить в My Models, потом Load.
После загрузки в правом sidebar’е будут параметры:
- Context length: 8 192 для большинства задач хватает; 32 768 если нужен большой prompt с длинным куском кода.
- GPU offload: «Max» — отдать всё на Metal-ядра.
- Threads: оставить дефолт (LM Studio сам подберёт).
LM Studio автоматически поднимет OpenAI-compatible endpoint на http://localhost:1234/v1/. Дальше с моделью работают любые клиенты, понимающие OpenAI API.
Подключение к Codex CLI через MCP 🔌 #
Если вы используете Codex CLI (агентский интерфейс на базе LLM), к нему можно подключить локальную модель через MCP-сервер для LM Studio.
В ~/.codex/config.toml:
[[mcpServers]]
name = "lmstudio"
command = "npx"
args = ["-y", "@mlaboard/lmstudio-mcp"]После перезапуска Codex увидит локальную модель как один из доступных провайдеров. Smoke-тест: попросить простую задачу типа «напиши функцию Фибоначчи на Python» — должен ответить за 0.5–1 секунду.
При первом запуске MCP-сервер скачивает свой пакет через npx. Это разовая операция, дальше работает с уже установленного.
Замеры на M2 Max 📊 #
На моём железе (M2 Max, 32 GB unified memory) получились такие цифры:
| Метрика | Значение |
|---|---|
| Размер модели на диске | 5.5 GB |
| RAM при загрузке | ~6 GB |
| First-token latency | 0.3-0.5 с |
| Generation speed | 18-22 токена/с |
| Время на ~500-токенный ответ | ~25 секунд |
Это медленнее облачного GPT-4 (там 50-80 ток/с в среднем), но быстрее, чем кажется по первому впечатлению. Для итеративной работы (написал → попросил → поправил руками → попросил снова) разница в latency почти неощутима, потому что много времени всё равно уходит на чтение и редактирование результата.
Если поднять контекст до 32k и закинуть в prompt большой кусок кода (типа целого файла на 1000 строк), скорость падает примерно вдвое: 9-12 ток/с при first-token latency около 2 секунд. Ничего страшного, но уже заметно.
Сравнение с облаком #
| Показатель | Облако (GPT-4-class) | Локально (Qwen3-MLX) |
|---|---|---|
| Latency (first token) | 1-3 с | 0.3-0.5 с |
| Generation speed | 50-80 ток/с | 18-22 ток/с |
| Стоимость на месяц | $20-200 (зависит от плана) | $0 (после железа) |
| Конфиденциальность | По договору с провайдером | Полная, код не уходит |
| Offline | ✗ | ✓ |
| Контекст | 128k+ | 32k |
| Качество на сложных задачах | Лучше | Хуже |
Когда честно лучше облако #
Локальная модель не серебряная пуля. Есть классы задач, где она объективно проигрывает:
Большой контекст. 128k+ контекст-окно у топовых облачных моделей позволяет закидывать в prompt целые модули кода. У 32k Qwen банально не хватит места.
Сложные многошаговые задачи. Спроектировать архитектуру модуля, отрефакторить взаимосвязанные классы, написать миграцию с несколькими шагами — здесь топовые модели заметно качественнее.
Мультимодальность. Анализ скриншотов UI, генерация по чертежу, чтение PDF — Qwen3-Coder-Next специализирован под код, картинки не обрабатывает.
Редкие языки/фреймворки. На массовом Python, JS, Go качество приемлемое. На нишевых вещах (Elixir, Crystal, какой-нибудь специфичный DSL) облачная модель тренировалась на большем корпусе и даёт более уверенные ответы.
Когда локалка точно полезна #
И обратная сторона:
Чувствительные репозитории. Закрытый клиентский код, медицинские/финансовые данные, что-то под NDA — локально единственный вариант, который не нарушает соглашений.
Работа в дороге без сети. Поезд, самолёт, кафе с глюкавым WiFi — локальная модель отвечает одинаково ровно.
Высокочастотные задачи. Если модель используется десятки раз в час (autocomplete, объяснение fragment’ов кода в IDE), даже маленькая абонентская плата быстро накапливается. Локалка после железа бесплатна.
Эксперименты с агентами. Запускать тестовый цикл, где LLM крутится в фоне без лимитов, проще на собственном железе. Лимиты по rate limit / стоимости в облаке быстро становятся узким местом.
Размышления после месяца использования #
Для меня сложилась гибридная схема: 70% повседневной работы (объяснить функцию, написать regex, сгенерить unit-тест, набросать структуру модуля) — Qwen локально. Остальные 30% (сложная архитектура, разбор большого PR, работа со скриншотом) — облако.
Это не «локальная победила облачную». Это разделение по типу задач: где важна privacy и скорость отклика — локально, где важно качество и контекст — облако.
Установка занимает максимум полчаса (LM Studio + скачать файл + подключить через MCP). Дисковое пространство в 5.5 GB не критично даже на 256 GB Mac. Если вы давно думали попробовать локальные LLM, но откладывали из-за «сложно настроить» — Qwen3-Coder-Next-MLX-4bit как раз тот случай, когда барьер входа честно низкий. ✅
Источники #
- Документация MLX: github.com/ml-explore/mlx
- LM Studio: lmstudio.ai
- Qwen models на HuggingFace: huggingface.co/Qwen
- Model Context Protocol: modelcontextprotocol.io