Mac на M-чипе против локального ИИ: почему Apple Silicon не справляется
M4 Max и локальный AI: ожидания против реальности
Купил MacBook Pro с M4 Max и 128 ГБ унифицированной памяти? Красота. Думаешь — теперь можно спокойно запускать мощного локального AI-ассистента для кодинга. Логично, да? 128 ГБ — это серьёзно.
Но жизнь, как обычно, вносит свои коррективы.
Один разработчик прошёл через все круги ада: кастомные Metal-движки для инференса, агрессивная оптимизация, эксперименты с разными архитектурами. Итог? Потолок где-то 80-150 токенов в секунду — и это если модель хоть сколько-нибудь полезная.
Железо: что обещали и что получили
Apple Silicon реально изменил правила игры. Унифицированная память — это не маркетинговая фишка. Больше не нужно гонять данные туда-сюда между CPU и GPU. Всё лежит в одном месте.
Для многих задач это работает отлично.
Но для больших языковых моделей цифры говорят совсем другое. Даже с оптимизированными движками под Metal результаты упираются в знакомые значения:
- Llama.cpp Q4_0: ~70.9 токенов/сек
- MLX 4-bit: ~80.6 токенов/сек
- Qwen3-Coder-Next (кастомная оптимизация): ~120 токенов/сек
- Qwen3.6-35B 4-bit (кастомная оптимизация): ~85 токенов/сек
Закономерность очевидна: если работаешь с "полезными" моделями (7B+ параметров для кодинга), упираешься в стену. Вне зависимости от оптимизаций.
Почему так происходит?
Разработчик, который проводил замеры, считает — проблема в пропускной способности памяти, а не в вычислительной мощности. И это логично, если задуматься о том, как работают трансформеры.
При генерации каждого токена нужно прочитать из памяти значительную часть весов модели. Даже с впечатляющей пропускной способностью M4 Max ты упираешься в скорость перемещения данных. Матричные умножения могут быть быстрыми, но они ограничены скоростью подачи данных.
Вот почему маленькие модели показывают драматически лучшие результаты — там просто меньше данных для перемещения. Модель 0.1B может выдавать 1000 токенов/сек, а перейдёшь на 1.5B — получишь около 140. Зависимость не линейная, а суровая.
Что делать?
Если нужен coding assistant на 200+ токенов/сек с сохранением рассуждений и tool-calling, выбор сужается:
Облачные решения
Anthropic (Claude), OpenAI, DeepSeek — мощность серьёзная, но подписки от $20 до $200+ в месяц при серьёзном использовании. Надёжно, быстро, но зависишь от внешних сервисов.
Специализированное железо
Cerebras впечатляет скоростью инференса (их GPT-oss-120b работает на 1000+ токенов/сек), но цены заоблачные для большинства разработчиков и даже команд.
Локальные модели с реалистичными ожиданиями
Если нужен именно локальный запуск, подумай — можешь ли принять чуть более медленную работу. Qwen3.5-32B или похожие архитектуры с квантованием 4-8 бит дадут приемлемую помощь с кодом на 80-120 токенах/сек. Достаточно для продуктивной работы, если твой рабочий процесс мирится с небольшой задержкой.
Настоящий вопрос: локально или в облаке?
Всё сводится к твоим конкретным задачам:
- Локально — если строгие требования к приватности данных, нестабильный интернет или хочется экспериментировать без постоянных расходов
- Облако — если важна стабильная скорость, нужны максимальные возможности модели или бюджет позволяет подписки
Для многих разработчиков гибридный подход оптимален — локальные модели для экспериментов и быстрых задач, облако для production-пайплайнов, где важны скорость и возможности.
Итог
Apple Silicon впечатляет для многих AI-задач, но быстрый локальный инференс с capable моделями для кодинга — это пока сложная история. Железо просто не проектировалось под эту конкретную нагрузку, и никакая оптимизация под Metal не обойдёт фундаментальные архитектурные ограничения.
Собираешь AI-assisted workflow? Подбери инфраструктуру под реальные потребности. И будь честным с собой — подход "сначала локально" реально помогает или только мешает.
А что у тебя? Нашёл конфигурации, которые пробивают эти барьеры производительности?