jcbtc commited on
Commit
bb64bae
·
verified ·
1 Parent(s): 2f0470e

Launch v2.0 with verified non-thinking coding, fidelity and prefill results

Browse files
README.md CHANGED
@@ -32,146 +32,164 @@ tags:
32
 
33
  [![Qwen3.8 Flash CIRU Strix IU4](assets/qwen38-flash-ciru-strix-iu4.jpg)](https://llm.ciru.ai/research)
34
 
35
- # Qwen3.8-Flash-CIRU-STRIX-IU4
36
 
37
- **A quality-first, long-context Qwen3.8-Flash-Next build for fast local inference on AMD Strix Halo.**
38
 
39
- > [!IMPORTANT]
40
- > This is a text-only, custom-runtime release. The main GGUF is **not standalone**: it requires the CIRU [`llama.cpp` runtime](https://github.com/ciru-ai/Qwen3.8-Flash-CIRU-STRIX-IU4) and all three files under `ple/`. The MTP draft under `mtp/` enables the headline speculative-decoding profile. Stock `llama.cpp` and Hugging Face hosted inference cannot run this package correctly.
41
 
42
  > [!IMPORTANT]
43
- > **Use runtime version 1.1.1.** It includes the version 1.1 cached-prefix/MTP fix and adds installation helpers for a complete ROCm SDK. The normal production prompt cache remains enabled. If you already downloaded the model, PLE, and MTP files, do not download them again; only update and rebuild the runtime.
 
 
44
 
45
- ## Headline results
46
 
47
- | Result | Score | Scope |
48
  |---|---:|---|
49
- | HumanEval | **160/164 (97.56%)** | Full 164-task local-custom chat run |
50
- | HumanEval+ | **155/164 (94.51%)** | Full 164-task EvalPlus run |
51
- | ARC-Challenge | **1,143/1,172 (97.53%)** | Full EvalScope dataset |
52
- | ToolEval Standard | **115/138 points (83.33%)** | 69 local-custom cases |
53
- | ToolEval Hard | **23/30 points (76.67%)** | 15 local-custom hard cases |
54
- | H121 8K cold prefill | **359.43 tok/s** | 8,192-token prompt |
55
- | H121 8K generation | **30.80 tok/s** | 128 generated tokens, MTP depth 3 |
56
- | Long-context coverage | **131,072 prompt tokens** | Cold exact-count context ladder |
57
 
58
- Quality suites used the same released model artifacts on the earlier H96 depth-1 runtime. Version 1.0 added the H121 allocator-lifetime correction. Version 1.1 adds the cached-prefix/MTP state fix and completed the full 20-scenario HermesAgent cache-on validation without an MTP position or server-runtime error. Local-custom and sampled results are labeled and are not claimed as canonical leaderboard submissions.
59
 
60
- ## Why this build
61
 
62
- Qwen3.8-Flash-CIRU-STRIX-IU4 is designed around the Ryzen AI Max+ 395's large unified-memory envelope and gfx1151 matrix instructions:
63
 
64
- - **Quality-first mixed storage.** Routed expert weights use Q4_1 while the protected core remains Q5_K, Q5_1, Q8_0, BF16, or F32.
65
- - **Native IU4 execution.** Stored Q4_1 expert weights use a tuned unsigned-IU4 WMMA path on gfx1151. `IU4` describes runtime execution, not a uniform four-bit model or custom GGUF storage type.
66
- - **NVMe-paged exact FP8 PLE.** The mandatory CIRUPLE1 sidecar pages exact FP8 E4M3 PLE weights from SSD with a 4 GiB decoded-page cache.
67
- - **MTP speculation.** The included Q8_0 draft supports the public depth-3 speculative profile.
68
- - **Production caching.** Version 1.1 enables prompt reuse, an 8 GiB RAM prompt cache, idle-slot caching, and synchronized target/draft/MTP context checkpoints.
69
- - **Long context.** Native server configuration is 262,144 tokens; cold performance has been measured through 131,072 prompt tokens.
70
 
71
- ## Version 1.1 cached-prefix/MTP fix
 
 
 
 
72
 
73
- Version 1.1 keeps the production prompt cache enabled. It fixes the version 1.0 multi-turn failure that could occur when a cached target prefix was reused while MTP's hidden-state timeline remained at a different position.
74
 
75
- The runtime now saves and restores MTP pending hidden state together with compatible target and draft context checkpoints. If no compatible checkpoint exists, it safely resets that request's cached MTP state instead of continuing with mismatched positions. The model, PLE, and MTP files are unchanged.
76
 
77
- Validation covered direct branched-prefix reuse, the previously failing HA-07 cached multi-turn case, HA-01, HA-20, and the full 20-scenario HermesAgent run with production cache settings. The full run completed all 20 scenarios with no decreasing-position, HSA, pager, or server-runtime error.
78
 
79
- ## Version 1.0 allocator-lifetime fix
 
 
 
 
 
80
 
81
- During sustained MTP depth-3 generation, the pre-release runtime could intermittently page fault in Q8_0 `GET_ROWS`. The root cause was allocator lifetime: reused Qwen4Exp M=1 token and hidden-state inputs were marked input-only, so their graph allocations could be recycled between continuation steps.
82
 
83
- H121 retains both tensors as graph outputs:
84
 
85
- ```cpp
86
- ggml_set_output(inp->tokens);
87
- ggml_set_output(inp->h);
88
- ```
89
 
90
- This adds no kernel, copy, synchronization, fallback, or model change. The corrected runtime completed a 6,009-token coding-generation stress test with no HSA, pager, nonfinite, or server failure, then reproduced the 8K+128 row at 359.4267 prefill tok/s and 30.7970 generation tok/s. Version 1.0 is preserved at tag [`v1.0`](https://github.com/ciru-ai/Qwen3.8-Flash-CIRU-STRIX-IU4/tree/v1.0); the earlier `v1.0.0-h121` tag remains available for compatibility.
91
 
92
- ## Download
93
 
94
- The complete package is 135,962,881,135 bytes (126.625 GiB):
95
 
96
- On a fresh Ubuntu/Debian host, install `python3-venv` first (`sudo apt install python3-venv`). Skip this download if the model, MTP, and PLE files are already present.
 
 
 
 
 
 
 
 
97
 
98
- ```bash
99
- python3 -m venv .venv-hf
100
- .venv-hf/bin/python -m pip install -U huggingface_hub
101
- . .venv-hf/bin/activate
102
- hf download jcbtc/Qwen3.8-Flash-CIRU-STRIX-IU4 \
103
- --local-dir ./Qwen3.8-Flash-CIRU-STRIX-IU4
104
- cd Qwen3.8-Flash-CIRU-STRIX-IU4
105
- sha256sum -c checksums.sha256
106
- ```
107
 
108
- Expected layout:
109
-
110
- ```text
111
- Qwen3.8-Flash-CIRU-STRIX-IU4/
112
- ├── Qwen3.8-Flash-CIRU-STRIX-IU4.gguf
113
- ├── mtp/
114
- │ └── Qwen3.8-Flash-CIRU-STRIX-IU4-MTP-Q8_0.gguf
115
- └── ple/
116
- ├── ple.manifest.json
117
- ├── ple.payload.bin
118
- └── ple.scale.bf16
119
- ```
120
 
121
- | File | Bytes | GiB | SHA-256 |
122
- |---|---:|---:|---|
123
- | `Qwen3.8-Flash-CIRU-STRIX-IU4.gguf` | 79,397,818,720 | 73.944981 | `c0ea11e4e24d0f909720b6c4e7462aa1e6fbf5e0f6acc796063f2aed4cf46ed0` |
124
- | `mtp/Qwen3.8-Flash-CIRU-STRIX-IU4-MTP-Q8_0.gguf` | 4,135,893,248 | 3.851851 | `e6743badef1f2619fcb5addfa4344a2a3368cb75214735117e3af80c70b80642` |
125
- | `ple/ple.payload.bin` | 52,429,053,952 | 48.828362 | `687fc742efb6888c6cd7cf9c80cb4b1ac8cb4707b9409c206699c43363e239b2` |
126
- | `ple/ple.manifest.json` | 115,213 | 0.000107 | `eb7404ce5ef056729452df10ee888e0c300cd0459121444be3313c51788cc171` |
127
- | `ple/ple.scale.bf16` | 2 | <0.000001 | `c7c58bd6007672362da2106fdbfaf9f50629e4bdf8598169c598027394ef9791` |
128
 
129
- The target and `ple/` are mandatory. The MTP file may be omitted only when speculative decoding is disabled.
 
130
 
131
- ## Build the runtime
132
 
133
- The measured inference path is NixOS x86-64, AMD ROCm/TheRock 10-class toolchain, `gfx1151`, on a Ryzen AI Max+ 395 / Radeon 8060S. A fresh Ubuntu installation also needs host build tools and a complete ROCm SDK; setting `ROCM_ROOT=/opt/rocm` does not install them.
 
 
 
 
134
 
135
- On Ubuntu/Debian, from the downloaded model directory:
136
 
137
- ```bash
138
- git clone --branch v1.1.1 \
139
- https://github.com/ciru-ai/Qwen3.8-Flash-CIRU-STRIX-IU4.git runtime
140
- cd runtime
141
- ./scripts/ciru/setup-linux-amd.sh --install-host-deps
142
- ```
 
 
 
 
 
 
 
143
 
144
- The setup script installs host build tools with `apt`, then installs a pinned AMD ROCm 10.0.0 SDK including development files, BLAS libraries, and gfx1151 device support into `.venv-rocm/`. It builds into `build-gfx1151-sdk/` using four jobs by default. It does not change GPU drivers, manage services, download weights, or launch a model. Keep the SDK directory in place for runtime libraries. If host tools are already installed, omit `--install-host-deps`.
 
 
 
 
145
 
146
- For an existing checkout, update the runtime without downloading the model again:
 
 
 
 
 
 
 
 
147
 
148
  ```bash
149
- git fetch origin tag v1.1.1
150
- git switch --detach v1.1.1
 
 
 
 
 
 
 
 
 
 
151
  ./scripts/ciru/setup-linux-amd.sh --install-host-deps
152
  ```
153
 
154
- The original `v1.1` tag does not contain the helpers. Existing complete SDKs can still use `ROCM_ROOT=/path/to/sdk ./scripts/ciru/build-linux-amd.sh`, which builds into `build-gfx1151/`. Choose a fresh `BUILD_DIR` when changing SDKs.
155
-
156
- If you see a missing `AMDDeviceLibsConfig.cmake` under `/opt/rocm` or a missing `hipblasConfig.cmake`, SDK discovery has failed before model loading. The Ubuntu 26 report resolved HIP from `/usr` while also using `/opt/rocm`; use a complete matching SDK instead of mixing the two package layouts. The isolated setup avoids that mixture. The ccache warning is harmless. See the [Linux troubleshooting guide](https://github.com/ciru-ai/Qwen3.8-Flash-CIRU-STRIX-IU4/blob/v1.1.1/docs/BUILD_LINUX.md#repairing-the-ubuntu-26-build-report).
157
 
158
- Check SDK configuration without building or starting a model:
159
 
160
  ```bash
161
- ./scripts/ciru/setup-linux-amd.sh --check
 
 
 
 
 
 
 
162
  ```
163
 
164
- Cross-platform documentation:
165
-
166
- - [Linux setup, SDK troubleshooting, NixOS, and WSL2](https://github.com/ciru-ai/Qwen3.8-Flash-CIRU-STRIX-IU4/blob/v1.1.1/docs/BUILD_LINUX.md)
167
- - [Native Windows CPU compatibility](https://github.com/ciru-ai/Qwen3.8-Flash-CIRU-STRIX-IU4/blob/v1.1/docs/BUILD_WINDOWS.md)
168
- - [macOS Metal compatibility](https://github.com/ciru-ai/Qwen3.8-Flash-CIRU-STRIX-IU4/blob/v1.1/docs/BUILD_MACOS.md)
169
 
170
- The setup was **build-validated in a clean Ubuntu 26.04 container** on 2026-09-05: all three binaries compiled, shared libraries resolved, and server version/help checks passed with the PLE and MTP options present. The container had no GPU access, so full GPU inference on Ubuntu remains unvalidated for this release. Other Ubuntu/Debian, Fedora/RHEL, Arch, and WSL2/ROCDXG environments remain unvalidated. Native Windows CPU and macOS Metal are portability paths and do not include the validated Strix HIP or Linux P16/`O_DIRECT` performance path. On WSL2, keep `ple/ple.payload.bin` on the Linux ext4 filesystem, not `/mnt/c`. The host still needs a compatible GPU driver and user access to `/dev/kfd` and its render node.
171
 
172
- ## Production setup for version 1.1.1
173
 
174
- From the version 1.1.1 runtime checkout:
175
 
176
  ```bash
177
  BUILD_DIR="$PWD/build-gfx1151-sdk" \
@@ -179,7 +197,7 @@ BUILD_DIR="$PWD/build-gfx1151-sdk" \
179
  ./scripts/ciru/run-server.sh
180
  ```
181
 
182
- Prompt caching and MTP are both enabled in version 1.1. A normal API request can keep prompt caching on:
183
 
184
  ```bash
185
  curl http://127.0.0.1:8080/v1/chat/completions \
@@ -190,131 +208,53 @@ curl http://127.0.0.1:8080/v1/chat/completions \
190
  "temperature": 1.0,
191
  "top_p": 0.95,
192
  "top_k": 20,
 
193
  "cache_prompt": true
194
  }'
195
  ```
196
 
197
- The version 1.1 production configuration uses:
198
 
199
- - PLE cache: 4 GiB, 16 pager workers.
200
- - Prompt cache: enabled, 8 GiB RAM cache, idle-slot caching.
201
- - Context checkpoints: 32, minimum spacing 8,192 tokens.
202
- - Context/batch/microbatch: 262,144 / 2,048 / 512.
203
- - One slot, F16 target KV, Q8_0 draft KV, flash attention on.
204
- - MTP depth 3 with `p_split=0.10`.
205
- - Loopback-only bind at `127.0.0.1:8080`.
206
 
207
- The 4 GiB PLE cache is separate from the 8 GiB prompt cache: the PLE cache stores decoded model-weight pages from NVMe, while the prompt cache reuses conversation prefixes.
208
 
209
- For a manual SDK build, use `BUILD_DIR="$PWD/build-gfx1151"`. Expanded settings, no-MTP mode, and network hardening are documented in [RUNNING.md](https://github.com/ciru-ai/Qwen3.8-Flash-CIRU-STRIX-IU4/blob/v1.1.1/docs/RUNNING.md).
210
 
211
- ## Recommended sampling
212
-
213
- Upstream Qwen recommendations:
214
-
215
- | Mode | Temperature | Top-p | Top-k | Min-p | Presence penalty | Repetition penalty |
216
- |---|---:|---:|---:|---:|---:|---:|
217
- | Thinking, default | 1.0 | 0.95 | 20 | 0 | 0 | 1.0 |
218
- | Non-thinking | 0.7 | 0.80 | 20 | 0 | 1.5 | 1.0 |
219
-
220
- For non-thinking mode, send `"chat_template_kwargs":{"enable_thinking":false}`. Keep `"cache_prompt":true` for normal reusable chat traffic on version 1.1.
221
-
222
- ## Quality results
223
-
224
- | Benchmark | Result | Coverage and caveat |
225
  |---|---:|---|
226
- | HumanEval | **160/164 (97.561%)** | Full; local-custom chat, first sample, no retries/repairs |
227
- | HumanEval+ | **155/164 (94.512%)** | Full; EvalPlus 0.1.10 |
228
- | ARC-Challenge | **1,143/1,172 (97.526%)** | Full EvalScope dataset |
229
- | ToolEval Standard | **115/138 (83.33%)** | 69 local-custom cases; 0 runtime/transport errors |
230
- | ToolEval Hard | **23/30 (76.67%)** | 15 local-custom hard cases; 0 runtime/transport errors |
231
- | GPQA-Diamond | **46/50 (92.0%)** | Sampled first/default-order 50 of 198; not a full score |
232
- | MMLU-Pro | **61/70 (87.143%)** | Sampled 5 from each of 14 subjects |
233
- | GSM8K | **97/100 (97.0%)** | Sampled local run |
234
- | IFEval strict | **92/100 (92.0%)** | Sampled prompt-level-strict local run |
235
-
236
- HumanEval serving averages were 211.108 prefill tok/s and 31.531 generation tok/s, with depth-1 MTP acceptance of 19,618/20,098 (97.612%) and zero API, validation, pager, or slot-erase failures.
237
-
238
- The sampled GPQA, MMLU-Pro, GSM8K, and IFEval rows are **not full-suite or leaderboard-comparable claims**. ToolEval is a local functional rubric and recorded injection/safety misses in standard TC33/TC34 and hard TC81; do not use the aggregate as evidence for unsupervised tool safety.
239
-
240
- ## Performance
241
-
242
- Version 1.0/H121 matched performance row; version 1.1 changes cache-state correctness rather than kernels or model execution:
243
-
244
- | Prompt + generation | Cold prefill | Generation | TTFP | MTP accepted |
245
- |---|---:|---:|---:|---:|
246
- | 8,192 + 128 | **359.4267 tok/s** | **30.7970 tok/s** | 22.807 s | 84/128 |
247
-
248
- Cold context ladder, same artifacts on the pre-fix H111 runtime, 128 generated tokens per row:
249
-
250
- | Prompt tokens | Prefill tok/s | Generation tok/s |
251
- |---:|---:|---:|
252
- | 512 | 298.3149 | 29.9648 |
253
- | 2,048 | 376.9801 | 24.3850 |
254
- | 4,096 | 378.9664 | 22.8458 |
255
- | 8,192 | 372.8099 | 32.1142 |
256
- | 16,384 | 295.0188 | 28.3220 |
257
- | 32,768 | 228.2670 | 23.2864 |
258
- | 65,536 | 174.6093 | 14.7909 |
259
- | 131,072 | 121.0477 | 11.3400 |
260
-
261
- All context rows were exact-count, real-source, cold prompts with no logged error. H121 changes MTP continuation-buffer lifetime, not prefill, but only the 8K release row has been repeated post-fix. The configured context is 262,144; the tested ladder stops at 131,072.
262
-
263
- ## BF16 and Q5 diagnostic comparison
264
-
265
- On a small 64-position, four-domain full-vocabulary panel, the CIRU model tied the size-matched Q5 control at **59/64 (92.19%) BF16 top-token agreement**. On the shared 60-token observed-next-token slice:
266
-
267
- - BF16 PPL: 2.017988
268
- - CIRU IU4 PPL: **2.242104 (+11.106%)**
269
- - Q5 PPL: 2.341209 (+16.017%)
270
-
271
- The CIRU arm had lower observed-token PPL on this tiny slice, while Q5 had better aggregate full-distribution forward KL (0.170264 vs 0.223406 nats). This is diagnostic evidence, not a broad perplexity benchmark.
272
-
273
- ## Architecture and storage
274
-
275
- The 1,223 target tensors are stored as:
276
-
277
- | Type | Tensors |
278
- |---|---:|
279
- | F32 | 388 |
280
- | Q5_K | 328 |
281
- | Q8_0 | 290 |
282
- | Q4_1 | 144 |
283
- | Q5_1 | 48 |
284
- | BF16 | 25 |
285
 
286
- The 144 Q4_1 routed-expert tensors occupy 75,497,472,000 bytes. The protected core occupies 3,900,335,968 bytes. The external PLE payload is exact FP8 E4M3 with one BF16 scale. GGUF names were mechanically rewritten for this public release without requantizing tensor arrays; full evaluated-to-public identity mapping is in [PROVENANCE.md](https://github.com/ciru-ai/Qwen3.8-Flash-CIRU-STRIX-IU4/blob/v1.1/docs/PROVENANCE.md).
287
 
288
- ## Hardware and operational requirements
289
 
290
- - Intended: Ryzen AI Max+ 395 / Radeon 8060S with 128 GiB unified memory.
291
- - Fast NVMe is mandatory for the external PLE pager.
292
- - Allow at least 160 GiB free storage for model files and verification/work space.
293
- - Linux is required for the measured P16/`O_DIRECT` PLE prefill path.
294
- - The model is text-only; no projector is shipped.
295
- - Bind to loopback unless you add authentication, TLS, request limits, and a reverse proxy.
296
 
297
- ## Lineage, license, and credit
298
 
299
- - Text lineage: [`Qwen/Qwen3.8-Flash-Next@f5d08274bafd880402bd16f5e3e6c514136ec06c`](https://huggingface.co/Qwen/Qwen3.8-Flash-Next/tree/f5d08274bafd880402bd16f5e3e6c514136ec06c)
300
- - PLE lineage: [`Qwen/Qwen3.8-Flash-Next-FP8@bcd9f01ddc9cff2316eb84281bebcd5b058bddce`](https://huggingface.co/Qwen/Qwen3.8-Flash-Next-FP8/tree/bcd9f01ddc9cff2316eb84281bebcd5b058bddce)
301
- - Runtime base: [`ggml-org/llama.cpp@f5e85d43a048f3d5adefb4c5e29867d8077fba62`](https://github.com/ggml-org/llama.cpp/commit/f5e85d43a048f3d5adefb4c5e29867d8077fba62)
302
 
303
- Model artifacts are distributed under the included **Qwen Community License 1.0**. The runtime repository retains the MIT license and third-party notices of its components.
304
 
305
- Thanks to Qwen, ggml-org and the `llama.cpp` community, Ryan Monsurate for Qwen MTP integration work adapted by the release runtime, AMD's open-source ROCm ecosystem, and the contributors identified in `NOTICE.md`.
 
 
306
 
307
- CIRU is an independent community research project. AMD and Qwen marks belong to their respective owners; their appearance does not imply sponsorship or endorsement.
308
 
309
- ## Citation
310
 
311
  ```bibtex
312
  @software{ciru_qwen38_flash_strix_iu4_2026,
313
- title = {Qwen3.8-Flash-CIRU-STRIX-IU4},
314
- author = {{CIRU}},
315
- year = {2026},
316
- month = {8},
317
- url = {https://huggingface.co/jcbtc/Qwen3.8-Flash-CIRU-STRIX-IU4},
318
- version = {1.1}
319
  }
320
  ```
 
32
 
33
  [![Qwen3.8 Flash CIRU Strix IU4](assets/qwen38-flash-ciru-strix-iu4.jpg)](https://llm.ciru.ai/research)
34
 
35
+ # Qwen3.8-Flash-CIRU-STRIX-IU4 · v2.0
36
 
37
+ **Mixed-precision Qwen3.8 for AMD Strix Halo, with ROCm 10 execution, NVMe-paged PLE, and depth-6 MTP.**
38
 
39
+ Version 2.0 brings together CIRU's retained ROCm 10 correctness and execution improvements. The measured strengths are **42.3 tok/s on the controlled non-thinking coding probe**, **382 tok/s cold prefill at 2K**, and **0.03045 mean forward KL to BF16** on the shared diagnostic panel. The target, MTP and PLE weights are unchanged.
 
40
 
41
  > [!IMPORTANT]
42
+ > **Use the [v2.0 runtime source](runtime/v2.0/ciru-runtime-v2.0-source.tar.gz).** This text-only package requires the custom CIRU runtime and all three `ple/` files. The `mtp/` draft enables speculation. Stock `llama.cpp` and Hugging Face hosted inference do not run this package correctly.
43
+ >
44
+ > **The target GGUF, MTP draft and PLE weights are unchanged.** Existing users only need the new runtime and profile. v2.0 identifies the runtime/package release.
45
 
46
+ ## Release results
47
 
48
+ | Result | CIRU v2.0 | Measurement |
49
  |---|---:|---|
50
+ | Served non-thinking coding generation with MTP | **42.28–42.31 tok/s** | Two retained repetitions; 57-token prompt, 520 generated tokens, greedy coding profile |
51
+ | Cold prefill at 2K | **382.03 tok/s** | 2,048 exact prompt tokens, MTP off |
52
+ | Cold prefill at 128K | **232.95 tok/s** | 131,072 exact prompt tokens, MTP off |
53
+ | Mean forward KL to BF16 | **0.03045** | 64 full-vocabulary distributions across four domains |
54
+ | Observed-token PPL | **2.08401** | 60-token diagnostic slice; BF16 reference 2.01799 |
55
+ | Native-chat speed sanity | **10/10 passed** | HumanEval tasks 0–9; separate thinking-chat protocol |
 
 
56
 
57
+ The 42.3 tok/s result uses an explicitly closed thinking block and our retained fixed-six configuration: ROCm10, a 32,768-row draft shortlist, F16 target KV, Q8_0 draft KV, 16K context and the performance CPU governor. Both runs produced the same 520 output tokens. **It is a controlled coding-probe rate, not a HumanEval average or a claim that every workload runs at that speed.** [Recorded coding results](benchmarks/v2.0/controlled-coding-42tps.json).
58
 
59
+ The comparison preserves each package's own recorded runtime settings. On the shared MTP-off sweep, CIRU has higher prefill from 2K through 128K: at 128K it is **26.4% faster than Agention/Laurent and 22.7% faster than Unsloth**. On the small BF16 panel, mean forward KL is **72.9% lower than Agention/Laurent and 82.6% lower than Unsloth**. These are fidelity and prefill measurements, not overall task-quality or generation-speed percentages.
60
 
61
+ ## Three-way comparison
62
 
63
+ The three-way sweep and native-thinking panel ran on **Sozo: Ryzen AI MAX+ 395 / Radeon 8060S, gfx1151, 128 GiB shared memory, NixOS**, with one model workload at a time. Ciru handled the new CIRU BF16 captures and the clean Ubuntu build/GPU smoke. The comparisons preserve each arm's recorded execution settings; they are package comparisons, not a controlled kernel-only experiment.
 
 
 
 
 
64
 
65
+ | Arm | Target and runner | MTP policy in the native-chat panel |
66
+ |---|---|---|
67
+ | CIRU v2.0 | Released IU4 weights; locked RC2 ROCm 10 runtime | Fixed maximum 6, p-min 0, 32,768-row draft shortlist; target F16 KV, draft Q8_0 KV |
68
+ | Agention / Laurent | [FP4 FAST model](https://huggingface.co/agentionai/Qwen3.8-Flash-Next-ROCmFP4-FAST-imatrix-GGUF/tree/ad4c5717254a630ee0c5a8db5208eb1f8476e56c); [Laurent's Vulkan fork](https://github.com/LaurentZuijdwijk/llama.cpp/commit/5e085d123eead2e89b5c19f824fccb05727da6a2) | Publisher adaptive 2–4 with its FP4 draft; target Q8_0 KV |
69
+ | Unsloth / recommended | [IQ4_XS model](https://huggingface.co/unsloth/Qwen3.8-Flash-Next-GGUF/tree/38bb39ee97821de2c9009abb7e93950eec396e66); [Daniel Han Chen's MTP branch](https://github.com/danielhanchen/llama.cpp/commit/d1a92352cbd417fd840b4e765c0b82f5fe3d1d89), native Vulkan build | Unsloth [MTP README option 2](https://huggingface.co/unsloth/Qwen3.8-Flash-Next-GGUF/blob/38bb39ee97821de2c9009abb7e93950eec396e66/MTP/README.md), maximum 2 and shared Q8_0 draft; publisher defaults |
70
 
71
+ Only these three combinations are included. Exact model/shard hashes and runner commits are in [competitor artifacts](benchmarks/v2.0/competitor-artifacts.json); complete recorded settings are in [runtime recipes](benchmarks/v2.0/runtime-recipes.json).
72
 
73
+ ### BF16 numerical fidelity
74
 
75
+ ![BF16 fidelity diagnostic](assets/v2-bf16-fidelity.png)
76
 
77
+ | Configuration | Mean forward KL ↓ | p95 KL ↓ | BF16 top-token agreement | Observed-token PPL ↓ |
78
+ |---|---:|---:|---:|---:|
79
+ | BF16 reference | 0 | 0 | 64/64 | 2.01799 |
80
+ | CIRU ROCm10 v2.0 | **0.03045** | 0.15453 | 61/64 | 2.08401 |
81
+ | Agention / Laurent | **0.11223** | 0.29765 | 60/64 | 2.38380 |
82
+ | Unsloth / recommended | **0.17457** | 0.55722 | 61/64 | 2.42931 |
83
 
84
+ This fixed diagnostic contains **64 full-vocabulary distributions and 60 observed next-token losses** across four short domain prefixes. MTP is off. CIRU uses F16 KV and flash-attention auto; the retained competitor captures use Q8_0 KV and flash attention on. CIRU's two independent model loads produced byte-identical logits.
85
 
86
+ The result measures these implementations' fidelity on a small shared panel. It does not establish general task-quality superiority or full-corpus perplexity. The old CIRU/Q5 diagnostic used an earlier runtime and is superseded for the current three-way comparison.
87
 
88
+ [Full statistics and hashes](benchmarks/v2.0/bf16-fidelity.json) · [CSV](benchmarks/v2.0/bf16-fidelity.csv)
 
 
 
89
 
90
+ ### MTP-off context sweeps
91
 
92
+ ![MTP-off context sweeps](assets/v2-context-sweep.png)
93
 
94
+ Each cell is **prefill / generation tok/s**. All seven points use the same exact-token source fixture, a cold prompt, and 128 generated tokens.
95
 
96
+ | Prompt tokens | CIRU ROCm10 v2.0 | Agention / Laurent | Unsloth / recommended |
97
+ |---:|---:|---:|---:|
98
+ | 512 | 306.53 / 22.55 | 357.63 / 25.93 | 235.03 / 24.54 |
99
+ | 2,048 | 382.03 / 20.94 | 363.83 / 25.58 | 270.12 / 23.98 |
100
+ | 8,192 | 370.41 / 19.19 | 325.59 / 24.95 | 274.78 / 22.69 |
101
+ | 16,384 | 352.13 / 17.47 | 302.72 / 24.36 | 266.87 / 21.28 |
102
+ | 32,768 | 321.33 / 14.32 | 273.95 / 22.77 | 254.68 / 18.79 |
103
+ | 65,536 | 282.99 / 10.17 | 229.68 / 20.25 | 228.78 / 13.37 |
104
+ | 131,072 | 232.95 / 6.75 | 184.33 / 17.86 | 189.79 / 9.98 |
105
 
106
+ Server context is 262,144, sampling is greedy with seed 1234, EOS is ignored for the 128-token measurement, and a 512+32 warmup is excluded. Each row verifies exact prompt/output counts and zero drafted/accepted tokens.
 
 
 
 
 
 
 
 
107
 
108
+ CIRU leads prefill at 2K and above. **Both competitor arms have higher MTP-off generation rates across this sweep.** These are target-only context measurements, separate from the native MTP panel. Unsloth's target-only sweep uses Q8_0 KV, 16 threads, batch 2048/microbatch 512 and explicit CPU PLE placement with lazy mode off; its native MTP panel uses publisher defaults. CIRU uses F16 KV, 8 threads, and its 4 GiB PLE cache. See the recorded recipes for all differences.
 
 
 
 
 
 
 
 
 
 
 
109
 
110
+ [Full sweep CSV](benchmarks/v2.0/mtp-off-context-sweep.csv) includes TTFP and memory. [Structured results](benchmarks/v2.0/comparison.json) preserve idle/peak/delta RAM, GTT and VRAM counters. RAM is whole-system usage; these overlapping shared-memory counters must not be summed.
 
 
 
 
 
 
111
 
112
+ <details>
113
+ <summary>Native-thinking HumanEval 0–9: all results and protocol details</summary>
114
 
115
+ ### Additional native-thinking HumanEval speed panel
116
 
117
+ | Configuration | Weighted decode tok/s | Generated tokens | Total request time | Functional sanity |
118
+ |---|---:|---:|---:|---:|
119
+ | CIRU ROCm10 v2.0 | **27.36** | 4,257 | 164.98 s | 10/10 |
120
+ | Agention / Laurent | **25.47** | 19,752 | 784.59 s | 10/10 |
121
+ | Unsloth / recommended | **34.34** | 5,183 | 166.91 s | 10/10 |
122
 
123
+ The ten canonical HumanEval prompts are submitted through each embedded chat template, with thinking enabled and temperature 1.0, top-p 0.95, top-k 20, min-p 0. The first response is retained: no output cap, custom stop strings, retries or repair. Each request starts without a reused prompt prefix. All slots report 262,144-token context.
124
 
125
+ The weighted decode rate is `sum(n_i) / sum(n_i / r_i)`, using each request's generated-token count `n_i` and server-reported decode rate `r_i`. Request time also includes prefill and transport. The arms generate different reasoning lengths, so request times are descriptive, not a fixed-work speedup. This is one panel per arm with **10 functional sanity checks, not a full HumanEval quality score**.
126
+
127
+ Laurent’s completed raw-greedy HumanEval 0–9 panel measured **38.05 tok/s with 10/10 sanity**. Its native-thinking panel below is a separate protocol; the two must not be treated as the same measurement. CIRU’s **42.3 tok/s** controlled coding result also uses a different workload. This panel does not replace the separately measured coding-probe result.
128
+
129
+ [Per-task CSV](benchmarks/v2.0/humaneval-0-9-mtp.csv) · [Prompts, outputs and checks](benchmarks/v2.0/humaneval-request-evidence.json)
130
+
131
+ These native-thinking measurements used the recorded powersave governor and 262144 context. They are a separate workload diagnostic, not a demonstration of each package’s maximum speed. A later attempt to extend CIRU’s raw-greedy coding profile to HumanEval passed tasks 0–2 but did not terminate normally on task 3; that incomplete diagnostic is not scored as a full panel. It does not invalidate the completed coding probe or native-chat panel.
132
+
133
+ </details>
134
+
135
+ ## What changed in v2.0
136
+
137
+ The locked candidate includes the retained Sozo quality-lane and Ciru speed-lane fixes:
138
 
139
+ - Correct attention descriptor strides, GPU admission for long QSA top-k, and restored-KV fast-path admission.
140
+ - Seven-column Q5_K weight reuse, the GPU MTP top-10 selector and a 32,768-row draft-output shortlist.
141
+ - Decode-entry and internal-microbatch synchronization repairs.
142
+ - Fresh HIP graph recapture, plus a launcher working-directory fix.
143
+ - The complete ROCm SDK installation helpers from v1.1.1, with the updated depth-6 production profile.
144
 
145
+ The previous allocator-lifetime and cached-prefix/MTP state fixes remain included. The adaptive runner and broad expert-reuse/fusion experiments are not enabled in this release. No weights were requantized or retrained.
146
+
147
+ The core source matches **`qwen38-ciru-rocm10-20260905-rc2`**. Portable build helpers are based on public v1.1.1 (`764ee491`); the retained core patch is based on v1.1 (`baba5e06`). [Provenance and runtime hashes](benchmarks/v2.0/ciru-provenance.json) record the exact inclusion evidence. The additional long-QSA/restored-KV admission code does not by itself establish a measured production cache-recovery speedup.
148
+
149
+ ## Download and build
150
+
151
+ The model artifacts total **135,962,881,135 bytes (126.625 GiB)**, excluding runtime source and reports. Target storage is 73.945 GiB, the MTP draft is 3.852 GiB, and the mandatory PLE payload is 48.828 GiB. The target and all three `ple/` files are required; the MTP draft is optional only when speculation is disabled.
152
+
153
+ On Ubuntu/Debian, install `python3-venv`, then download the package:
154
 
155
  ```bash
156
+ sudo apt update
157
+ sudo apt install -y python3-venv
158
+ python3 -m venv .venv-hf
159
+ .venv-hf/bin/python -m pip install -U huggingface_hub
160
+ . .venv-hf/bin/activate
161
+ hf download jcbtc/Qwen3.8-Flash-CIRU-STRIX-IU4 \
162
+ --revision v2.0 --local-dir ./Qwen3.8-Flash-CIRU-STRIX-IU4
163
+ cd Qwen3.8-Flash-CIRU-STRIX-IU4
164
+ sha256sum -c checksums.sha256
165
+ sha256sum -c v2.0-checksums.sha256
166
+ tar -xzf runtime/v2.0/ciru-runtime-v2.0-source.tar.gz
167
+ cd ciru-runtime-v2.0
168
  ./scripts/ciru/setup-linux-amd.sh --install-host-deps
169
  ```
170
 
171
+ The helper installs host build tools and a private, complete **ROCm 10.0.0** SDK with gfx1151 device libraries. It builds into `build-gfx1151-sdk/`. Keep `.venv-rocm/` for runtime libraries. The host must already provide a compatible AMD GPU driver and access to `/dev/kfd` and its render node.
 
 
172
 
173
+ **Existing users:** keep your model directory. Download only the runtime archive, updated profile and release checksums into a separate directory, then rebuild:
174
 
175
  ```bash
176
+ hf download jcbtc/Qwen3.8-Flash-CIRU-STRIX-IU4 \
177
+ --revision v2.0 --local-dir ./ciru-v2-update \
178
+ --include "runtime/v2.0/*" "profiles/*" "v2.0-checksums.sha256"
179
+ cd ciru-v2-update
180
+ sha256sum -c v2.0-checksums.sha256 --ignore-missing
181
+ tar -xzf runtime/v2.0/ciru-runtime-v2.0-source.tar.gz
182
+ cd ciru-runtime-v2.0
183
+ ./scripts/ciru/setup-linux-amd.sh --install-host-deps
184
  ```
185
 
186
+ The source archive includes `docs/BUILD_LINUX.md`, `docs/RUNNING.md`, provenance, licenses and third-party notices. Do not use the old GitHub v1.1.1 tag as the v2.0 source; this release's exact source is the archive linked above.
 
 
 
 
187
 
188
+ A **clean Ubuntu 24.04 container build passed**, including all three executables and their shared-library checks. That build then loaded the model on Ciru's gfx1151 GPU and completed an MTP-enabled 64-token smoke test. The container used the host's NixOS GPU driver; this is not a bare-metal Ubuntu driver qualification. The complete comparative speed and fidelity results refer to the NixOS RC2 binaries, not this short smoke. Other distros, WSL2, Windows and macOS have no new v2.0 inference qualification.
189
 
190
+ ## Run the production profile
191
 
192
+ From the extracted runtime directory:
193
 
194
  ```bash
195
  BUILD_DIR="$PWD/build-gfx1151-sdk" \
 
197
  ./scripts/ciru/run-server.sh
198
  ```
199
 
200
+ The profile uses one slot, a 262,144-token context, batch 2048/microbatch 512, 8 target threads, F16 target KV, Q8_0 draft KV, flash attention on, maximum MTP depth 6, p-min 0 and p-split 0.10. It enables a separate 4 GiB PLE cache with 16 workers, an 8 GiB prompt cache, idle-slot caching and context checkpoints. The server binds to `127.0.0.1:8080`.
201
 
202
  ```bash
203
  curl http://127.0.0.1:8080/v1/chat/completions \
 
208
  "temperature": 1.0,
209
  "top_p": 0.95,
210
  "top_k": 20,
211
+ "min_p": 0,
212
  "cache_prompt": true
213
  }'
214
  ```
215
 
216
+ For target-only serving, set `ENABLE_MTP=0` before launching. This omits the draft flags. Use the launcher option rather than appending `--spec-type none` to an already speculative command.
217
 
218
+ Thinking defaults are temperature 1.0, top-p 0.95, top-k 20, min-p 0. For non-thinking mode, send `"chat_template_kwargs":{"enable_thinking":false}` with temperature 0.7, top-p 0.8 and presence penalty 1.5. Normal chat can retain prefix caching; the cold benchmark settings are not the production preset.
 
 
 
 
 
 
219
 
220
+ ## Historical task-quality results on the unchanged weights
221
 
222
+ These earlier H96/depth-1 results were **not rerun as full suites on v2.0**. The current release checks comprise the bounded BF16 panel, the 10-task native speed sanity panel, and the scoped runtime correctness/build checks described above.
223
 
224
+ | Benchmark | Earlier result | Scope |
 
 
 
 
 
 
 
 
 
 
 
 
 
225
  |---|---:|---|
226
+ | HumanEval | 160/164 (97.56%) | Full local-custom chat run, first sample |
227
+ | HumanEval+ | 155/164 (94.51%) | Full EvalPlus 0.1.10 run |
228
+ | ARC-Challenge | 1,143/1,172 (97.53%) | Full EvalScope dataset |
229
+ | ToolEval Standard | 115/138 (83.33%) | 69 local-custom cases |
230
+ | ToolEval Hard | 23/30 (76.67%) | 15 local-custom cases |
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
231
 
232
+ Historical methodology and additional sampled results remain available in the [previous model card](https://huggingface.co/jcbtc/Qwen3.8-Flash-CIRU-STRIX-IU4/blob/9327d8c4b796d983d97870f0908e8667c0cbab2d/README.md). Local-custom or sampled scores are not canonical leaderboard submissions.
233
 
234
+ ## Storage and hardware
235
 
236
+ The target contains 1,223 tensors: 144 routed-expert Q4_1 tensors, 328 Q5_K, 290 Q8_0, 48 Q5_1, 25 BF16 and 388 F32. **IU4 describes the optimized unsigned four-bit execution path**, not a uniform model quantization or a new GGUF storage format. The PLE payload preserves exact FP8 E4M3 weights with one BF16 scale.
 
 
 
 
 
237
 
238
+ The intended machine is a Ryzen AI MAX+ 395 / Radeon 8060S with 128 GiB unified memory and fast NVMe. Allow at least 160 GiB for model files and verification, plus space for the source, SDK and build. Linux provides the measured P16/O_DIRECT pager path. The configured context is 262,144; cold sweep coverage stops at 131,072.
239
 
240
+ [File tree](https://huggingface.co/jcbtc/Qwen3.8-Flash-CIRU-STRIX-IU4/tree/v2.0) · [Weight checksums](checksums.sha256) · [Runtime/report checksums](v2.0-checksums.sha256) · [Measurement methodology](benchmarks/v2.0/METHODOLOGY.md)
 
 
241
 
242
+ ## Lineage, license and credit
243
 
244
+ - Text lineage: [Qwen/Qwen3.8-Flash-Next](https://huggingface.co/Qwen/Qwen3.8-Flash-Next/tree/f5d08274bafd880402bd16f5e3e6c514136ec06c).
245
+ - PLE lineage: [Qwen/Qwen3.8-Flash-Next-FP8](https://huggingface.co/Qwen/Qwen3.8-Flash-Next-FP8/tree/bcd9f01ddc9cff2316eb84281bebcd5b058bddce).
246
+ - Runtime base: [ggml-org/llama.cpp](https://github.com/ggml-org/llama.cpp/commit/f5e85d43a048f3d5adefb4c5e29867d8077fba62).
247
 
248
+ Model artifacts use the included **Qwen Community License 1.0**; runtime code retains its MIT license and component notices. Credits include Qwen, ggml-org, Ryan Monsurate's MTP integration, AMD's ROCm ecosystem, and contributors recorded in the source notices. Thanks also to Laurent Zuijdwijk, Agention AI, Unsloth and Daniel Han Chen for the publicly available comparison models and runtimes, and OpenAI's HumanEval authors for the benchmark tasks.
249
 
250
+ CIRU is an independent community research project. AMD and Qwen marks do not imply sponsorship or endorsement.
251
 
252
  ```bibtex
253
  @software{ciru_qwen38_flash_strix_iu4_2026,
254
+ title = {Qwen3.8-Flash-CIRU-STRIX-IU4},
255
+ author = {{CIRU}},
256
+ year = {2026},
257
+ version = {2.0},
258
+ url = {https://huggingface.co/jcbtc/Qwen3.8-Flash-CIRU-STRIX-IU4}
 
259
  }
260
  ```
assets/v2-bf16-fidelity.png CHANGED

Git LFS Details

  • SHA256: e260f72cba14e4c4e523794345f7de001444626240ab620d96dc44ee51beee90
  • Pointer size: 130 Bytes
  • Size of remote file: 81.8 kB
benchmarks/v2.0/METHODOLOGY.md CHANGED
@@ -52,3 +52,9 @@ All 51 selected speed rows were checked against their raw SSE streams and the of
52
  The original quality-store import had null competitor model hashes that inherited the global CIRU hash. Scores were correct. A corrected nine-row import supplies each model identity, including all three Unsloth shards; the first-shard hash is explicitly distinguished from a whole-model hash. The original append-only rows are preserved with an erratum and must be excluded in favor of `20260905T152000Z-bf16-three-arm-corrected`. See the included erratum and corrected manifest.
53
 
54
  The source archive combines RC2 core code with the v1.1.1 portable SDK helpers and updated launcher/profile. A clean Ubuntu 24.04 build passed all three executables and shared-library checks, then completed an actual gfx1151 64-token MTP smoke using the NixOS host driver. That smoke's timing is not a comparison benchmark. Core source/build-helper identity is checked separately from mutable release documentation. No full task-quality suite or full Ubuntu performance suite was rerun for v2.0.
 
 
 
 
 
 
 
52
  The original quality-store import had null competitor model hashes that inherited the global CIRU hash. Scores were correct. A corrected nine-row import supplies each model identity, including all three Unsloth shards; the first-shard hash is explicitly distinguished from a whole-model hash. The original append-only rows are preserved with an erratum and must be excluded in favor of `20260905T152000Z-bf16-three-arm-corrected`. See the included erratum and corrected manifest.
53
 
54
  The source archive combines RC2 core code with the v1.1.1 portable SDK helpers and updated launcher/profile. A clean Ubuntu 24.04 build passed all three executables and shared-library checks, then completed an actual gfx1151 64-token MTP smoke using the NixOS host driver. That smoke's timing is not a comparison benchmark. Core source/build-helper identity is checked separately from mutable release documentation. No full task-quality suite or full Ubuntu performance suite was rerun for v2.0.
55
+
56
+ ## Release coding result and subsequent diagnostics
57
+
58
+ The release headline42.28–42.31tok/s comes from two retained short-code repetitions,57prompttokens and520generatedtokens,greedy seed123,fixed-six MTP,16Kcontext and performance CPU governor. It is not a HumanEval mean. Source rows,raw hashes,actual commands and generation settings are in controlled-coding-42tps.json. All16recorded runtime binaries match the native-chat release run.
59
+
60
+ The later raw-greedy HumanEval extension passed tasks0–2 but task3 continued generating a long sequence of assertions/lists instead of terminating; it was stopped and the partial trace retained. No full-panel ranking is made from that diagnostic. A follow-on native-performance diagnostic was interrupted without producing a complete panel; it is not used to replace the completed10-task results.
benchmarks/v2.0/controlled-coding-42tps.json ADDED
@@ -0,0 +1,384 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "workload": "Controlled greedy short-code probe; 57 prompt tokens, 520 generated tokens, not HumanEval",
3
+ "configuration": "ROCm10 fixed-six, p_min0, shortlist32768, F16targetKV, Q8draftKV,16Kcontext, performance CPU governor, greedy seed123",
4
+ "rows": [
5
+ {
6
+ "case": "C1",
7
+ "prompt": "short-code",
8
+ "tg": 42.280053297306495,
9
+ "pp": 115.42901115813775,
10
+ "prompt_tokens": 57,
11
+ "generated_tokens": 520,
12
+ "ttfp_ms": 538.7954711914062,
13
+ "client_total_ms": 12814.576148986816,
14
+ "client_after_first_ms": 12275.78067779541,
15
+ "draft_generated": 674,
16
+ "draft_accepted": 400,
17
+ "token_sha256": "5115118aef25826d9d904cd30f47a28fc9aeac842457b17ff906deba653fb731",
18
+ "peak_ram_used_bytes": 89481662464,
19
+ "delta_ram_used_bytes": 486907904,
20
+ "idle_ram_used_bytes": 88994754560,
21
+ "vram_available": false,
22
+ "source_row_sha256": "ec1a933cdc15ba1f288d7717e8f1d2c56e48b351d7baa5054833eae6affe3476",
23
+ "timings": {
24
+ "cache_n": 0,
25
+ "draft_n": 674,
26
+ "draft_n_accepted": 400,
27
+ "predicted_ms": 12275.292,
28
+ "predicted_n": 520,
29
+ "predicted_per_second": 42.280053297306495,
30
+ "predicted_per_token_ms": 23.651815028901733,
31
+ "prompt_ms": 493.81,
32
+ "prompt_n": 57,
33
+ "prompt_per_second": 115.42901115813775,
34
+ "prompt_per_token_ms": 8.663333333333334
35
+ },
36
+ "generation_settings": {
37
+ "adaptive_decay": 0.8999999761581421,
38
+ "adaptive_target": -1.0,
39
+ "backend_sampling": false,
40
+ "chat_format": "Content-only",
41
+ "dry_allowed_length": 2,
42
+ "dry_base": 1.75,
43
+ "dry_multiplier": 0.0,
44
+ "dry_penalty_last_n": 64,
45
+ "dry_sequence_breakers": [
46
+ "\n",
47
+ ":",
48
+ "\"",
49
+ "*"
50
+ ],
51
+ "dynatemp_exponent": 1.0,
52
+ "dynatemp_range": 0.0,
53
+ "frequency_penalty": 0.0,
54
+ "generation_prompt": "",
55
+ "grammar": "",
56
+ "grammar_lazy": false,
57
+ "grammar_triggers": [],
58
+ "ignore_eos": false,
59
+ "logit_bias": [],
60
+ "lora": [],
61
+ "max_tokens": 520,
62
+ "min_keep": 0,
63
+ "min_p": 0.0,
64
+ "mirostat": 0,
65
+ "mirostat_eta": 0.10000000149011612,
66
+ "mirostat_tau": 5.0,
67
+ "n_discard": 0,
68
+ "n_keep": 0,
69
+ "n_predict": 520,
70
+ "n_probs": 0,
71
+ "post_sampling_probs": false,
72
+ "presence_penalty": 0.0,
73
+ "preserved_tokens": [],
74
+ "reasoning_format": "deepseek",
75
+ "reasoning_in_content": false,
76
+ "repeat_last_n": 64,
77
+ "repeat_penalty": 1.0,
78
+ "samplers": [
79
+ "penalties",
80
+ "dry",
81
+ "top_n_sigma",
82
+ "top_k",
83
+ "typ_p",
84
+ "top_p",
85
+ "min_p",
86
+ "xtc",
87
+ "temperature"
88
+ ],
89
+ "seed": 123,
90
+ "speculative.types": "none,draft-mtp",
91
+ "stop": [],
92
+ "stream": true,
93
+ "temperature": 0.0,
94
+ "timings_per_token": false,
95
+ "top_k": 1,
96
+ "top_n_sigma": -1.0,
97
+ "top_p": 1.0,
98
+ "typical_p": 1.0,
99
+ "xtc_probability": 0.0,
100
+ "xtc_threshold": 0.10000000149011612
101
+ },
102
+ "raw_sha256": "9495dee67c6af80c616aa71b5dcb9442ae452188a1d898d734c4d13969122c51",
103
+ "command": {
104
+ "argv": [
105
+ "/srv/llm/work/sozo-adaptive-diagnosis-20260905/candidates/fixed6-graph-boundaries/bin/llama-server",
106
+ "--model",
107
+ "/srv/llm/models/Qwen3.8-Flash-CIRU-STRIX-IU4/Qwen3.8-Flash-CIRU-STRIX-IU4.gguf",
108
+ "--alias",
109
+ "qwen38-mtp-probe",
110
+ "--host",
111
+ "127.0.0.1",
112
+ "--port",
113
+ "18186",
114
+ "--jinja",
115
+ "--ple-sidecar",
116
+ "/srv/llm/models/Qwen3.8-Flash-CIRU-STRIX-IU4/ple",
117
+ "--ple-cache-mib",
118
+ "4096",
119
+ "-ngl",
120
+ "all",
121
+ "-sm",
122
+ "none",
123
+ "--fit",
124
+ "off",
125
+ "-c",
126
+ "16384",
127
+ "-b",
128
+ "2048",
129
+ "-ub",
130
+ "512",
131
+ "--parallel",
132
+ "1",
133
+ "-t",
134
+ "8",
135
+ "-tb",
136
+ "8",
137
+ "-ctk",
138
+ "f16",
139
+ "-ctv",
140
+ "f16",
141
+ "-fa",
142
+ "on",
143
+ "--cont-batching",
144
+ "--cache-prompt",
145
+ "--cache-ram",
146
+ "8192",
147
+ "--cache-idle-slots",
148
+ "--ctx-checkpoints",
149
+ "32",
150
+ "--checkpoint-min-step",
151
+ "8192",
152
+ "--metrics",
153
+ "--slots",
154
+ "--spec-type",
155
+ "draft-mtp",
156
+ "--spec-draft-model",
157
+ "/srv/llm/models/Qwen3.8-Flash-CIRU-STRIX-IU4/mtp/Qwen3.8-Flash-CIRU-STRIX-IU4-MTP-Q8_0.gguf",
158
+ "--spec-draft-ngl",
159
+ "all",
160
+ "--spec-draft-device",
161
+ "ROCm0",
162
+ "--spec-draft-type-k",
163
+ "q8_0",
164
+ "--spec-draft-type-v",
165
+ "q8_0",
166
+ "--spec-draft-threads",
167
+ "8",
168
+ "--spec-draft-threads-batch",
169
+ "8",
170
+ "--spec-draft-n-max",
171
+ "6",
172
+ "--spec-draft-n-min",
173
+ "0",
174
+ "--spec-draft-p-min",
175
+ "0",
176
+ "--spec-draft-p-split",
177
+ "0.10"
178
+ ],
179
+ "env": {
180
+ "GGML_CUDA_Q41_MOE_FORCE_J": "32",
181
+ "GGML_QWEN4EXP_PLE_WORKERS": "16",
182
+ "GGML_QWEN4EXP_PLE_STRICT_SHA": "0",
183
+ "ROCBLAS_USE_HIPBLASLT": "1",
184
+ "LD_LIBRARY_PATH": "/srv/llm/work/sozo-adaptive-diagnosis-20260905/candidates/fixed6-graph-boundaries/bin:/srv/llm/engines/Qwen3.8-Flash-CIRU-STRIX-IU4-v1.1/build-hip-rocm10-release/bin:/srv/llm/toolchains/therock-gfx1151-10.0.0/lib:/srv/llm/toolchains/therock-gfx1151-10.0.0/lib/rocm_sysdeps/lib:/srv/llm/toolchains/therock-gfx1151-10.0.0/lib/llvm/lib",
185
+ "GGML_QSA_LONG_TOPK": "1",
186
+ "GGML_QSA_RESTORE_FAST": "1",
187
+ "CIRU_MTP_TOPK10": "1",
188
+ "CIRU_MTP_SHORTLIST": "32768"
189
+ }
190
+ }
191
+ },
192
+ {
193
+ "case": "C2",
194
+ "prompt": "short-code",
195
+ "tg": 42.314176153996854,
196
+ "pp": 106.23189864358639,
197
+ "prompt_tokens": 57,
198
+ "generated_tokens": 520,
199
+ "ttfp_ms": 581.5215110778809,
200
+ "client_total_ms": 12847.277402877808,
201
+ "client_after_first_ms": 12265.755891799927,
202
+ "draft_generated": 674,
203
+ "draft_accepted": 400,
204
+ "token_sha256": "5115118aef25826d9d904cd30f47a28fc9aeac842457b17ff906deba653fb731",
205
+ "peak_ram_used_bytes": 89557381120,
206
+ "delta_ram_used_bytes": 521732096,
207
+ "idle_ram_used_bytes": 89035649024,
208
+ "vram_available": false,
209
+ "source_row_sha256": "afe2c7def7083fb2199d0e47da8ab0c22ad32f51de136f2596087cfc2ef91e3d",
210
+ "timings": {
211
+ "cache_n": 0,
212
+ "draft_n": 674,
213
+ "draft_n_accepted": 400,
214
+ "predicted_ms": 12265.393,
215
+ "predicted_n": 520,
216
+ "predicted_per_second": 42.314176153996854,
217
+ "predicted_per_token_ms": 23.632741811175336,
218
+ "prompt_ms": 536.562,
219
+ "prompt_n": 57,
220
+ "prompt_per_second": 106.23189864358639,
221
+ "prompt_per_token_ms": 9.413368421052631
222
+ },
223
+ "generation_settings": {
224
+ "adaptive_decay": 0.8999999761581421,
225
+ "adaptive_target": -1.0,
226
+ "backend_sampling": false,
227
+ "chat_format": "Content-only",
228
+ "dry_allowed_length": 2,
229
+ "dry_base": 1.75,
230
+ "dry_multiplier": 0.0,
231
+ "dry_penalty_last_n": 64,
232
+ "dry_sequence_breakers": [
233
+ "\n",
234
+ ":",
235
+ "\"",
236
+ "*"
237
+ ],
238
+ "dynatemp_exponent": 1.0,
239
+ "dynatemp_range": 0.0,
240
+ "frequency_penalty": 0.0,
241
+ "generation_prompt": "",
242
+ "grammar": "",
243
+ "grammar_lazy": false,
244
+ "grammar_triggers": [],
245
+ "ignore_eos": false,
246
+ "logit_bias": [],
247
+ "lora": [],
248
+ "max_tokens": 520,
249
+ "min_keep": 0,
250
+ "min_p": 0.0,
251
+ "mirostat": 0,
252
+ "mirostat_eta": 0.10000000149011612,
253
+ "mirostat_tau": 5.0,
254
+ "n_discard": 0,
255
+ "n_keep": 0,
256
+ "n_predict": 520,
257
+ "n_probs": 0,
258
+ "post_sampling_probs": false,
259
+ "presence_penalty": 0.0,
260
+ "preserved_tokens": [],
261
+ "reasoning_format": "deepseek",
262
+ "reasoning_in_content": false,
263
+ "repeat_last_n": 64,
264
+ "repeat_penalty": 1.0,
265
+ "samplers": [
266
+ "penalties",
267
+ "dry",
268
+ "top_n_sigma",
269
+ "top_k",
270
+ "typ_p",
271
+ "top_p",
272
+ "min_p",
273
+ "xtc",
274
+ "temperature"
275
+ ],
276
+ "seed": 123,
277
+ "speculative.types": "none,draft-mtp",
278
+ "stop": [],
279
+ "stream": true,
280
+ "temperature": 0.0,
281
+ "timings_per_token": false,
282
+ "top_k": 1,
283
+ "top_n_sigma": -1.0,
284
+ "top_p": 1.0,
285
+ "typical_p": 1.0,
286
+ "xtc_probability": 0.0,
287
+ "xtc_threshold": 0.10000000149011612
288
+ },
289
+ "raw_sha256": "e9c57e471feea6fad3b188c24dc67277d040df0772bdb6d7b86fff5b6fa6571f",
290
+ "command": {
291
+ "argv": [
292
+ "/srv/llm/work/sozo-adaptive-diagnosis-20260905/candidates/fixed6-graph-boundaries/bin/llama-server",
293
+ "--model",
294
+ "/srv/llm/models/Qwen3.8-Flash-CIRU-STRIX-IU4/Qwen3.8-Flash-CIRU-STRIX-IU4.gguf",
295
+ "--alias",
296
+ "qwen38-mtp-probe",
297
+ "--host",
298
+ "127.0.0.1",
299
+ "--port",
300
+ "18186",
301
+ "--jinja",
302
+ "--ple-sidecar",
303
+ "/srv/llm/models/Qwen3.8-Flash-CIRU-STRIX-IU4/ple",
304
+ "--ple-cache-mib",
305
+ "4096",
306
+ "-ngl",
307
+ "all",
308
+ "-sm",
309
+ "none",
310
+ "--fit",
311
+ "off",
312
+ "-c",
313
+ "16384",
314
+ "-b",
315
+ "2048",
316
+ "-ub",
317
+ "512",
318
+ "--parallel",
319
+ "1",
320
+ "-t",
321
+ "8",
322
+ "-tb",
323
+ "8",
324
+ "-ctk",
325
+ "f16",
326
+ "-ctv",
327
+ "f16",
328
+ "-fa",
329
+ "on",
330
+ "--cont-batching",
331
+ "--cache-prompt",
332
+ "--cache-ram",
333
+ "8192",
334
+ "--cache-idle-slots",
335
+ "--ctx-checkpoints",
336
+ "32",
337
+ "--checkpoint-min-step",
338
+ "8192",
339
+ "--metrics",
340
+ "--slots",
341
+ "--spec-type",
342
+ "draft-mtp",
343
+ "--spec-draft-model",
344
+ "/srv/llm/models/Qwen3.8-Flash-CIRU-STRIX-IU4/mtp/Qwen3.8-Flash-CIRU-STRIX-IU4-MTP-Q8_0.gguf",
345
+ "--spec-draft-ngl",
346
+ "all",
347
+ "--spec-draft-device",
348
+ "ROCm0",
349
+ "--spec-draft-type-k",
350
+ "q8_0",
351
+ "--spec-draft-type-v",
352
+ "q8_0",
353
+ "--spec-draft-threads",
354
+ "8",
355
+ "--spec-draft-threads-batch",
356
+ "8",
357
+ "--spec-draft-n-max",
358
+ "6",
359
+ "--spec-draft-n-min",
360
+ "0",
361
+ "--spec-draft-p-min",
362
+ "0",
363
+ "--spec-draft-p-split",
364
+ "0.10"
365
+ ],
366
+ "env": {
367
+ "GGML_CUDA_Q41_MOE_FORCE_J": "32",
368
+ "GGML_QWEN4EXP_PLE_WORKERS": "16",
369
+ "GGML_QWEN4EXP_PLE_STRICT_SHA": "0",
370
+ "ROCBLAS_USE_HIPBLASLT": "1",
371
+ "LD_LIBRARY_PATH": "/srv/llm/work/sozo-adaptive-diagnosis-20260905/candidates/fixed6-graph-boundaries/bin:/srv/llm/engines/Qwen3.8-Flash-CIRU-STRIX-IU4-v1.1/build-hip-rocm10-release/bin:/srv/llm/toolchains/therock-gfx1151-10.0.0/lib:/srv/llm/toolchains/therock-gfx1151-10.0.0/lib/rocm_sysdeps/lib:/srv/llm/toolchains/therock-gfx1151-10.0.0/lib/llvm/lib",
372
+ "GGML_QSA_LONG_TOPK": "1",
373
+ "GGML_QSA_RESTORE_FAST": "1",
374
+ "CIRU_MTP_TOPK10": "1",
375
+ "CIRU_MTP_SHORTLIST": "32768"
376
+ }
377
+ }
378
+ }
379
+ ],
380
+ "scope": "Two retained candidate repetitions inside order-balanced graph comparison. Raw output tokens identical. Not a native-thinking HumanEval average or a competitor speedup.",
381
+ "binary_hashes_match_current_16_of_16": true,
382
+ "reasoning_mode": "Explicitly closed think block before generation; non-thinking coding probe",
383
+ "prompt": "<|im_start|>user\nWrite a Python TTL LRU cache using collections.OrderedDict and time.monotonic. Implement get, put, capacity eviction, and lazy expiration. Include three concise unit tests. Explain the expiry and recency invariants.<|im_end|>\n<|im_start|>assistant\n<think>\n\n</think>\n\n"
384
+ }
benchmarks/v2.0/ubuntu24-qualification.tar.gz CHANGED
Binary files a/benchmarks/v2.0/ubuntu24-qualification.tar.gz and b/benchmarks/v2.0/ubuntu24-qualification.tar.gz differ
 
profiles/strix-halo-production.env CHANGED
@@ -1,6 +1,11 @@
1
- # Audited production environment. Verify checksums before using STRICT_SHA=0.
2
  GGML_CUDA_Q41_MOE_FORCE_J=32
3
  GGML_QWEN4EXP_PLE_WORKERS=16
4
  GGML_QWEN4EXP_PLE_STRICT_SHA=0
5
  ROCBLAS_USE_HIPBLASLT=1
6
 
 
 
 
 
 
 
1
+ # Audited public production environment for Qwen3.8-Flash-CIRU-STRIX-IU4.
2
  GGML_CUDA_Q41_MOE_FORCE_J=32
3
  GGML_QWEN4EXP_PLE_WORKERS=16
4
  GGML_QWEN4EXP_PLE_STRICT_SHA=0
5
  ROCBLAS_USE_HIPBLASLT=1
6
 
7
+ # Version 2 retained runtime components.
8
+ GGML_QSA_LONG_TOPK=1
9
+ GGML_QSA_RESTORE_FAST=1
10
+ CIRU_MTP_TOPK10=1
11
+ CIRU_MTP_SHORTLIST=32768
v2.0-checksums.sha256 CHANGED
@@ -1,15 +1,16 @@
1
  c16fda8809ad10f0d25d2243f4f83e76c29b80e0ee1622a4357a6f7235df97b4 .gitattributes
2
- 65602b4edbdefa0a3f46d5ea4ca2568ee1577ff402ce67bc5705981ae42744a4 README.md
3
  3a46a7fd054305b2c1a931682015d93094312fb3b76c8ef83a2adb350b0f584c assets/qwen38-flash-ciru-strix-iu4.jpg
4
  e260f72cba14e4c4e523794345f7de001444626240ab620d96dc44ee51beee90 assets/v2-bf16-fidelity.png
5
  88dd940fda0790ec6f474dc0a99019703114df253758ee14136c9686e93ea404 assets/v2-context-sweep.png
6
  bcba3de214851cce46ed5af42d6698044616eeace887c3231bc7a20474ab639e benchmarks/v2.0/HUMANEVAL-LICENSE
7
- a70953b97aba426c959470d81f08d01bc483fd299752653aa43b00268c05e860 benchmarks/v2.0/METHODOLOGY.md
8
  4caca1c5e03ede5a9518a379e6ff24d161847454fe5a9a498caedc11ee4cb14f benchmarks/v2.0/bf16-fidelity.csv
9
  01d34892371352271ddb98ac0a46cbfd0c3a8509abfcf7a0e826d8074a067462 benchmarks/v2.0/bf16-fidelity.json
10
  cfb6b00e9a98525b9abee62ce37431677d5dae33c08b00448aa65585edf4d9db benchmarks/v2.0/ciru-provenance.json
11
  1b38f2a9514c557aaf2089ca76bbf6456565fc242f360037e133754248d59a66 benchmarks/v2.0/comparison.json
12
  a16df59acb7bfbbf436ea0f0356cd5e3760f8b2e82470dc65187008f2e336e26 benchmarks/v2.0/competitor-artifacts.json
 
13
  7813d7451334059d7fa048df1c4ab44f03dc63917e0bef4b7dafa3915c20568e benchmarks/v2.0/humaneval-0-9-mtp.csv
14
  4f0552c8f4c4a8ea9bf4fbbabdbd1d7094c475e960ce652efff7dc510a297711 benchmarks/v2.0/humaneval-request-evidence.json
15
  fc4578f2148007209a4307ce34e8b0bb8fc72b28386e7b4e8506ee0bdf8b77b8 benchmarks/v2.0/mtp-off-context-sweep.csv
 
1
  c16fda8809ad10f0d25d2243f4f83e76c29b80e0ee1622a4357a6f7235df97b4 .gitattributes
2
+ 019e734dfeaed8662339a1b20430e00e3385d5662d4f6e2bf98cee012d083518 README.md
3
  3a46a7fd054305b2c1a931682015d93094312fb3b76c8ef83a2adb350b0f584c assets/qwen38-flash-ciru-strix-iu4.jpg
4
  e260f72cba14e4c4e523794345f7de001444626240ab620d96dc44ee51beee90 assets/v2-bf16-fidelity.png
5
  88dd940fda0790ec6f474dc0a99019703114df253758ee14136c9686e93ea404 assets/v2-context-sweep.png
6
  bcba3de214851cce46ed5af42d6698044616eeace887c3231bc7a20474ab639e benchmarks/v2.0/HUMANEVAL-LICENSE
7
+ 6f2706987b99fae89f8b38cd1b5a6be8965df884a8f6d3ac7159a43f628fe9a6 benchmarks/v2.0/METHODOLOGY.md
8
  4caca1c5e03ede5a9518a379e6ff24d161847454fe5a9a498caedc11ee4cb14f benchmarks/v2.0/bf16-fidelity.csv
9
  01d34892371352271ddb98ac0a46cbfd0c3a8509abfcf7a0e826d8074a067462 benchmarks/v2.0/bf16-fidelity.json
10
  cfb6b00e9a98525b9abee62ce37431677d5dae33c08b00448aa65585edf4d9db benchmarks/v2.0/ciru-provenance.json
11
  1b38f2a9514c557aaf2089ca76bbf6456565fc242f360037e133754248d59a66 benchmarks/v2.0/comparison.json
12
  a16df59acb7bfbbf436ea0f0356cd5e3760f8b2e82470dc65187008f2e336e26 benchmarks/v2.0/competitor-artifacts.json
13
+ f665c5b67e162ee08a465e17702704cd972a43e2f4268a1ac030d21046091308 benchmarks/v2.0/controlled-coding-42tps.json
14
  7813d7451334059d7fa048df1c4ab44f03dc63917e0bef4b7dafa3915c20568e benchmarks/v2.0/humaneval-0-9-mtp.csv
15
  4f0552c8f4c4a8ea9bf4fbbabdbd1d7094c475e960ce652efff7dc510a297711 benchmarks/v2.0/humaneval-request-evidence.json
16
  fc4578f2148007209a4307ce34e8b0bb8fc72b28386e7b4e8506ee0bdf8b77b8 benchmarks/v2.0/mtp-off-context-sweep.csv