feat(llama-swap-strix): llama-swap with the Strix Halo q8_0-KV FA patch (#25494) - #2883
Merged
Merged
Conversation
llama-swap carrying ggml-org/llama.cpp#25494 (unmerged): dequant q8_0 KV once in the Vulkan coopmat1 flash-attention path instead of once per workgroup — the exact configuration ai-box's generative routes run (kv: q8_0 + -fa 1 on gfx1151). Author-reported on a 30B-A3B MoE with q8_0 KV: pp512 @32k 200->282 t/s, @65k 99->166 t/s, decode flat, greedy output byte-identical. Two build stages reproduce upstream llama.cpp's own .devops/vulkan.Dockerfile (same base, packages, cmake flags, plus the embedded web UI), applying patches/*.patch to the checked-out release tag first, then graft the patched llama-server AND the ggml backend .so files onto the stock llama-swap image ai-box already runs — the Vulkan FA code is in libggml-vulkan.so, not the binary, so a binary-only copy would benchmark as a null result. Grafting onto the same base keeps the A/B one variable. VERSION (llama.cpp tag) and BASE_IMAGE (the llama-swap build from that same tag) must move together; renovate is disabled for this app so a bot cannot bump one alone. amd64 only — one gfx1151 APU. Delete this app when #25494 merges upstream. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
fastlorenzo
force-pushed
the
feat/llama-swap-strix
branch
from
August 9, 2026 19:20
f20a44e to
6e56fa4
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
New app
llama-swap-strix:llama-swapcarrying ggml-org/llama.cpp#25494 (unmerged) — dequant q8_0 KV once in the Vulkan coopmat1 flash-attention path instead of once per workgroup. That is the exact configuration every generative route onai-box(Strix Halo / gfx1151) runs:kv: q8_0+-fa 1.Author-reported on a Qwen3-MoE-30B-A3B with q8_0 KV (≈ ai-box's
coderroute):Greedy output byte-identical; cost is a scratch buffer that scales with KV size (~268 MB @128k).
How
Two build stages reproduce upstream llama.cpp's own
.devops/vulkan.Dockerfile(same base, packages, cmake flags, plus the embedded web UI), applyingpatches/*.patchto the checked-out release tag first, then graft the patchedllama-serverand the ggml backend.sos onto the stockllama-swapimage ai-box already runs.libggml-vulkan.so, not the binary — a binary-only copy would build, run, and benchmark as a null result.container_test.goasserts the libs are present andpatches-applied.txtis non-empty.BASE_IMAGEkeeps the eventual A/B (ai-bench sweep coder-fa-patchon ai-box) to one variable.tests/test-backend-ops.cpphunk is dropped (doesn't apply to b10331; built withLLAMA_BUILD_TESTS=OFF).Notes for review
VERSION(llama.cpp tag) andBASE_IMAGE(the llama-swap build from that same tag) must move together. Renovate is disabled for this app in.renovaterc.json5so a bot can't bump one alone and silently invalidate every benchmark.Local checks:
hadolintclean,go vet ./apps/llama-swap-strix/...,docker buildx bake --print. The image has not been built end-to-end yet — first CI build is the real test (npm ci for the web UI stage, and whether a full Vulkan compile fits the runner).🤖 Generated with Claude Code