В репозитории ggml-org/llama.cpp открыт пул-реквест #30965 авторства sanmai: он предлагает собирать QSA-выбор без kq_mask. По заявлению автора PR, изменение экономит гигабайты VRAM при работе с Qwen Flash Next и опирается на более эффективное использование кэша экспертов, подход, который, по словам источника, применяется в Strata.
Короткий ответ на главный вопрос: речь о видеопамяти MoE-моделей, и история полезная, если Qwen у вас упирается в VRAM. Готового рецепта пока нет: в источнике нет ни цифр, ни конфигураций, ни оценок влияния на качество и скорость.
Разбор ниже держится в границах публикации PR от 23 октября 2026 года. Деталей кода в ней нет, поэтому объяснения терминов даны на уровне общего контекста, а всё, что относится к эффекту, помечено как заявление автора.
Что предлагает PR #30965 в llama.cpp
llama.cpp - открытый inference-движок на C/C++ с набором бэкендов ggml: CUDA, ROCm, Metal, Vulkan, CPU. На нём запускают GGUF-модели локально, и для Qwen это один из самых распространённых способов. Пул-реквест #30965 помечен qwen4exp и меняет сборку QSA-выбора: предлагается обходиться без kq_mask. Выигрыш автор описывает одной фразой - «gigabytes of VRAM saved (Qwen Flash Next)».
Коротко: что меняется и для кого
Меняется внутренний механизм сборки QSA-выбора. Потенциальный результат - меньше видеопамяти под Qwen Flash Next и, вероятно, другие MoE-модели с похожей архитектурой. Адресат изменения: те, кто держит Qwen на одной карте с 12, 16 или 24 ГБ и считает каждый гигабайт, а также владельцы домашних серверов, где на VRAM висят сразу несколько моделей. Гигабайты в источнике не уточняются, так что воспринимать фразу стоит как заявку на выигрыш, а не как измеренный результат.
Что в источнике есть, а чего нет
Есть:
- заголовок PR, метка qwen4exp, автор sanmai, репозиторий ggml-org/llama.cpp;
- формулировка «gigabytes of VRAM saved (Qwen Flash Next)»;
- цитата «This is one of the things Strata does to squeeze the most juice from the experts' cache» с отсылкой к кэшу экспертов.
Нет:
- описания, как именно устроен QSA-выбор и что делает kq_mask в текущем коде;
- замеров: конфигурация GPU, квантизация, длина контекста, скорость генерации;
- оценки влияния на качество ответов и стабильность;
- данных, изменится ли расход RAM на стороне хоста.
Эти границы важны: по публикации нельзя ответить, сколько памяти освободится у вас и не просядет ли модель.
QSA-выбор и kq_mask: что это в контексте llama.cpp
Аббревиатуру QSA источник не расшифровывает, и придумывать за автора не стоит. Из контекста следует одно: QSA-выбор - часть пайплайна инференса Qwen-моделей в llama.cpp, которая собирается на этапе подготовки вычислений, а kq_mask участвует в этой сборке как маска. Метку qwen4exp и разговор про кэш экспертов можно трактовать как указание на архитектуру Qwen с экспертами, но это чтение контекста, а не цитата.
Маски в inference-движках обычно отсекают то, что модель учитывать не должна: будущие токены при генерации, padding в батче, позиции за пределами окна внимания. Такая маска - тензор, и его размер зависит от длины контекста и числа голов внимания. Отсюда прямая связь с VRAM: чем длиннее контекст, тем больше памяти уходит на служебные структуры, а не на веса.
Автор PR предлагает не создавать kq_mask для сборки QSA-выбора. По его формулировке это снимает лишний расход памяти и лучше задействует кэш экспертов. Как именно одно связано с другим, в материале не расписано: схему «маска мешала кэшу так-то» придётся считать домыслом.
Почему маска вообще нужна и почему от неё можно отказаться
Маска решает конкретную задачу: не дать модели учесть недопустимые позиции. В PR речь не о том, что маска вредна всегда. Утверждение узкое: в сборке QSA-выбора она избыточна, и её можно не материализовать. Это заявление автора изменения, а не согласованный вывод сообщества. На момент публикации источник фиксирует предложение, а не влитый в основную ветку код.
Кэш экспертов и MoE: где именно утекает VRAM
MoE-модель (Mixture of Experts) состоит из множества экспертных подсетей, но на каждый токен активируется только их часть. Держать всех экспертов в быстрой памяти дорого, поэтому движок кэширует тех, кто нужен сейчас. Попадание в кэш экономит время на подкачку весов, промах оплачивается пропускной способностью памяти.
Видеопамять тут расходуется дважды: под сам кэш экспертов и под служебные структуры, которые нужны для маршрутизации и сборки выборов. Если часть структур не создавать, место освобождается либо под более длинный контекст, либо под более крупный кэш, либо под вторую модель. Тема для llama.cpp не новая: пул-реквест #29887 предлагал GPU-кэш для MoE-экспертов, которые лежат в оперативной памяти хоста. Логика у изменений общая: сократить простои на подкачке весов.
Почему для Qwen Flash Next это особенно важно
Источник называет модель Qwen Flash Next, без версии. В сообществе и в наших разборах фигурирует Qwen3.8-Flash-Next, экспериментальная промежуточная модель без официальной карточки, о чём мы писали отдельно: что известно про Qwen3.8-Flash-Next и её локальный запуск. Совпадают ли эти названия, источник не подтверждает. Если речь про MoE-модель с большим числом экспертов, кэш экспертов становится заметной статьёй расхода VRAM, и любая правка в этой области даёт эффект, которого не будет у плотной модели того же размера.
Сколько VRAM это экономит: что известно и чего не хватает
Известна одна фраза: «gigabytes of VRAM saved (Qwen Flash Next)». Ни числа, ни условий, ни способа замера. Вывести из неё, сколько освободится на вашей карте, нельзя.
Переносимость нулевая, потому что экономия зависит от набора параметров: квантизация модели, длина контекста, размер батча, число слоёв на GPU, версия llama.cpp и драйвера, включён ли кэш экспертов и насколько он велик. Смените любой - получите другой результат.
Почему «гигабайты» - это не точная цифра
Формулировка допускает разброс в разы: на длинном контексте и большом числе голов служебные структуры весят заметно больше, на коротком - меньше. Покупать или продавать GPU, опираясь на эту фразу, не стоит. Разумнее дождаться воспроизводимых замеров в обсуждении PR и читать их с поправкой на конфигурацию. Как отделять измеримое от маркетингового, мы разбирали на примере заявлений про эффективность ускорителя: что стоит за «100% эффективности GPU».
Кому оптимизация важна в первую очередь
Чем меньше VRAM, тем ценнее каждый освобождённый гигабайт. Владелец карты на 12-16 ГБ, который пытается уместить Qwen Flash Next в память, выигрывает качественно: либо модель влезает целиком, либо освобождается место под контекст. Для 24 ГБ эффект мягче: запас уходит на длинные промпты или на параллельные запросы. На 80 ГБ выгода уже не про «влезет или нет», а про аккуратность конфигурации.
Отдельная группа - те, кто держит на одном сервере несколько MoE-моделей или несколько слотов с разными настройками. Здесь освободившиеся гигабайты конвертируются в переключение без выгрузки и в более предсказуемое поведение под нагрузкой.
Сценарии: домашний сервер, одна GPU, несколько моделей
- Одна GPU, Qwen Flash Next впритык по памяти. Экономия может оказаться решающей: без неё модель уходит частично на CPU, с ней остаётся на карте.
- Домашний AI-сервер с несколькими MoE-моделями. Освободившаяся VRAM уходит на контекст, кэш экспертов или вторую модель.
- Разработка и тесты. Меньше памяти под служебные структуры, быстрее переключение между конфигурациями и меньше шансов поймать OOM.
Это гипотезы о пользе, а не подтверждённые замеры. Цифр, доказывающих выигрыш в каждом из сценариев, в источнике нет.
Ограничения и открытые вопросы PR #30965
- Изменение предложено, но не факт, что его вольют в основную ветку в текущем виде.
- Компромиссы отказа от kq_mask в источнике не описаны.
- Нет данных о perplexity, скорости генерации и стабильности на длинном контексте.
- Связь со Strata приводится как слова автора, независимого подтверждения нет.
- Не указано, нужны ли правки в других частях пайплайна и совместим ли патч с текущими квантованными сборками.
Применять патч в продакшене, не прогнав свои тесты, рискованно: правка касается служебных структур внимания, а ошибка в маске обычно проявляется не падением, а тихо испорченными ответами.
Что такое Strata и почему это лишь слова источника
В цитате Strata упоминается как система, которая «squeeze the most juice from the experts' cache», то есть выжимает максимум из кэша экспертов. Что это за проект, как он устроен и тот ли механизм используется в PR, источник не раскрывает. Воспринимать Strata стоит как указание на источник идеи, а не как доказательство работоспособности.
Качество и скорость: чего в источнике нет
Данных о влиянии на perplexity, скорость генерации и стабильность нет. Логика подсказывает, что отказ от лишней маски не должен ухудшать качество, но это рассуждение, а не измерение. Закрыть вопрос может только обсуждение в PR и чужие замеры.
Как проверить эффект у себя: практический чек-лист
- Следите за PR #30965 в репозитории ggml-org/llama.cpp: статус, комментарии, изменения в коммитах.
- Если патч доступен, соберите отдельную ветку. Рабочую сборку не трогайте, пока не получите стабильный результат.
- Замеряйте VRAM на одинаковых промптах и одинаковой длине контекста:
nvidia-smiдля CUDA,rocm-smiдля AMD. - Сравните качество ответов на своих задачах: одинаковые промпты, одинаковая температура, оценка по одним и тем же критериям.
- Запишите конфигурацию целиком: модель и квантизация, версия llama.cpp и драйвера, batch, контекст, число слоёв на GPU.
- Повторите замер 2-3 раза: разовый прогон легко даёт случайный результат.
Что фиксировать в замерах, чтобы сравнение было честным
Переменные, без которых сравнение ничего не значит: модель и квантизация, длина контекста, размер батча, версия llama.cpp, версия драйвера, фоновые процессы на GPU. Если что-то из этого отличалось между прогонами, «экономия гигабайтов» может оказаться эффектом другого фактора. Пример аккуратного подхода к таким замерам у нас есть в разборе экспериментов с MoE-инференсом в llama.cpp на RTX 4080.
Если VRAM всё равно не хватает: альтернативы
PR #30965 - один из способов снизить давление на память, и он не отменяет базовые.
- Более агрессивное квантование: меньше весов в памяти, но возможна потеря качества.
- Сокращение контекста: служебные структуры растут вместе с ним.
- Выгрузка части слоёв на CPU: медленнее, зато модель запускается.
- Менее требовательная MoE-модель или меньший вариант той же архитектуры.
- Несколько GPU: память суммируется, но добавляется обмен между картами.
Каждая мера меняет баланс скорости и качества, и выбирать её стоит под конкретную задачу.
Итог: стоит ли ждать PR #30965
Изменение потенциально полезно тем, кто запускает Qwen Flash Next и другие MoE-модели на ограниченной VRAM. Пока это новость «на радар»: заявлена экономия гигабайтов, а замеров, конфигураций и оценок компромиссов нет. Строить на этом план апгрейда рано, ставить патч в продакшен без своих тестов тоже.
Дальше два шага. Первый - держать PR в списке отслеживаемых и дождаться комментариев с замерами, а затем прогнать их логику на своём железе. Второй - если VRAM уже впритык, проверить квантизацию и настройки контекста прямо сейчас: они дают предсказуемый эффект без ожидания мержа.