--- license: other license_name: qwen-community-1.0 license_link: LICENSE base_model: - Qwen/Qwen3.8-Flash-Next - Qwen/Qwen3.8-Flash-Next-FP8 base_model_relation: quantized library_name: llama.cpp pipeline_tag: text-generation inference: false tags: - qwen - qwen3.8 - qwen3.8-flash-next - gguf - llama.cpp - amd - rocm - gfx1151 - ryzen-ai-max-395 - strix-halo - mixture-of-experts - iu4 - mtp - speculative-decoding - nvme - ple - long-context - local-inference --- [![Qwen3.8 Flash CIRU Strix IU4](https://huggingface.co/jcbtc/Qwen3.8-Flash-CIRU-STRIX-IU4/resolve/v3.0.0/assets/qwen38-flash-ciru-strix-iu4.jpg)](https://llm.ciru.ai/research) # Qwen3.8-Flash-CIRU-STRIX-IU4 · runtime v3.0.0 **V3 brings faster long-context serving and the qualified QSA conversation-isolation fixes to the Strix-only runner. Model weights are unchanged.** It adds parallel attention-cell selection, indexed decode attention, cached derived history, guarded PLE lookups and wider prefill. The general profile retains maximum MTP depth 6 and batch/microbatch 1024. Use the [v3 source archive](runtime/v3.0.0/ciru-runtime-v3.0.0-source.tar.gz) or [matching GitHub tag](https://github.com/ciru-ai/Qwen3.8-Flash-CIRU-STRIX-IU4/tree/v3.0.0). This text-only package requires the custom CIRU runtime, the target GGUF and all three `ple/` files. The `mtp/` head enables speculative decoding. Stock llama.cpp and Hugging Face hosted inference do not support this package. ## V3 serving comparison Measured on one Ryzen AI Max+ 395 / gfx1151 / 128 GB shared-memory NixOS machine, with one model workload at a time. Inputs are identical token IDs, cold prompt cache, 128 generated tokens, one slot and 262,144-token configured capacity. Nonthinking sampler: temperature 0.7, top-p 0.8, top-k 20, min-p 0, presence penalty 1.5, repeat penalty 1, frequency penalty 0 and seed 123. EOS is honored. | Input tokens | Profile | Prompt tok/s | Generation tok/s | First streamed piece (s) | Whole request (s) | | ---: | --- | ---: | ---: | ---: | ---: | | 4,096 | Previous CIRU | 392.00 | 22.52 | 10.70 | 16.34 | | 4,096 | CIRU v3 | 455.65 | 24.60 | 9.25 | 14.41 | | 4,096 | Halo | 381.49 | 35.30 | 11.09 | 14.69 | | 65,536 | Previous CIRU | 284.49 | 13.33 | 230.46 | 239.99 | | 65,536 | CIRU v3 | 369.81 | 24.22 | 177.32 | 182.57 | | 65,536 | Halo | 263.42 | 23.28 | 248.91 | 254.37 | **Versus the previous CIRU profile, v3 reduces whole-request time by 11.80% at 4K and 23.93% at 64K.** At 64K, prompt throughput improves 29.99% and generation throughput 81.66%. These are separate metrics; the first-piece times above are the first streamed content-field event. MTP 2 is a useful optional setting for the tested lower-acceptance long requests, but it was not promoted as the general default. Across 20 short HumanEval requests, v3 MTP 6 measured 53.24 generation tok/s versus 39.63 with MTP 2. Both passed 20/20 base and extended tests. Keeping MTP 6 avoids that short-coding regression; target verification retains the full vocabulary at either depth. | Input tokens | Optional v3 MTP 2 prompt tok/s | Generation tok/s | Whole request (s) | | ---: | ---: | ---: | ---: | | 4,096 | 453.09 | 29.39 | 13.62 | | 65,536 | 373.08 | 24.88 | 180.87 | The previous CIRU arm is the locally qualified v2.0.1 runner under its original MTP 6, b2048/u512 profile. The v3 arm uses the same weights and MTP 6, with b1024/u1024. Halo is the unmodified current fork at commit `5f851647fe5ed795dfd6c0a3fba543114879e874`, using its recommended Vulkan backend, Unsloth UD-Q4_K_XL target and published EasiiX Strix Q8 MTP head. Native KV, batch, thread, fitting and cache defaults are retained. Halo maximum depths 2, 3, 4, 6 and native adaptive 6 were screened. Depth 3 won its short-context screen at **35.37 tok/s**, versus **31.4** at depth 2, **30.04** at depth 4, **25.91** at depth 6 and **29.31** with adaptive 6. The final comparison above uses depth 3. Halo source and weights were not modified. CIRU and Halo have different quantizations and execution profiles: this is a serving-package comparison. Generation throughput, prompt processing and whole-request latency are separate metrics. At 4K, the general MTP 6 profile is close to Halo in total time; the optional MTP 2 setting provides the clearer latency benefit on this fixture. Long-context prompt processing shows the larger gain. The tables retain Halo's generation advantage where present; a CIRU request-time win is not a claim of winning every metric. Three clean v3 loads, two selected Halo loads and one previous-CIRU load are a bounded experiment, not a confidence interval or general ranking. The 2.79 GB Unsloth shared Q8 head intentionally omits tensors a supporting loader borrows from the main model. The pinned Halo loader fails for missing `token_embd.weight`; Unsloth's self-contained Q8 head also fails for missing `output_hc_norm.weight`. Both attempts are recorded. The compatible [EasiiX Strix Q8 head](https://huggingface.co/EasiiX/Qwen3.8-Flash-Next-MTP-Strix-Halo-GGUF/tree/6f7900648b1c6b14f067a182c640e47971e9ab35) is used as published. [Full report, first-piece latency and memory](benchmarks/v3.0.0/COMPARISON.md) · [Structured results](benchmarks/v3.0.0/comparison.json) · [Raw evidence archive](benchmarks/v3.0.0/strix-v3.0.0-evidence.tar.gz) ## Quality and capacity checks | Profile | HumanEval base | EvalPlus extended tests | Recall at about 8K and 64K | | --- | ---: | ---: | --- | | Previous CIRU | 20/20 | 20/20 | Both keys and exact cached replay | | CIRU v3 | 20/20 | 20/20 | Both keys and exact cached replay | | Halo | 20/20 | 20/20 | Both keys and exact cached replay | These are canonical HumanEval tasks 0–19, EvalPlus v0.1.10, one first sample per task, no retries and a 4096-token cap; truncations fail. Generated code runs inside a filesystem/network sandbox. This small nonthinking coding and recall panel is a regression check. It does not establish broad model equality, thinking-mode quality, tool reliability or leaderboard standing. V3 also completed **261,888 input tokens plus 128 generated tokens** at **257.44 prompt tok/s and 18.00 generation tok/s**, with a **1024.44 s** whole request. This is a CIRU-only serving-capacity check, not a filled-256K Halo comparison or full-context accuracy result. The final inference source passes 69 QSA mapping/state/guard cases with flags on and off, 33 actual ROCm operator reference cases and the existing 30 batch allocator tests. A separate short four-prefix diagnostic matches 15,892,480 F32 logits byte-for-byte against the previous runner. Radix selection can change threshold-tie membership and selected-list order; general bitwise equivalence is not claimed. ## Additional task benchmarks · 9 September 2026 The post-release **Ornith difficulty panel** measures complete task execution, including tool work, scoring and harness overhead. All arms ran sequentially on the same Ciru machine using one server slot: previous CIRU v2.0.1 and v3 use MTP6; the unchanged Halo Vulkan arm uses MTP3. These are the same serving profiles described above. | Benchmark stage | Previous CIRU | CIRU v3 | Halo MTP3 | | --- | ---: | ---: | ---: | | **Complete mixed panel, after readiness** | **29m 17.11s** | **25m 18.32s** | **24m 34.43s** | | Additional model load | 31.17s | 31.15s | 33.62s | | Short scored stage | 5m 20.33s | 5m 20.85s | 4m 35.60s | | Hermes, two rounds combined | 12m 28.01s | 11m 37.57s | 10m 08.12s | | Shared 63K-token history seeding | 3m 26.33s | 2m 42.80s | 3m 21.00s | | Long hard stage, history already loaded | 4m 43.92s | 2m 41.90s | 3m 22.96s | | Total generated tokens | 33,294 | 33,451 | 31,058 | V3 takes **13.59% less total time than previous CIRU**, saving 3m 58.79s. Halo finishes 43.89s sooner than v3. Long hard-stage wall time falls **42.98%** against previous CIRU; output lengths differ, so this is a workload result rather than an equal-output decode comparison. Short-stage time is effectively unchanged. Stage rows are components of the full panel; coding health checks and other overhead also contribute. The panel includes 22 short academic tasks, six Hermes scenarios repeated twice, eight hard tasks returning to a shared long history, and 10 short / eight long coding health checks. Cases were selected from earlier Ornith disagreements and failures. They do not estimate general dataset accuracy or leaderboard performance. | Profile | Short IFEval strict | Short GSM8K | Short HumanEval | Long IFEval strict | Long GSM8K | Long HumanEval | | --- | ---: | ---: | ---: | ---: | ---: | ---: | | Previous CIRU | 5/8 | 8/8 | 5/6 | 2/2 | 2/2 | 2/4 | | CIRU v3 | 5/8 | 8/8 | 5/6 | 2/2 | 2/2 | 2/4 | | Halo MTP3 | 6/8 | 8/8 | 5/6 | 2/2 | 2/2 | 3/4 | | Profile | Hermes native full passes | Native mean points / 100 | Reviewed end states | | --- | ---: | ---: | ---: | | Previous CIRU | 7/12 | 80.83 | 11/12 | | CIRU v3 | 11/12 | 95.83 | 12/12 | | Halo MTP3 | 11/12 | 95.83 | 12/12 | Native scores are retained. Reviewed end states separately account for demonstrated grader artifacts; previous CIRU and Halo each had a memory-case wording mismatch. All three arms passed the short 10-task and long eight-task coding health checks on base and extended tests. Two Hermes repetitions are a bounded comparison, not a reliable failure-rate estimate. Short-task generation rates were **38.44 / 39.09 / 43.97 tok/s** for previous CIRU / v3 / Halo. Long hard-stage generation rates were **21.75 / 35.93 / 31.25 tok/s**. Native short tasks use temperature 0, seed 15035, nonthinking, a 32,768-token output allowance, first samples and no answer repair. Hermes uses temperature 0.6, top-p 0.95, top-k 20, thinking enabled and full remaining context. Long history seeding is timed separately. Interrupted or instrumented captures are excluded. [Full hard-panel report and case review](benchmarks/v3-followup-20260909/HARD-PANEL.md) · [Measured results JSON](benchmarks/v3-followup-20260909/results.json) · [Wall times CSV](benchmarks/v3-followup-20260909/v3-benchmark-walltimes.csv) · [Interactive research page](https://llm.ciru.ai/research/qwen38-v2/) ### Coding throughput and MTP depth The separate 20-task HumanEval regression panel quantifies the high-acceptance coding workload. Every profile below passed **20/20 base and 20/20 extended tests**. These are summed API request times, excluding grading overhead. | Profile | Generated tokens | Prompt tok/s | Generation tok/s | Sum of request times | | --- | ---: | ---: | ---: | ---: | | Previous CIRU MTP6 | 3,179 | 148.53 | 53.33 | 75.49s | | CIRU v3 MTP6 | 3,179 | 219.51 | 53.24 | 70.67s | | CIRU v3 MTP2 | 3,212 | 226.25 | 39.63 | 91.57s | | Halo MTP3 | 3,241 | 176.10 | 49.48 | 79.15s | Previous CIRU and v3 MTP6 produced identical token IDs on all 20 tasks. V3 reduces their summed request time by **6.39%**, principally through prefill; decode throughput is effectively unchanged. Different output lengths are retained for MTP2 and Halo. This reinforces retaining MTP6 as the general profile while exposing MTP2 as a workload-specific option. ## Historical full and sampled quality results These results used the same released model artifacts on earlier runtimes. They are historical results, **not full-suite v3 reruns**; the new v3 checks are shown separately above. | Benchmark | Historical score | Scope | | --- | ---: | --- | | HumanEval | 160/164 (97.56%) | Full local-custom chat run | | HumanEval+ | 155/164 (94.51%) | Full 164-task EvalPlus extended tests | | ARC-Challenge | 1,143/1,172 (97.53%) | Full EvalScope dataset | | GPQA-Diamond | 46/50 (92.0%) | Sampled subset | | MMLU-Pro | 61/70 (87.14%) | Five questions per subject | | GSM8K | 97/100 (97.0%) | Sampled subset | | IFEval prompt strict | 92/100 (92.0%) | Sampled subset | | ToolEval Standard | 115/138 points (83.33%) | 69 local-custom cases | | ToolEval Hard | 23/30 points (76.67%) | 15 local-custom cases | ### Recorded EvalScope wall time The completed **29 August H96 / MTP1** run used one request at a time and uncapped natural-EOS generation. The table records stage start/end intervals for 1,492 items, excluding setup and earlier failed attempts. | Dataset | Items | Wall time | | --- | ---: | ---: | | ARC-Challenge | 1,172 | 24m 42s | | GPQA-Diamond | 50 | 1h 33m 21s | | MMLU-Pro | 70 | 36m 37s | | GSM8K | 100 | 20m 19s | | IFEval | 100 | 22m 50s | | **Quality suite total** | **1,492** | **3h 17m 50s** | Including the separate performance probe, the run took **3h 20m 46s**. This is a different workload from the 25-minute v3 mixed panel. No measured full EvalScope wall time is available for v3. [Timestamp-derived records](benchmarks/v3-followup-20260909/results.json) · [Historical quality methodology](https://github.com/ciru-ai/Qwen3.8-Flash-CIRU-STRIX-IU4/blob/v1.1/docs/BENCHMARKS.md) ## Download, build and run The unchanged model files total **135,962,881,135 bytes (126.625 GiB)**, excluding runtime and reports. The target is 73.945 GiB, the PLE payload 48.828 GiB and the Q8 MTP head 3.852 GiB. Allow at least 160 GiB for model storage/verification plus SDK and build space. Use fast NVMe and a Strix Halo machine with 128 GiB unified memory. On Ubuntu/Debian, install Git and a Python virtual environment, then download the model and build the source: ```bash sudo apt-get update sudo apt-get install -y git python3-venv python3 -m venv .venv-hf .venv-hf/bin/python -m pip install -U huggingface_hub . .venv-hf/bin/activate hf download jcbtc/Qwen3.8-Flash-CIRU-STRIX-IU4 \ --revision v3.0.0 --local-dir ./model (cd model && sha256sum -c checksums.sha256 && sha256sum -c v3.0.0-checksums.sha256) git clone --branch v3.0.0 --single-branch \ https://github.com/ciru-ai/Qwen3.8-Flash-CIRU-STRIX-IU4.git ciru-runtime-v3.0.0 cd ciru-runtime-v3.0.0 ./scripts/ciru/setup-linux-amd.sh --install-host-deps BUILD_DIR="$PWD/build-gfx1151-sdk" MODEL_DIR="$(realpath ../model)" \ ./scripts/ciru/run-server.sh ``` The helper installs a private complete ROCm 10.0.0 SDK with gfx1151 libraries. Keep the SDK directory used by the build; the host needs a compatible AMD driver and access to `/dev/kfd` and its render node. New v3 GPU qualification is NixOS/ROCm 10/gfx1151. The prior clean Ubuntu qualification belongs to v2.0.1, so the Ubuntu instructions are retained build guidance, not a new v3 Ubuntu test result. See [platform/build instructions](https://github.com/ciru-ai/Qwen3.8-Flash-CIRU-STRIX-IU4/blob/v3.0.0/docs/BUILD_LINUX.md). Existing users can keep their model directory and clone/build only the new runtime. The source archive is equivalent to the Git tag including executable modes and symlinks. The optional [tested NixOS binary payload](runtime/v3.0.0/ciru-runtime-v3.0.0-nixos-gfx1151.tar.gz) requires the recorded Nix store and ROCm SDK paths; use the source build for another installation. The launcher enables 262,144 context capacity, F16 target KV, Q8 draft KV, the 32,768-row draft shortlist, maximum MTP depth 6, b1024/u1024, eight CPU threads and prefix caching. MTP uses `--parallel 1`; multi-slot MTP is rejected before model load. For target-only parallel serving, set `ENABLE_MTP=0` and follow the [parallel instructions](https://github.com/ciru-ai/Qwen3.8-Flash-CIRU-STRIX-IU4/blob/v3.0.0/docs/RUNNING.md#parallel-requests-and-unified-kv-cache). Confirm `CIRU MTP shortlist enabled: 32768 / 248320 vocabulary rows; full target verification retained` in the startup log. The shortlist limits draft projection; target verification retains the full vocabulary. `MTP_DEPTH=2` selects the tested option for low-acceptance long requests; the screen does not establish the optimum for every prompt. New v3 optimization switches accept literal `0`. The optional draft attention window remains off and is unqualified when enabled. Thinking mode remains the model default: temperature 1.0, top-p 0.95, top-k 20, min-p 0. For the nonthinking mode evaluated here: ```bash curl http://127.0.0.1:8080/v1/chat/completions \ -H "Content-Type: application/json" \ -d '{ "model": "Qwen3.8-Flash-CIRU-STRIX-IU4", "messages": [{"role": "user", "content": "Write a Python CSV validator with tests."}], "chat_template_kwargs": {"enable_thinking": false}, "temperature": 0.7, "top_p": 0.8, "top_k": 20, "min_p": 0, "presence_penalty": 1.5, "cache_prompt": true }' ``` These sampling defaults follow the [Qwen model card](https://huggingface.co/Qwen/Qwen3.8-Flash-Next/blob/f5d08274bafd880402bd16f5e3e6c514136ec06c/README.md#best-practices). Ordinary chat can retain prefix caching; the benchmark's cold requests, fixed seed and output cap are measurement controls. ## What ships in v3 V3 combines the previously qualified QSA sequence isolation/indexer-copy fixes with the portable retained hybrid work: wider aligned QSA prefill, J32 expert tiling for supported prefill shapes, radix selection, indexed F16 attention, direct guarded PLE lookup, derived-history caching keyed by sequence and packed tiny F32 gathers. The F32 derived cache adds about 192 MiB at 256K. Hybrid external-GPU ownership, peer transfers, expert splitting, scheduler overlap and experimental compact masks are excluded. The original READY package, source, evidence and checksum trees are included in the [prior-package archive](benchmarks/v3.0.0/qsa-v2.0.1-prior-package.tar.gz). Its v2.0.1 fixes ship as part of v3; no separate public v2.0.1 tag is claimed. Existing public v2.0 tags and weight identities remain unchanged. [Historical v2.0 results](https://huggingface.co/jcbtc/Qwen3.8-Flash-CIRU-STRIX-IU4/blob/v2.0/README.md) remain available; their 42.3 tok/s short greedy probe and broader older quality suites are different workloads and were not rerun as full suites for v3. The IU4 model name is retained. The target has 1,223 tensors: 144 Q4_1 routed-expert tensors, 328 Q5_K, 290 Q8_0, 48 Q5_1, 25 BF16 and 388 F32. The standard launcher uses ordinary GGUF types; its Q4_1 matrix path expands packed values into byte lanes for IU8 WMMA. It does not activate the separate native IU4/E3 bank path. The PLE payload preserves exact FP8 E4M3 weights with one BF16 scale. [Model file tree](https://huggingface.co/jcbtc/Qwen3.8-Flash-CIRU-STRIX-IU4/tree/v3.0.0) · [Weight checksums](checksums.sha256) · [V3 runtime/report checksums](v3.0.0-checksums.sha256) · [Source identity](benchmarks/v3.0.0/git-source.json) · [GitHub release](https://github.com/ciru-ai/Qwen3.8-Flash-CIRU-STRIX-IU4/releases/tag/v3.0.0) ## Lineage, license and credit Text lineage is [Qwen/Qwen3.8-Flash-Next](https://huggingface.co/Qwen/Qwen3.8-Flash-Next/tree/f5d08274bafd880402bd16f5e3e6c514136ec06c); PLE lineage is [Qwen3.8-Flash-Next-FP8](https://huggingface.co/Qwen/Qwen3.8-Flash-Next-FP8/tree/bcd9f01ddc9cff2316eb84281bebcd5b058bddce). Runtime lineage starts from [ggml-org/llama.cpp](https://github.com/ggml-org/llama.cpp/commit/f5e85d43a048f3d5adefb4c5e29867d8077fba62). Model artifacts use the included Qwen Community License 1.0; runtime code retains MIT and component notices. Credits include Qwen, ggml-org, Ryan Monsurate's MTP integration, AMD's ROCm ecosystem and the contributors in the source notices. Daniel Han's authorship of the imported QSA repair is preserved. Thanks to halo-box, EasiiX, Unsloth, Daniel Han Chen, Laurent Zuijdwijk and Agention AI for public models/runtimes, and the HumanEval and EvalPlus authors for evaluation tools. CIRU is an independent community research project; AMD and Qwen marks do not imply sponsorship.