Запуск больших MoE-моделей на потребительском железе
Содержание
Вдогонку к посту про запуск DeepSeek V4 Flash на Mac: параллельно с исследованием ds4 я посмотрел ещё два проекта для запуска больших MoE-моделей на потребительском железе. У них другое железо и другой подход.
flash-moe⌗
flash-moe написан на чистом C, Objective-C и Metal — без Python и фреймворков. Автор пишет, что собрал движок с AI в паре за 24 часа.
Цель проекта — одна конкретная модель: Qwen3.5-397B-A17B. Это 397 миллиардов параметров, 17 миллиардов активных на токен, 512 экспертов на слой, top-4 плюс один общий эксперт и 60 слоёв: 45 GatedDeltaNet и 15 обычного внимания.
Принцип тот же, что у ds4: эксперты читаются с SSD на лету. Но подход к кэшированию противоположный. Авторы отказались от собственного кэша экспертов и выбрали «Trust the OS»: эксперты читаются параллельным pread(), а кэшированием занимается системный page cache.
Они пробовали собственный LRU-кэш на Metal, malloc-кэш и LZ4-компрессию. Каждый вариант оказался медленнее обычного page cache. Предиктивную предзагрузку тоже проверили и убрали: она давала 25% попаданий и расходовала пропускную способность SSD.
Результат на MacBook Pro M3 Max с 48 ГБ:
- 4,36 t/s на 4-битных экспертах с рабочим tool calling;
- 5,74–7,05 t/s на 2-битных экспертах, но при этом ломается JSON и перестают работать вызовы инструментов.
freetoken⌗
freetoken — движок на Python, выросший из кода mini-sglang, SGLang, vLLM и FlashInfer. Поддерживается только железо NVIDIA: RTX 30/40/50.
Здесь эксперты не читаются с диска. Они лежат в оперативной памяти хоста и по PCIe подгружаются в VRAM. Кэш — собственный LRU на GPU.
Есть hybrid-режим: часть недостающих экспертов тянется по PCIe, а часть считается прямо на CPU, если так быстрее. Баланс между PCIe и CPU не захардкожен: движок сам замеряет пропускную способность конкретной машины и решает, где выгоднее добирать экспертов.
Список поддерживаемых моделей шире:
- DeepSeek V4;
- GLM-5.2 и 4.7;
- семейство Qwen3.5/3.6;
- gpt-oss;
- Gemma-4;
- MiniMax-M2.5.
Это сервер, а не однобинарный CLI. В нём есть OpenAI- и Anthropic API, continuous batching, KV-кэш для агентных сценариев и запуск одной командой под Claude Code, Codex или OpenCode.
Сам я freetoken пока не пробовал: у меня нет подходящего железа. flash-moe тоже не запускал, поскольку Qwen3.5-397B-A17B массивнее DeepSeek V4 Flash — 397B параметров, из них 17B активных, против 284B/13B у DeepSeek — и на моём Mac будет ещё медленнее.
Что попробовать дальше⌗
Я с интересом смотрю в сторону Qwen3.8-Flash-Next.
Разница с DeepSeek V4 Flash — в двух вещах.
Первая — активные параметры: 6B против 13B, то есть вдвое меньше вычислений на токен.
Вторая — внимание. У DS4 Flash все 43 слоя держат растущий KV-кэш, пусть и сжатый. У Qwen3.8-Flash-Next из 48 слоёв 36 — Gated DeltaNet с рекуррентным состоянием фиксированного размера. Стоимость обработки токена на них не зависит от длины контекста.
Это должно положительно повлиять на скорость prefill. В целом можно ожидать заметно лучшей производительности Qwen3.8-Flash-Next на моём Mac и, возможно, запуска q4-кванта.