Что такое MoEspresso 3 и почему это важно для владельцев Mac
MoEspresso 3 запускает Qwen3.8-Flash-Next на 125 млрд параметров на Apple M1 Max 2021 года с 32 ГБ объединённой памяти. На декодировании движок выдаёт 12-15 токенов в секунду. Цифры и детали приводит автор проекта в посте на r/LocalLLaMA от 27 сентября 2026 года.
Короткий ответ на главный вопрос: да, 125B-модель на 32 ГБ работает. С двумя оговорками. 12-15 ток/с относятся к генерации, а не к обработке промпта, и держатся только тогда, когда в фоне нет прожорливых по памяти приложений вроде браузеров. По качеству локальная сборка уступает хостинговой версии той же модели.
Qwen3.8-Flash-Next - большая MoE-модель, которую в облаке крутят на серверных ускорителях. Что это за архитектура и чем она отличается от плотных моделей того же размера, подробно разобрано в материале Qwen3.8-Flash-Next: что это за модель и при чём здесь Qwen4. Здесь важна практическая часть: MoEspresso 3 - третья версия движка инференса под Apple Silicon, и её главная новая деталь называется Cache-Prior.
Установка идёт через Homebrew одной командой, код открыт на GitHub, веса модели лежат на Hugging Face. То есть это не закрытая демка, а инструмент, который можно поставить самому, если есть Mac с достаточным объёмом объединённой памяти.
Как 125B-модель помещается в 32 ГБ: архитектура MoE и квантование
Qwen3.8-Flash-Next построена как mixture-of-experts. На каждый токен активируется лишь часть экспертов, поэтому вычислений тратится меньше, чем у плотной модели с тем же числом параметров. Память нужна другая: веса всех экспертов должны где-то храниться, даже если конкретный эксперт простаивает. Именно поэтому 125B-модель нельзя назвать «лёгкой» - экономия идёт на вычислениях, а не на объёме весов.
Задача движка в том, чтобы уложить весь набор весов в 32 ГБ. Без сжатия это невозможно, поэтому ставка сделана на агрессивное квантование. Автор использует часть форматов Iwan Kawrakow из ik_llama.cpp и исполняет их на Metal через собственную библиотеку mlx-iqk. Сочетание трёх вещей - разреженной активации MoE, форматов уровня IQ2_K и схемы KVarN - и даёт возможность запустить такую модель на ноутбуке 2021 года.
Почему IQ2_K не работает в обычных инструментах
Большинство маршрутизируемых проекций в пакете сжаты в IQ2_K. Этот формат обычно не поддерживается ни стандартным MLX, ни mainline llama.cpp. Практический вывод простой: взять готовый mlx-lm или свежий билд llama.cpp и загрузить тот же пакет весов не получится. Ядро для IQ2_K на Metal есть только в mlx-iqk, поэтому MoEspresso поставляется отдельным движком со своим рантаймом.
Это же объясняет, почему нельзя просто конвертировать квант в GGUF и запустить его привычным способом. Формат вне стандартной экосистемы, и любой перенос потребует реализации соответствующих ядер заново.
KVarN K4/V4: как экономится память под экспертов
Схема KVarN K4/V4 оставляет больше памяти под резидентных экспертов по мере роста контекста. Автор отмечает низкую RMS-ошибку на архитектуре этой модели, то есть сжатие не разваливает веса настолько, чтобы качество заметно просело.
Логика здесь простая. Чем длиннее контекст, тем больше памяти съедает KV-кэш. Если бы эксперты занимали фиксированный бюджет, декодирование быстро упиралось бы в лимит и начинало выгружать их на диск. KVarN перераспределяет память так, чтобы резидентных экспертов оставалось больше, и именно это удерживает скорость на длинных диалогах.
Cache-Prior: что это и как он ускоряет генерацию без потери качества
Cache-Prior - механизм выбора экспертов, который учитывает, что уже лежит в памяти. Работает он только на декодировании, то есть на этапе генерации ответа токен за токеном.
Как Cache-Prior влияет на выбор экспертов
Во время декодирования эксперты, уже находящиеся в памяти, получают смещение при выборе. При этом два сильнейших эксперта по версии модели выбираются всегда, если оставить настройки по умолчанию. Простыми словами: роутер по-прежнему берёт тех экспертов, которых модель считает лучшими, а на остальных слотах предпочитает тех, кто уже загружен, вместо тех, кого пришлось бы подтягивать заново. Промахов кэша меньше, простоев меньше, скорость выше.
Префилл выполняется без смещения. На этапе обработки промпта искажать распределение не стоит: там считается основная часть контекста, и любой сдвиг в выборе экспертов ударил бы по качеству ответа.
Научная основа: instruction-following pruning и cache-aware routing
Идея Cache-Prior появилась после чтения работы Apple AFM 3 об instruction-following pruning и статьи про cache-aware routing для MoE. В arXiv 2412.00099 описана стратегия маршрутизации, которая использует повторное использование экспертов во время генерации для улучшения локальности кэша. Ровно та же проблема, только под другим углом: как реже дёргать память и при этом не терять в качестве.
Вторая работа, arXiv 2501.02086, описывает instruction-following pruning: предиктор разреженной маски принимает пользовательскую инструкцию и динамически выбирает наиболее релевантные параметры модели под конкретную задачу. Идея о том, что выбор части модели можно привязать к условию, а не делать его жёстко фиксированным, и легла в основу Cache-Prior.
Внутри бенчмарка конфигурация с Cache-Prior 2/2 набрала 84,3% - об этом ниже.
Бенчмарк: 84,3% против Claude Opus 4.8 и хостингового Qwen3.8 Flash
Набор состоит из 48 вопросов по шести категориям, среди которых кодинг, анализ данных и математика. Результаты воспроизводимые, автор не разбивает их по отдельным категориям в посте, поэтому оценивать стоит общий срез.
| Решение и конфигурация | Результат, % |
|---|---|
| Qwen3.8 Flash (hosted), medium | 89,7 |
| GPT-6 Sol, medium | 89,2 |
| Claude Opus 5.5, medium | 86,4 |
| GPT-6 Sol, low | 85,0 |
| Qwen3.8 Flash @ MoEspresso, medium, Cache-Prior 2/2 | 84,3 |
| GPT-6 Luna, xhigh | 81,4 |
| Claude Opus 4.8, xhigh | 80,3 |
| Claude Sonnet 4.6, high | 74,0 |
| Claude Sonnet 5, medium | 70,9 |
Детали бенчмарка: категории и методология
48 вопросов по шести категориям - это срез по конкретным задачам, а не всесторонняя проверка модели. Выборка небольшая: один-два удачных или неудачных ответа уже сдвигают процент на пару пунктов. Сравнивать результаты между собой корректно только потому, что все участники проходили один и тот же набор, а конфигурация указана явно (medium, Cache-Prior 2/2).
Ещё один момент: у хостинговых участников и у локальной сборки различаются не только веса, но и условия запуска. Поэтому таблица показывает, где примерно находится локальный результат, а не абсолютный рейтинг решений.
Почему локальная версия уступает хостинговой
Хостинговый Qwen3.8 Flash medium набрал 89,7%, локальная сборка с Cache-Prior 2/2 - 84,3%. Разница 5,4 процентного пункта. Причины лежат на поверхности: сжатие до IQ2_K, эвристика в выборе экспертов и жёсткий лимит памяти в 32 ГБ, из-за которого часть экспертов приходится подгружать по ходу генерации.
Claude Opus 4.8 xhigh с 80,3% локальная сборка обошла. Это стоит читать без лишнего пафоса: один синтетический срез из 48 вопросов не доказывает превосходства над моделью в целом, он показывает лишь, что на этом наборе задач квантованная 125B-модель на ноутбуке держится на уровне топовых хостинговых решений.
Для сравнения скорости других локальных конфигураций на Apple Silicon есть отдельный разбор: лучшие инструменты для локального запуска Qwen 3.8 27B с цифрами сообщества по MLX, Ollama и vLLM.
Как установить и запустить MoEspresso 3 на Mac
Официальный путь установки - Homebrew. Пакет лежит в собственном тапе автора, поэтому сначала добавлять его отдельно не нужно, Homebrew подтянет его сам при первом обращении.
brew install steadfastgaze/tap/moespresso
Код движка опубликован на GitHub, веса модели - на Hugging Face. Детали запуска, набор флагов и параметры конфигурации смотрите в репозитории: в посте автор их не расписывает пошагово, а даёт ссылки на код и модель.
Системные требования и подготовка
Пример из первоисточника - M1 Max 2021 года с 32 ГБ объединённой памяти. Такой объём стоит считать минимально комфортным для этой связки: он оставляет немного свободного запаса, и любое приложение, которое съест пару гигабайт, сразу бьёт по скорости.
Что закрыть перед запуском:
- браузеры со множеством вкладок (это главный пожиратель памяти на Mac);
- Electron-приложения вроде мессенджеров и заметочников, каждый из которых держит собственный движок Chromium;
- фоновые задачи, работающие с большими файлами или медиа.
Логика простая: освободившиеся гигабайты уходят под резидентных экспертов, а значит снижается число промахов кэша. Автор отдельно оговаривает, что заявленные 12-15 ток/с относятся именно к сценарию без прожорливого фона.
Пошаговая установка через Homebrew
- Убедитесь, что Homebrew установлен и работает.
- Выполните
brew install steadfastgaze/tap/moespressoи дождитесь сборки зависимостей. - Загрузите веса Qwen3.8-Flash-Next в варианте для MoEspresso с Hugging Face.
- Закройте браузеры и тяжёлые фоновые приложения.
- Запустите движок с моделью и проверьте скорость на коротком промпте, прежде чем грузить длинный контекст.
Если после установки скорость заметно ниже 12 ток/с, первым делом смотрите не на настройки движка, а на занятую память. На 32 ГБ система живёт с очень небольшим запасом, и одного открытого браузера достаточно, чтобы результат просел.
Ограничения и подводные камни
Минусы у решения есть, и их лучше знать заранее.
- Скорость зависит от фона. 12-15 ток/с - это результат на чистой системе. Открыли браузер, получили заметно меньше.
- Качество ниже хостинга. 84,3% против 89,7% у хостинговой версии той же модели. Если задача требует максимального качества, локальный запуск в 32 ГБ - не лучший выбор.
- Только Apple Silicon. Движок рассчитан на Metal и объединённую память Mac. На NVIDIA или CPU-конфигурациях он не заработает.
- Нестандартный формат. Пакет весов использует IQ2_K, который не читают стандартный MLX и mainline llama.cpp. Переиспользовать квант в других рантаймах не выйдет.
- Риск упереться в память. Даже с KVarN длинный контекст упирается в лимит 32 ГБ, и поведение на пределе зависит от конкретной задачи.
- Молодой проект. Это третья версия движка, документация и удобство установки уступают зрелым инструментам.
Автор, со своей стороны, прямо говорит, что английский не его родной язык, что пост редактировался с помощью LLM, а часть работы выполнялась AI-инструментами. Для открытого проекта это честная оговорка, но она же намекает: читать код и проверять поведение на своей задаче всё равно придётся самому.
Отдельно стоит учитывать энергетику и стоимость локального инференса. Насколько большая квантованная MoE-модель может оказаться дешевле плотной при работе за миллион токенов, разобрано в статье экономика инференса LLM на Apple Silicon.
Планы развития: Linux, AMD и Strix Halo
Автор заявляет два направления. Первое - выжимать больше производительности из Apple Silicon, то есть продолжать работу с текущей платформой. Второе - портировать движок на Linux и AMD-устройства, в частности на Strix Halo.
Портирование на AMD означает другой набор низкоуровневых ядер: Metal-реализация mlx-iqk там не применима, а форматы IQ2_K придётся нести на другую платформу. Конкретные сроки автор не называет, поэтому ждать появления версии под Linux с датой в календаре не стоит. Пока MoEspresso 3 остаётся инструментом для Mac.
Если интересует, как выглядят удачные локальные конфигурации на актуальных чипах, полезно посмотреть разбор Nex N2.5 Mini в 4-битном MLX-кванте на Apple M5 Max: там 133,6 ток/с, другой класс задач и другая цена по памяти.
Итог: кому стоит пробовать MoEspresso 3
MoEspresso 3 даёт то, чего ещё недавно не было: 125B-модель, работающая на Mac 2021 года с 32 ГБ памяти со скоростью 12-15 ток/с и результатом 84,3% в бенчмарке из 48 вопросов. Это выше Claude Opus 4.8 xhigh (80,3%), но ниже хостингового Qwen3.8 Flash medium (89,7%).
Пробовать стоит, если у вас есть Mac на Apple Silicon с 32 ГБ объединённой памяти или больше, вы готовы закрывать браузеры перед запуском и вам интересен сам факт запуска большой MoE-модели локально. Также это разумный вариант для задач, где важна автономность и отсутствие отправки данных на сторонние серверы.
Не стоит связываться, если нужен максимум качества (берите хостинг), если у вас Mac с 16 ГБ памяти или Windows-машина, а также если не хочется разбираться с нестандартной установкой и ручной загрузкой весов.
Практический шаг для тех, кто решил проверить: поставьте пакет командой brew install steadfastgaze/tap/moespresso, загрузите веса с Hugging Face, закройте всё лишнее и замерьте скорость на своём типичном промпте. Ориентир для сравнения - 12-15 ток/с на M1 Max с 32 ГБ.