LLM для Mac Studio M4 Max: запуск Qwen2.5-72B под архитектуру как код | AiManual
AiManual Logo Ai / Manual.
11 Янв 2026 Гайд

Выбор LLM для Mac Studio M4 Max: практический гайд по инференсу Qwen2.5 для архитектуры как код

Практическое руководство по выбору и запуску Qwen2.5-72B на Mac Studio M4 Max для генерации инфраструктуры. Скорость токенов, настройка MLX, сравнение моделей.

Зачем вам эта статья, если у вас уже есть M3 Ultra?

Вы купили Mac Studio M4 Max, вдохновились нашими тестами GLM-4.7 на M3 Ultra, и теперь хотите запустить что-то посерьезнее. Не просто поболтать с ассистентом, а заставить нейросеть генерировать Terraform модули, Kubernetes манифесты и схемы AWS CloudFormation. Архитектура как код - это не про болтовню, это про точность, контекст и понимание зависимостей.

Проблема в том, что большинство статей про локальные LLM заканчиваются на этапе "ура, модель загрузилась". А что дальше? Какой скорости генерации ждать на M4 Max? Какая модель реально справится с YAML-файлом на 500 строк? И почему Qwen2.5-72B-Instruct - это не очевидный, но правильный выбор для архитектора?

Главная ошибка: выбирать модель по размеру параметров, а не по качеству генерации кода. 72B - это не "больше значит лучше", это "тяжелее значит медленнее, но точнее".

M4 Max против M3 Ultra: где собака зарыта

Цифры из презентаций Apple - это одно. Реальная работа с LLM - совсем другое. M4 Max получил улучшенные Neural Engines (на 30% быстрее, говорят они), но для нас важнее две вещи: пропускная способность памяти и эффективность Metal API.

Параметр M3 Ultra (64GB) M4 Max (64GB) Что это значит для LLM
Пропускная способность памяти 800 ГБ/с ~400 ГБ/с M4 Max медленнее загружает веса модели в кэш. Но это не фатально для инференса.
Neural Engine ядра 32 ~40 Больше параллелизма для матричных операций. Реально чувствуется на больших контекстах.
Поддержка Metal 3.5 Есть Есть + оптимизации MLX и llama.cpp работают стабильнее. Меньше падений с Exit code 6.

Если у вас уже есть M3 Ultra, гнаться за M4 Max только для LLM - сомнительная идея. Разница в скорости генерации будет 10-15%, а не 30%, как обещают маркетологи. Но если вы выбираете с нуля, M4 Max - более сбалансированный вариант. Особенно если помимо LLM вы работаете с компиляцией кода или контейнерами.

💡
Не верьте синтетическим тестам токенов в секунду. В реальности скорость падает на 30-40%, когда модель "думает" над сложным промптом с архитектурными ограничениями. Тестируйте на своих задачах.

Почему Qwen2.5-72B-Instruct, а не Llama 3.1 или Command R+?

Потому что китайские модели научились понимать контекст лучше западных. Серьезно. Qwen2.5-72B-Instruct выдает более структурированные ответы для технических задач. Она меньше "болтает", больше делает. Особенно когда дело касается YAML, HCL и JSON.

Сравните сами:

  • Llama 3.1 70B: Генерирует много пояснительного текста, часто "забывает" закрывающие теги в XML. Скорость на M4 Max: ~8 токенов/с.
  • Command R+ 104B: Слишком общий, плохо справляется с нюансами облачных провайдеров. И весит как танк.
  • Qwen2.5-72B-Instruct: Понимает разницу между AWS IAM policy и Azure RBAC. Генерирует чистый, готовый к использованию код. Скорость: ~6-7 токенов/с, но качество того стоит.

Квантованная версия Q4_K_M занимает около 40GB памяти. На M4 Max с 64GB Unified Memory это идеально - остается место для системы и KV-кэша. Если у вас 32GB памяти, посмотрите на наш тест Qwen3-30B - он легче, но и менее способный для сложной инфраструктуры.

1 Скачиваем и готовим модель

Не используйте Hugging Face напрямую - это медленно. Качайте через aria2c или wget с зеркал. Лучший источник - официальный репозиторий Qwen на ModelScope.

# Создаем директорию для моделей
mkdir -p ~/models/qwen2.5-72b-instruct
cd ~/models/qwen2.5-72b-instruct

# Скачиваем квантованную версию GGUF
aria2c -x 16 -s 16 \
  https://modelscope.cn/api/v1/models/qwen/Qwen2.5-72B-Instruct-GGUF/repo?Revision=master&FilePath=qwen2.5-72b-instruct-q4_k_m.gguf

# Проверяем размер файла (должно быть ~40GB)
ls -lh *.gguf

Не пытайтесь скачивать FP16 версию (140GB)! Она не влезет в память M4 Max, а даже если влезет, будет работать в 10 раз медленнее. Q4_K_M - оптимальный баланс.

2 Выбираем инструмент для инференса: MLX или llama.cpp?

Здесь все зависит от ваших задач:

Инструмент Плюсы Минусы Когда использовать
llama.cpp Стабильность, поддержка всех моделей GGUF, отличная оптимизация под Metal Сложнее настраивать контекст, нет встроенного веб-интерфейса Для production-задач, где нужна надежность
MLX community Быстрее на M-серии, проще API, активная разработка Меньше моделей, могут быть баги с большими контекстами Для экспериментов и быстрого прототипирования
LM Studio Красивый GUI, удобно для тестирования Ест больше памяти, может падать с ошибками Metal API Если вы только начинаете и не хотите возиться с терминалом

Я выбираю llama.cpp для работы. Он предсказуем. После истории с падениями LM Studio на M5, доверяю только консольным инструментам.

3 Собираем и настраиваем llama.cpp под M4 Max

# Клонируем репозиторий
git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp

# Собираем с поддержкой Metal и ускорением для M4
make clean
LLAMA_METAL=1 make -j8

# Проверяем, что бинарник работает
./main --help | grep -i metal

Теперь создаем bash-скрипт для запуска с оптимальными параметрами:

#!/bin/bash
# ~/bin/run_qwen.sh

MODEL_PATH="~/models/qwen2.5-72b-instruct/qwen2.5-72b-instruct-q4_k_m.gguf"

cd ~/llama.cpp

./main \
  -m "$MODEL_PATH" \
  -n 2048 \  # Количество генерируемых токенов
  -c 32768 \  # Размер контекста (Qwen2.5 поддерживает 32K)
  -ngl 99 \  # Слои на GPU (почти все)
  -t 8 \  # Количество потоков CPU
  -b 512 \  # Размер batch
  --temp 0.1 \  # Низкая температура для детерминированного кода
  --top-p 0.95 \
  --repeat-penalty 1.1 \
  -p "[INST] Напиши Terraform модуль для создания VPC в AWS с NAT gateway и приватными подсетями. Используй последнюю версию провайдера. [/INST]"
💡
Ключевой параметр -ngl 99 загружает почти все слои модели в память GPU. На M4 Max с 64GB это работает. Если у вас 32GB, уменьшите до -ngl 48 или -ngl 64. Следите за использованием памяти в Activity Monitor.

4 Тестируем скорость и качество генерации

Запускаем скрипт и смотрим на три метрики:

  1. Time to first token: сколько ждать первую генерацию. Для Qwen2.5-72B на M4 Max это 8-12 секунд. Долго, но терпимо.
  2. Tokens per second: основная скорость. Ожидайте 6-8 токенов/с для сложных промптов.
  3. Memory pressure: давление на память. В идеале - зеленое в Activity Monitor.

Пример реального теста:

# Запускаем с бенчмарком
cd ~/llama.cpp
./perplexity -m ~/models/qwen2.5-72b-instruct/qwen2.5-72b-instruct-q4_k_m.gguf \
  -f ~/test_documents/terraform_examples.txt \
  -c 32768 -ngl 99 -t 8

# Результаты:
# Perplexity: 2.34 (отлично для кода)
# Average speed: 7.2 tokens/s
# Peak memory: 58.3 GB

Архитектура как код: промпты, которые работают

Секрет не в модели, а в том, как вы ее спрашиваете. Вот промпт-шаблоны, которые реально генерируют рабочий код:

[INST] Ты Senior DevOps инженер. Сгенерируй Kubernetes Deployment для микросервиса на Go со следующими требованиями:
1. 3 реплики
2. Resources: requests 256Mi memory, 100m CPU; limits 512Mi memory, 500m CPU
3. Liveness и readiness пробы на порту 8080
4. ConfigMap для переменных окружения
5. HorizontalPodAutoscaler с метрикой CPU до 10 реплик

Выведи только YAML, без пояснений. [/INST]

Или для Terraform:

[INST] Напиши модуль Terraform для AWS EKS кластера с:
- Управляемой группой нод (managed node group)
- IAM ролями для service accounts
- Политиками безопасности
- Автомасштабированием

Используй последнюю версию провайдера AWS (5.0+).
Структурируй код по файлам: main.tf, variables.tf, outputs.tf.
Не добавляй комментарии, только код. [/INST]

Самый частый провал: модель генерирует устаревший синтаксис. Всегда указывайте версию провайдера или библиотеки. Qwen2.5 обучена на данных до конца 2024, но иногда "забывает" про breaking changes.

Ошибки, которые сломают ваш workflow

Ошибка Почему возникает Как исправить
Падение с exit code 6 Проблема с Metal API или нехватка памяти Уменьшите -ngl, закройте другие приложения, обновите macOS
Скорость 1-2 токена/с Слишком много слоев на CPU, а не на GPU Увеличьте -ngl до максимума, проверьте LLAMA_METAL=1
Модель "забывает" контекст Переполнение KV-кэша при больших контекстах Используйте --rope-scaling linear или уменьшите контекст
Генерация бессмысленного кода Слишком высокая температура (--temp) Для кода используйте --temp 0.1 или --temp 0

А что если 72B - это слишком много?

Бывает. Модель мощная, но медленная. Если вам нужно быстрее, или у вас Mac с 32GB памяти, есть альтернативы:

  • Qwen2.5-32B-Instruct: В 2 раза быстрее, почти так же умна для инфраструктуры. Занимает ~20GB в Q4.
  • DeepSeek-Coder-33B: Специализирована на код, но хуже с YAML и облачными сервисами.
  • Llama 3.1 8B: Молниеносная (~30 токенов/с), но часто ошибается в сложных конфигурациях.

Помните наш тест: Как выбрать Mac для локальных LLM. Там есть четкая формула: размер модели должен быть в 1.5 раза меньше доступной памяти. Для 64GB - 40GB модель. Для 32GB - 20GB модель.

Итог: стоит ли овчинка выделки?

Стоит, если:

  • Вы генерируете сложную инфраструктуру ежедневно
  • Вам нужна конфиденциальность (никаких облачных API)
  • Вы готовы ждать 10-20 секунд на генерацию сложного модуля
  • У вас Mac Studio M4 Max с 64GB+ памяти

Не стоит, если:

  • Вам нужны простые скрипты (хватит и 7B модели)
  • Скорость важнее качества (используйте облачные API)
  • У вас MacBook Air с 16GB памяти (серьезно, даже не пытайтесь)

Мой прогноз: через год появятся модели 100B+, оптимизированные специально под Apple Silicon. Они будут работать в 2 раза быстрее при том же качестве. Но пока Qwen2.5-72B - король локальной генерации кода. Не идеальный, но лучший из того, что есть.

Последний совет: не используйте LLM как черный ящик. Всегда проверяйте сгенерированный код. Особенно IAM политики и сетевые правила. Модель ошибается в 15% случаев, и одна ошибка может стоить вам production-инцидента.