Зачем держать 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.

Шаги:

  1. Поставить LM Studio с официального сайта.
  2. Открыть Discover (вкладка с моделями).
  3. В фильтре указать «MLX» (важно — без этого подсунет GGUF-вариант).
  4. Найти Qwen3-Coder-Next или подобную сборку.
  5. Скачать (~5.5 GB).
  6. Загрузить в 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 latency0.3-0.5 с
Generation speed18-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 speed50-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 как раз тот случай, когда барьер входа честно низкий. ✅

Источники #