Блог AST-SoftPro
Capy-flash v0.7.1: Qwen3.8-Flash-Next и 27B на двух 16 GB RTX с оффлоадом экспертов в RAM
Что такое capy-flash
Capy-flash — это движок локального инференса, который заводит на потребительские видеокарты Blackwell две тяжёлые модели Qwen: 125-параметрический MoE Qwen3.8-Flash-Next (6B активных параметров плюс отдельный слой n-gram эмбеддингов объёмом 51B) и плотную Qwen3.8-27B. Идея простая: то, что не помещается в видеопамять, живёт в оперативной памяти хоста и считается на CPU, а всё остальное идёт тензорно-параллельно на двух GPU. Проект появился как форк Neroued/ninfer (ветка ninfer-tp2) и сменил имя на v0.5.0; с тех пор развивается быстро — между v0.5.4 и v0.7.3 вышло несколько релизов за две недели.
Ключевое заявление проекта в одном предложении: 64 GB RAM хватает для Flash-Next. Эксперты MoE, не влезающие в VRAM, держатся page-locked в оперативке, и сервер спокойно поднимается на связке «две 16 GB карты + 64 GB DDR». Для тех, у кого карта одна, отдельный профиль flash-next-1gpu — та же схема, только без tensor parallel.
Что нового в v0.7.1
Релиз v0.7.1 вышел 22 октября 2026 года и закрывает одну конкретную боль: агентные сценарии с длинной историей диалога. Профиль --profile flash-next-1gpu теперь держит восемь состояний разговора прямо в RAM (цена — плюс 0.66 GiB) и переиспользует уже посчитанный контекст между запросами одного агента.
Числа из README проекта, agentic replay на одной GPU:
| Метрика | v0.7.0 | v0.7.1 |
|---|---|---|
| Доля токенов промпта из кэша | 34 % | 83 % |
| Время до первого токена (медиана) | 13.3 с | 1.9 с |
| Длительность всего реплея | 858 с | 276 с |
| Decode-медиана | — | 104 tok/s |
То есть при том же железе и тех же весах агент, который в v0.7.0 пересчитывал большую часть промпта на каждом шаге, в v0.7.1 получает первый токен почти мгновенно и проходит весь сценарий примерно за треть времени. Это не оптимизация скорости decode — это кэш контекста между вызовами, и именно он превращает «запустить 125B MoE локально» из демо в рабочий инструмент для агентов.
В том же релизе обновлены bin/ninfer-serve (OpenAI- и Anthropic-совместимый сервер) и CLI-генератор; greedy-вывод на 11 промптах (включая суммаризации 16k и 64k) побайтово совпадает с v0.7.2, так что качество от кэша не страдает.
Конфигурация под 32 GB VRAM + 64 GB RAM
Типовая связка для этого проекта — две RTX 50-й серии по 16 GB (в бенчах автора это 5070 Ti и 5080, но схема не зависит от конкретной модели Blackwell) плюс 64 GB DDR. Профили:
# Flash-Next, две GPU, NVFP4 experts, MTP drafter
--profile flash-next
# = --tp 2 --devices 0,1 --kv-dtype int8 --elastic
# --max-context 262144 --max-concurrency 1
# --spec mtp --draft-tokens 3
# Flash-Next, одна GPU (профиль v0.7.1)
--profile flash-next-1gpu
# Qwen3.8-27B (с Vision; --no-vision для артефактов без vision tower)
--profile 27b
Что важно знать про память: Flash-Next в NVFP4 требует около 70 GiB свободной host RAM под page-locked экспертов, поэтому «64 GB хватает» — это про сценарий, где система не съедает ещё 10+ GB. KV-кэш идёт int8 (--kv-dtype int8), контекст открывается на полный нативный 262144 токена, а --elastic позволяет серверу подстраивать резервы под нагрузку. MTP-драфтер с тремя draft-токенами даёт заметный прирост decode без деградации качества — это та же механика, что и у llama.cpp (--spec-type draft-mtp), только встроена в профиль по умолчанию.
Скорость: что показывают бенчи
Свежие измерения автора (октябрь 2026, две GPU):
-
Flash-Next, prefill (без prefix-reuse): ~2168 tok/s на 4k, ~3924 tok/s на 16k, ~3994 tok/s на 64k. Для сравнения, Strata с IQ3_S квантом выдаёт 1745 / 2906 / 4037 tok/s на тех же промптах — capy-flash быстрее в коротком и среднем prefill, уступает лишь на самом длинном.
-
Flash-Next, agentic replay decode: медиана 200.9 tok/s против 171.3 tok/s у Strata 0.2.2 (данные v0.7.0). На одной GPU в v0.7.1 — 104 tok/s с кэшем, описанным выше.
-
Qwen3.8-27B, prefill на реальных текстах: 3401–3211 tok/s при промпте 8k токенов; decode — порядка 139 tok/s в двухкарточном режиме. На одной карте с Q3_K_S квантом та же модель даёт ~10.8 tok/s decode и TTFT около 350 мс — это уже другой класс нагрузки, но для «просто поболтать» на одной видеокарте вполне рабочий вариант.
Справедливое предупреждение от самого автора: Strata в том же agentic replay завершает сценарий раньше, потому что его prefill быстрее, и capy-flash выигрывает именно в медиане decode. Выбор движка зависит от того, что важнее — скорость первого токена после кэшированного контекста (capy-flash) или чистый prefill-прогон (Strata).
Сравнение с альтернативами
| Движок | Что умеет на этом железе | Сильная сторона |
|---|---|---|
| capy-flash v0.7.1 | Flash-Next NVFP4 + 27B, TP=2 или 1 GPU, MTP3, кэш контекста в RAM | Агентные сценарии: TTFT 1.9 с при 83 % cache hit |
| Strata (fork llama.cpp) | Flash-Next IQ3_S / NVFP4, PP до ~2000 tok/s на больших картах | Prefill и длинный контекст без CPU-оффлоада экспертов |
| llama.cpp mainline | Qwen3.8-Flash-Next с v0.4.0 (сентябрь 2026), --fit, KV q8_0, MTP draft |
Универсальность, но без page-locked CPU MoE и кэша диалогов |
llama.cpp получил поддержку архитектуры в v0.4.0 (4 сентября 2026) — lazy tensor reading, per-slot server context limits, ggml 0.23.0 — и на одной большой карте с --fit on --fit-target 256 + KV q8_0 это рабочий вариант. Но схема «эксперты в page-locked RAM + TP=2 на двух 16 GB картах» у mainline отсутствует, и именно её нишу занимает capy-flash.
Практические замечания
-
RAM — жёсткое ограничение. Flash-Next просит ~70 GiB свободной оперативки под экспертов. Если в системе уже живёт браузер с десятком вкладок или Docker-демоны, закладывайте 64 GB как минимум, лучше больше.
-
Одна карта = профиль
flash-next-1gpu. Он появился/настроен именно в v0.7.x и держит восемь диалогов в RAM; для сценария «один агент, длинная история» это то, ради чего стоит брать этот релиз. -
MTP включён по умолчанию в профилях. Три draft-токена дают прирост decode; если нужен детерминизм — отключайте
--spec. -
Vision у 27B добавляет вес vision tower; для чисто текстовых артефактов ставьте
--no-vision, чтобы освободить VRAM под KV. -
Версии двигаются быстро. v0.7.2 (23.10) добавил «Pick up where you left off» и измерил prefill 4k/16k/64k = 1671 / 2838 / 2921 tok/s на одной GPU; v0.7.3 — CPU-треды, фикс лога под 64 GB и документацию. Если берётесь за настройку — смотрите changelog перед запуском, поведение профилей между минорными версиями меняется.
Вывод
Capy-flash v0.7.1 — это не «ещё один обёртка над llama.cpp», а отдельная ниша: агентный инференс 125B MoE на двух потребительских Blackwell с оффлоадом экспертов в RAM. Кэш восьми диалогов в оперативке превращает TTFT из 13.3 с в 1.9 с и реплей агента из 858 с в 276 с — это именно тот класс улучшения, который отличает «можно запустить» от «можно работать». Для связки 2×16 GB VRAM + 64 GB RAM проект прямо рассчитан на неё, а для тех, у кого одна карта, профиль flash-next-1gpu закрывает и этот случай.
Если же приоритет — максимальный prefill или работа без CPU-оффлоада (большие карты с 24+ GB VRAM), Strata и mainline llama.cpp остаются впереди по своей части. Но для локального агента на доступном железе capy-flash v0.7.1 сейчас выглядит самым готовым вариантом.
Источники
-
GitHub: ValerioDolci/capy-flash — README, профили и таблица бенчей (v0.7.1 / v0.7.2, октябрь 2026).
-
Releases · ValerioDolci/capy-flash — история версий v0.5.4 → v0.7.3.
-
Qwen/Qwen3.8-Flash-Next (Hugging Face) — модельная карточка: 125B MoE, 6B активных, 51B n-gram эмбеддинги, нативный контекст 262144.
-
llama.cpp v0.4.0 — Qwen3.8-Flash-Next support — поддержка архитектуры в mainline (сентябрь 2026).