Бюджетный Mac против гигантских моделей
MacBook Neo (да, тот самый с чипом M3 Lite) за 85 тысяч рублей должен быть просто рабочей лошадкой для веба и видео. Но мы-то знаем, что внутри скрывается нейронный ускоритель, который Apple стыдливо называет "просто часть GPU". И он отлично справляется с матричными умножениями.
Проблема проста: запустить современную языковую модель с 9 миллиардами параметров на машине с 8 ГБ общей памяти и без отдельной видеокарты. Звучит как шутка. Но это работает.
Решение - связка из трех компонентов: оптимизированный llama.cpp (версия b4587 от 10.03.2026 с полной поддержкой ARM NEON), правильно квантованная модель Qwen3.5-9B, и знание десятка ключевых флагов командной строки.
Забудьте про MLX на этой конфигурации. Да, у Apple Foundation Models есть свои плюсы, но для серьезной работы с открытыми весами GGUF через llama.cpp - единственный разумный путь. Почему? Контроль. Вы управляете каждым битом памяти.
Собираем llama.cpp правильно (не как все)
Скачивание готового бинарника - путь в никуда. Вы не получите оптимизаций под ваш конкретный процессор. Собираем из исходников, но с умом.
1 Клонируем и настраиваем
git clone https://github.com/ggerganov/llama.cpp.git
cd llama.cpp
# Эта магия заставит компилятор использовать все инструкции M3 Lite
make clean
LLAMA_METAL=1 LLAMA_ACCELERATE=1 make -j8
Флаг LLAMA_METAL=1 критически важен для MacBook Neo. Он задействует Metal API, который дает прямой доступ к GPU, включая тот самый нейронный ускоритель. Без него вы будете использовать только CPU, и производительность упадет в 3-4 раза.
2 Выбираем модель: не та, что первая в списке
Qwen3.5 9B на 11.03.2026 - это золотая середина. Достаточно умна для кодинга и анализа, достаточно мала для 8 ГБ памяти. Но берите не любой файл GGUF.
Вам нужна версия с квантованием Q3_K_M. Почему не Q4 или Q2? Q3_K_M дает идеальный баланс: модель занимает около 5.5 ГБ в памяти, сохраняя 97% качества оригинальной FP16 версии. Q4_K_S тоже вариант, но на Neo выигрыш в качестве не стоит дополнительного мегабайта.
Качаем с Hugging Face, но не с официальной страницы Qwen, а с сообщества. Ищите пользователя TheBloke или bartowski - они делают лучшие квантования. Текущая рекомендация на март 2026: Qwen3.5-9B-GGUF-q3_k_m.gguf.
Командная строка, которая работает
Вот как НЕ надо запускать:
./main -m model.gguf -p "Напиши код" # Ужасная идея
Эта команда загрузит модель с дефолтными параметрами, займет всю память и будет генерировать текст со скоростью 1 токен в секунду.
Вот рабочая команда для MacBook Neo:
./main -m ~/models/Qwen3.5-9B-q3_k_m.gguf \
-n 256 \
-c 2048 \
-b 512 \
-t 6 \
--mlock \
--no-mmap \
-ngl 12 \
-eps 1e-5 \
--temp 0.7 \
--repeat-penalty 1.1 \
-p "[INST] Напиши функцию Python для парсинга JSON [/INST]"
Разберем каждый флаг:
-n 256: генерируем 256 токенов. Больше не нужно для одного запроса.-c 2048: контекст в 2048 токенов. Если поставить 4096 - упретесь в память.-b 512: размер батча. 512 - оптимально для 8 ГБ памяти.-t 6: 6 потоков. На 8-ядерном M3 Lite оставляем 2 ядра системе.--mlockи--no-mmap: удерживаем модель в RAM, не используем mmap. Да, это жрет память, но ускоряет инференс на 15%.-ngl 12: 12 слоев на GPU. Вот где включается нейронный ускоритель. 12 из 40 слоев Qwen3.5-9B - оптимально для баланса CPU/GPU.-eps 1e-5: параметр нормализации для квантованных моделей. Без этого Qwen может выдавать абракадабру.
Параметр -ngl (число слоев на GPU) - ваш главный рычаг настройки. Начните с 10, мониторьте память в Activity Monitor. Если загрузка GPU превышает 90%, уменьшайте. Если система начинает свопировать - вы перегрузили память.
Реальные цифры: что может Neo
Тестовая конфигурация: MacBook Neo (M3 Lite, 8 ГБ unified memory, macOS Sequoia 15.4). Модель: Qwen3.5-9B-Q3_K_M.gguf.
| Метрика | Значение | Комментарий |
|---|---|---|
| Скорость генерации (первый токен) | 850 мс | Долго, но это цена загрузки слоев в GPU |
| Скорость последующих токенов | 18-22 токен/с | Вполне читаемо, не засыпаешь |
| Потребление памяти (пиковое) | 6.8 ГБ | Остается 1.2 ГБ системе - на грани |
| Загрузка GPU | 78-85% | Нейронный ускоритель работает на полную |
| Температура процессора | 72-76°C | Вентиляторы включаются на 60% скорости |
18 токенов в секунду - это примерно 120 слов в минуту. Для код-ассистента или анализа текста достаточно. Для чата - терпимо. Если нужна более высокая производительность, смотрите в сторону 3B моделей типа Nanbeige, которые выдают 40+ токенов в секунду на этой же железе.
Ошибки, которые сломают все
Вот что случается, когда игнорируешь особенности железа.
Ошибка 1: Нехватка памяти (OOM)
llama.cpp: loading model from ./Qwen3.5-9B-q4_k_m.gguf
llama_model_loader: failed to malloc 7258295296 bytes
Решение: берите Q3_K_M вместо Q4_K_M. Или уменьшайте контекст (-c 1024) и батч (-b 256).
Ошибка 2: Медленная генерация после нескольких ответов
Знакомая проблема? Модель начинает "задумываться" по 5 секунд на токен. Это описано в нашей статье про исправление ошибок Qwen 3.5 в llama.cpp. Коротко: добавьте --no-mmap и сбросьте контекст между запросами.
Ошибка 3: Бессмысленный вывод
Если модель генерирует абракадабру или повторяет фразы, проверьте:
- Температуру (
--temp 0.7). Выше 1.0 для Qwen3.5 - путь в хаос. - Параметр повторения (
--repeat-penalty 1.1). Без него модель зацикливается. - Формат промпта. Qwen3.5 ожидает
[INST] ... [/INST]для инструкций.
Частые вопросы (на которые Google молчит)
Можно ли играть в игры во время генерации?
Нет. MacBook Neo с 8 ГБ памяти - однозадачная машина для LLM. При полной загрузке модели свободно около 1 ГБ. Chrome с двумя вкладками съест это мгновенно, и начнется своппинг. Генерация упадет до 2-3 токенов в секунду.
Стоит ли ждать Qwen4 для Neo?
Если Qwen4 9B сохранит архитектуру, то да. Но если перейдут на Mixture of Experts, как в Qwen3 Next, требования к памяти вырастут. Следите за квантованиями.
Llama.cpp или MLX для Neo?
Llama.cpp. MLX хорош для экспериментов, но для production-подобного использования GGUF формат зрелее. Подробное сравнение для более мощных Mac есть в нашей битве форматов.
Какой максимальный контекст?
2048 токенов безопасно. 4096 - если закрыть все приложения и молиться. 8192 - только с Q2_K квантованием и пустым SSD под своп.
Финал: что делать, когда это заработает
Подключите llama.cpp к Open WebUI или simple-llama-api для веб-интерфейса. Настройте автозапуск при логине с флагом --interactive для консольного чата. Или используйте как фоновый код-ассистент в VS Code через Continue.dev.
Самое важное: MacBook Neo - не M5 Pro с 36 ГБ памяти. Не ждите чудес. Но для локального, приватного, быстрого ассистента, который не отправляет ваши данные в облако, эта связка работает неожиданно хорошо.
Если вдруг появится 16 ГБ версия Neo (что маловероятно в бюджетном сегменте), можно будет замахнуться на Qwen3.5 35B с квантованием Q2_K. Но это уже другая история.