Qwen3.8-Flash-Next on Strix Halo (gfx1151): 17 → 47 tok/s — working MTP on ROCm, measurements, reproducible stack #27950
drluoto
started this conversation in
Show and tell
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Sharing a measured, reproducible stack for Qwen3.8-Flash-Next (qwen4exp) on Strix Halo (Ryzen AI Max+ 395 / Radeon 8060S, gfx1151, 128 GB unified, ROCm 7.1) — including what we believe is the first working native MTP speculative decoding for this model on ROCm.
Headline, single-stream decode on real coding workloads (UD-IQ4_XS, greedy):
The stack is three composable levers:
ggml_top_kover the whole context 12×/token, and stock HIP falls back to CPU past ne=1024 (no CUB). This is why qwen4exp decode collapses with depth on ROCm — the knee is at exactly d1024. Fixed by CUDA: enable the CUB path on HIP via hipCUB #26592 (hipCUB) or ROCm: add radix TOP_K for long rows #27466 (native radix). +38–53% end-to-end at 24k.--spec-type draft-mtp,ngram-mod.Everything packaged:
-ub 2048trap,GGML_CUDA_DISABLE_GRAPHS=1on ROCm < 7.13 and why, dio vs mmap load, why fleet serving isn't worth it on this MoE): https://github.com/drluoto/flash-next-strix-halodrluoto/llama.cpp→strix-halo-flash-nextCredits where due: rmonsurate (MTP), crusaderky (loader), Geramy (hipCUB + rocPRIM capture diagnosis), jadenmach2 (radix TOP_K), Unsloth (port + quants), JJJYmmm/Qwen (arch). Raw measurement data lives in the three PR threads. Happy to run follow-ups on this hardware.
All reactions