# llama.cpp b11430: ускорение Flash Attention на Hexagon в многокерновом режиме

Источник: https://modelium.tech/zhurnal/llama-cpp-b11430-hexagon-head-split-snapdragon/

В prerelease-сборку llama.cpp b11430 от 5 октября вошла переработка Flash Attention и матричных операций для Hexagon NPU на Snapdragon. В режиме row-split несколько ядер теперь делят KV-головы вместо повторного чтения всего KV-кеша, когда число голов делится на число ядер. Автор замерил ускорение обработки промпта Qwen3-0.6B с 6977 до 11026 токенов/с в одном четырёхъядерном сценарии; скорость генерации этим результатом не подтверждена.

## Что изменилось 5 октября

PR #29974 был слит в llama.cpp 5 октября 2026 года; тег **b11430** опубликован в тот же день и помечен GitHub как **prerelease**. Сравнение с уже вышедшим стабильным v0.6.0 показывает один дополнительный коммит. Это изменение движка локального инференса на Hexagon NPU, **не выпуск новых весов модели и не новый стабильный релиз**. Исходники llama.cpp распространяются по MIT; права на конкретные веса нужно проверять отдельно. [s1](#src-s1) [s2](#src-s2) [s3](#src-s3) [s5](#src-s5)

В режиме row-split раньше каждое вычислительное ядро читало все KV-головы во время Flash Attention. Теперь, если число KV-голов кратно числу ядер, ядра делят между собой головы и читают соответствующие доли KV-кеша. Иначе остаётся прежнее разбиение по блокам токенов: автор прямо приводит пример Gemma 4 с двумя KV-головами на четырёх ядрах. Переключатель `GGML_HEXAGON_FA_HEAD_SPLIT` включён по умолчанию; в закреплённом `scripts/snapdragon/run.py` его можно менять опцией `--hex-fa-head-split`. В том же PR переработаны подбор HMX/HVX, распределение MoE-экспертов и матричные операции для нескольких последовательностей. [s1](#src-s1) [s2](#src-s2) [s4](#src-s4)

## Какие результаты подтверждены источником

В описании релиза приведены **авторские** измерения для четырёх ядер в row-split, `ubatch=1024`: у Qwen3-0.6B скорость обработки промпта выросла с 6977 до 11026 токенов/с, у Llama 3.2 3B — с 3717 до 5522. Для Qwen3.5 4B приведены 2739 и 2855, а для Gemma 4 MoE улучшение этого механизма не заявлено. Там же сказано, что в этих испытаниях **генерация токенов не ускорилась**. Это замеры разработчика, не тест Modelium, и они не задают универсальный выигрыш для любого Snapdragon или любой модели. [s1](#src-s1)

В PR отдельно приведён прогон на **Galaxy S24 Ultra / Hexagon v75** для Qwen3.5 2B Q4_0: при `ngl=99`, шести потоках, `n_ubatch=1024`, Flash Attention и HTP0 результат `pp1024` изменился с 1294,15 до 1436,50 токена/с, а `tg128` — с 31,62 до 31,49 токена/с. Это **другой эксперимент и другой знаменатель**: его нельзя смешивать с числами четырёхъядерного row-split или объявлять ускорением decode. Автор не приводит здесь независимого повторения измерений. [s2](#src-s2)

## Практический выбор

Если вы уже запускаете GGUF на Hexagon NPU и используете row-split, сравните стабильный v0.6.0 и экспериментальный b11430 на **одной и той же** модели и устройстве: отдельно замерьте обработку промпта (`pp`) и генерацию (`tg`), зафиксируйте число ядер, длину контекста, `ubatch` и настройки offload. Не переносите абсолютные цифры автора на свою конфигурацию. Для случая, когда число KV-голов не делится на число ядер, новый head-split автоматически уступает прежнему пути. [s1](#src-s1) [s2](#src-s2)

В assets b11430 есть пакеты `android-arm64-snapdragon` и `linux-arm64-snapdragon`. Официальный гайд объясняет выбор Hexagon-устройства через `--devices` и пример запуска `llama-bench` на Android; сначала проверьте совместимость своего устройства и развёртывания по нему. Это **prerelease**: для производственного контура сохраняйте воспроизводимую предыдущую сборку и сценарий отката. [s1](#src-s1) [s4](#src-s4)

## Источники

1. [llama.cpp b11430: prerelease и Snapdragon assets](https://github.com/ggml-org/llama.cpp/releases/tag/b11430) — получено 2026-10-05
2. [PR #29974: hexagon matmul and flash attention scalability](https://github.com/ggml-org/llama.cpp/pull/29974) — получено 2026-10-05
3. [Сравнение v0.6.0...b11430 в llama.cpp](https://github.com/ggml-org/llama.cpp/compare/v0.6.0...b11430) — получено 2026-10-05
4. [Snapdragon backend: руководство b11430](https://github.com/ggml-org/llama.cpp/blob/b11430/docs/backend/snapdragon/README.md) — получено 2026-10-05
5. [MIT LICENSE llama.cpp на теге b11430](https://github.com/ggml-org/llama.cpp/blob/b11430/LICENSE) — получено 2026-10-05
