llama.cpp прискорює великий top-k у Vulkan для Qwen 3.8 Flash Next
Тестова збірка b10712 додає Vulkan radix-select для top-k від 1024, окремі тести для Qwen 3.8 Flash Next і fusion стадії top-k QSA.

У тестовій збірці llama.cpp b10712 команда додала Vulkan-реалізацію top-k radix selection для випадків, коли параметр k дорівнює 1024 або більше. Зміна орієнтована на Qwen 3.8 Flash Next: разом із shader з’явилися профільні top-k tests і fusion для top-k QSA. Це вузька оптимізація sampling pipeline, але вона показує, де локальний inference може втрачати час після того, як модель уже обчислила logits.

Де top-k з’являється у генерації
Після forward pass модель повертає logits для великого словника токенів. Sampling-політика перетворює їх на наступний токен: може застосувати temperature, штрафи, top-k, top-p та інші фільтри. Top-k залишає k найкращих кандидатів і відкидає решту. Коли k невелике, простіші алгоритми часто достатні; для k від 1024 повне або неефективне сортування великого масиву стає помітнішою частиною кроку.
Radix-підхід групує значення за частинами їхнього представлення й добре вкладається у паралельну роботу GPU. Це не тотожне звичайному comparison sort і не гарантує однакової переваги на кожному адаптері. Результат залежить від розміру vocabulary, типів даних, драйвера, архітектури GPU, workgroup configuration та решти sampling chain.
Навіщо окремий Vulkan shader
Vulkan backend важливий для локального inference на широкому наборі GPU, де CUDA недоступна або небажана. Перенесення операції у shader зменшує потребу повертати великий масив кандидатів на CPU лише для відбору. Коли суміжні стадії залишаються на пристрої, менше синхронізацій і копіювань переривають pipeline.
Release notes описують додавання top-k radix sort shader для k ≥ 1024, тести для Qwen 3.8 Flash Next та top-k QSA fusion. Fusion зазвичай означає об’єднання суміжних кроків так, щоб проміжні дані не матеріалізувалися зайвий раз у глобальній пам’яті. Проте нотатки не публікують вимірів latency або tokens per second, тому називати конкретний відсоток прискорення було б вигадкою.
Кому зміна може бути помітною
Найочевидніший кандидат — користувачі Qwen 3.8 Flash Next у конфігураціях із великим top-k і Vulkan backend. Для типових preset, де top-k значно менше 1024 або взагалі відключене, новий шлях може не активуватися. Так само bottleneck часто залишається в матричних операціях моделі, memory bandwidth або KV cache, а не у sampling.
Розробникам локальних agent-систем важлива не лише середня швидкість. Sampling відбувається на кожному токені, тому навіть невелика стабільна затримка накопичується у довгій відповіді. Водночас агресивна оптимізація відбору повинна зберігати правильність, порядок кандидатів і відтворюваність у межах очікувань backend — саме тому окремі tests у релізі не менш важливі за shader.
Практичний висновок: b10712 варто брати для контрольного benchmark, а не автоматично замінювати нею production-збірку. Порівнюйте однакову модель, seed, prompt, sampling parameters і Vulkan driver.
Як перевірити ефект коректно
- Зафіксуйте точний model file, quantization, context size, batch settings і build flags.
- Порівняйте попередній commit та b10712 на тому самому GPU й драйвері.
- Вимірюйте prompt processing окремо від token generation, бо top-k впливає передусім на sampling.
- Запустіть кілька значень k нижче і вище 1024, щоб побачити момент перемикання алгоритму.
- Перевірте output consistency і можливі validation errors, а не лише tokens per second.
Статус збірки й обмеження
GitHub позначає b10712 як pre-release, створений автоматизованим release workflow 31 серпня. Це не стабільний milestone з довгим циклом сумісності. Сторінка надає assets для Linux, Windows, macOS/iOS, Android і кількох accelerator backends, але наявність готового binary не робить кожну комбінацію hardware і driver однаково перевіреною.
Назва Qwen 3.8 Flash Next у release notes означає цільовий тестовий сценарій, а не загальну гарантію для всіх моделей. Не слід переносити висновок на CUDA, Metal, ROCm чи CPU без окремих вимірів. Також top-k впливає на sampling semantics: benchmark має використовувати реальну конфігурацію застосунку, а не випадкове велике k лише заради красивого графіка.
Джерело та права
Матеріал є самостійним українським перекладом-переказом release notes llama.cpp b10712, опублікованих 31 серпня 2026 року автоматизованим workflow на основі внесків ggml contributors. Репозиторій і release notes поширюються за MIT License. Перекладено, адаптовано й доповнено редакцією «Бібліотеки програміста». Обкладинка створена редакцією за допомогою AI і не входить до першоджерела.
Матеріал перекладено, переказано та доповнено редакцією українською мовою.
Читайте далі — ми вже розбираємо наступну важливу тему.


