# llama.cpp b11414: разреженный Flash Attention с квантованным KV-кешем в Vulkan

Источник: https://modelium.tech/zhurnal/llama-cpp-b11414-vulkan-sparse-quantized-kv/

В предварительных сборках llama.cpp b11413–b11414 Vulkan-бэкенд научился применять разреженный Flash Attention к квантованным K/V, если маска модели и длина контекста удовлетворяют условиям включения. Раньше этот путь работал только с f16-кешем, а с квантованным кешем обрабатывалась плотная область внимания. Автор PR измерил прирост скорости генерации 15,6% на 64k в своём тесте Qwen3.8-Flash-Next с Q8_0 KV; это не универсальный результат для всех моделей и GPU. b11414 добавляет сопутствующее исправление повторного использования буфера Vulkan.

llama.cpp b11414: разреженное внимание с квантованным KV в Vulkan

5 октября 2026 года в предварительные сборки llama.cpp вошло изменение Vulkan-бэкенда для моделей с разреженным вниманием и квантованным KV-кешем. Функция появилась в **b11413**; следующая сборка **b11414** включает её и отдельное исправление повторного использования временного буфера при операциях внимания и softmax. Это *prerelease*, не новый выпуск весов и не подтверждённый нами тест производительности. Код llama.cpp распространяется по MIT; лицензию конкретной модели нужно проверять отдельно. [s1](#src-s1) [s2](#src-s2) [s3](#src-s3) [s4](#src-s4) [s5](#src-s5)

## Почему это важно для локального запуска

До PR #29639 разреженный путь Vulkan Flash Attention включался только для K/V в f16. Если модель использует разреженную маску, но пользователь квантует KV-кеш, движок мог считать плотное внимание по контексту вместо обращения к отобранным позициям. Автор называет Qwen3.8-Flash-Next QSA и похожие DeepSeek-схемы; это оптимизация **бэкенда Vulkan для подходящих масок и конфигураций**, а не ускорение любого GGUF с Q8_0. [s3](#src-s3)

Патч разрешает квантованные K/V на scalar и coopmat1 путях; coopmat2 остаётся только для f16, поскольку его операции выборки читают f16. В scalar MMQ исправлена индексация загружаемых K-блоков: теперь используется список выбранных разреженной маской позиций. Порог включения для квантованного кеша установлен на отношение длины контекста к числу оставленных ячеек не меньше **16:1** и минимум 4096 ячеек контекста. Для f16 прежний порог 2:1 сохранён, если не действует отдельное правило выбранного kernel. Поэтому на коротком контексте новая ветка может вообще не включиться. [s3](#src-s3)

## Что показывают измерения автора

Автор сравнил генерацию Flash-Next с кешем **Q8_0 K/V** в четырёх чередующихся раундах на AMD RDNA3/RDNA4. Базовая ветка была master **с заранее перенесённым исправлением PR #29591**; это важно для интерпретации цифр. На глубине 64k получено 27,9 → 32,3 токена/с (**+15,6%**), на 128k — 20,6 → 21,4 (+4,1%), на 32k — 38,9 → 39,7 (+2,1%). Для 16–24k автор не обнаружил изменения: порог оставляет плотный путь. Обработка промпта и f16-кеш, по сообщению автора, не изменились. Это результаты автора в его условиях, а не замеры Modelium или гарантия эффекта на другом GPU и модели. [s3](#src-s3)

Отдельный PR #29591 исправляет потенциально устаревшее содержимое `prealloc_y` в Vulkan после Flash Attention или большого softmax перед повторным matmul. Автор приводит тесты для длинных промптов у архитектур с общим нормализованным входом внимания и FFN: четыре новых случая не проходили до исправления и проходили после. В полном Vulkan CI автор также отмечает один прежний сбой `qwen3_0_6b`, поэтому нельзя объявлять весь набор тестов безусловно зелёным. Исправление вошло в b11414 после b11413; для оценки нового sparse-пути разумнее брать именно более позднюю сборку. [s2](#src-s2) [s4](#src-s4)

## Практический следующий шаг

Если у вас уже есть локальный Vulkan-стек и модель с подходящей разреженной маской, скачайте **официальный Vulkan-пакет b11414** для своей ОС из релиза, сохраните прежнюю сборку для отката и сравните скорость генерации на одинаковых модели, длине контекста и формате K/V. Сверьте не только токены/с, но и ответы на контрольном наборе задач: редакция эту сборку и GPU не запускала. Не переносите авторские +15,6% на короткий контекст, CUDA/Metal или любой квантованный кеш. Изменение не говорит ничего о минимальной RAM/VRAM. [s2](#src-s2) [s3](#src-s3)

Если выбираете формат K/V, сначала прочитайте [руководство по KV-кешу](/zhurnal/llama-cpp-kv-cache/): здесь важен именно выбор формата и замер на вашем стенде, а не размер файла весов. [s3](#src-s3)

## Источники

1. [ggml-org/llama.cpp: release b11413](https://github.com/ggml-org/llama.cpp/releases/tag/b11413) — получено 2026-10-05
2. [ggml-org/llama.cpp: release b11414](https://github.com/ggml-org/llama.cpp/releases/tag/b11414) — получено 2026-10-05
3. [ggml-org/llama.cpp PR #29639: sparse flash attention for quantized K/V](https://github.com/ggml-org/llama.cpp/pull/29639) — получено 2026-10-05
4. [ggml-org/llama.cpp PR #29591: stale prealloc_y reuse](https://github.com/ggml-org/llama.cpp/pull/29591) — получено 2026-10-05
5. [ggml-org/llama.cpp LICENSE at b11414](https://github.com/ggml-org/llama.cpp/blob/b11414/LICENSE) — получено 2026-10-05
