PaoAI/Qwen3.8-Flash-Next-PaoAI-STRIX-BALANCED-2-GGUF
Qwen3.8-Flash-Next-PaoAI-STRIX-BALANCED-2-GGUF
The balanced Qwen3.8-Flash-Next quant for AMD Strix Halo (Ryzen AI Max+ 395 / gfx1151). Measured, not marketed: one 78.27 GB file on ONE Strix Halo box — reading 301–870 t/s and writing 17.5–46.7 t/s across the full window (depending on how full it is and what you ask for), MTP speculative decoding active, and integrity-checked at every depth to the full 262,144-token window.
Reading = processing your prompt (prefill). Writing = producing the answer (decode). t/s = tokens per second.
Brand: PaoAI · community quant, not affiliated with the Qwen team.
Updated 2026-09-27 — new engine + new file. The latest version runs on a ROCm/HIP engine (pwilkin's Strix Halo llama.cpp branch + one PaoAI fix) with a new file, `…BALANCED-2.1.gguf` — the same recipe with the dense weights stored in 8-bit (78.27 GB, perplexity −0.16 % vs the previous file). Against the previous version: reading 2.0–2.6× faster at every depth, writing faster at every depth for every kind of answer, coding-exam median 100 (was 86.7). The previous file stays in this repo for the previous (Vulkan) engine — see "Previous version" under How to run.
What is this? (30 seconds)
We took the 180B-parameter BF16 Qwen3.8-Flash-Next master (360 GB — 48 blocks, 512 experts, hybrid linear attention, a PLE n-gram table and a NextN/MTP head) and compressed it organ by organ: the parts that need precision keep it, the parts that don't get compressed harder. The BALANCED-2 mix fits one box with no offload flags, and pairs with an MTP draft sidecar that makes speculative decoding actually pay.
The recipe (what's inside)
BALANCED-2.1 = BALANCED-2 with 423 tensors (the dense weights + output head) moved from F16 to 8-bit Q8_0; the experts and the PLE table are byte-identical to the previous file. 80.78 → 78.27 GB (3.65 → 3.54 bits per weight). Perplexity on wikitext-2 (8K context): 4.6695 → 4.6618 (−0.16 %, within error). The 8-bit-dense idea comes from Halogen.
Which file? …BALANCED-2.1.gguf (78.27 GB) is the recommended file — same mix, always-on parts in 8-bit: smaller, same quality, faster. …BALANCED-2.gguf (80.78 GB) is the previous file, kept for existing links and for the numbers labelled "previous version". BALANCED-2.1 also runs on the previous (Vulkan) engine.
Coding exam — "chain test" (3 runs, fresh server each — latest version, 2026-09-26)
A fixed coding exam graded by running the code, not by opinion: the model reads deceptive code and must trace it, implements a novel state machine, and writes a thread-safe ring buffer that survives a 5,000-operation stress test. Three identical runs; we report medians with the spread (identical runs vary — single scores are unreliable).
Per-task median: 100/100 (run totals 100 · 87 · 100). The one 60: the model wrote the correct final state but left out the simulate() function the task asks for — its own slip; the answer finished normally (not cut off). Previous version (2026-09-20): medians 100 · 60 · 100 → 86.7 (run totals 87 · 53 · 87).
Writing speed per phase (tokens/second)
Short prompts (a few hundred tokens). Exam settings for both versions: 64K window, thinking budget 1,500 tokens, 4 drafted tokens, each version on its own recommended server settings.
Deep-context sweep — what happens when the window fills (8K → 256K)
We filled the window in five steps and measured reading and writing at each — a fresh server and a fresh prompt at every point (no prompt-cache reuse), three kinds of answer per depth, one pass.
The three answer kinds: short answer = "What is 17 times 23 plus N? Answer with the number only." (up to 300 tokens, thinking on — the method of every earlier table on this card; the answer is checked); code = "write a complete Python module … with tests" and long writing = "write a long, detailed explanation … 900+ words", each exactly 1,000 tokens, thinking off. Reading = the short-answer prompt. Measured 2026-09-26 on one Strix Halo, latest version, `-c 262144`, prompt cache off. Achieved fills: 8,238 / 32,813 / 65,594 / 131,127 / 260,056 tokens. Speeds are the server's own timings, cross-checked against its log lines (all 15 match).
Against the previous version (Vulkan engine 4905ff417 + the previous file):
Previous-version numbers: short answer = this card's 2026-09-20 table; code and long writing = our measurements of that engine on 2026-09-25/26 (medians of 2–6 runs). All were measured while that box's drive was nearly full, which slows this model — some may be a little low.
Plain read: reading is 2.0–2.6× faster at every depth, and the gap grows as the window fills. Writing is faster in every cell. Code writes fastest because the draft head guesses code well (0.76–0.85 of its guesses accepted); long free text writes slowest (~0.46 — prose is harder to guess). All five answer checks are right; memory barely moves with depth (67.9 → 69.5 GiB).
Full window — 262,144 tokens (latest version)
The model's own metadata declares a 262,144-token window (qwen4exp.context_length). The table above fills it to 260,056 tokens with the answer check right, and a needle test passed at the same depth: one sentence ("Note: The vault code is 7291-ALPHA.") hidden in the middle of 260,018 tokens of text → asked for the code, the model answered 7291-ALPHA.
Serve it with `-c 262144` for the full window. The latest version needs no special batch settings for deep context.
Quality bench (PaoAI Quality Bench v1.3 — 55 tasks, 7 subjects)
Overall 75.7 (code counts ×2) · one run per task · temperature 0 · one request at a time · 81.8 min total · latest version.
Short prompt: most tasks send 60–270 tokens, so their reading speed is mostly start-up time; real reading speed = the long-context row and the sweep above. Out of budget: this model thinks at length. On 10 of 55 tasks it used its whole token budget (math 2,048 · real world 8,192 · code 12,288–16,384): 6 were still thinking and gave no answer, 4 wrote an answer that was cut off — all score 0. That is how the model behaves at these budgets, not a crash. Real world: 4 of its 6 tasks ran out of budget, 1 answered wrong, 1 right. Same budgets for every run, no retries.
Facts
Requirements — which build (latest version)
Engine: [guevae2/paoai-qwen38fn-rocm-engine](https://github.com/guevae2/paoai-qwen38fn-rocm-engine) — build it with scripts/paoai/build-strix-halo.sh (user space, no sudo). It is [pwilkin's llama.cpp, branch `strix-halo`](https://github.com/pwilkin/llama.cpp/tree/strix-halo) (MIT) at b0f31f5876ef3856b55f5bb88072cc96e5effafe, plus one PaoAI fix b8fe9e80d5b33a30415d6756a694029bc8c28738 (lets the draft-check step use a fast GPU routine instead of a slow library path on RDNA3.5), built for HIP with [TheRock](https://github.com/ROCm/TheRock) ROCm 10 and [pwilkin's ROCm runtime](https://github.com/pwilkin/rocm-systems/tree/ilintar-experiments) at 7dda3ac6cfe6bbe0b7f08c23a67cfa118d8641a1 (retained-PM4 graphs).
⚠️ Use a build with a working MTP path. We measured a wiring defect in other builds of this architecture where the hidden-state export collapses to one row while the draft head reads the whole batch — draft acceptance then sits at 0–2% instead of the 45–98% a correct build delivers, and speculative decoding becomes a pure slowdown (writing falls to ~10 t/s). This engine measures 0.76–0.85 accepted on short answers and code and 0.45–0.49 on long free text — if your numbers look like 2%, you are on the wrong build; swap binaries before blaming the quant.
How to run (latest version, measured)
HSA_OVERRIDE_GFX_VERSION=11.5.1 GGML_HIP_ENABLE_UNIFIED_MEMORY=1 ENABLE_RETAINED_PM4=1 DEBUG_HIP_GRAPH_PM4=1 \
llama-server -m Qwen3.8-Flash-Next-PaoAI-STRIX-BALANCED-2.1.gguf \
-dev ROCm0 -ngl 999 -fa on -fit off --load-mode none --lazy-mode on-direct \
-ctk f16 -ctv f16 -c 262144 -b 16384 -ub 16384 --parallel 1 --jinja \
--spec-type draft-mtp --spec-draft-model mtp-Qwen3.8-Flash-Next-Q8_0.gguf \
--spec-draft-device ROCm0 --spec-draft-ngl 99 --spec-draft-n-max 4 \
--host 0.0.0.0 --port 8080sha256sum Qwen3.8-Flash-Next-PaoAI-STRIX-BALANCED-2.1.gguf # d3257e4fa5a243fcc7e1a7f4f1e99e6ba5c7094f70a00fbb5c3ff262ae7aff86
sha256sum mtp-Qwen3.8-Flash-Next-Q8_0.gguf # cd87e5d1a4dadaeed63e35929f3b2f28d13e081b4cd32e00f2835095ec09351e- Draft head: download
MTP/mtp-Qwen3.8-Flash-Next-Q8_0.gguffrom unsloth/Qwen3.8-Flash-Next-GGUF (4,137,429,120 B, sha256cd87e5d1a4dadaeed63e35929f3b2f28d13e081b4cd32e00f2835095ec09351e). Without it the model still serves, just without speculation. - The environment variables (the engine's build script writes them to
env.shfor you): the first marks the GPU as gfx1151, the second lets it use system memory, the last two switch on the retained-PM4 graph path of pwilkin's ROCm runtime (they need that runtime build). - Keep the file on a fast NVMe drive that is not nearly full.
--lazy-mode on-directreads the 26.8 GiB PLE table from the file while writing instead of holding it all in memory. On our box, runs wrote up to a third slower while its drive (a DRAM-less SSD) was 86 % full, and ran clean at 45 % full.
Output budget — the one setting that changes answers, not just speed. This model thinks hard before it writes; the thinking is billed against the same output budget as the answer. Nothing is baked into the file — set it in your client (max_tokens), not in the model:
<details> <summary><b>Previous version — Vulkan engine + the original 80.78 GB file (still in this repo)</b></summary>
The original file Qwen3.8-Flash-Next-PaoAI-STRIX-BALANCED-2.gguf (80.78 GB, sha256 b552c44269035b25a638be75a03043eddeafcd5f52ca4937a30c648d6fcd19b3) runs on our Vulkan fork [paoai-strix-engine](https://github.com/guevae2/paoai-strix-engine) at commit 4905ff417 — every "previous version" number on this card was measured there.
git clone https://github.com/guevae2/paoai-strix-engine && cd paoai-strix-engine
git checkout 4905ff417
cmake -B build -DGGML_VULKAN=ON -DGGML_NATIVE=ON -DCMAKE_BUILD_TYPE=Release
cmake --build build -j
llama-server -m Qwen3.8-Flash-Next-PaoAI-STRIX-BALANCED-2.gguf \
--host 0.0.0.0 --port 8080 -ngl 999 -c 262144 --parallel 1 \
-b 2048 -ub 2048 \
-fa on --cache-type-k q8_0 --cache-type-v q8_0 --jinja \
--ctx-checkpoints 0 \
--spec-type draft-mtp --spec-draft-n-max 4 \
-md mtp-Qwen3.8-Flash-Next-Q8_0.ggufOn that engine: -b 2048 -ub 2048 is free prefill; do not raise it (-ub 8192 takes the GPU down with vk::DeviceLostError); the fork steps the batch down by itself past ~55K and ~200K depth; --ctx-checkpoints 0 is required (checkpoint restore crashes otherwise).
</details>
Serving features explained (plain words)
Known limits (honest)
- Long thinking is the real caveat. The model reasons heavily and the thinking length varies run-to-run (4K → 30K tokens on an identical prompt). With a small output cap you get truncation — mid-thought, sometimes with no answer text at all. Give it 32K+ output tokens on hard tasks.
- Writing speed depends on how well the draft guesses: 0.76–0.85 accepted on code and short answers, ~0.46 on long free text — so code writes about 1.4–1.6× faster than prose at the same depth.
- ROCm/HIP numbers: the latest numbers are from the HIP backend (TheRock ROCm 10) on a Strix Halo iGPU; the previous version's are Vulkan. Other backends and boxes are not comparable.
- The drive matters on this engine (see How to run): the PLE table is read from the file while writing.
- Speculative decoding does NOT change your output. Measured on the previous version's build: the same prompt at temperature 0, run once with the draft head and once without, produced byte-identical answers. The draft head buys speed only — you can leave it on.
Update log
Fleet recipes
Serving configs, ring self-heal infra, and our benchmark battery: [paoai-strix-recipes](https://github.com/guevae2/paoai-strix-recipes) (GitHub).
Credits & license
- Qwen team — base model Qwen/Qwen3.8-Flash-Next (Qwen Community License 1.0)
- pwilkin (Piotr Wilkin) — llama.cpp `strix-halo` branch (MIT) and ROCm runtime the latest version runs on
- Unsloth — Qwen3.8-Flash-Next-GGUF: BF16 source, imatrix, and the MTP Q8_0 draft sidecar
- Halogen — halogen-flash-server: the 8-bit dense-weights idea behind BALANCED-2.1
- nathanw — Nathanw1014/llama.cpp:
qwen4expport, the working MTP hidden-state handoff, and the Vulkan engine fork of the previous version - kingjones30 / charlie12345 — kingjones30/ROCmFPX · charlie12345/ROCmFPX: ROCmFPX format & recipes
- AMD ROCm — TheRock (ROCm 10 build system)
- ggml-org — llama.cpp
- PaoAI — huggingface.co/PaoAI · paoai-qwen38fn-rocm-engine · paoai-strix-engine: hybrid recipe, BALANCED-2.1 re-quant, the RDNA3.5 draft-check fix, fleet benchmarking, coding exam, PaoAI Card Test v1
Qwen Community License 1.0 (the base model's own license — license: other, qwen-community-1.0), inherited by this derivative quant. Not affiliated with the Qwen team.
