Project Maya — GLM-5.3, DeepSeek и MiniMax на своих видеокартах

· 7 мин чтения
inference local-llm quantization moe gpu
📂 Исходный код на GitHub

Движок инференса для запуска GLM-5.3 (744B), GLM-5.3-Flash (321B), DeepSeek-V4.1-Flash (748B) и MiniMax-M3.1-Flash (428B) на своих GPU: многоуровневое хранение экспертов в VRAM, RAM и на SSD, свои кванты XS–L, веб-панель и OpenAI- и Anthropic-совместимый API для кодинг-агентов.

Project Maya — GLM-5.3, DeepSeek и MiniMax на своих видеокартах

Модели на сотни миллиардов параметров обычно живут в дата-центрах. Project Maya — опенсорсный движок инференса (C++/CUDA, лицензия MIT, около 2,8 тыс. звёзд на GitHub), который запускает четыре такие модели на обычном домашнем железе: GLM-5.3 (744B), GLM-5.3-Flash (321B), DeepSeek-V4.1-Flash-1017 (748B) и MiniMax-M3.1-Flash (428B). Достаточно одной видеокарты NVIDIA — или до шестнадцати. Есть поддержка AMD и Windows. Под капотом — ggml/llama.cpp и формат EXL3, сделанный по образцу exllamav3. Каждая модель получает собственный движок, а не общий универсальный код. Всё работает на вашей машине: ни один запрос не уходит наружу.

Для каждой модели авторы готовят и свои кванты — сжатые версии весов, выложенные на Hugging Face.

Как это устроено

Все четыре модели построены на архитектуре MoE (Mixture of Experts): внутри модели много «экспертов» — отдельных блоков нейросети, — но для каждого токена срабатывают лишь несколько из них. Отсюда парадокс этих моделей: весят сотни гигабайт, а за один шаг задействуют только малую часть параметров. Проблема одна — куда положить все эти сотни гигабайт.

Ответ Maya — многоуровневое хранение. Эксперты, которые чаще всего встречаются в вашем диалоге, держатся в видеопамяти. Следующий уровень — в обычной RAM. Остальное лежит на NVMe SSD и подгружается по мере необходимости — прямо во время разговора, незаметно для вас. Движок замеряет ваши GPU, процессор, память и SSD и сам подстраивается под них: команда --calibrate за 10–15 минут подбирает настройки под конкретное железо. Один нюанс: пока Maya работает, она занимает почти всю свободную RAM (оставляет около 6 ГБ), так что другим программам памяти почти не остаётся.

Кванты Maya

Каждый квант назван по модели и уровню — XS, S, S24, M или L. Уровень определяет, сколько бит остаётся у весов каждого эксперта: меньше бит — меньше размер и быстрее работа, но чуть ниже качество. Установщик сам предлагает подходящий вариант, а можно выбрать и вручную: ./setup.sh --model glm-maya-s.

Качество квантов измеряют против исходных моделей. Кванты GLM-5.3-Flash сохраняют 97,7–99,2% точности FP8-версии на zero-shot задачах (Maya-L — 99,2%). Квант DeepSeek V4.1 · Maya-S выбирает тот же следующий токен, что и оригинал, в 92,6% случаев, MiniMax M3.1 · Maya-S — в 87,6%.

Модель Квант по умолчанию Размер Кому подходит
GLM-5.3-Flash — 321B, MIT Maya-S (glm-maya-s) 96,5 ГБ небольшой пул памяти (RAM + VRAM)
GLM-5.3 — 744B, только текст Maya-XS (glm-5.3-maya-xs) 170 ГБ целиком помещается в пул 192 ГБ
DeepSeek-V4.1-Flash-1017 — 748B, MIT Maya-S (deepseek-maya-s) 340 ГБ любой объём памяти: не поместившееся читается с SSD
MiniMax-M3.1-Flash — 428B Maya-XS (minimax-maya-xs) 93 ГБ целиком помещается в память ПК на 128 ГБ

Для GLM-5.3-Flash есть и более крупные уровни — вплоть до Maya-L на 156,3 ГБ, ближайшего к оригиналу, и экспериментальный Maya-M-Derisked с правкой весов от Blackfrost_AI, уменьшающей число безосновательных отказов. Три модели из четырёх держат контекст до 1 млн токенов, а картинки читают все, кроме текстовой GLM-5.3.

Как быстро оно работает

Скорость измеряют сами пользователи на реальных машинах — команда --bench собирает отчёт, который публикуют в issues проекта. Несколько цифр для GLM-5.3-Flash:

Машина Скорость генерации
2× RTX 5090 + RTX 4090 148,6 токенов/с
2× H100 80 ГБ 122,4 токенов/с
4× RTX 4090 118 токенов/с
RTX PRO 6000 (96 ГБ) 81 токен/с
Одна RTX 5090 30+ токенов/с
NVIDIA DGX Spark 16,5 токенов/с

DeepSeek-V4.1-Flash на восьми RTX 5090 выдает 184 токена/с. Для ориентира: токен — это примерно три четверти слова. Скорость почти не падает по мере роста диалога. Медленнее всего первые ответы после запуска, пока кэши заполняются.

Подключаем кодинг-агентов

Для Maya важен сценарий «локальная модель вместо облачного API», поэтому совместимость с агентами здесь на первом месте:

  • OpenAI-совместимый API на http://127.0.0.1:8080/v1 и Anthropic-совместимый на http://127.0.0.1:8080/v1/messages. Для Claude Code достаточно ANTHROPIC_BASE_URL=http://127.0.0.1:8080.
  • Вызов инструментов стримится — агент видит вызовы по мере генерации, а не после неё. Если запрос попросит ("return_progress": true), движок будет сообщать, сколько длинного промпта уже прочитано.
  • Защита от зацикливания включена по умолчанию: если агент повторяет один и тот же вызов инструмента с тем же результатом, движок уводит его в сторону.
  • До 8 параллельных запросов (GLM-5.3-Flash, DeepSeek, MiniMax) — для агентов с несколькими сессиями или несколькими людьми за одним ПК.
  • Responses API на /v1/responses: диалоги с текстом и картинками, стриминг, вызовы функций, вывод по JSON-схеме, фоновые задачи с отменой и повтором.
  • API управления моделями (/api/tags, /api/ps, /api/chat, /api/pull и другие): запрос к незагруженной модели сам переключает движок на неё.

Веб-панель

После запуска всё управляется из браузера на http://127.0.0.1:8080:

  • Чат — история хранится в браузере: поиск, закрепления, папки, инструкции для каждого чата, уровни размышления, правка и регенерация ответов.
  • Monitor — живая сводка по модели и железу, вплоть до того, чем занята память каждой видеокарты.
  • Страница Models — каталог всех моделей с размерами: скачать с прогресс-баром, загрузить, выгрузить или удалить — без командной строки.
  • Turbo — одна кнопка выставляет самые быстрые настройки модели (жадный сэмплинг, без размышлений, пропуск экспертов, быстрый драфтинг). Качество при этом несколько падает. Повторное нажатие возвращает ваши настройки.
  • Файлы и картинки — в чат можно приложить любой файл: текст и код идут как есть, PDF — своим текстом, Word, Excel, PowerPoint, OpenDocument, EPUB и RTF — тоже своим текстом. Все модели читают картинки, некоторые — видео.
  • MCP-инструменты — серверы перечисляются в конфиге ("mcp_servers"; блок mcpServers из Claude Desktop подходит как есть), и модель в веб-чате может вызывать их инструменты.
  • Счётчик экономии — в боковой панели показывается, сколько стоили бы те же токены у «родного» API модели (DeepSeek, Z.ai или MiniMax), с учётом кэшированных цен.

Что нужно и как установить

Компонент Требования
GPU NVIDIA с compute capability 7.0+ (V100, RTX 20 и новее) — одна или до 16; AMD: RX 7900 XT/XTX, Radeon AI PRO R9700, Strix/Gorgon Halo
RAM минимум 32 ГБ; больше — больше экспертов рядом и выше скорость
Диск быстрый NVMe SSD: от ~75 ГБ под GLM-5.3-Flash · Maya-XS до ~350 ГБ под DeepSeek · Maya-S; HDD не подойдёт
Система Linux x86-64 + CUDA 12.x или Windows 10/11 (WSL2 не поддерживается); AMD — ROCm 7; Apple Silicon — экспериментально, только GLM-5.3-Flash

Установка — две команды:

git clone https://github.com/mw00/project-maya.git && cd project-maya
./setup.sh

Установщик спросит, какую модель поставить, покажет предстоящее скачивание, один раз соберёт движок (20–40 минут плюс загрузка модели) и запустит её. Дальше открываете http://127.0.0.1:8080. В Windows вместо ./setup.sh — START-MAYA.bat. Ничего не ставится в систему, а установщик проверяет все требования и печатает точную команду для недостающего.

Если что-то пошло не так

Универсальный ответ — ./maya.sh --report: команда собирает железо, настройки и замеры скорости в файл maya-report.txt, который прикладывают к issue на GitHub. Типовые случаи: SSD занят всё время — не хватает RAM под экспертов (закройте программы или добавьте памяти); в Windows ответы резко замедлились — видеокарта переполнена, освободите место через --vram-reserve-mib; загрузка оборвалась — просто запустите ./maya.sh снова, она продолжит с места остановки.

Project Maya — бесплатный проект с лицензией MIT, построенный на ggml/llama.cpp, exllamav3 и beellama.cpp. Подробная документация — в docs/README.md, разбор моделей и их настроек — в docs/MODELS.md, подбор памяти под каждую модель — в docs/MEMORY.md.

Источник: https://github.com/mw00/project-maya