| # DCA (Dual Chunk Attention) β Evaluation Results |
|
|
| **Workstream:** T87.pD β Dual Chunk Attention for long-context prefill in the opencoti |
| llamafile fork (Gemma 4 26B-A4B 1M-context path on a single GPU, + Qwen2/3/3.5 portability). |
| **Patch:** `vendors/patches/llamafile/0078-dca.patch`. |
|
|
| > β **Absolute prefill tok/s in this doc are stale-low as of 2026-07-05 (#614):** the |
| > tinyblas-small-gemm fix (bug-2104) lifts Gemma-A4B MoE-router prefill substantially on |
| > TinyBLAS builds, so cells below understate the current binary; the DCA-on-vs-off *ratios* |
| > and all quality scores remain valid. The #614 checkpoint fixes (bug-2105/2107) do NOT |
| > affect these runs β the recipe here pins `--ctx-checkpoints 0`. Current cross-engine |
| > prefill: [`three-way-tps.md`](three-way-tps.md) Β§2026-07-05. |
| **Last updated:** 2026-06-18 (Thursday) β *added **Β§5 (KV-quant Γ DCA full-vocab PPL/KLD, #446)**: |
| teacher-forced KL-divergence resolves the turbo-DCA anomaly β turbo-DCA `real_frac=0` is **GENUINE** |
| (DCA f16-lift KLD monotone in tier bits: turbo8 0.002 β turbo2 0.65), and the DCA lift **beats** the |
| noDCA in-register turbo read (turbo2 in-register is degenerate: KLD 5.60 / PPL 1584 vs turbo2-DCA 0.65). |
| Scalar/asym matrix complete β best long-ctx KV recipe is high-precision-K + q4/turbo4-V (q8K/q4V & |
| t8K/t4V β KLD 0.003β0.008, top 96β98%); the turbo2 noDCA degeneracy is K-side (t4K/t2V fine). |
| Earlier (2026-06-15 β 2026-07-13): the **RULER-VT 1M cell landed** (Β§1a) and is now **0.916** on the |
| current shipping binary β **the quality ladder is complete**. (History: originally 0.716 = server-crash |
| artifact; 0.876 = 2026-07-01 pre-fix 41+9-refix reconstruction; **0.916 = 2026-07-13 fixed-binary |
| `_dcaon_rerun`, clean n=50, 0 empties** β the current number. See Β§1aβ.) DCA-on holds the 0.96β0.98 VT |
| band 256kβ512k, then softens *gently*: 768k **0.984**, 1M **0.916** (a mild β6.8 pp at 4Γ native, |
| `n_ctx_train`=256k) β no cliff. **Re-confirmed on the fresh 0121 |
| binary (#654): all four DCA-on rungs now on the current engine β 256k 0.964 / 512k 0.996 / 768k 0.984 / |
| 1M 0.916, n=50, 0 empties** (768k the last holdout, re-run 2026-07-13: 0.956β0.984). See the Β§1a note. |
| Earlier: MRCR n=50 re-run (Β§1b: 256k-off 0.1138 / 256k-on 0.1320 / 512k-on 0.1027); Β§4d (#635 decode |
| chunk-boundary gate). See `docs/DCA_HANDOFF.md` for the full patch hand-off (RCA, file inventory, |
| cross-arch risks).* |
|
|
| This doc collects **every DCA evaluation** we've run: long-context quality (RULER-VT + MRCR), |
| throughput (prefill/gen tps), memory footprint (VRAM), and correctness gates (multi-chunk |
| coherence, NIAH retrieval). Quality scores are read from the canonical `summary.json` `.score`; |
| throughput/VRAM from the llama-server logs (`timings`, KV/compute-buffer lines) and live `nvidia-smi`. |
|
|
| --- |
|
|
| ## 0. Hosts & methodology |
|
|
| Two hosts produced these numbers β **attribute every row to its host**, they are not comparable across GPUs: |
|
|
| | Host | GPU | VRAM | Role | |
| |------|-----|------|------| |
| | **bs2** (linode-blackswan-2) | 1Γ Blackwell-class | 97,887 MiB (~96 GB) | Long-context **quality ladder** (128e-F16, 256kβ1M). Fits weights+KV up to 1M. | |
| | **solidpc** | 1Γ RTX 3090 | 24,576 MiB (~24 GB) | **Throughput** (3-arm gen-tps) + **correctness gates** (multi-chunk coherence, regression). Q4_K_M / quantized models only. | |
|
|
| - **Sampler:** greedy (`temperature 0`, `top_k 1`) everywhere β DCA is a serving-correctness feature, scores must be deterministic. |
| - **DCA recipe:** `--dca on --dca-chunk-size 8192` (so ctx/8192 = chunk count), `-fa on --parallel 1 --no-warmup --ctx-checkpoints 0`. |
| - **DCA-off above 256k = N/A:** full attention KV does not fit a single GPU past 256k; DCA is what makes those tiers reachable, so there is no off-arm to compare against. 256k is the only tier with both arms (the regression anchor). |
| - **Backend:** `omk_eval.py --backend llama` launching the opencoti DCA llamafile (`/srv/ml/opencoti-dca/bin/llamafile`) per cell, `--parallel 1 --replicas 1` (serial, one full-ctx slot). |
|
|
| ### Models under test |
|
|
| | Short name | Arch | head_dim (DKQ) | Quant | Weights on disk | Notes | |
| |------------|------|----------------|-------|-----------------|-------| |
| | **128e-F16** | gemma4 (iSWA) | 512 | F16 GGUF | 50.5 GB (48,150 MiB in VRAM) | Clean unpruned 26B-A4B base. Ladder model. | |
| | gemma-4-26B-A4B-it-Q4_K_M | gemma4 (iSWA) | 512 | Q4_K_M | ~17.5 GB | solidpc 3-arm gen-tps model. | |
| | v7-coder-it (98e) | gemma4 (iSWA) | 512 | Q4_K_M | 13.2 GB | 98e pruned. **Reference only** β early upper-tier MRCR cells, superseded by 128e-F16 re-runs. | |
| | Qwen3.6-35B-A3B | qwen35moe | 256 | UD-IQ3_XXS | 13.2 GB | Qwen multi-chunk portability gate. | |
| | Qwen3-4B | qwen3 | 128 | Q4_K_M | 2.5 GB | Qwen multi-chunk portability gate. | |
| | Qwen3.6-27B-Omnimerge-v4 | qwen35 (hybrid, MTP) | 256 | Q4_K_M | 16.8 GB | MTP-with-Qwen capability + DCA multi-chunk gate (#622). | |
|
|
| --- |
|
|
| ## 1. Long-context quality ladder β 128e-F16 (bs2 Blackwell) |
|
|
| Single model, greedy, Β±DCA. DCA-off N/A above 256k (won't fit). **Each bench has its own metric** β |
| RULER-VT = `string_match_all`, MRCR = `sequence_matcher_ratio` (fuzzy ratio, NOT pass@1). For MRCR, |
| **prefill/gen tps + VRAM + wall/req are the authoritative values from `summary.json` `scores`** |
| (`prefill_tok_s`/`gen_tok_s`/`vram_peak_mib`/`wall_s_median`); RULER-VT's `scores` block carries no |
| perf fields, so its tps are medians read from the per-cell `server.log`. |
|
|
| > β οΈ **MRCR tiers are different synthetic bins, NOT a comparable column.** Each MRCR row draws its |
| > prompts from a distinct `mrcr_bin` (256k real / 512k / 768k_synth) with a different needle-count |
| > mix, so MRCR scores do **not** form a monotone "longer = lower" curve and must not be read as one. |
| > RULER-VT *is* a consistent metric across ctx, so its rows are comparable. |
|
|
| ### 1a. RULER-VT (Variable Tracking, 50 samples) β `string_match_all` |
|
|
| **Model: `128e-F16`** (Gemma-4 26B-A4B, iSWA, head_dim 512, F16 GGUF β 48.2 GB weights; see Β§0 |
| "Models under test"). **Note the VRAM column grows *sub-linearly* with ctx** (54.5 β 61.3 β 69 β 70 GB): |
| Gemma-4's iSWA means most layers are **local sliding-window** (KV capped at the window, *independent of |
| total ctx*) and only the minority **global** layers (just **2 KV heads** Γ head_dim 512) scale with ctx. |
| So 768kβ1M (+262k tokens) enlarges only the global layers β **+1 GB** β not the ~5 GB an all-global model |
| would add. That sliding-window KV is exactly what fits 1M (KV 20.8 GB) on a single 96 GB card. |
|
|
| | ctx | DCA | score | prefill tok/s | gen tok/s | VRAM | wall-clock | status | |
| |-----|-----|-------|---------------|-----------|------|------------|--------| |
| | 256k | off | **0.964** | 2275.6 (med, rerun) | 88.3 (med, rerun) | ~54.5 GB | 1h39m | done (#654 rerun) | |
| | 256k | on | **0.964** | 2323.1 (med, rerun) | 87.0 (med, rerun) | ~54.5 GB | 1h40m | done (#654 rerun) | |
| | 512k | on | **0.996** | 1752.1 (med, rerun) | 67.5 (med, rerun) | ~61.3 GB | 4h18m | done (#654 rerun) | |
| | 768k | on | **0.984** | 1407.8 (med, rerun) | 55.2 (med, rerun) | ~67 GB | 8h02m | done (#654 rerun) | |
| | 1M | on | **0.916**β | 1175.6 (med, rerun) | 46.4 (med, rerun) | ~70 GB | 12h36m | done (#654 rerun) | |
|
|
| > **#654 re-run on the fresh 0121 binary CONFIRMS the ladder end-to-end** β DCA-on 256k **0.964** |
| > (was 0.960, 2026-07-12), 512k **0.996** (was 0.984, 2026-07-12), **768k 0.984** (was 0.956 |
| > orig-binary; fresh rerun finished 2026-07-13 16:23 UTC, 8h02m), and **1M 0.916** (was 0.876, |
| > finished 2026-07-13 04:42 UTC, 12.6 h) β **all n=50 with 0 empties** (`fresh_empty=0`, no |
| > server-death artifact this run). The 1M rerun is the decisive one: a **fully-clean single-pass n=50** |
| > (not the 41-perfect + 9-refix reconstruction the 0.876 was) on the **post-bug-2118/2120/2121 shipping |
| > binary** lands **+4 pp higher at 0.916**, so 0.916 supersedes 0.876 as the true VT-1M ceiling and the |
| > gentle 768kβ1M step is ~β6.8 pp (0.984β0.916), a soft slope not a cliff. The load-bearing conclusion (near-parity at 256k, band |
| > held 256kβ512k, no cliff to 4Γ native) is unchanged and strengthened on the current engine. Results: |
| > `bs2:/srv/ml/rerun/vt-out/ruler_native_vt_{256,512}k,1024k_dcaon_rerun/`. |
| > |
| > **The rerun tps are ~2β3Γ the original run** (prefill 256k 747β2323, 512k 681β1752, 1M 577β1176; |
| > gen also up: 256k 84β87, 512k 65β68, 1M 44β46) β the shipping binary carries every prefill/decode fix |
| > landed since June (#554 DCA-prefill-cliff, #614 large-batch prefill, #620 bandwidth-bound quant, WS2 |
| > turbo-V). The table's rows are all **current-binary rerun medians** β **every rung, DCA-on (256k / 512k / |
| > 768k / 1M) AND the 256k-off anchor, is now on the fresh binary.** 768k was the last DCA-on holdout (re-run |
| > 2026-07-13: 0.956β0.984, prefill 632β1408, gen 52β55, wall 17h44mβ8h02m) and 256k-off was the last |
| > full-attention holdout (re-run 2026-07-13: 0.976β0.964, prefill 676β2276, gen 86β88, wall 5h28mβ1h39m, |
| > n=50 `fresh_empty=0`). Wall-clock roughly halved across the board (1M 24 h β 12.6 h; 768k 17.7 h β 8.0 h; |
| > 256k-off 5.5 h β 1.6 h). |
| |
| β **1M is 0.916 on the current shipping binary** (fixed-binary `_dcaon_rerun`, 2026-07-13, clean n=50 |
| `fresh_empty=0`) β see the #654 note above; this supersedes the 0.876 below. The 0.876/0.716 history is |
| retained for provenance. **0.876 was the pre-fix reconstruction** (resolved 2026-07-01, a 41-perfect + |
| 9-refix rebuild on the pre-bug-2118/2120 binary). The 0.716 was a **serving |
| artifact**: the first F16 server crashed after sample 40 (~24 h uptime), so samples 41β49 all returned |
| `gen-error: ConnectionError` (one RemoteDisconnected, then 8Γ Connection-refused) β 9 forced zeros |
| (`fresh_empty=9`). The 9 were re-run on a fresh server (cache-resume; the 41 good samples kept, only the 9 |
| dead keys re-predicted, ~4.5 h) and all produced real completions β the re-scored n=50 cell is **0.876** |
| (`fresh_empty=0`, 35/50 perfect, 3 genuine zeros). Recompute over the pre-fix 50 (dead=0) reproduces 0.716 |
| exactly and over the 41 then-served samples gives 0.873, so the 9 re-runs land right on the served |
| distribution β the crash, not 1M coherence, drove the apparent cliff. |
|
|
| DCA-on vs full attention at 256k, **both now on the fresh binary**: **0.964 vs 0.964 β exact parity** |
| (DCA is lossless at 256k within VT n=50 sample noise; the earlier β1.2 pp was a stale original-binary |
| full-attn 0.976). Speed is at parity too β DCA-on prefill 2323 / gen 87 vs DCA-off 2276 / gen 88 tok/s β |
| so DCA costs neither quality nor throughput at the native cap. This is the load-bearing quality result: |
| on a consistent metric, multi-chunk DCA preserves long-context tracking. At **512k** DCA-on holds at **0.996** β above both its own 256k point and the 256k |
| full-attention anchor (both 0.964), i.e. variable tracking does not degrade as context doubles past the |
| native cap (gen tps 67.5, prefill 1752 on the current binary). At **768k** DCA-on lands at **0.984** |
| (β1.2 pp vs 512k, comfortably inside the 0.96β1.0 band β no cliff at 3Γ the native cap; the fresh-binary |
| rerun (2026-07-13, `_dcaon_rerun`, n=50 `fresh_empty=0`, 9/50 hitting the short gen cap with the answer |
| present) lifted 768k **+2.8 pp** from the original-binary 0.956, with prefill **1408** / gen **55** tok/s |
| and wall **8h02m** β the last rung to move onto the current engine). At **1M** (the final rung, 4Γ the 256k |
| native cap, `n_ctx_train`=262144) DCA-on lands at |
| **0.916** (β β the current fixed-binary `_dcaon_rerun`, 2026-07-13; history 0.876 pre-fix / 0.716 |
| server-crash artifact in the footnote). That is a **mild β6.8 pp** vs 768k (0.984), **not** a cliff: |
| variable-tracking softens gently at 4Γ native (0 empties, 20/50 hitting the short gen cap with the answer |
| present) rather than breaking. The soften is **not** generation-truncation (VT caps gen at 120 toks; the |
| 20/50 "length" finish-reasons used the full short cap with the answer present, 30/50 "stop"). Current |
| binary: **prefill 1176 tok/s, gen 46.4 tok/s** on a 1.05M-token prompt, wall **12.6 h** (was ~24 h on the |
| original binary); peak VRAM ~70 GB (model 48.2 + KV 20.8 + compute 3.2 GB). **The whole ladder is now |
| re-confirmed on the shipping engine (#654):** DCA-on holds 256k (0.964) β 512k (0.996) β 768k (0.984) β |
| 1M (0.916) β all four rungs now on the fresh binary β with only a gentle step down at 1M and **no |
| server-death artifact** (`fresh_empty=0` at every rung). The original-run history β first 1M attempt crashed after sample 40 on 2026-06-15, 9-sample re-fix |
| 2026-07-01 giving 0.876 β is retained in the β footnote. |
|
|
| ### 1a-yarn. `--dca-yarn-factor` (bug-740 / patch 0087) β characterized NO-WIN |
|
|
| The `--dca-yarn-factor` flag was plumbed end-to-end but **never read** by the rope path (inert; bug-740). |
| Patch `0087` wires it into `build_dca_rope` as the YaRN **mscale**: `dca_attn_factor = attn_factor * |
| cparams.dca_yarn_factor` β `ggml_rope_multi`/`ggml_rope_ext`. Host-only; default 1.0 is byte-identical |
| (`Γ1.0f` bit-identity). Empirically characterized on **Qwen3-4B** (native 40960, DCA chunk 16384, RULER |
| 5-needle substring under `ignore_eos` β never greedy-first-token): |
|
|
| | KV | ctx | Γnative | yarn 1.0 | 1.1 | 1.25 | 1.5 | 2.0 | |
| |----|-----|---------|----------|-----|------|-----|-----| |
| | f16 | 98304 | 2.4Γ | **5/5** | β | 4/5 | 1/5 | 0/5 | |
| | q8_0 | 163840 | 4.0Γ | **5/5** | β | β | β | β | |
| | q8_0 | 204800 | 5.0Γ | 3/5 | β | β | β | β | |
| | q8_0 | 245760 | 6.0Γ | **4/5** | 4/5 | 4/5 | β | β | |
| |
| **Verdict:** the mscale lever has **no beneficial regime** for DCA retrieval β at 6Γ native (where plain-DCA |
| is stressed) yarn 1.0/1.1/1.25 are flat at 4/5, and 1.18 is the *principled* mscale for 6Γ (`0.1Β·ln 6 + 1`), |
| so there's no missed sweet spot; pushing harder (1.5/2.0) only **over-sharpens** already-concentrated |
| attention and destroys retrieval. **Default 1.0 is correct.** Ships as a documented power-user knob, not a |
| win over plain-DCA. (Rejected the alternative full-YaRN `ext_factor` recipe β it would double-extend |
| positions vs DCA's chunk remap.) |
|
|
| **Cross-check β gemma 128e-Q6_K quick re-validation ladder (2026-06-25, current post-#554/#555 binary).** |
| n=15 RULER-VT (0β100), **f16/f16 KV** both, DCA chunk 8192, **Gemma-4-A4B 128e-Q6_K** weights (VERIFIED: |
| `load_model` loads `128e-Q6_K.gguf`, and the load log reports `n_ctx_train = 262144` β **native 256k** β the |
| ladder banner's "128e-F16" string is stale; early-prefill ~8.9k tok/s is Q6_K-class, ~12Γ the post-#555 F16 |
| ~3.1k). Confirms **plain-DCA alone holds the VT band deep into extension**. prefill tok/s = cumulative avg at |
| full ctx (early clips ~8.9k, degrades as the O(n) cache fills); wall approximate (two GPU lanes interleaved). |
| |
| | ctx | Γnative (256k) | DCA | VT (n=15) | prefill tok/s (avg@full) | gen tok/s | βwall | |
| |-----|----------------|-----|-----------|--------------------------|-----------|-------| |
| | 32768 | 0.125Γ | off | **100.0** | (fast) | 124.5 | ~1 min | |
| | 262144 | 1Γ | off | **97.33** | β | 117.3 | ~16 min | |
| | 262144 | 1Γ | on | **98.67** | β | 118.0 | ~17 min | |
| | 524288 | 2Γ | on | **100.0** | 2,475 (211 s / 512k) | 80.0 | ~54 min | |
| | 786432 | 3Γ | on | **92.0** | 1,859 (422 s / 786k) | 49.0 | ~108 min | |
| |
| DCA-on β₯ off at the comparable 256k (1Γ) cell (98.67 β₯ 97.33), holds **100.0 at 512k (2Γ)**, lands **92.0 at |
| 768k (3Γ)** β consistent with Β§1's careful n=50 768k = 0.984 (the βVT is n=15 sample noise, not a cliff). 1M |
| (4Γ) was not re-run today. **NB:** Β§1's "128k native cap / 8Γ" wording is an error β `n_ctx_train` is **256k**, |
| so 1M = 4Γ native (matches Β§1's own "3Γ at 768k"). |
| |
| ### 1b. MRCR (OpenAI Multi-Round Co-reference Retrieval) β `sequence_matcher_ratio` |
| |
| Perf columns are authoritative `summary.json` `scores` values. `n` = samples in the bin. `wall/req` = |
| median seconds per request (`wall_s_median`). |
| |
| | ctx (bin) | DCA | score | n | prefill tok/s | gen tok/s | VRAM peak | wall/req (med) | status | |
| |-----------|-----|-------|---|---------------|-----------|-----------|----------------|--------| |
| | 256k | off | **0.1138** | 50 | 535.3 | 92.4 | 55,075 MiB | 336 s | **n=50 re-run (06-14)** | |
| | 256k | on | **0.1320** | 50 | 555.5 | 89.5 | 55,075 MiB | 323 s | **n=50 re-run (06-14)** | |
| | 512k | on | **0.1027** | 50 | 527.5 | 70.2 | 61,333 MiB | 833 s | **n=50 re-run (06-14)** | |
| | 768k_synth | on | **0.1259** | 8 | 477.5 | 50.7 | 69,063 MiB | 1971 s | done (small-n, not re-run) | |
| | 1M | on | **0.0273** | 6 | 489.1 | 55.2 | 73,111 MiB | 1653 s | done (small-n, not re-run) | |
| | 256k **(q8-KV)** | on | **0.0999** | ? | β | β | β | β | quant-KV Γ DCA (#434); C-series binary, `mrcr_256k_dcaon_q8_c1`, landed 06-24 | |
|
|
| *The **256k/512k cells were re-run at n=50** (driver `bs2:/srv/ml/omk_mrcr_dca/mrcr_n50_2gpu.sh`, cells |
| `mrcr_256k_dcaon mrcr_256k_dcaoff mrcr_512k_dcaon`; last cell β 512k β finished 06-14 15:21 CEST); |
| 768k_synth/1M remain at their original n=8/6. `score`/`n`/`per_needle` are the authoritative n=50 |
| `summary.json` `.score`; the throughput columns (prefill/gen tok/s, VRAM, wall/req) are per-ctx-bin |
| properties from the ladder `server.log`s and are independent of sample count. **The earlier small-n |
| numbers (256k-off 0.0437 / 256k-on 0.0497 / 512k-on 0.0483 at n=16/8) are superseded** β MRCR has |
| brutal per-prompt variance, so n=16 badly under-estimated the bin mean.* |
|
|
| **Reading (n=50).** At 256k (the only directly-comparable bin) DCA-on **0.1320 β₯** DCA-off **0.1138** β |
| DCA costs nothing and is marginally higher, and it leads at every needle count: on `per_needle_mean |
| = {2: 0.104, 4: 0.198, 8: 0.091}` vs off `{2: 0.099, 4: 0.154, 8: 0.086}`. This is the load-bearing |
| MRCR result and it strengthens at n=50 vs the old n=16 (where the +0.006 gap was within noise). |
| 512k DCA-on is **0.1027** (`{2: 0.156, 4: 0.058, 8: 0.094}`) β lower than 256k-on, but a *different* |
| prompt bin, so this is **not** a "DCA degrades with ctx" signal (see the bin-comparability warning |
| above). The higher 768k_synth score (**0.1259**, still small-n=8) is NOT "DCA gets better at longer |
| ctx" β it's a synthetic bin whose per-needle mix is dominated by the easy **2-needle** sub-case |
| (`per_needle_mean = {2: 0.290, 4: 0.033, 8: 0.019}`). MRCR absolute scores are intrinsically low |
| (brutal fuzzy-retrieval bench); only same-bin comparisons (and the per_needle breakdown) are meaningful. |
|
|
| **Quant-KV Γ DCA @256k (composition, #434).** `q8_0` KV-cache + DCA-on at 256k scores **0.0999** |
| (`mrcr_256k_dcaon_q8_c1`, canonical `scores.metric = sequence_matcher_ratio`; `n` not emitted) β i.e. |
| **below even f16-KV DCA-*off* (0.1138)**. So on the hard MRCR task at 256k, **f16 KV fidelity matters more |
| than DCA does**: the q8 KV quality loss (β β0.032 vs f16 DCA-on 0.1320) outweighs the DCA gain (+0.018 vs |
| f16 off). Caveat β this is **cross-binary**: q8 ran on the C-series binary while the f16 ladder above is the |
| original bs2 ladder binary, and the same-binary f16 C-series cells (`mrcr_256k_dca{on,off}_c1`) produced no |
| scored `summary.json`, so the clean same-binary q8-vs-f16 delta is still missing. Consistent with Β§5b's rule |
| (*scalar KV β noDCA/f16-fidelity is the quality path*): for long-ctx retrieval, prefer f16/high-bit KV over a |
| DCA-on low-bit cache when quality is the priority. RULER-VT (easy retrieval) is far more quant-tolerant (Β§1a). |
|
|
| ### 1c. Reference (superseded) β v7-coder-it 98e Q4_K_M, MRCR DCA-on (bs2) |
|
|
| These upper-tier MRCR cells were run earlier on a **different model** (98e v7-coder Q4_K_M, not |
| 128e-F16), so they are not part of the single-model ladder; the 128e-F16 re-runs above replace them. |
| **Same-bin head-to-head** (768k_synth): 128e-F16 **0.1259** beats v7-coder **0.0376** by 3.3Γ, as |
| expected for a clean F16 base vs a 98e-pruned Q4_K_M. Authoritative `scores` perf: |
| |
| | ctx (bin) | score | n | prefill tok/s | gen tok/s | VRAM peak | wall/req (med) | per_needle_mean | |
| |-----------|-------|---|---------------|-----------|-----------|----------------|-----------------| |
| | 512k | 0.0413 | 8 | 3081.9 | 57.0 | 26,827 MiB | 208 s | {2: 0.053, 4: 0.024, 8: 0.049} | |
| | 768k_synth | 0.0376 | 8 | 1815.9 | 33.9 | 35,227 MiB | 739 s | {2: 0.049, 4: 0.044, 8: 0.011} | |
| | 1M | 0.0033 | 6 | 2052.9 | 38.2 | 39,629 MiB | 606 s | {2: 0.0023, 4: 0.0, 8: 0.0076} | |
|
|
| (v7-coder Q4_K_M is ~3.5Γ smaller on disk, so its prefill tps run far higher and VRAM far lower than |
| the F16 ladder model β these rows are NOT throughput-comparable with Β§1b.) |
|
|
| --- |
|
|
| ## 2. Throughput β prefill / gen tps (32k ctx, 4-chunk) |
|
|
| ### 2a. 3-arm gen-tps β gemma-4-26B-A4B-it **Q4_K_M**, solidpc RTX 3090 (#620) |
|
|
| 22,722-token prompt, 256 gen tokens, ctx 32768, chunk 8192. |
|
|
| | arm | prefill tok/s | gen tok/s | gen ratio | |
| |-----|---------------|-----------|-----------| |
| | vanilla (stock llamafile) | β | β | stock binary segfaulted at load (N/A) | |
| | DCA build, `--dca off` | 2587.0 | 71.31 | 1.000 (baseline) | |
| | DCA build, `--dca on` | 2558.6 | 65.96 | **0.925** | |
|
|
| β Turning DCA **on** costs ~7.5% gen throughput at 32k (the runtime-flag cost); prefill is at parity (2559 vs 2587). |
| The DCA build with `--dca off` is the right non-DCA baseline (the stock vanilla binary can't load this model build). |
|
|
| ### 2b. Per-arch coherence-gate timings β solidpc RTX 3090 (32k ctx, 200 gen tokens) |
|
|
| DCA-on (fused) unless noted. Confirms the head-dim port works across arches: |
|
|
| | model | arch | head_dim | prefill tok/s | gen tok/s | |
| |-------|------|----------|---------------|-----------| |
| | Qwen3.6-35B-A3B UD-IQ3_XXS | qwen35moe | 256 | 1787.2 | 60.61 | |
| | Qwen3-4B Q4_K_M | qwen3 | 128 | 4355.9 | 75.45 | |
| | v7-coder-it 98e Q4_K_M β **native** (DCA off) | gemma4 | 512 | 2779.6 | 70.16 | |
| | v7-coder-it 98e Q4_K_M β **fused** (DCA on) | gemma4 | 512 | 2773.2 | 66.01 | |
|
|
| β On the same gemma model, DCA-on vs off at 32k: prefill 2773 vs 2780 (parity), gen 66.0 vs 70.2 (~0.94Γ) β consistent with Β§2a. |
|
|
| ### 2c. Optimization history (prefill at 256k, documented in 0078-dca.patch) |
|
|
| After **O9** (analytical INTRA mask β kernel-derived causal band) the multi-chunk DCA prefill at |
| 256k is **at parity with native (~1.0Γ)**, down from the pre-optimization **1.59Γ** penalty. O6 |
| (analytical SUCC/INTER band bounds) killed 2 of 3 dense masks; O3 gave the multi-chunk 3Γ KV floor. |
|
|
| --- |
|
|
| ## 3. Memory model β iSWA KV scaling (128e-F16, bs2 Blackwell) |
|
|
| The reason a 262144-trained 26B-A4B fits 1M context on one GPU: **only the 5 global-attention |
| layers scale KV with full context**; the 25 SWA layers are pinned to a 1536-cell sliding window. |
|
|
| | Component | 256k | 512k | 768k | 1M (proj) | |
| |-----------|------|------|------|-----------| |
| | Weights (F16, fixed) | 48,150 MiB | 48,150 | 48,150 | 48,150 | |
| | KV β 5 global layers (scales) | 5,120 MiB | 10,560 | ~17,280 | ~20,800 | |
| | KV β 25 SWA layers (fixed 1536-win) | 300 MiB | 300 | 300 | 300 | |
| | Compute buffer | ~820 MiB | ~1,636 | ~2,500 | ~3,000 | |
| | **Total (observed / projected)** | **~54.5 GB** | **61.3 GB** (obs) | **69.1 GB** (obs) | **~72 GB** (proj) | |
|
|
| All tiers fit the 96 GB Blackwell with headroom (1M β 72 GB < 96 GB). On a 24 GB 3090, only |
| β€256k of the **quantized** model fits; F16 at any long ctx is bs2-only. |
|
|
| --- |
|
|
| ## 4. Correctness gates |
|
|
| ### 4a. Qwen multi-chunk coherence β `dca_gate623_mc_coherence.sh` (solidpc, DSO `df4c46bc`, #623) |
| |
| Multi-chunk (ctx 32768 > chunk 8192 β 4 chunks). Bar: fused (DCA on) coherent and ideally |
| byte-identical to native (DCA off = full-attention ground truth). |
| |
| | model | head_dim | native vs fused | verdict | |
| |-------|----------|-----------------|---------| |
| | Qwen3.6-35B-A3B (qwen35moe) | 256 | **byte-identical** (470 ch, uniq 0.38, 7/7 record-lines) | **PASS** | |
| | Qwen3-4B (qwen3) | 128 | **byte-identical** (463 ch, uniq 0.366, 7/7 record-lines) | **PASS** | |
| | OmniMerge v4 (qwen35, MTP) | 256 | **near-identical** (native 557 ch / fused 556 ch, uniq 0.713β0.714, max_run 1, 9/9 record-lines) | **PASS** | |
| |
| OmniMerge v4 is a Qwen3-Next **hybrid** (65 blocks: ~48 SSM/GatedDeltaNet linear-attn + 16 full-attn |
| hd256 + 1 MTP/nextn head at `blk.64`). It would not load until the **#622** loader fix: (a) qwen35 |
| hparams now reads `nextn_predict_layers` and excludes the MTP block from the recurrent/transformer |
| loops, (b) the tensor-load path loads `blk.64.nextn.*` (not ssm/attn) for the last `nextn_predict_layers` |
| blocks, (c) `llm_build_qwen35` skips the MTP block in forward, and (d) `llama-arch.cpp` re-classified the |
| six `NEXTN_*` tensors `LLM_TENSOR_LAYER_OUTPUT β LLM_TENSOR_LAYER_REPEATING` (matching upstream β they |
| are stored per-block, so the loader must not fault on the block index). DCA only chunks the 16 hd256 |
| full-attn layers on this hybrid, so its marginal long-context value here is narrower than on a |
| pure-attention model β but the fused multi-chunk path is verified coherent. See `.wolf/buglog.json` |
| bug-458. |
| |
| The prior DSO (build #3, `65b324b1`) emitted solid `!` (NaN logits) on both β the iter `Q_in_reg` |
| fix was the load-bearing final site. See `.wolf/buglog.json` bug-454/455/456 and `.wolf/cerebrum.md`. |
| |
| ### 4b. Gemma no-regression β `dca_gate_gemma_mc_regress.sh` (solidpc, DSO `df4c46bc`) |
| |
| The qwen fix is **provably a no-op on Gemma**: the ampere config table (`ggml_cuda_fattn_mma_get_config_ampere`) |
| has `nstages_target=1, Q_in_reg=false` for every DKQ=512 row, so all four fixes compile to the |
| identical Gemma kernel and dispatch `case 512` == the old hardcoded `<512,512>`. Empirical confirmation |
| (v7-coder Q4_K_M, hd512): |
| |
| | mode | native vs fused | note | |
| |------|-----------------|------| |
| | single-chunk (n_ctx β€ chunk) | **byte_identical = True** | both arms route to plain FA; binary is deterministic, DCA single-chunk is bit-exact | |
| | multi-chunk (n_ctx > chunk) | native β fused (uniq 0.297, coherent, 7 records, no loop) | intrinsic Q4_K_M band-combine numerics tipping greedy argmax β **pre-existing, not the qwen fix** | |
| |
| The authoritative Gemma DCA-quality measure is the bs2 128e-F16 ladder (Β§1), where fresh-binary 256k |
| dcaon 0.964 = dcaoff 0.964 (exact parity, both n=50) confirms multi-chunk DCA preserves quality on the |
| real model/metric. |
| |
| ### 4c. NIAH single-needle retrieval β `dca_niah_ladder_618.sh` (bs2, 128e-F16, #618) |
| |
| Needle (code `73914`) retrieved from the greedy completion, DCA-on, single prefill per cell |
| (native==fused established byte-exact). Chunk-count ladder: |
| |
| | chunks | ctx | result | |
| |--------|-----|--------| |
| | 2 | 16k | PASS (retrieved) | |
| | 4 | 32k | PASS | |
| | 8 | 64k | PASS | |
| | 16 | 128k | PASS | |
| | 32 | 256k | PASS | |
| |
| (Per the #618 ladder + the 0078-dca.patch measured-perf note; raw responses at |
| `bs2:/srv/ml/dca/dca_niah_ladder_618/resp_c*.json`.) |
|
|
| ### 4d. Decode chunk-boundary correctness (#635) β `dca635_fix_gate.sh` + NIAH INTER-band (solidpc, Qwen3-8B-Q8_0) |
| |
| The #635 decode fix (`INTER-Q = 2c`; full RCA in `docs/DCA_HANDOFF.md` Β§6) is gated two ways, greedy |
| (temp=0, top_k=1, seed=1, `cache_prompt=false`). |
|
|
| **(i) Self-calibrating count-up.** DCA-on must break NO EARLIER than the model's *intrinsic* limit. |
| Qwen3-8B-Q8_0 degenerates by itself (an intrinsic weakness, NOT a DCA bug), so "never breaks" is the |
| **wrong** criterion β the gate measures the DCA-off intrinsic on the *same* binary, then PASSes DCA-on |
| iff each chunk reaches it. (`n_predict=1600`; the old 900 truncated at ~206 and manufactured a fake |
| break@206.) The intrinsic value is decode-path-dependent (~326 on the earlier single-block-per-tile |
| hack, **346** on the clean stream-k binary) β exactly why the gate self-calibrates rather than |
| hard-coding a number. |
|
|
| **CONFIRMED on the clean deployable binary** (host sha `7c696dde`, stream-k decode + 2c fix; kernel |
| hack + host probes reverted), 2026-06-14: |
|
|
| | arm | chunk | count reached | verdict | |
| |-----|-------|---------------|---------| |
| | off (intrinsic) | β | **346** | reference | |
| | on | 256 | **346** | PASS | |
| | on | 512 | **346** | PASS | |
| | on | 1024 | **346** | PASS | |
|
|
| Pre-fix, DCA-on collapsed ~2Γ early (c256 β 151, c512 β 299) into `β¦232323β¦` garbage. |
|
|
| **(ii) NIAH through the INTER band.** Needle (code `73914`) in chunk-0 + ~3000 filler tokens, so the |
| retrieval query is at `cq β₯ 2` and the needle sits in the **INTER band** β exactly where the 2c fix |
| relocates far keys (rel `[c,2c]`). On the clean binary, DCA-on(2c) c256 retrieves `73914` **as well as |
| DCA-off** (both FOUND) β the fix preserves far-context retrieval (the one production risk of pushing far |
| keys past the window edge). Probe-free runner: `dca635_niah_clean.sh`. |
|
|
| Scripts: `solidpc:backup_models/scripts/dca_chunkprobe/{dca635_fix_gate.sh,dca635_niah_clean.sh,dca635_niah/}`. |
| The decisive diagnostic β an independent absolute-position full-attention reference β is `dca635_true_ref.py`. |
|
|
| > **Status: CONFIRMED (2026-06-14 21:27 CEST).** Both gates above pass on the clean deployable artifact β |
| > `ggml-cuda.so` rebuilt with the falsified single-block-per-tile decode hack reverted (stream-k |
| > restored), host binary relinked with the capture probes stripped (sha `9f51da03` β `7c696dde`), 2c fix |
| > preserved. `0078-dca.patch` regenerated from this tree (37 files, 224K): 2c fix present, zero |
| > `dca635` / `DCA635_FORCE_STREAMK` / `dca635_dump` / `dca635_capture_cb` tokens. |
| > |
| > β
**#617B debug instrumentation STRIPPED (2026-06-14).** The four inert artifacts that previously rode |
| > along on the fragmented (context-shift) path β a `DCA617B_FORCE_FRAG` env backdoor, two one-shot |
| > `[DCA617B] BUILD/FILL` stderr prints, and the `DCA617_SUCC_NULL/INTER_NULL` env blocks β were removed |
| > from `dca.cpp` (`build_attn_inp_dca`) and `llama-kv-cache.cpp` (`set_input_dca`). All were nullptr/no-op |
| > on the fast path and only reachable via explicit env vars, so removal changes **no** production behavior. |
| > Host `make` rebuilt the binary (sha `665bd58b`, was `7c696dde`); the **#634 ctx-shift gate was re-run on |
| > the stripped binary and still PASSES** (off + on2048 both PASS-coherent, 1 shift, monotone 1201β2400, |
| > byte-identical β Β§4e below). `0078-dca.patch` regenerated: **37 files, 220K, zero `DCA617*` tokens**, the |
| > #635 2c fix (`pqn[off] = 2*c`) intact, the #617B `is_fragmented`/`mask_succ` machinery intact. The |
| > `FORCE_FRAG` test hook (dense path on a contiguous cache, no n_ctx overflow needed) is preserved as a |
| > documented one-line re-add in `DCA_HANDOFF.md Β§10` optional tasks, not in production source. |
|
|
| ### 4e. Context-shift coherence (#617B / #634) β `dca_ctxshift_qwen3.sh` (solidpc, Qwen3-4B-Q4_K_M) |
|
|
| #617B restores correctness after a **classic context shift** (generation overflows `n_ctx` β `seq_rm` |
| + `seq_add` relabels `pos[]` in place, so cache index β position and the analytical INDEX bands select |
| the wrong cells β the model collapses to a token-loop). The fix is a sticky `is_fragmented` latch gating |
| a dense **position-based** SUCC/INTER/INTRA fill. Reachable **only on full-attention DCA archs |
| (qwen2/3/3.5)** past n_ctx β gemma4 (the 1M iSWA target) disables KV-shift entirely, so it never fragments. |
| |
| That fragmented fill lives in the same `set_input_dca` as the #635 `INTER-Q = 2c` change (the 2c fill is |
| unconditional, so it now governs the fragmented path too), so the gate was **re-run against the clean 2c |
| binary** (host sha `7c696dde`), 2026-06-14. A real shift is forced: ctx=8192, chunk=2048 (4 DCA chunks), |
| ~4.9k-token counting prompt + `ignore_eos` gen=6000 β n_past overflows 8192 β β₯1 classic shift. |
| |
| | arm | dca | shifts | gen ints | first (exp 1201) | longest run | maxrep | verdict | |
| |-----|-----|--------|----------|------------------|-------------|--------|---------| |
| | off | native (ref) | **1** | 1200 | 1201 | 1200 | 1 | **PASS-coherent** | |
| | on2048 | DCA modular shift | **1** | 1200 | 1201 | 1200 | 1 | **PASS-coherent** | |
| |
| Both count perfectly monotone **1201β2400** across the shift (`longest_run == gen_ints`, no repeats), and |
| DCA-modular matches native byte-for-byte. The 2c fix does not regress the context-shift path β **#634 closed.** |
| |
| --- |
| |
| ## 5. KV-quantization Γ DCA β full-vocab PPL + KL-divergence (#446, solidpc RTX 3090) |
| |
| `real_frac` (logit-equivalence) is **argmax-only** β it cannot distinguish genuine distribution- |
| faithfulness from argmax-coincident degradation. This section adds the whole-distribution instrument: |
| **teacher-forced full-vocab KL-divergence** over a fixed corpus. Per regime ({DCA-off, DCA-on}) we write |
| an **f16 logits reference** (`--kl-divergence-base`), then score every KV-quant candidate against it |
| (`--kl-divergence`). The corpus is teacher-forced, so every config decodes the *identical* token |
| sequence and `KL(candidate β f16)` is exactly aligned per token. This is the decisive answer to #446. |
|
|
| **Methodology.** Model **Qwen3-8B-Q8_0** (head_dim 128 β `innerq-scale-128`), corpus wikitext-2 test |
| slice (6402 tokens), `-c 2048`, 3 chunks, `--flash-attn on -ngl 99`, teacher-forced. DCA recipe |
| `--dca on --dca-chunk-size 1024`. Runner `.opencoti/ppl-kld-matrix.sh` on a **GPU-enabled standalone |
| perplexity binary** (`.opencoti/ppl-link.mk` + `ppl_main_gpu.cpp`, a `main()` wrapper that calls |
| `llamafile_has_gpu()` so the CUDA DSO loads and `-ngl` offloads β the stock `tools/perplexity/main.cpp` |
| never triggers that load, so vanilla perplexity is CPU-only). DCA was exposed to perplexity via a |
| **temporary** `arg.cpp` edit adding `LLAMA_EXAMPLE_PERPLEXITY` to `--dca`/`--dca-chunk-size` |
| (reverted after the eval; vendor tree restored to patch-stack state β the edit is *not* in any patch). |
| `KLD` = mean nats; `top%` = same-top-token agreement vs the f16 reference. |
|
|
| ### 5a. TurboQuant symmetric β the #446 decider |
|
|
| f16 reference (Final-estimate PPL): **noDCA 9.451 Β· DCA(chunk 1024) 9.441**. |
|
|
| | tier (`-ctk`=`-ctv`) | PPL(Q) noDCA | KLD noDCA | top% noDCA | PPL(Q) DCA | **KLD DCA** | top% DCA | |
| |----------------------|--------------|-----------|------------|------------|-------------|----------| |
| | turbo8 (8-bit) | 9.438 | 0.00173 | 98.2 | 9.463 | **0.00217** | 98.1 | |
| | turbo4 (4-bit) | 10.39 | 0.142 | 85.1 | 9.913 | **0.115** | 86.3 | |
| | turbo3 (3-bit) | 12.71 | 0.404 | 75.5 | 10.11 | **0.186** | 82.7 | |
| | turbo2 (2-bit) | **1584** | **5.596** | **16.1** | 14.71 | **0.647** | 67.5 | |
|
|
| **Verdict β `real_frac=0` for turbo-DCA is GENUINE, not argmax-coincident.** Under DCA the KLD is |
| **monotone in tier bits** (turbo8 β 0.002 near-lossless β turbo2 0.65 lossy-but-functional) β the |
| signature of a *faithful* `dca_lift_to_f16` dequant (#444 β #385 turboβf16 CPY kernel). The |
| whole-distribution metric corroborates the #446 argmax gate: the turbo-DCA distribution genuinely |
| tracks f16-DCA; where the argmax flips, the flips are near-ties, not degradation. |
| |
| **Bonus β the DCA f16-lift is the *better* turbo path.** For turbo2/3/4 the DCA KLD is **lower** than |
| the noDCA in-register FA-VEC read (turbo8 a tie). The extreme case is decisive: **turbo2 in the noDCA |
| in-register path is degenerate** β KLD 5.60, PPL Γ168 (1584), top 16% (~random) β while **turbo2-DCA |
| via the faithful lift is healthy** (KLD 0.647, top 67.5%). The argmax-tolerant L4 gate (#394) masked |
| this; full-vocab KLD exposes it. **Recommendation: turbo2 only via the dequant-on-lift path (DCA, or |
| the #444 quantized-DCA f16 slot) β never the in-register noDCA read.** (`.wolf/buglog.json` |
| turbo2-inreg.) |
|
|
| ### 5a-TCQ. Trellis-coded tiers (#447) β noDCA in-register, current DSO |
|
|
| TCQ (`turbo3_tcq`/`turbo2_tcq`) is **always-fuse** (no f16 dequant-on-lift yet), so the in-register |
| symmetric read IS the path under test. Same #446 instrument (Qwen3-8B-Q8, wiki, ctx2048/chunk1024), |
| **current DSO**, `TURBO_TCQ_ALPHA_V=1.0`. The turbo8/4/3/2 controls re-ran here **bit-identical** to |
| Β§5a β the TCQ Stage-1β4 shared-file edits did not move the non-TCQ tiers (second instrument |
| confirming "not a regression", beyond the real_frac controls). |
| |
| | tier (bpv) | PPL(Q) | KLD | sametop% | vs scalar sibling | |
| |---|---|---|---|---| |
| | turbo3_tcq (3.25) | 10.306 | **0.200** | 83.0 | **2Γ better than turbo3** (0.404); turbo4-class | |
| | turbo2_tcq (2.25) | 1113 | **5.215** | 18.6 | β turbo2 (5.60) β degenerate in-register | |
| |
| **turbo3_tcq is a genuine win.** 0.25 extra bits over scalar turbo3 buys a **2Γ KLD reduction** |
| (0.404β0.200), landing between turbo4 (0.142) and turbo3 β the trellis delivers, corroborating the |
| real_frac=0 needle gate with the whole-distribution instrument. **turbo2_tcq is NOT viable |
| in-register** (KLD 5.2, sametop β random): the 2-bit-class collapse is below the in-register floor |
| even on Qwen3-8B, exactly like scalar turbo2. The floor is sharper on small already-Q4 models β on |
| Qwen2.5-1.5B-Q4 even turbo3_tcq collapses (real_frac 1.0), tracking turbo3 (also 1.0 there). Whether |
| this in-register low-bit collapse is a **kernel defect** or **model fragility** is settled decisively by |
| the target-class run below: it is **fragility**. The f16 inverse-FWHT/trellis dequant-on-lift (mirrors |
| #385/#444) remains a worthwhile *optional* enhancement for small-model support, but it is **not** a |
| prerequisite for shipping TCQ on the actual targets. |
| |
| ### 5a-TCQ-27B. Target-class verdict (#447/#504) β Qwen3.6-27B, the model-vs-defect decider |
| |
| The Β§5a/Β§5a-TCQ numbers above are an **8B** instrument; the question they leave open β *is the |
| in-register low-bit collapse our kernel or the model?* β can only be answered on the model class the |
| [anbeeld.com KV-quant benchmark](https://anbeeld.com/articles/kv-cache-quantization-benchmarks-for-long-context) |
| actually used: **Qwen 3.6-27B**. Same harness (`.opencoti/tcq-ppl-27b.sh`), 320 KB wikitext, ctx 2048, |
| **InnerQ OFF** (proven inert), `TURBO_TCQ_ALPHA_V=1.0`, f16 KLD-base. Model: |
| `Qwen3.6-27B-Omnimerge-v4-Q4_K_M` (f16 base PPL 6.307). |
| |
| | tier (bpv) | PPL(Q) | KLD | sametop% | 8B KLD (320 KB) | anbeeld ref KLD | ours Γ· ref | |
| |---|---|---|---|---|---|---| |
| | turbo8 (8) | 6.317 | **0.0168** | 97.7 | 0.0025 | q8 0.0023 | 7.3Γ | |
| | q4_0 (4, scalar anchor) | 6.334 | 0.0250 | 96.8 | 0.028 | 0.0047 | 5.3Γ | |
| | turbo4 (4) | 6.349 | 0.0342 | 95.7 | β | 0.0048 | 7.1Γ | |
| | turbo3_tcq (3.25) | 6.389 | **0.0366** | 95.6 | 0.187 | 0.0080 | 4.6Γ | |
| | turbo3 (3) | 6.407 | 0.0470 | 94.7 | 0.350 | 0.0112 | 4.2Γ | |
| | turbo2_tcq (2.25) | 6.456 | **0.0709** | 92.7 | ~5.19 | 0.0231 | 3.1Γ | |
| | turbo2 (2) | 6.697 | 0.0960 | 90.8 | ~6.4 | 0.0362 | **2.65Γ** | |
| |
| **Verdict β it is the model, not the implementation.** turbo2 went from **PPL ~3000 / KLD 6.4 |
| (collapse) on the 8B** to **PPL 6.70 / KLD 0.096 (functional) on the 27B** β same code, same harness, |
| only the model changed. The entire ladder is monotone and functional (every cell within 0.4 PPL of the |
| 6.307 base), and **both TCQ tiers beat their plain-turbo siblings** (turbo3_tcq 0.0366 < turbo3 0.047; |
| turbo2_tcq 0.0709 < turbo2 0.096) β turbo2_tcq's 2.25 bpv lands exactly between 3-bit and 2-bit, as |
| designed. This reproduces the reference's qualitative behavior on the reference's own model class. |
|
|
| **On the anbeeld gap.** Our absolute KLDs run ~3β7Γ the reference because the eval *setup* differs |
| (ctx 2048 vs 64k, 320 KB vs full wikitext, f16 base vs bf16) β and this tax is **model-independent**: |
| the same-code `q4_0` anchor is 0.025 on the 27B and 0.028 on the 8B, both ~5Γ the reference's 0.0047. |
| Crucially, **turbo2's ratio-to-reference (2.65Γ) is the *lowest* in the ladder** β far from anomalous, |
| the most aggressive tier is the best-behaved relative to the reference. There is no defect signal at |
| any bit-width. |
|
|
| **The fragility gradient (why the 8B looked broken).** In-register symmetric KV tolerance scales with |
| model KV-redundancy: **Qwen2.5-1.5B-Q4** collapses at β€4-bit (turbo4/3/2/tcq all real_frac 1.0; turbo8 |
| fine); **Qwen3-8B-Q8** is fine at 3-bit-degraded but collapses at 2-bit (PPL 3000); **Qwen3.6-27B** |
| absorbs even 2-bit cleanly. The in-register `vec_dot` approximation's loss (cf bug-583: turbo2 |
| in-register KLD 5.60 vs faithful f16-lift 0.647 on *identical* data) is progressively absorbed by |
| larger models. **Conclusion for #504: the symmetric in-register noDCA path ships as-is on |
| 27B-class / Gemma-4 targets** β turbo2/turbo2_tcq included. The f16 dequant-on-lift is reclassified |
| from "shippability blocker" to "optional small-model support." RULER quality-in-use on Gemma-4-A4B |
| tracked separately. |
| |
| **DCA-on companion (same 27B, `--dca on --dca-chunk-size 1024`, per-regime f16+DCA base 6.304).** Under |
| DCA the turbo K/V route through the FAITHFUL f16 dequant-on-lift (#444/#446), not the in-register read β |
| isolating the lift path's quality at target scale. DCA is inert at ctx-2048 here (f16+DCA base 6.304 β |
| noDCA 6.307), so the cells are directly comparable to the noDCA ladder above: |
| |
| | tier | KLD noDCA (in-reg) | KLD DCA (f16-lift) | Ξ | |
| |---|---|---|---| |
| | q4_0 | 0.0250 | 0.0285 | +0.0035 (lift round-trip costs a hair on faithfully-read scalar KV) | |
| | turbo8 | 0.0168 | 0.0175 | +0.0007 (wash) | |
| | turbo4 | 0.0342 | 0.0316 | **β0.0026** | |
| | turbo3 | 0.0470 | 0.0436 | **β0.0034** | |
| | turbo2 | 0.0960 | 0.0896 | **β0.0064** | |
| | turbo3_tcq | 0.0366 | **composes (#533)** β΅ | f16-lift now exists β DCA composes (was rc=134 in this 2026-06-21 run) | |
| | turbo2_tcq | 0.0709 | **composes (#533)** β΅ | same | |
|
|
| β΅ **TCQ+DCA composition was RESOLVED by #533, verified 2026-06-30 (#505).** The `turbo{3,2}_tcqβf16` |
| dequant-on-lift kernels (`turbo-cpy.cu`, `opencoti-hook #533`) + `cpy.cu` dispatch + CPY `supports_op` |
| acceptance (`ggml-cuda.cu:5442`) were added when #533 fixed the TCQ prefill via an MMA-materialize, and |
| `dca.cpp`'s `dca_lift_to_f16` routes TCQ through them. Boot-compose check (solidpc 3090, |
| `Qwen3.6-27B-Omnimerge-v4-Q4_K_M`, `-ctk/-ctv turbo3_tcq --dca on --dca-chunk-size 1024`): **boots clean, |
| no rc=134, decodes coherently.** The KLD *value* under DCA was not re-measured (needs the `perplexity --dca` |
| arg.cpp edit; optional now that compose is proven) β cells show the noDCA KLD as the fidelity proxy. |
|
|
| **Reading.** (1) For turbo low-bit, the **f16-lift β₯ the in-register read at every bit-width, and the |
| margin widens as bits drop** (turbo4βturbo2: β0.003 β β0.006) β confirming the in-register `vec_dot` |
| approximation is the (small, on 27B) lossy element, exactly bug-583's thesis. The margin is small here |
| only because the 27B already absorbs the in-register loss; on the 8B the same lift rescued turbo2 |
| 6.4 β 0.647. (2) For scalars, noDCA is the quality path (DCA adds a lift round-trip) β the inverse of |
| turbo, matching Β§5b. (3) **TCQ+DCA composes as of #533** (was rc=134 SIGABRT in this 2026-06-21 run): TCQ |
| was then always-fuse with no `turbo_tcqβf16` kernel; #533 added exactly that kernel (for the prefill |
| MMA-materialize), which also gives DCA's `dca_lift_to_f16` a path to lift TCQ K/V β so the same #533 work |
| delivered both the prefill fix and TCQ+DCA composition. The remaining #505 item (small-model β€8B *decode* |
| through the lift) is optional/off-target per #504. (Harness `.opencoti/tcq-ppl-27b-dca.sh`; |
| matrix `27b-dca-matrix.tsv`. Ran via a temporary `arg.cpp` LLAMA_EXAMPLE_PERPLEXITY edit, since reverted.) |
|
|
| ### 5a-TCQ-CB. Codebook retrain & KLD-aligned objective campaign (#523β525, solidpc RTX 3090) |
|
|
| Goal: **lock the trellis codebook** before the deferred full PPL/KLD + tps + RULER campaign. Three |
| ordered steps on the Β§5a-TCQ-27B instrument (same binary/base/corpus: `perplexity` host build, |
| `Qwen3.6-27B-Omnimerge-v4-Q4_K_M`, 320 KB wikitext, ctx 2048, InnerQ OFF, `TURBO_TCQ_ALPHA_V=1.0`, |
| f16 KLD-base `base_f16_27b.dat`). Codebooks load **rebuild-free** via the Aβ² runtime path |
| (`TURBO_TCQ_CB` 512-entry / `TURBO_TCQ_W_CB` 1024-entry). Lower KLD = better. |
|
|
| **Bars to beat** (deployed = shipped buun codebook): turbo3_tcq deployed-512 **0.036648** Β· |
| v1-synthetic-1024 0.036972 Β· v1-synthetic-512 0.038815. Free-widen win condition: `turbo3_tcq_w` |
| (1024-state, real-27B-trained) KLD **< 0.036648** at identical 3.25 bpv. |
| |
| **Gate log** (`.opencoti/tcq-gate1.sh` β `.opencoti/ppl-kld/27b_fe_*.log`, `27b-fe.tsv`): |
| |
| | date | gate | cell | codebook | bpv | KLD | sametop% | verdict | |
| |---|---|---|---|---|---|---|---| |
| | 06-21 | 1 | tcq_ctrl_v2 | deployed-512 (anchor) | 3.25 | **0.036648** | 95.64 | β reproduces bar exactly β GPU/harness/binary sound | |
| | 06-21 | 1 | tcq_real512_v2 | real27b-512 (MSE) | 3.25 | 0.037559 | 95.40 | **> deployed** β fresh MSE retrain is *worse*; MSE exhausted (tail-share deficit) | |
| | 06-21 | 1 | tcq_real1024_v2 | real27b-1024 (MSE widen) | 3.25 | 0.037269 | 95.75 | **> deployed**, < real512 β MSE+free-widen still short of 0.036648; Step-2 needed | |
| | 06-21 | 1 | scalar_q5_0_rt | q5_0 (frontier) | 5.5 | _interrupted_ | β | cut at chunk 15 (~0.036 running) by session /exit 12:41 β NOT a fault; rerun as scalar_q5_0_rt2 in gate-2 | |
| |
| **Reading so far.** The anchor's exact reproduction (0.036648) certifies the post-reboot binary/DSO. |
| The MSE-512 retrain at **0.037559 > 0.036648** is the decisive negative: a from-scratch MSE codebook |
| on the real-27B dump **cannot beat** the deployed one, because the deployed codebook carries more |
| *tail* point-share than MSE optimization yields (post-FWHT marginals are βN(0,1), so diagonal/Fisher |
| weighting is near-dead and MSE over-resolves the centre). KLD rewards tail resolution β MSE is the |
| wrong objective. **The MSE-1024 free-widen confirms it: 0.037269** β better than MSE-512 (0.037559, so |
| doubling trellis states 512β1024 *does* help) but still **> deployed 0.036648**, and even > v1-synthetic-1024 |
| (0.036972). **Step 1 is settled negative:** no MSE codebook (512 or widened-1024) beats the shipped |
| tail-heavy one β the win must come from the *objective*, not the state count. Empirical green-light for |
| **Step 2** (KLD-aligned tail-weighted distortion `w(v)=1+Ξ»vΒ²`, Ξ»-sweep; gate-2 picks the Ξ» whose 1024 |
| codebook beats 0.036648). |
| |
| **Events.** *2026-06-21 11:30* β the **first** gate-1 attempt aborted mid-run when the **RTX 3090 |
| fell off the PCIe bus** (NVRM **Xid 79** β **Xid 154 "Node Reboot Required"**); every cell, incl. the |
| deployed anchor, hit `unspecified launch failure` β a **hardware fault, not a TCQ/codebook |
| regression** (DSO byte-identical, codebooks correctly sized, anchor used no override; **bug-621**). |
| Host rebooted, GPU recovered clean (xid=0), gate-1 re-running from 12:04 (numbers above are the clean |
| run). *Step 2* Ξ»-sweep (`w(v)=1+Ξ»vΒ²`, Ξ»β{0,0.5,1,2,4}, CPU, `.opencoti/tcq-step2-lambda-sweep.py`) |
| running in parallel. *Step 3* (asymmetric `turbo3_tcq_w`-K / `turbo2_tcq`-V wide-K/cheap-V, ~2.75 bpv) |
| pending a ~72-min CUDA rebuild (`.opencoti/step3-activation-edits.md`). |
|
|
| **Step-2 pivot β warm-start from the deployed codebook (#524).** Since Step-1 proved a *cold* MSE/widen |
| retrain can't reach 0.036648, the cold Ξ»-sweep was retired for the direct form: **seed the GLA trainer from |
| the deployed-512 codebook, then refine on real-27B with a tail-weight Ξ» that *holds* the deployed |
| tail-heaviness** (a Ξ»=0 refine would erode it β the MSE M-step pulls levels back to the centre). 512 seeds |
| from deployed directly; the 1024 widen seeds via coset-aware group-halving (`1024 state (g<<3)|pos β |
| deployed[((g>>1)<<3)|pos]`, duplicating each deployed level into the correct L=10 trellis pair). `restarts=1` |
| (stay in the deployed basin). Seed sanity: the loaded deployed seed measures tail>2.0=**9.8%** / >2.5=**3.7%**, |
| matching the shipped codebook exactly β domain/coset map verified. Trainer gained an `init_cb=` warm-start |
| hook; driver `.opencoti/tcq-warmstart.py`. This strictly dominates the cold sweep for "beat deployed" β it |
| *starts at* 0.036648 and can only hold or improve. |
|
|
| **Step-2 v2 β Ξ»=1 overshoots; small-Ξ» search (#524).** The first warm codebook trained, **ws1024 Ξ»=1.0**, |
| converged cleanly (held-in weighted-distortion fell monotonically 0.144β0.051 over 20 iters β *not* a |
| numerical divergence) to a codebook with **tail>2.0=89.2% / >2.5=87.0%** β ~9Γ the deployed's 9.8%/3.7%. |
| So the weighted-MSE objective's *true optimum* at Ξ»=1 is a tail-degenerate codebook that under-resolves the |
| centre where the KV bulk lives β it should hurt KLD badly (the high-Ξ» calibration point). The lesson: the |
| Ξ»βtail-share curve is brutally steep (Ξ»=0 MSE β ~8.5%, Ξ»=1 β 89%), so the deployed's mild ~10% tail sits at |
| *small* Ξ». The grid was corrected to **Ξ»β{0.05, 0.1, 0.2}** (1024-prioritised, the prize) + one Ξ»=0 |
| (MSE-refine) endpoint + one 512 check; the Ξ»=2 cells were dropped (would over-shoot worse). ws1024_w1 (Ξ»=1) |
| is kept and measured as the high-Ξ» endpoint. (Side-effects of the redirect: scalar_q5_0_rt2 was cut mid-run |
| when gate-2 v1 was stopped, re-queued as rt3 β LAST.) |
|
|
| **Gate-2 log** (`.opencoti/tcq-gate2.sh`, file-gated on each warm codebook as it's trained): |
|
|
| | date | cell | seed | Ξ» | bpv | tail>2.0 | KLD | sametop% | verdict | |
| |---|---|---|---|---|---|---|---|---| |
| | 06-21 | ws1024_w1 | deployedβ1024 | 1.0 | 3.25 | 89.2% | 0.037051 | 95.64 | > deployed β Ξ»=1 over-corrects | |
| | 06-21 | ws1024_w005 | deployedβ1024 | 0.05 | 3.25 | 88.0% | **0.034034** | 95.71 | **< deployed (β7.1%)** β | |
| | 06-21 | ws1024_w01 | deployedβ1024 | 0.1 | 3.25 | 88.5% | **0.036303** | 95.55 | < deployed (β0.9%, marginal) β | |
| | 06-21 | ws512_w01 | deployed-512 | 0.1 | 3.25 | 88.1% | 0.037681 | 95.50 | > deployed β 512 can't beat even warm; widen needed | |
| | 06-21 | ws1024_w02 | deployedβ1024 | 0.2 | 3.25 | 89.0% | 0.037259 | 95.75 | > deployed β Ξ»=0.2 over-corrects | |
| | 06-21 | **ws1024_w0** | deployedβ1024 | **0.0** | 3.25 | 87.8% | **0.033130** | 95.70 | **β
WINNER β < deployed (β9.6%); plain MSE-refine** | |
| | 06-21 | scalar_q5_0_rt3 | β (q5_0) | β | 5.5 | β | _running_ | β | frontier rerun, LAST (tangential) | |
|
|
| (Ξ»=2 cells dropped β superseded by the small-Ξ» finding above; the warm-start grid was re-run accordingly.) |
|
|
| **Verdict β free-widen WINS; tail-weight REJECTED (#524 closed).** The decisive result inverts the Step-2 |
| hypothesis. **`ws1024_w0` β the 1024-state free-widen, warm-started from deployed-512 and MSE-refined (Ξ»=0) on |
| real-27B β is the new best: KLD 0.033130 vs deployed 0.036648, a 9.6% improvement at identical 3.25 bpv.** This |
| is the plan's free-widen win condition (`turbo3_tcq_w` 1024-state, real-27B-trained, KLD < 0.036648), achieved. |
| KLD is **monotone in Ξ» from 0**: Ξ»0 (0.033130) < Ξ»0.05 (0.034034) < Ξ»0.1 (0.036303) < deployed < Ξ»0.2 (0.037259) |
| < Ξ»1 (0.037051) β so **every tail-weight Ξ»>0 regresses** and the `w(v)=1+Ξ»vΒ²` objective is rejected. Two |
| corrections to earlier-session reasoning: (1) Step-1's "MSE retrain can't beat deployed" (cold 0.0376) was an |
| **initialization** artifact β cold `init_coset` sticks in a tail-light basin (~8.5% tail-share); warm-starting |
| from the deployed codebook escapes into the real-data optimum (~88% tail-share, KLD 0.0331). (2) The ~88%-tail |
| warm codebooks are **not degenerate** (the earlier Ξ»=1 "degenerate" read was wrong) β real-27B whitened KV is |
| genuinely heavy-tailed, so plain MSE on it already resolves the tail; the synthetic-N(0,1) premise behind |
| tail-weighting was the error. 512 warm-refine (ws512_w01 0.037681) **cannot** beat deployed even warm-started β |
| the 1024 widen is necessary. **Ship candidate (PROVISIONAL): `real27b-1024-ws-w0.bin`** β pending the Confirmation below, which **reverses |
| this**. |
| |
| **Confirmation (#524) β the win is SEED-LUCK, not robust; bake PAUSED.** The paired re-run re-certified the |
| instrument (deployed re-anchors **0.036648** exactly; ws1024_w0 reproduces **0.033130**; ws1024_w005 0.034034 β |
| no path/env/transcription error). But the decisive cell, a **seed=2 re-train of the exact winning recipe** (1024 |
| widen, warm-start from deployed, MSE Ξ»=0), landed at **0.037671 β WORSE than deployed**, despite a *lower* |
| held-in MSE (em 0.026003 vs seed=1's 0.026241). Across two independent seeds the same recipe gives KLD |
| {0.0331, 0.0377} β a 0.0046 spread that *straddles* deployed 0.0366 and exceeds the apparent β9.6% margin. |
| **MSE held-in distortion does NOT predict KLD** (seed=2 has the *better* MSE yet the *worse* KLD), so the |
| trainer's objective cannot be trusted to pick the KLD-good basin, and seed=1's win is within seed-induced |
| variance β not a transferable quality gain. **Verdict reversed: no robust symmetric-3.25 bpv codebook |
| improvement demonstrated; the bake is PAUSED.** seed=1's codebook genuinely beats deployed *on this corpus*, |
| but shipping it as "β9.6% better" would overclaim a corpus-specific lucky draw. Proper path (rebuild-free): |
| train N seeds, select best by KLD on a TRAIN corpus, **VALIDATE on a HELD-OUT corpus**, ship only if the win |
| transfers. The Step-3 asymmetric `_w` kernel work (the bit-allocation frontier) is codebook-independent and can |
| proceed separately. |
|
|
| | confirm cell | KLD | vs deployed | note | |
| |---|---|---|---| |
| | conf_deployed | 0.036648 | β | re-anchor, exact reproduction (instrument OK) | |
| | conf_ws1024_w0 (seed=1) | 0.033130 | β9.6% | reproduces bit-identically | |
| | conf_ws1024_w005 (seed=1) | 0.034034 | β7.1% | reproduces | |
| | **conf_ws1024_w0_s2 (seed=2)** | **0.037671** | **+2.8%** | **same recipe, worse than deployed β win is seed-luck** | |
| |
| **Best-of-N + held-out validation (#524) β DEFINITIVE: the codebook win is train-corpus OVERFIT; deployed |
| generalises best.** Trained N=6 Ξ»=0 warm-start seeds, measured each on the train corpus (wiki.test.mid) and on a |
| genuine HELD-OUT corpus (wiki.valid.mid, own 18 GB f16 base). Held-out deployed anchor = **0.045878**. |
| |
| | seed | train-KLD | held-out KLD (deployed 0.045878) | |
| |---|---|---| |
| | s1 | 0.033130 (best on train) | 0.048497 (+5.7% β near-WORST on held-out) | |
| | s6 | 0.034048 | 0.050606 (worst) | |
| | s5 | 0.035175 | 0.045300 | |
| | s2 | 0.037671 | 0.045125 | |
| | s3 | 0.037959 (near-worst on train) | 0.044793 (BEST on held-out) | |
| | s4 | 0.038335 | 0.047197 | |
| | **mean** | 0.036053 (βdeployed) | **0.046920 β WORSE than deployed 0.045878** | |
| |
| Train-KLD **anti-correlates** with held-out (Spearman Ο β **β0.6**): selecting a codebook by train-KLD actively |
| picks the *worst*-generalising one. seed=1's "β9.6%" is **+5.7% worse** than deployed on held-out; the |
| retrained mean is worse than deployed on held-out. The apparent gain was pure overfit to the |
| activation-dump/eval-corpus distribution. **Verdict (FINAL): no robust, transferable symmetric-3.25 bpv codebook |
| improvement exists; the deployed (buun) codebook is near-optimal and generalises better than any real-27B |
| retrain. Ship deployed UNCHANGED β the codebook front is CLOSED.** The remaining "improve TCQ" lever is the |
| asymmetric bit-allocation frontier (Step 3, codebook-independent). Methodological lesson: a single-corpus KLD |
| "win" on a quant codebook is overfit-prone β ALWAYS held-out-validate before shipping (here it flipped a |
| β9.6% "win" into a +5.7% regression). |
| |
| **Step 3 β asymmetric TCQ frontier (#525): K-dominance CONFIRMED (modest, transfers); asym = LINEAR (not |
| Pareto); wide-K `_w`-asym BUGGY + redundant.** Built the `turbo3_tcq_w`/`turbo2_tcq` FA-VEC instances (+ reverse) |
| + both `both_tcq` predicates + codebook loaders (6 additive edits; dual-DSO byte-identical; 8 new `vec_case` |
| instances `nm`-verified). Frontier on TRAIN (wiki.test.mid) and HELD-OUT (wiki.valid.mid), baked codebooks: |
|
|
| | K / V | ~bpv | train KLD | held-out KLD | |
| |---|---|---|---| |
| | turbo2_tcq / turbo2_tcq | 2.25 | 0.070933 | 0.087088 | |
| | turbo2_tcq / turbo3_tcq (strong-V) | 2.75 | 0.056672 | 0.073838 | |
| | turbo3_tcq / turbo2_tcq (strong-K, #513) | 2.75 | 0.051501 | **0.066634** | |
| | turbo3_tcq / turbo3_tcq (deployed) | 3.25 | 0.036648 | 0.045878 | |
|
|
| (1) **K-dominance holds + transfers** β strong-K beats strong-V by ~10% on BOTH corpora (train 0.0515 vs 0.0567; |
| held-out 0.0666 vs 0.0738), confirming anbeeld's "K precision dominates the tail." (2) **But asym is NOT a Pareto |
| win** β the best 2.75-bpv point (strong-K) lands ~exactly on the linear 2.25β3.25 interpolation (held-out interp |
| 0.0665 vs measured 0.0666); strong-V sits *above* the line (strictly worse). So asym yields a valid intermediate |
| operating point (always strong-K orientation), not free quality. (3) **The NEW wide-K `_w`-asym is BROKEN** β |
| KLD 1.214 (train) / 1.296 (held-out), byte-identical with/without a real 1024-codebook override β decode-LOGIC |
| bug (reads the wrong codebook symbol/size for the mixed-width pair), NOT seeding (bug-629). Symmetric `_w` with |
| the baked placeholder works (0.037125 β deployed turbo3 0.0366). (4) **`_w` is redundant anyway** β 1024-state β |
| 512-state quality (symmetric `_w` 0.0371 β turbo3 0.0366; consistent with the best-of-N codebook-overfit |
| finding), so a *fixed* `_w`-asym would merely reproduce `turbo3/turbo2` (0.0666) β no gain over the existing |
| #513 asym. **Verdict (FINAL, across all three "improve TCQ" avenues): the deployed `turbo3_tcq` (symmetric) + |
| existing `turbo3_tcq/turbo2_tcq` asym (#513) are ALREADY at the TCQ frontier; none of {codebook retrain, free |
| state-widen, wide-K asym} beats it. The wide-K `_w`-asym instances (#525) are buggy + redundant β revert (or |
| gate off) β only the explicit opt-in `-ctk turbo3_tcq_w -ctv turbo2_tcq` combo is affected; the default/shipped |
| TCQ paths are untouched and validated.** |
| |
| ### 5a-TCQ-RULER. Primary-target quality-in-use (Gemma-4-A4B, #447/#501) |
| |
| The 27B PPL/KLD above is **head_dim 128**; the actual primary target is **Gemma-4-A4B** |
| (head_dim 256/512). The PPL/KLD instrument was finally pointed at it on 2026-06-21 and found |
| **INVALID on these Gemma merges** (q8_0 control Same-top 68% β see Β§5a-TCQ-A4B-KLD below); so the |
| primary-target evidence rests on RULER, not PPL. RULER retrieval, forced |
| `KVTYPE_OVERRIDE=turbo3_tcq` (ours-only), model `gemma-4-A4B-98e-v6-coder-it-Q4_K_M`, 5 samples |
| (256k cell = 1), `niah_single_1` (decisive needle metric) + `vt` (NS=5-noisy): |
|
|
| | task | 4k | 32k | 256k | |
| |---|---|---|---| |
| | `niah_single_1` | **100%** | **100%** | **100%** (measured β see below) | |
| | `vt` | 100% | 60% (noisy) | β (skipped) | |
|
|
| `niah_single_1` is clean at every context: turbo3_tcq's trellis decode holds the needle on Gemma's |
| head_dim 256/512 with **zero degradation vs cached vanilla** (vanilla niah=100 at all ctx). `vt`@32k=60% |
| is within the cached-vanilla noisy band (vt 60β80, NS=5 task), not a regression β `niah` is the correctness |
| signal. |
|
|
| **The 256k cell is a measured 100%, and its story is a clean throughput-vs-correctness separation |
| (bug-594).** At the harness default `--http-timeout 1200`, niah@256k scored **0%** β but every sample hit |
| the read-timeout mid-prefill (steady monotonic prompt-processing, server healthy, clean cancel), because |
| turbo3_tcq is **always-fuse / resident in-register** (KV fit in ~17 GiB) and *cannot* ride the f16 |
| streaming/dequant-on-lift path β so its prefill runs ~25β8 tps (O(nΒ²)) where f16-streaming did the whole |
| 256k cell in 1208 s. Re-running one sample at `--http-timeout 36000` (the `HTTP_TIMEOUT` env added to |
| `run-baseline.sh`) β **100%**, with the gold needle `5663623` exactly recovered as completion `' 5663623.'`, |
| `gen_secs=20879` (~5.8 h prefill). So the 256k decode is **byte-correct, just throughput-bound in-register**; |
| the perf cliff was the #505 gap β the f16 trellis dequant-on-lift now **exists** (#533: `turbo{3,2}_tcqβf16`, |
| verified composing under DCA 2026-06-30), so the prefill MMA-materialize path is available; a fresh 256k |
| wall-time re-measure on the post-#533 DSO is deferred (optional). Do **not** read a 256k turbo3_tcq 0% as a |
| trellis bug β check `samples.jsonl` `reason` for `ReadTimeout` first. |
| |
| **Trellis code review (#447, collaborative gate).** The Viterbi right-shift trellis was traced |
| end-to-end and is algebraically correct (state `ns=(prev>>k)|(out<<6)`, free initial state, 6-init-bit + |
| 128Γk-bit packing β decoder window at `bit_pos=t*k`); encodeβdecode codebooks verified byte-identical |
| (512 + 256 vals); V-alpha applied once (encode-baked, decode symbol inert); launcher/bt-buffer sound; the |
| non-FA GET_ROWS dequant is dead code. Two latent footguns logged (not live bugs): **`TURBO_TCQ_CB` |
| overrides only the encode codebook, not the decode `_fattn` copy** (asymmetric β custom-codebook runs |
| would corrupt); and **K/V split is stringly-typed on `strncmp(dst->name,"cache_k_",8)`** (an upstream |
| KV-tensor rename would silently flip K-alpha onto V). Both are cheap one-line hardenings, deferred. |
| |
| **TCQ gate verdict:** correct **and** quality-validated on the primary target β shippable on |
| Gemma-4-A4B/27B-class. Resident contexts (β€~32k) are correct *and* fast; 256k is correct, and the prefill |
| MMA-materialize that removes the in-register O(nΒ²) cliff now exists (#533, the #505 lift) β a 256k wall-time |
| re-measure is the only deferred item. |
|
|
| > **WS2 update (#629, DEFAULT-ON).** The in-register decode throughput above is now superseded for |
| > the DCA-on serving path by the WS2 turbo-V in-register kernel: the relevant A4B tcq @256k decode |
| > numbers are now the **Β§5x** WS2 cells (A4B turbo3_tcq **64.5 tps**, turbo2_tcq **66.8 tps**; |
| > +72% / +68% vs the f16-lift ref), each niah 100 + logit-lossless (`real_frac 0`). Read the Β§5x |
| > tcq rows, not the pre-WS2 in-register figures, for current turbo3_tcq/turbo2_tcq decode-in-use. |
| |
| ### 5a-TCQ-A4B-KLD. PPL/KLD instrument is INVALID on Gemma-4-A4B merges (#447, bug-631) |
| |
| The deferred "quantitative KLD on the primary target" cell was finally run (2026-06-21, RTX 3090, |
| `perplexity` host build, `google_gemma-4-26B-A4B-it-Q4_K_M`, wiki.test.mid 320 KB, ctx 2048, f16 |
| KLD-base, InnerQ OFF, `TURBO_TCQ_ALPHA_V=1.0`). It does **not** produce usable numbers, and the |
| **q8_0 near-lossless control proves why**: |
| |
| | KV tier | Mean KLD | Same-top p | (expected on a sane instrument) | |
| |---|---|---|---| |
| | q8_0 (near-lossless **control**) | 0.957 | **68.3%** | ~0.02 / ~99% | |
| | q6_0 | 1.080 | 66.5% | β | |
| | turbo3_tcq (deployed) | 2.264 | 51.2% | β | |
|
|
| The **f16 base itself scores PPL β 43910** on raw wikitext (vs the 27B general-merge's **6.69** on |
| the *same* harness β proving the harness is fine, the model isn't). These omnimerge coder/instruct |
| Gemma-4 GGUFs sit in a **near-uniform high-entropy regime** on prose (CE β 10.7 nats out of a 256k |
| vocab's 12.45 nats ceiling): the top token is barely separated from the runner-up, so **Mean-KLD is |
| amplified** (a near-flat reference yields large KL for any perturbation) and **Same-top is unstable** |
| (argmax is coin-flippy even under q8_0's near-zero noise β 68%, not 99%). Both metrics here measure |
| **distribution flatness, not quant fidelity.** Ruled out as causes: flash-attn/iSWA (FA on==off, both |
| garbage), the specific GGUF (google-official *and* the RULER-validated v6-coder both garbage β v6 |
| worse at 142410), and BOS (`--override-kv tokenizer.ggml.add_bos_token=bool:true` left f16 PPL |
| **byte-identical** to 6 decimals). The tier *ordering* is still sane (turbo3_tcq 51.2 < q6_0 66.5 < |
| q8_0 68.3 same-top β lower-bit = noisier), so the instrument is non-random, merely **absolute-invalid**. |
|
|
| **Methodology rule (load-bearing):** the **q8_0 (near-lossless) control is the validity gate for any |
| KLD/same-top harness** β if q8_0 Same-top isn't ~99% (or KLD isn't ~0.02), the model/corpus is in a |
| bad regime and *every* number from that run is meaningless; abort and switch instrument. This is |
| exactly *why* opencoti validates Gemma KV-quant via **RULER niah** (high-confidence needle tokens, |
| immune to the flat-distribution instability β niah=100% above), never PPL. The quantitative TCQ-fidelity |
| evidence remains the **27B head_dim-128** KLD (Β§5a-TCQ-27B). No primary-target *fidelity* number can be |
| drawn from PPL; the primary-target *correctness* claim stands on RULER. The 18 GB garbage f16 base was |
| deleted (reclaimable); cell logs kept as evidence (`.opencoti/ppl-kld/a4b_a4b_*.log`). |
| |
| ### 5a-TCQ-FP64. Encode precision β fp64-selectable Viterbi (#447/#506, `TURBO_TCQ_FP64`) |
| |
| The buun trellis encodes in fp32 end-to-end. Because a Viterbi trellis is a chaotic system β fp precision |
| can flip which path wins at near-tie costs β we added a **compile-time fp64 accumulator path** for the |
| *encode* Viterbi (`k_set_rows_turbo{3,2}_tcq` templated on `acc_t`; env `TURBO_TCQ_FP64=1` dispatches the |
| `double` instantiation). Decode stays fp32 (it reads stored integer states; fp64 on the FA hot path = ~1/64 |
| throughput for ~zero quality). The point was not a guaranteed win but a **measurement**: is the fp32 trellis |
| leaving quality on the table at the path-selection margin? Same 8B instrument (Qwen3-8B-Q8, wiki, |
| ctx2048/chunk1024, `TURBO_TCQ_ALPHA_V=1.0`), fp64 DSO. |
| |
| | tier | KLD fp32 | KLD fp64 | Ξ | PPL(Q) fp32βfp64 | sametop% fp32βfp64 | |
| |---|---|---|---|---|---| |
| | turbo3_tcq | 0.200389 | 0.204047 | **+0.0037 (+1.8%)** | 10.306 β 10.212 | 82.99 β 82.76 | |
| | turbo2_tcq | 5.215325 | 5.258573 | **+0.0432** | 1113 β 1154 | 18.61 β 18.83 | |
| |
| Two clean conclusions. **(1) fp32 is byte-faithful and the templating is inert.** With `TURBO_TCQ_FP64` |
| unset, the rebuilt DSO reproduces the Β§5a-TCQ matrix to **all six decimals** (turbo3_tcq 0.200389, |
| turbo2_tcq 5.215325) *and* the turbo8/4/3/2 controls bit-identical β `acc_t=float` is the default, so every |
| existing launch resolves to the original kernel (byte-identity by construction, confirmed by measurement). |
| **(2) fp64 changes the path but does not improve quality β it marginally *regresses* KLD.** The fp64 encode |
| is the true MSE-optimal Viterbi path in the FWHT-whitened domain, but **MSE-optimal β KLD-optimal**: |
| minimizing squared reconstruction error is a proxy, and fp32's rounding happens to land on paths a hair |
| *better* on the downstream whole-distribution metric. The shift is real and measurable (sametop moves |
| ~0.2 pp, KLD ~2% on turbo3_tcq) β confirming the trellis *is* precision-sensitive at the margin β but it is |
| in the non-improving direction. Critically, fp64 KLD stays in-regime (0.204, no catastrophe), proving the |
| fp32 decode reads fp64-encoded symbols correctly (no encodeβdecode break). |
| |
| **Verdict:** **fp32 is confirmed sufficient** and remains the default (byte-faithful to buun). |
| `TURBO_TCQ_FP64` is retained as an **opt-in audit oracle** β the canonical "true optimal path" reference for |
| the precision-sensitivity question β not a quality lever; do not enable it for production. (`fmad` left at |
| its default: fp64 FMA is *more* accurate via single rounding, the opposite of the chaotic-SDM bit-repro case |
| where `--fmad=false` matters. Matrices: `.opencoti/ppl-kld/tcq-matrix-fp32.tsv` / `-fp64.tsv`.) |
| |
| **Decode V-accumulator precision (#547) β closed as moot, F32 is sufficient (2026-06-30).** #547 proposed an |
| fp32/fp64 lever for the *decode-side* V accumulator (distinct from the encode Viterbi above), premised on |
| long-ctx accumulation drift pairing with sparse-V. Three facts close it without a build: (1) the FA-VEC |
| decode V accumulator is **already F32** (`float2 VKQ`, `fattn-vec.cuh:207`; `KQ_sum` is `float`), not f16 β |
| there is no precision to recover by going fp32, and online-softmax rescales per tile so the combine is |
| length-stable by construction; (2) F32 accumulation is **already proven correct at 256k** β turbo3_tcq (the |
| most aggressive tier) holds the needle exactly, niah=100 at 256k (Β§5a-TCQ-RULER), with no observed drift; |
| (3) the motivating premise ("pairs with sparse-V at long ctx") **dissolved** β sparse-V is an iSWA-only win |
| (#546) whose global V-cache is *bounded* (β€1536-cell window class), so accumulation depth does not grow with |
| ctx where sparse-V actually runs. An fp64 decode accumulator would cost ~1/64 throughput on the FA hot path |
| for **zero** measured correctness gain. Not built; **closed as F32-sufficient**. |
| |
| ### 5a-TCQ-ENC. Encode throughput β warp-synchronous Viterbi (#533/#538, solidpc RTX 3090) |
| |
| The TCQ encode (`k_set_rows_turbo{3,2}_tcq`) runs as a **separate kernel on every KV write** β once per |
| prompt group at prefill, once per token at decode β so its cost lands directly on prefill tps. ncu on the |
| original 512-thread/`__syncthreads` design (`k_set_rows_turbo3_tcq`, DSO `e9e7f864`) found it |
| **latency-bound on the 128-step block-barrier chain**: SM throughput 25%, **DRAM 0.1%**, occupancy 33%, |
| 39 Β΅s/launch β neither compute- nor memory-bound, just stalling at barriers in lockstep (16 warps hit each |
| of 128 `__syncthreads` together; ~3 blocks/SM β SM idle ~75%). That is exactly why the earlier #538 |
| register/warp-shuffle pass (occupancy + bank-conflict tuning) moved nothing (β3.6%): the kernel was never |
| occupancy- or memory-bound. |
| |
| **Fix (#533):** collapse each 128-element group from a 512-/256-thread block to **one 32-thread warp** |
| (turbo3: 16 states/lane; turbo2: 8 states/lane). The contiguous stateβlane map makes each trellis group's |
| predecessors fall entirely within one lane, so the per-step predecessor-min is **thread-local** (no |
| shuffle); a 64-entry per-warp smem broadcast under `__syncwarp` replaces the block barrier; the backtrace |
| moves to global (frees smem for occupancy). `TCQ{3,2}_WPB=8` warps/block run at *different* DP steps |
| instead of in lockstep, hiding the per-group serial latency. **Zero `__syncthreads`** in the new kernel |
| (ptxas-confirmed). Reuses #538's warp-shuffle min primitive as the building block. |
| |
| Validated **byte-equivalent offline before the rebuild**: the round-trip harness |
| (`.opencoti/tcq-warp-enc-full.cu`, decode(encode(x)) vs the WHT reference on 4096 random-Gaussian groups) |
| gives the warp encode cosine **1.00000 vs the old 512-thread design** (full encode **3.74Γ**; the DP alone |
| **7.09Γ**). |
| |
| **Prefill tps (A4B Q4_K_M, ~3682-tok prompt, `m536-prefill-tps.sh`):** |
| |
| | tier | old (#538, `e9e7f864`) | warp (#533, `4644b66a`) | Ξ | |
| |---|---|---|---| |
| | f16 (shield) | 2263 | 2296 | +1.5% (parity) | |
| | scalar_q8 (shield) | 2550 | 2532 | parity (run noise) | |
| | turbo3 non-TCQ (shield) | 2541 | 2520 | parity | |
| | **turbo3_tcq** | **1421** | **2189** | **+54% (+768 tps)** | |
| | **turbo2_tcq** | **1928** | **2283** | **+18.5% (+355 tps)** | |
|
|
| (Both warp tiers landed in one DSO `4644b66a`; turbo3_tcq held 2189 byte-stable across the turbo3-only |
| `9ef13bdc` and the turbo2-build `4644b66a`, confirming the turbo2 source change is isolated.) turbo3_tcq |
| recovers the entire #534β536-era regression (1456β1421) **and** the historical 1798 mark, landing within |
| ~13% of the turbo3 non-TCQ ceiling (2536) β the residual is the encode work that remains (now ~3.7Γ |
| cheaper), not barrier stall. turbo2_tcq, lighter at 256 states, lands *above* turbo3_tcq at 2283 (~9% off |
| the ceiling). f16/turbo3 unchanged confirm no collateral regression. Both warp encodes clock ~3.75Γ |
| offline (256-/512-thread β warp: turbo2 0.895β0.239 ms; turbo3 likewise). |
|
|
| **Correctness β turbo3_tcq (live, `m533-kld-gate.sh`, Qwen3-8B-Q8, ctx2048, DSO `4644b66a`):** turbo3_tcqβf16 |
| KLD **0.186** (Same-top 84%), matzβfused 0.058, regression-shield plain-turbo3βf16 0.350 β all in the |
| expected class, no regime change. Consistent with the offline byte-equivalence: the Viterbi path and stored |
| symbols are **identical** to the old 512-thread design (decode cosine 1.00000); only the norm/recon |
| reductions reorder at the ~1e-7 fp level, so quality is unchanged by construction. (The 0.186 here vs the |
| Β§5a-TCQ-FP64 matrix's 0.200389 is a harness-config difference β gate corpus/chunking β not an encode change; |
| the gate is internally A/B-consistent.) |
|
|
| **Correctness β turbo2_tcq (offline round-trip + live):** turbo2 is **fidelity-equivalent but not |
| byte-identical** to the 256-thread reference. The offline harness (`.opencoti/tcq-warp-enc-t2.cu`, 4096 |
| Gaussian groups, decode(encode) vs WHT-ref) gives the warp encode mean cosine **0.96002** (min 0.944) vs the |
| 256-thread reference's **0.95989** (min 0.935) β equal quantization fidelity β while warp-vs-256 decode |
| cosine is 0.998969 with **7.2% of groups choosing a different path**. Those differences are **benign |
| tie-break convention**, not suboptimality: turbo2 is 2-bit/256-state (coarse β frequent exact cost-ties), |
| and the warp argmin breaks ties by lowest-index where the 256-thread reduction breaks them by shuffle-order; |
| both land on *equally* MSE-optimal paths (proven by the identical mean fidelity, and the warp's worst case |
| 0.944 β₯ the reference's 0.935). turbo3 showed ~0% path divergence because 3-bit/512-state has far fewer ties. |
| |
| **Real-target regression gate (decisive, `m533-27b-tcq-regress.sh`, Qwen3.6-27B, ctx2048, vs cached |
| `base_f16_27b.dat`):** on the model where turbo2_tcq is *usable*, the warp encode shows **no quality |
| regression** β turbo2_tcqβf16 KLD **0.069940** vs the documented old-encode baseline **0.070933** (Ξ β0.001, |
| marginally *better*), Same-top **92.65** vs 92.67. The in-run control turbo3_tcq lands KLD 0.034606 / Same-top |
| 95.54 with **PPL(base) = 6.297831 exact**, confirming the instrument (base+model+corpus+env all correct). So |
| the tie-break path differences provably **do not perturb a real-model distribution** β exactly as expected |
| (27B is not a chaotic regime). The live **8B** KLD did move within-regime (turbo2_tcqβf16 5.48β5.29, |
| Same-top ~21%), but 8B turbo2 is a garbage regime (unusable either way); that shift is two equally-valid |
| quantizations diverging where it doesn't matter, *not* a regression β the 27B gate is the one that counts, |
| and it passes. (turbo3_tcq's 27B KLD differs β0.002 from its Jun-19 baseline; that is **not** the warp encode |
| β byte-identical, 8B KLD 0.185718 identical across both warp DSOs β but the cumulative #534β537 decode |
| smem-codebook ports that postdate that baseline; both tiers landing slightly better is consistent with them.) |
|
|
| Both warp encodes are a **pure throughput optimization**. Source lives in `turbo-tcq-cuda.cuh` + |
| `set-rows.cu` (additive; bt always global, `use_shared_bt` ignored; `acc_t` fp64 path preserved). |
|
|
| ### 5a-TCQ-DEC. Decode throughput in use β turbo3_tcq Γ MTP (#553, A4B v6-coder Q4_K_M, solidpc, 2026-06-24) |
| |
| The shippable decode story for the extreme tier is **turbo3_tcq + assistant-MTP**. Measured on coherent |
| in-domain output (chat coding prompt, `/v1/chat/completions`, `--temp 0`, 256 gen tok, graphs default, |
| `coherent-mtp.sh`): |
| |
| | KV tier | decode tok/s (MTP-off) | decode tok/s (MTP-on) | MTP gain | draft acceptance | |
| |---|--:|--:|--:|--:| |
| | f16 | 88.95 | 112.37 | +26% | 0.787 | |
| | turbo3 | 69.66 | 94.44 | +36% | 0.827 | |
| | **turbo3_tcq** | 56.63 | **75.63** | **+34%** | 0.652 | |
| |
| MTP is the largest single decode-tps lever for turbo3_tcq (mtp.md Β§3.0/Β§3.0a), and it composes with CUDA |
| graphs (graphs survive turbo3_tcq + sparse-V: +13.4% / +13.1% on the current DSO, matching decode-levers L6). |
| The single-prompt turbo3_tcq acceptance (0.65) is **prompt noise, not a deficit**: over 3 diverse coherent |
| prompts (`coherent-mtp-multi.sh`) the means are f16 0.745 / turbo3 0.757 / **turbo3_tcq 0.703** (~0.05 spread, |
| within each tier's own variance; turbo3_tcq even beat turbo3+f16 on one prompt). No spec bug β turbo3_tcq is |
| the *more* accurate tier (KLD 0.0346 < turbo3 0.047, Β§5a-TCQ-27B). |
| |
| > β οΈ **Measure decode-tps/acceptance on coherent output only.** An instruction-less prompt (raw RULER/WikiText |
| > haystack β `/completion`) collapses greedy decode into degenerate repetition where acceptance is meaningless |
| > noise and even f16 shows greedy MTP-off β MTP-on. An earlier haystack sweep mis-read turbo3_tcq acceptance |
| > at 0.25 / "MTP hurts turbo" β a harness artifact (bug-710), *not* a TCQ kernel/codebook bug; turbo3_tcq is |
| > the more accurate tier (Β§5a-TCQ-27B, KLD 0.0346 < turbo3 0.047) and cannot legitimately accept worse. |
| > Gemma-4 thinking-coder writes generation to `choices[0].message.reasoning_content` (`.content` is empty). |
| > Latent: `TURBO_TCQ_CB` override reaches only the FA-VEC `__constant__`, not the MMA-lift copy |
| > (`d_turbo3_tcq_cb_cpy`); harmless by default (baked tables byte-identical) but would split draft/verify |
| > decode during an Aβ² codebook sweep. |
| |
| ### 5b. Validated-tier full matrix β size Β· fidelity Β· throughput Β· quality (#529, cross-instrument) |
| |
| The comprehensive scalar-vs-turbo, symmetric-vs-asymmetric comparison on the **shippable** tiers, post |
| `turbo3_tcq_w` removal (#527, DSO sha `7f769e1d`). Two instruments by necessity (see Β§5a-TCQ-A4B-KLD / |
| #528): **fidelity = PPL/KLD on Qwen3.6-27B** (head_dim 128, the only valid KLD instrument β Gemma-4-A4B |
| raw-PPL is ~44k garbage), **quality-in-use = RULER niah on Gemma-4-A4B-98e-v6-coder** (the deployed |
| primary target). tps on both. **DCA split only where it bites (32k+):** DCA is ~inert at short ctx, and |
| **TCQ tiers now compose under DCA (as of #533; was rc=134 pre-#533, verified 2026-06-30)** β the #533 |
| `turbo_tcqβf16` lift gives DCA's `dca_lift_to_f16` a path, so DCA |
| (which needs the lift) cannot compose; scalar + non-TCQ-turbo compose via the #446 lift. 256k/512k RULER |
| deferred to **bs2** (Blackwell) per plan. _Status: **#529 COMPLETE** β size Β· noDCA fidelity Β· throughput |
| (27B+A4B) Β· RULER niah all LIVE on the all-quants GPU FA-VEC DSO (#531). DCA-fidelity column is n/a on the |
| `perplexity` instrument (server-only flag, β΄); DCA composition proven server-side (#444) + Β§1. 256k/512k |
| RULER β bs2._ |
|
|
| > **WS2 DCA-on throughput column (#629).** The throughput numbers in this matrix are the **noDCA |
| > in-register / f16-lift** decode path. For the **DCA-on @256k** serving path the shippable turbo/TCQ |
| > tiers now decode via the WS2 in-register turbo-V kernel (**DEFAULT-ON**), a **+68β95%** decode win |
| > over the f16-lift ref, retrieval-lossless (niah 100) β see **Β§5x** for the full D512 (A4B/31B) + |
| > D256 (omni27/qw35a3) matrix. In-register turbo/TCQ-V is a decode WIN with DCA-on at long ctx, the |
| > opposite of the noDCA short-ctx "turbo costs decode vs scalar" floor (Β§5a-TCQ-DEC, decode-levers.md). |
|
|
| **Size β bytes/value (KV stored size, both K and V) vs f16.** Analytical from block layout; asymmetric = |
| mean(K,V). |
|
|
| | config | ctk/ctv | bpv | size vs f16 | |
| |--------|---------|-----|-------------| |
| | f16 (ref) | f16/f16 | 16.0 | 100 % | |
| | q8_0 | q8_0/q8_0 | 8.5 | 53.1 % | |
| | q6_0 | q6_0/q6_0 | 6.5 | 40.6 % | |
| | q5_0 | q5_0/q5_0 | 5.5 | 34.4 % | |
| | q4_0 | q4_0/q4_0 | 4.5 | 28.1 % | |
| | q8_0K / q6_0V (asym) | q8_0/q6_0 | 7.5 | 46.9 % | |
| | q5_0K / q4_0V (asym) | q5_0/q4_0 | 5.0 | 31.3 % | |
| | turbo3_tcq | turbo3_tcq/turbo3_tcq | 3.25 | 20.3 % | |
| | turbo2_tcq | turbo2_tcq/turbo2_tcq | 2.25 | 14.1 % | |
| | t3tcqK / t2tcqV (asym) | turbo3_tcq/turbo2_tcq | 2.75 | 17.2 % | |
| | t2tcqK / t3tcqV (asym) | turbo2_tcq/turbo3_tcq | 2.75 | 17.2 % | |
|
|
| **Fidelity β Qwen3.6-27B, full-vocab PPL + KLD vs cached f16 base** (`perplexity` host build, ctx 2048, |
| `wiki.test.mid.raw`, `base_f16_27b.dat`; f16 ref PPL 6.298). KLDβ, Same-topβ. **DCA column n/a on this |
| instrumentβ΄** β the `perplexity` tool has no `--dca` flag (DCA is server-only); composition with quantized KV |
| is proven server-side, not via full-vocab KLD. TCQ now composes under DCA (as of #533); its DCA-KLD value |
| remains server-only by the instrument limitation (not a TCQ block). |
|
|
| | config | ctk/ctv | PPL(Q) | KLD noDCA | top% noDCA | KLD DCA | top% DCA | |
| |--------|---------|--------|-----------|------------|---------|----------| |
| | q8_0 | q8_0/q8_0 | 6.313 | 0.01760 | 97.66 | n/aβ΄ | n/aβ΄ | |
| | q6_0 | q6_0/q6_0 | 6.310 | 0.01965 | 97.68 | n/aβ΄ | n/aβ΄ | |
| | q5_0 | q5_0/q5_0 | 6.291 | 0.01973 | 97.46 | n/aβ΄ | n/aβ΄ | |
| | q4_0 | q4_0/q4_0 | 6.334 | 0.02505 | 96.85 | n/aβ΄ | n/aβ΄ | |
| | q8_0K / q6_0V (asym) | q8_0/q6_0 | 6.319 | **0.01680** | 97.63 | n/aβ΄ | n/aβ΄ | |
| | q5_0K / q4_0V (asym) | q5_0/q4_0 | 6.310 | 0.02424 | 97.09 | n/aβ΄ | n/aβ΄ | |
| | turbo3_tcq | t3tcq/t3tcq | 6.389 | 0.03665 | 95.64 | composes (#533) | composes (#533) | |
| | turbo2_tcq | t2tcq/t2tcq | 6.456 | 0.07093 | 92.67 | composes (#533) | composes (#533) | |
| | t3tcqK / t2tcqV (asym)| t3tcq/t2tcq | 6.431 | 0.05150 | 93.81 | composes (#533) | composes (#533) | |
| | t2tcqK / t3tcqV (asym)| t2tcq/t3tcq | 6.346 | 0.05667 | 94.02 | composes (#533) | composes (#533) | |
|
|
| β΄ **`perplexity` rejects `--dca` (`error: invalid argument: --dca`) β DCA is a server-only flag**, so a |
| full-vocab DCA-on KLD column is not obtainable on this instrument (the attempted sweep, `s5b-dca-fidelity.sh`, |
| failed at arg-parse on all cells β no GPU time spent). DCA's quantized-KV composition is instead proven on the |
| **server path**: the m444 gate's teacher-forced logit-equivalence (f16-DCA vs q8-DCA, `real_frac=0`, #444) and |
| the Β§1 RULER-VT 256kβ1M cells (all DCA-on, scored 0.876β0.984). Scalar/asym compose via the #444 f16-lift; |
| **TCQ now composes under DCA (as of #533; was rc=134 pre-#533, verified 2026-06-30)**. The takeaway the column would have shown β *DCA does not degrade |
| quantized-KV fidelity* β is the server-side evidence above, not a perplexity number. |
|
|
| **Note (#531 β RESOLVED, the all-quants FA-VEC default).** Earlier the production CUDA DSO was built with |
| `FA_ALL_QUANTS=0` (cuda.sh default), so `collect_gpu_sources` compiled only the 4 minimal fattn-vec instances |
| (f16/q4_0/q8_0/bf16) + the q6_0 hook, and the dispatch block for q5_0/q5_1/all asymmetric pairs was `#ifdef`'d |
| out β `q5_0`/`q5_0` had no native GPU FA-VEC kernel and silently fell back to CPU-FA (a 568 %-CPU crawl that |
| timed out the perplexity cell, and would have crawled every RULER/tps cell). **Fixed, not papered over:** |
| `GGML_CUDA_FA_ALL_QUANTS` is now the shipped default (`build-pipeline.ts` forwards `--fa-all-quants` to the |
| cuda backend), so every scalar K/V combo (q5_0, q5_1, q6_0, all symmetric **and** asymmetric) compiles a |
| native GPU FA-VEC kernel β **no KV tier falls back to CPU-FA.** The all-quants DSO was installed into both |
| side-load paths (`~/.llamafile/v/<ver>/ggml-cuda.so` + `vendors/dist/.../<ver>/ggml-cuda.so`, byte-identical; |
| `<ver>` resolved by `scripts/llamafile-version.sh`, never hardcoded β bug-635). No KV type is preferred over |
| another on GPU-path grounds; all run GPU FA-VEC (or, at long ctx, GPU FA-VEC under DCA). Every cell in this |
| Β§5b β q5_0 fidelity, all throughput, all RULER β was (re-)measured on this DSO; the q8_0_q6_0 RULER cell went |
| from a ~2 h CPU-FA crawl to ~30 s GPU FA-VEC, confirming the fix end-to-end. |
|
|
| **Throughput β decode/prefill tps** (server `/completion` timings, ctx 4096, `ignore_eos`; pp = prefill, |
| tg = generation; all GPU FA-VEC on the all-quants DSO, #531). |
|
|
| | config | ctk/ctv | 27B pp | 27B tg | A4B pp | A4B tg | |
| |--------|---------|--------|--------|--------|--------| |
| | f16 (ref) | f16/f16 | 911 | 22.5 | 2462 | 73.1 | |
| | q8_0 | q8_0/q8_0 | 919 | 22.2 | 2558 | 69.1 | |
| | q6_0 | q6_0/q6_0 | 927 | 22.0 | 2579 | 67.4 | |
| | q5_0 | q5_0/q5_0 | 920 | 22.0 | 2624 | 68.0 | |
| | q4_0 | q4_0/q4_0 | 929 | 22.2 | 2684 | 70.1 | |
| | q8_0K / q6_0V (asym) | q8_0/q6_0 | 922 | 22.2 | 2565 | 68.2 | |
| | q5_0K / q4_0V (asym) | q5_0/q4_0 | 923 | 22.2 | 2635 | 69.8 | |
| | turbo3_tcq | t3tcq/t3tcq | 357 | 18.9 | 373 | 39.1 | |
| | turbo2_tcq | t2tcq/t2tcq | 382 | 19.3 | 424 | 41.1 | |
| | t3tcqK / t2tcqV (asym)| t3tcq/t2tcq | 277 | 18.4 | 270 | 36.1 | |
| | t2tcqK / t3tcqV (asym)| t2tcq/t3tcq | 279 | 18.4 | 266 | 36.3 | |
|
|
| **Reading (throughput).** Among **scalar** tiers, KV-quant type is throughput-neutral: 27B clusters at |
| ~920 pp / ~22 tg, A4B at ~2460β2680 pp / ~67β73 tg regardless of K/V width β the decode is weight-bound, |
| not KV-bound, so picking q4_0 over q8_0 buys size, not speed. **TCQ pays a decode tax** (in-register |
| Viterbi codebook lookup, #389): on the big 27B it is mild (~15 % slower tg, ~2.5Γ slower pp β the model is |
| weight-bound, so KV-decode overhead is a small fraction of the per-token cost); on the small fast A4B it is |
| steep (~45 % slower tg, ~6Γ slower pp β here KV-decode is a large fraction). So **TCQ's 3β14 %-of-f16 size |
| win costs the most throughput exactly where the model is cheapest** β the size/speed trade is real and |
| model-size-dependent. Provenance: `.opencoti/ppl-kld/s5b-tps-{27B,A4B}.tsv`. |
| **β noDCA / short-ctx (ctx 4096) only.** This decode tax is the f16-lift path at short context; **with |
| DCA-on at long ctx (@256k) the WS2 in-register turbo-V path is a decode WIN (+68β95%)** β the turbo/TCQ |
| tier decodes *faster* than the f16-lift ref, not slower. See **Β§5x**. |
|
|
| **Quality-in-use β RULER niah_single_1, Gemma-4-A4B-98e-v6-coder** (% correct, 8 samples; all GPU FA-VEC |
| on the all-quants DSO, #531). 256k/512k measured on bs2 Blackwell, DCA-on `--dca-chunk-size 32768`, |
| 5 samples each (#575, 2026-06-30). |
|
|
| | config | ctk/ctv | niah 4k | niah 32k | 32k DCA | 256k (bs2) | 512k (bs2) | |
| |--------|---------|---------|----------|---------|------------|------------| |
| | f16 (ref) | f16/f16 | 100 | 100 | βnoDCAΒ² | 100 | 100 | |
| | q8_0 | q8_0/q8_0 | 100 | 100 | βnoDCAΒ² | 100 | 100 | |
| | q6_0 | q6_0/q6_0 | 100 | 100 | βnoDCAΒ² | 100 | 100 | |
| | q4_0 | q4_0/q4_0 | 100 | βΒ³ | βnoDCAΒ² | 100 | 100 | |
| | q8_0K / q6_0V (asym) | q8_0/q6_0 | 100 | 100 | βnoDCAΒ² | 100 | 100 | |
| | turbo3_tcq | t3tcq/t3tcq | 100 | 100 | composes (#533) | 100 | 100 | |
| | turbo2_tcq | t2tcq/t2tcq | 100 | βΒ³ | composes (#533) | 100 | 100 | |
| | t3tcqK / t2tcqV (asym)| t3tcq/t2tcq | 100 | βΒ³ | composes (#533) | 100 | **80**β΄ | |
| |
| Β² **32k-DCA niah was not separately run; `βnoDCA` is by inertness, not a fresh measurement.** At 32k (within |
| the model's effective window β noDCA niah is already saturated at 100), DCA's position-remapping is ~identity, |
| so DCA-on niah β the noDCA cell. DCA's *measured* effect on KV-quant quality is the long-context story: |
| the canonical DCA-on retrieval evidence is Β§1 (RULER-VT 256k β 1M, all DCA-on, scored 0.876β0.984) and the |
| bs2 256k/512k niah cells above (every tier 100, save the 2-bit-V asym at 512k = 80, β΄). Scalar/asym tiers compose with DCA via the #444 f16-lift (m444 gate |
| `real_frac=0`); **TCQ now composes under DCA (as of #533, the #505 lift; bs2 256k/512k niah filled above, #575)**. Β³ 32k cell run only for |
| the symmetric-scalar and headline-TCQ tiers (q4_0 and the asym/secondary-TCQ tiers swept at 4k to bound the |
| matrix; 32k niah is saturated at 100 for every tier that was run, so the omitted 32k cells are not in doubt). |
| β΄ **t3tcqK/t2tcqV asym is the only non-100 cell β niah 80 at 512k (still 100 at 256k).** This is the same |
| tier Β§9's #444 all-KV matrix flagged as the lone DCA-sensitive case (turbo3_tcq/turbo2_tcq asym, 318β173 |
| on the count-up task): a weak 2-bit-V tier pushed over by DCA's harder positional task at 2Γ native ctx. |
| It is an **intrinsic 2-bit-V quality floor at extreme ctx, not a DCA correctness bug** β the symmetric |
| turbo2_tcq holds 100 at 512k, and every symmetric/scalar tier is 100 at both depths. Boot was clean (no |
| SRV-FAIL); the cell ran full 5 samples. Recommendation: don't pair a 2-bit V with a 3-bit K beyond native |
| ctx; use symmetric turbo2_tcq or q8_0K/q6_0V instead. |
| |
| > **SUPERSEDED (2026-07-10, bug-2118 + bug-2141).** This whole β΄ reading is invalid: these #575 |
| > cells ran with `--dca on` while bug-2118 made DCA a silent **no-op** on Gemma, so the "80 at 512k |
| > / 100 at 256k" was DCA-**off**, and the "intrinsic 2-bit-V floor" framing is wrong. On the fixed |
| > WS2 binary with **genuine** DCA (Β§12 Tranche 3b), the truth inverts: asym `turbo3_tcq`-K/`turbo2_tcq`-V |
| > is **20 at 256k (4/5 empty, broken forward)** and **100 at 512k** β a geometry-dependent NaN in the |
| > WS2 in-register-V + `wht_o` path (**bug-2141**), NOT a 2-bit-V quality floor (symmetric turbo2_tcq |
| > holds 100 at both depths, and `WS2_DCA_TURBO_V=0` recovers the asym cell to 100/0-empty). See |
| > Β§12 Tranche 3b + `.wolf/buglog.json` bug-2141. The symmetric-tier recommendation still stands, but |
| > for the *right* reason (quarantine asym turbo_tcq Kβ V until the NaN-safe fix, not tier quality). |
| |
| **Reading (fidelity).** Asymmetric **q8_0K/q6_0V is the standout β KLD 0.0168, the best non-q8 cell, at |
| 46.9 % size** (K-precision dominates; cheap V). The TCQ ladder holds its published order (turbo3_tcq 0.0366 < |
| asym 0.051β0.057 < turbo2_tcq 0.071) at **3β14 %** of f16 β far smaller than any scalar, the |
| extreme-compression frontier. Scalars cluster tight: `q8_0` 0.0176 / `q6_0` 0.0197 / **`q5_0` 0.0197** (top |
| 97.5 %) / `q4_0` 0.0251 (top 96.8 %) β a smooth 8β5β4-bit ladder, every cell GPU FA-VEC. **noDCA fidelity is |
| now 10/10** (the `q5_0`-symmetric cell, formerly a CPU-FA timeout, landed at KLD 0.0197 on the all-quants DSO |
| β sitting exactly at the q6_0 point, confirming q5_0/q6_0 are quality-equivalent on 27B and the choice |
| between them is pure size, #531). Provenance: `.opencoti/tcq-survivors-27b.sh` + `.opencoti/s5b-rerun.sh` β |
| `.opencoti/ppl-kld/27b-survivors.tsv` (+ `.q5note`); DCA-on column from `.opencoti/s5b-dca-fidelity.sh`. |
| |
| ### 5b-8B. Scalar + asymmetric K/V β extended eval (8B instrument, historical) |
| |
| Full matrix β **every cell ran; no unsupported combos** (the in-register FA-VEC path serves all the |
| mixed K/V pairs below). _Historical-collection note (superseded by #531):_ when these 8B numbers were |
| collected, the DSO was the minimal build (GPU FA-VEC instances for f16/q8_0/q4_0/bf16 only), so `q5_1`/`q5_0` |
| ran through a slow CPU-FA fallback (~107 s/pass). **The values stand unchanged** β CPU-FA and GPU FA-VEC |
| compute identical attention, so KLD/PPL are DSO-invariant (only wall-clock differed). On the **current shipped |
| all-quants DSO (#531) every scalar pair, `q5_1`/`q5_0` included, runs native GPU FA-VEC β nothing falls back |
| to CPU-FA** (re-confirmed on 27B in Β§5b above, where `q5_0` went GPU FA-VEC). f16 ref PPL: noDCA 9.451 Β· DCA 9.441. |
|
|
| | config | ctk/ctv | PPL noDCA | KLD noDCA | top% noDCA | PPL DCA | KLD DCA | top% DCA | |
| |--------|---------|-----------|-----------|------------|---------|---------|----------| |
| | q8_0 | q8_0/q8_0 | 9.447 | 0.00086 | 98.8 | 9.449 | 0.00135 | 98.3 | |
| | q5_1 | q5_1/q5_1 | 9.470 | 0.00605 | 96.9 | 9.603 | 0.0230 | 93.7 | |
| | q5_0 | q5_0/q5_0 | 9.485 | 0.00703 | 96.9 | 9.496 | 0.0183 | 94.3 | |
| | q4_0 | q4_0/q4_0 | 9.601 | 0.0329 | 92.6 | 9.664 | 0.0560 | 90.0 | |
| | **q8K/q4V** | q8_0/q4_0 | 9.469 | **0.00282** | 97.8 | 9.491 | 0.00461 | 97.3 | |
| | **f16K/q4V** | f16/q4_0 | 9.440 | **0.00281** | 97.8 | 9.490 | 0.00432 | 97.3 | |
| | **t8K/t4V** | turbo8/turbo4 | 9.510 | **0.00814** | 96.3 | 9.468 | 0.00767 | 96.3 | |
| | t4K/t2V | turbo4/turbo2 | 10.47 | 0.172 | 82.9 | 10.13 | 0.140 | 84.3 | |
| | t3K/q4V | turbo3/q4_0 | 12.78 | 0.426 | 75.3 | 10.19 | 0.183 | 82.6 | |
|
|
| **Reading.** |
| - **Scalars β DCA costs a *little*, the inverse of turbo.** The noDCA FA reads scalar KV faithfully, |
| so it is the reference-quality path; DCA's f16-lift adds a small round-trip (q8 0.0009β0.0014, |
| q4_0 0.033β0.056). Both fine (top 90β99%). Compare Β§5a, where the noDCA *turbo* in-register read is |
| the lossy path so DCA *helps*. Rule of thumb: **scalar KV β noDCA is the quality path; turbo KV β |
| the dequant-on-lift (DCA/#444) is the quality path.** |
| - **Asymmetric is the memory sweet spot.** **q8K/q4V** and **f16K/q4V** both land at **KLD β 0.003, |
| top β 98%** β near-q8 quality at q4-sized V. K-precision dominates; raising K past q8 (βf16) buys |
| nothing, V is the compressible side. **t8K/t4V** is the turbo analogue (**KLD β 0.008**, top 96%): |
| turbo8-K rescues turbo4-V β 17Γ better than symmetric turbo4 (0.14). These are the recommended |
| long-context KV recipes. |
| - **The turbo2 degeneracy is K-side.** Symmetric turbo2 noDCA is catastrophic (KLD 5.60, Β§5a), but |
| **t4K/t2V** β turbo2 on *V only*, turbo4 K β is fine (**KLD 0.172** noDCA). So the in-register 2-bit |
| failure is the **K-read (`vec_dot_KQ`)**, not the V-read: turbo2 is usable on the V side or via the |
| faithful lift, never as the in-register K type. (refines `.wolf/buglog.json` bug-583.) |
| |
| ### 5b-8B-ctx. KV-quant Γ DCA across the context ladder (#580, bs2 dual-Blackwell, 2026-07-01) |
| |
| Extends the Β§5b-8B single-ctx (2048) matrix into a **ctx ladder 2k β 128k** on the same instrument |
| (Qwen3-8B-Q8_0, `TURBO_INNERQ_SCALE` head_dim 128). Ran on **bs2** (2Γ RTX PRO 6000 Blackwell, GPU0 = |
| 2k/4k/8k/32k, GPU1 = 64k/128k) via the GPU-perplexity binary with DCA re-exposed to `--kl-divergence`. |
| Corpus `wiki.long` (test.mid+valid.mid, ~151k tok; 128k used a 2Γ concat, ~302k tok β perplexity needs |
| **2Γ ctx** tokens per window). Chunk = 1024 (2k/4k/8k), 2048 (8k variant), **8192** (32k/64k/128k = |
| production chunk). **Qwen3-8B native `n_ctx_train` = 40960**, so 64k = 1.6Γ and 128k = 3.2Γ native β the |
| only two cells where DCA actually engages; 2kβ32k are sub-native (DCA β no-op). |
| |
| **(a) DCA rescues f16 coherence past native β the headline.** f16 reference PPL, no KV quant: |
| |
| | ctx | Γnative | f16 PPL noDCA | f16 PPL DCA | |
| |-----|---------|---------------|-------------| |
| | 2k | 0.05Γ | 8.22 | 8.22 | |
| | 4k | 0.10Γ | 8.29 | 8.32 | |
| | 8k | 0.20Γ | 8.00 | 8.02 | |
| | 32k | 0.80Γ | 7.70 | 7.77 | |
| | 64k | 1.6Γ | 8.28 | 8.39 | |
| | 128k | 3.2Γ | **19.16** | **7.34** | |
| |
| Plain attention survives to **1.6Γ native** (64k PPL 8.28, ~unchanged) but **breaks at 3.2Γ** (128k PPL |
| **19.16**); **DCA-on holds PPL at 7.34** β a clean, direct measurement of DCA extending usable context on |
| the f16 reference itself. (Below native, DCA costs a hair β expected, it's a no-op there.) |
| |
| **(b) On the DCA path the KV-quant ladder is ctx-invariant β except 2β3-bit turbo.** KLD (DCA, vs each |
| regime's own f16 base): |
| |
| | tier | ctk/ctv | 2k | 4k | 8k | 32k | 64k | 128k | |
| |------|---------|----|----|----|-----|-----|------| |
| | q8_0 | q8_0/q8_0 | 0.0014 | 0.0015 | 0.0012 | 0.0011 | 0.0012 | 0.0011 | |
| | turbo8 | turbo8/turbo8 | 0.0019 | 0.0017 | 0.0014 | 0.0013 | 0.0015 | 0.0013 | |
| | **f16K/q4V**| f16/q4_0 | 0.0041 | 0.0038 | 0.0033 | 0.0029 | 0.0031 | **0.0028** | |
| | **q8K/q4V** | q8_0/q4_0 | 0.0044 | 0.0046 | 0.0037 | 0.0033 | 0.0037 | 0.0032 | |
| | **t8K/t4V** | turbo8/turbo4 | 0.0077 | 0.0069 | 0.0063 | 0.0057 | 0.0061 | 0.0055 | |
| | q5_0 | q5_0/q5_0 | 0.0187 | 0.0187 | 0.0180 | 0.0165 | 0.0186 | 0.0161 | |
| | q4_0 | q4_0/q4_0 | 0.0558 | 0.0558 | 0.0563 | 0.0562 | 0.0627 | 0.0662 | |
| | turbo4 | turbo4/turbo4 | 0.0777 | 0.0711 | 0.0653 | 0.0592 | 0.0659 | 0.0626 | |
| | turbo3 | turbo3/turbo3 | 0.180 | 0.185 | 0.194 | **1.335** | 2.375 | 2.221 | |
| | turbo2 | turbo2/turbo2 | 0.636 | 0.675 | 0.733 | **2.893** | 3.111 | 3.911 | |
| |
| (8k column = chunk-1024 variant; chunk-2048 is within noise except turbo2-DCA, where the coarser chunk is |
| worse β 1.22 vs 0.73 β so **smaller DCA chunks help the fragile low-bit tier**.) |
| |
| **Reading.** |
| - **The Β§5b-8B recipe holds to 3.2Γ native.** q8_0/turbo8 (~0.001), q5_0 (~0.017), q4_0/turbo4 (~0.06), |
| and the asymmetric hi-K/cheap-V winners **f16K/q4V Β· q8K/q4V Β· t8K/t4V (~0.003β0.008)** are **flat |
| across the whole ladder** β the single-ctx conclusion (asymmetric hi-K/cheap-V = the long-ctx sweet |
| spot) is now confirmed to extend, unchanged, to 128k. |
| - **2β3-bit turbo is a sub-native economy only.** turbo2/turbo3 are fine at β€8k (turbo3-DCA 0.18β0.19) |
| but **cross into unusable right around native** β turbo3 jumps to 1.34 @32k, 2.38 @64k; turbo2 to |
| 2.9 @32k. **turbo4 is the low-bit floor that survives** (0.06 through 128k, and DCA *lowers* it vs |
| noDCA β the Β§5b turbo/lift rule). Serving past native β **β₯4-bit KV with a high-precision K side**. |
| - **The DCAΓquant sign split (Β§5b-8B) persists at every ctx:** DCA slightly *raises* scalar-quant KLD |
| (q4_0 noDCA ~0.025 β DCA ~0.056) but *lowers* the turbo dequant-lift KLD (turbo4 ~0.087 β ~0.063). |
| - Provenance: `.opencoti/ppl-kld-4k8k.sh` + bs2 `bs2-driver.sh`; per-ctx matrices at bs2 |
| `/srv/ml/opencoti-c1/ppl/out/ppl-kld-<ctx>/matrix.md`. Corpus-size gotcha (perplexity needs 2Γ ctx |
| tokens) = buglog bug-2093; the GPU-perplexity DCA re-exposure was a temporary `arg.cpp` edit (reverted). |
| |
| ### 5b-14B-1M-ctx. KV-quant Γ DCA ladder on the 1M-native production class (#581, bs2 GPU1, 2026-07-01β04) |
| |
| Re-runs the Β§5b-8B-ctx ladder on **Qwen2.5-14B-Instruct-1M-Q8_0** β the HAL/1M serving vehicle |
| (`n_ctx_train` = 1M native, no YaRN) β ctx **2k β 256k**, 13 KV configs Γ {noDCA, DCA} per tier, |
| corpus `wiki.14b.raw`, chunk 1024 (2k/4k) / 2048 (8k) / 8192 (32k+). Driver |
| `bs2:/srv/ml/opencoti-c1/ppl/bs2-driver-14b.sh`; matrices `β¦/ppl/out14b/ppl-kld-<ctx>/matrix.md`. |
| Crucially, **every rung here is *sub-native*** for this model β so this ladder measures intrinsic |
| long-range quant sensitivity, not DCA rescue. |
| |
| **(a) KLD (noDCA, vs same-regime f16 base) β the ladder.** 256k\* = partial (5β6/9 chunks; the |
| 3600 s/cell cap timed out β f16 base alone needs 478 s/pass β cumulative KLD from the cell logs, |
| stable to 3 digits by chunk 5): |
| |
| | tier | ctk/ctv | 2k | 4k | 8k | 32k | 128k | 256k\* | |
| |------|---------|----|----|----|-----|------|-------| |
| | q8_0 | q8_0/q8_0 | 0.0023 | 0.0023 | 0.0023 | 0.0024 | 0.0029 | 0.0051 | |
| | turbo8 | turbo8/turbo8 | 0.0034 | 0.0034 | 0.0034 | 0.0035 | 0.0040 | 0.0067 | |
| | **f16K/q4V** | f16/q4_0 | β | 0.0082 | 0.0081 | 0.0080 | 0.0087 | 0.0128 | |
| | **q8K/q4V** | q8_0/q4_0 | β | 0.0084 | 0.0083 | 0.0082 | 0.0089 | β | |
| | q5_1 | q5_1/q5_1 | 0.0124 | 0.0125 | 0.0126 | 0.0129 | 0.0142 | 0.0194 | |
| | q5_0 | q5_0/q5_0 | 0.0147 | 0.0148 | 0.0149 | 0.0153 | 0.0170 | 0.0250 | |
| | **t8K/t4V** | turbo8/turbo4 | β | 0.0198 | 0.0195 | 0.0191 | 0.0206 | 0.0326 | |
| | q4_0 | q4_0/q4_0 | 0.0525 | 0.0536 | 0.0546 | 0.0558 | 0.0623 | 0.0836 | |
| | turbo4 | turbo4/turbo4 | 0.115 | 0.118 | 0.122 | 0.131 | 0.154 | 0.232 | |
| | t4K/t2V | turbo4/turbo2 | β | 0.234 | 0.238 | 0.247 | 0.286 | 0.437 | |
| | t3K/q4V | turbo3/q4_0 | β | 0.235 | 0.243 | 0.272 | 0.319 | 0.466 | |
| | turbo3 | turbo3/turbo3 | 0.250 | 0.263 | 0.272 | 0.301 | 0.356 | 0.524 | |
| | turbo2 | turbo2/turbo2 | 1.30 | 1.42 | 1.51 | 1.72 | 2.13 | 2.89 | |
| |
| (2k asym + all 2k-DCA and 64k-noDCA cells are **harness artifacts**, not quality data β truncated f16 |
| base `.dat` β `kl_divergence: failed reading log-probs`; the 256k "FAIL" wall in `matrix.md` is the |
| per-cell timeout, not a crash. DCA columns at 4kβ128k track noDCA with the usual Β§5b sign split; |
| @256k-DCA partials: q8_0 0.0065 Β· q5_1 0.0427 Β· q5_0 0.0866 Β· q4_0 0.296 Β· turbo2 3.19.) |
|
|
| **Reading.** |
| - **The frozen 14B is more quant-sensitive than the 8B β and degradation grows with ctx even |
| sub-native.** Where 8B turbo3-DCA sat at 0.18β0.19 sub-native, 14B turbo3 starts at **0.25 @2k** |
| and climbs to **0.52 @256k**; turbo2 is dead everywhere (1.3β2.9). Every low-bit tier roughly |
| doubles from 2kβ256k while q8/turbo8 stay β€0.007 β long-range attention amplifies K/V error on |
| this model; there is **no safe regime for 2β3-bit turbo here**, unlike the 8B. |
| - **The serving recipes hold to 256k:** q8_0/turbo8 (β€0.007), asym **f16K/q4V β q8K/q4V |
| (0.008β0.013)**, **t8K/t4V (0.02β0.03)**, q5-class β€0.025; **turbo4 is again the low-bit floor** |
| (0.23 @256k β usable, no margin). |
| - **DCA on a native-1M model costs, as expected** (Qwen2.5-1M needs no extension): f16 ref PPL @128k |
| noDCA 3.486 vs DCA 3.886 β approximation cost; the DCA columns are composition coverage, not a |
| recommendation for this model. |
| - **HAL (#582) implication β the last lever is now quantified.** Route (b) "low-bit history β exact |
| recent" cannot use turbo2/3 history on this class (0.5β2.9); it needs **β₯4-bit with a |
| high-precision K side** (t8K/t4V 0.033, q8K/q4V ~0.01 @256k), capping the history-compression win |
| at ~4Γ vs f16 rather than the 8β10Γ a 2β3-bit history would give. Route (a) host-stream-exact is |
| unaffected. |
| |
| ### 5x. WS2 turbo-V in-register β the KV-decode-tps win (#629, DEFAULT-ON) |
| |
| **WorkStream-2 = read a rotated turboN V-cache IN-REGISTER inside the multichunk DCA fused |
| flash-attn kernel**, killing the per-forward whole-cache `cpy_turboN_f16` cast (a context-growing |
| decode bottleneck β the same D512-global materialize tail that sank WS1's turbo-MMA @256k, Β§5a / |
| poly_kv.md S2). Gated by an `n_qβ€16` gate: **in-register** for decode + small spec-verify batches; |
| **prefill keeps the byte-identical f16-lift path**. Now **DEFAULT-ON**. |
|
|
| **Losslessness gating (read this before the table).** This is a **vec-only** kernel change, so |
| **PPL/KLD are BLIND to it** (they run the MMA/prefill path β same blindness as sparse-V Β§10, decode |
| levers). The authoritative gates are **RULER niah** (retrieval) + **teacher-forced logit-equivalence** |
| (`real_frac` = fraction of tokens whose argmax moved, `mean_tv` = mean top-k total-variation, |
| `ffa` = full-faithful-argmax rate). Not PPL, not KLD. |
|
|
| **Full matrix β all @256k, ctk=q8_0, DCA-on chunk 32768.** "ref" = f16-lift (`WS2=0`), "ours" = |
| in-register (`WS2=1`); decode tps. |
| |
| **D512 β Gemma (global head_dim 512, iSWA):** |
|
|
| | model Β· tier | ref tps | ours tps | Ξ | real_frac | mean_tv | ffa | niah (n) | |
| |---|---|---|---|---|---|---|---| |
| | A4B turbo2_0 | 48.2 | **91.2** | **+89%** | (see A4B block below) | β | β | 100 | |
| | A4B turbo3_0 | 43.0 | **80.7** | **+88%** | 0.0 | 0.00113 | 1.0 | 100 (5) | |
| | A4B turbo2_tcq | 39.8 | **66.8** | **+68%** | 0.0 | 0.01784 | 1.0 | 100 (5) | |
| | A4B turbo3_tcq | 37.6 | **64.5** | **+72%** | 0.0 | 0.01078 | 1.0 | 100 (5) | |
| | 31B turbo2_0 (dense+SWA) | 11.7 | **21.6** | **+85%** | 1.0 β | 0.0137 | 0.0 β | **100** (5) | |
| |
| **D256 β Qwen-arch (global head_dim 256; qwen35 / qwen35moe, no SWA, native 256k):** |
| |
| | model Β· tier | ref tps | ours tps | Ξ | real_frac | mean_tv | ffa | niah (n) | |
| |---|---|---|---|---|---|---|---| |
| | omni27 turbo3_0 | 15.0 | **27.9** | **+86%** | 0.0 | 0.00107 | 1.0 | 100 (5) | |
| | omni27 turbo2_tcq | 13.5 | **25.2** | **+87%** | 0.0 | 0.00735 | 1.0 | 100 (13) | |
| | omni27 turbo3_tcq | 12.6 | **24.6** | **+95%** | 0.0 | 0.00378 | 1.0 | 100 (13) | |
| | qw35a3 turbo3_0 | 43.0 | **76.1** | **+77%** | 0.0 | 0.00919 | 1.0 | 100 (5) | |
| | qw35a3 turbo2_tcq | 40.5 | **75.5** | **+86%** | 0.0 | 0.01644 | 1.0 | 100 (13) | |
| | qw35a3 turbo3_tcq | 39.1 | **75.0** | **+92%** | 0.0 | 0.01428 | 1.0 | 100 (13) | |
| |
| turbo2_0 on D256 (omni27, qw35a3) is a **clean +86β98% win** too β see the eval-cell artifact caveat |
| below; the number 15.8/15.8 (omni27) and 49/49 (qw35a3) you may find in the `ws2-eval-cell.sh` output |
| are a **measurement artifact**, not zero benefit. |
|
|
| **Two caveats (documented honestly, not hidden):** |
|
|
| 1. **31B turbo2_0 TV top-k-SET churn.** This one cell shows `real_frac 1.0 / ffa 0.0` yet `mean_tv` |
| only **0.0137** β the distribution mass is ~identical but the top-20 **membership** reorders in the |
| tail (a TV-metric artifact on the SWA model), **NOT** a correctness failure. **niah 100** (n=5) is |
| the authoritative retrieval gate and it passes clean. Do not over-claim bit-losslessness for this |
| cell; do read it as retrieval-lossless. |
| 2. **D256 turbo2_0 eval-cell tps artifact.** The `ws2-eval-cell.sh` tps phase self-measured oursβref |
| (omni27 15.8/15.8, qw35a3 49/49) β a **known boot mis-attribution** in that harness (both arms |
| booted into the same env), NOT zero benefit. The clean per-boot-env A/B (`ws2-qwen-ab2.sh`) shows |
| the real **+86β98%** wins, fully consistent with the turbo3_0 / *_tcq cells in the same rows. |
|
|
| **Perf-regression before/after (bug-2140 fatbin-last DSO is perf-free).** The pure `-Wl` fatbin-last |
| layout change carries **zero kernel-perf cost** β A4B turbo2_0 @256k: |
| |
| | build | WS2 | decode tps | prefill tps | |
| |---|---|---|---| |
| | bug-2140 DSO | 0 | 48.22 | 4388 | |
| | baseline | 0 | 48.1 | 4435 | |
| | bug-2140 DSO | 1 | 91.2 | 4406 | |
| | baseline | 1 | 91.2 | 4433 | |
| |
| All deltas β€1% noise β the fatbin-last relayout is confirmed perf-free; the +89% is the WS2 kernel, |
| not a build artifact. |
| |
| **Scalar-KV reference (cost-of-compression).** A4B & 31B D512 q8_0/q8_0 and q8_0/q4_0 scalar baselines |
| were captured (VRAM bits: q8=8, q4=4, turbo3=3, turbo2=2) β see the `ws2-scalar` cells in the eval |
| dir for the numbers. |
| |
| **Ctx-ladder (A4B turbo2_0) β the win GROWS with context.** From the per-ctx tps sweep |
| (`ws2-s2-tps/results.tsv`, ref=`WS2=0` f16-lift, ours=`WS2=1` in-register, decode tps median of 3): |
| |
| | ctx | ref tps | ours tps | Ξ | prefill (ref/ours) | |
| |---|---|---|---|---| |
| | 128k | 73.3 | **113.6** | **+55%** | 6014 / 6076 | |
| | 256k | 48.1 | **91.2** | **+89%** | 4436 / 4433 | |
| | 512k | 28.5 | **57.3** | **+101%** | 2885 / 2871 | |
| |
| This is the direct signature of the WS2 mechanism: the eliminated cost is the per-forward |
| whole-cache `cpy_turboN_f16` materialize cast, an **O(n_kv) cost that grows with context**, so |
| removing it wins *bigger* as ctx grows (+55 β +101% over 128kβ512k) β the mirror image of WS1's |
| register-spill loss that grew *worse* with ctx. Prefill is at parity at every rung (the `n_qβ€16` |
| gate keeps prefill on the byte-identical f16-lift path). |
|
|
| **Default-on policy.** WS2 in-register turbo-V is **DEFAULT-ON** β it is a serving-path decode win |
| (+68β95% @256k across both arches and every turbo/TCQ tier), retrieval-lossless (niah 100 everywhere) |
| and logit-lossless everywhere except the one SWA top-k-churn caveat. It composes with the MTP draft |
| path (see [mtp.md Β§3g](mtp.md) β both lossless, both stack) and is the opposite verdict of WS1's |
| turbo-MMA null (Β§5a / poly_kv.md S2): WS1 was noDCA and the D512 cast it had to beat was still paid; |
| WS2 is DCA-on multichunk-fused and eliminates that cast in-register. Cross-refs: |
| [three-way-tps.md](three-way-tps.md) (3-way tps harness + model registry), |
| [poly_kv.md S2](../features/poly_kv.md) (WS1βWS2 contrast). |
| |
| ### 5c. Status / optional follow-ups |
| - **Β§5b-14B-1M-ctx (#581) β DONE 2026-07-04** (above): ladder 2kβ256k on the 1M-native 14B; recipes |
| hold, 2β3-bit turbo has no safe regime on this class, HAL route-(b) floor = 4-bit hi-K. |
| - **HAL #582 β DECIDED 2026-07-05**, full study in |
| [hal_kv_compression.md](hal_kv_compression.md): resident compression (q8K/q4V default) wins; |
| host-stream-exact is 22β27Γ slower at equal ctx (0.99 tps @64k on 50 GB/s PCIe) β overflow |
| fallback only; quant decode on the 14B is kernel-bound not bandwidth-bound (q4/q4 == q8K/q4V |
| tps; ~2Γ vs f16, ~6Γ below bandwidth ceiling) β P0 kernel work; native-1M fits one 96 GB card |
| only compressed (192 GiB f16 β 78 GiB q8K/q4V). |
| - **Scalar/asym cells β LOCKED** (Β§5b full matrix) **and ctx-swept 2kβ128k (Β§5b-8B-ctx, #580, DONE |
| 2026-07-01):** the asymmetric hi-K/cheap-V recipes stay flat (~0.003β0.008) to 3.2Γ native; DCA |
| rescues f16 PPL at 128k (19.2β7.3); 2β3-bit turbo collapses past native, turbo4 is the low-bit floor. |
| - **TCQ tiers (#447)** `turbo2_tcq`/`turbo3_tcq` β **DONE + target-class verified** (Β§5a-TCQ-27B: |
| Qwen3.6-27B turbo3_tcq KLD 0.037, turbo2_tcq 0.071, both beating their plain siblings). The 8B/1.5B |
| in-register low-bit collapse is **model fragility, not a kernel defect**; TCQ ships as-is on |
| 27B-class/Gemma-4 targets, f16-lift reclassified to optional small-model support. |
| - **Gemma-4 head_dim-512 (1M production target)** β **DONE**: PPL/KLD pointed at Gemma-4-A4B found the |
| instrument **invalid** on the omnimerge GGUFs (Β§5a-TCQ-A4B-KLD / bug-631), so quality-in-use is validated |
| via RULER niah (Β§5a-TCQ-RULER) + the Β§5b cross-instrument matrix instead. |
| - Provenance: runner `.opencoti/ppl-kld-matrix.sh`; per-cell logs `.opencoti/ppl-kld/*.log`; matrix |
| `.opencoti/ppl-kld/matrix.{tsv,md}`; GPU-perplexity link `.opencoti/ppl-link.mk` + `ppl_main_gpu.cpp`. |
| |
| --- |
| |
| ## 6. Campaign status & open items |
| |
| Both eval campaigns are **complete**; no GPU jobs are running. |
| |
| - **TCQ codebook campaign (#523β525, solidpc):** concluded β final verdict in Β§5a-TCQ-CB (the deployed |
| `turbo3_tcq` symmetric + the #513 asym are already at the TCQ frontier; none of {codebook retrain, |
| free state-widen, wide-K `_w`-asym} beats them; the buggy/redundant `_w` tier was reverted in #527). |
| - **bs2 long-context quality ladder:** finished; bs2 GPUs idle of ladder work. |
|
|
| | GPU | arm | final state | last cell | |
| |-----|-----|-------------|-----------| |
| | bs2 GPU0 | RULER-VT | **complete** β 256k/512k/768k/1M all landed (0.976Β·0.960 / 0.984 / 0.956 / **0.876**, Β§1a; 1M corrected 07-01 from server-crash 0.716) | `ruler_native_vt_1024k_dcaon` ended 2026-06-15; 1M 9-sample re-fix 2026-07-01 | |
| | bs2 GPU1 | MRCR | **complete** β n=50 `mrcr_256k_dcaoff/on` + `512k` (0.1138 / 0.1320 / 0.1027); 768k_synth/1M small-n (0.1259 / **0.0273**); + quant-KV cell `q8_c1` @256k-on **0.0999** (< f16-off; Β§1b) | `mrcr_256k_dcaon_q8_c1` landed 06-24 | |
|
|
| Driver: `bs2:/srv/ml/omk_mrcr_dca/dca_quality_ab_bs2.sh` (logs `bs2:/srv/ml/omk_mrcr_dca/ladder_logs/`). |
| **RESOLVED (2026-07-01):** the 9/50 empty completions at 1M (Β§1a) were a **serving artifact** β |
| `ConnectionError` after the F16 server crashed at sample 40, not coherence loss. Re-running just the 9 on a |
| fresh server (cache-resume) gives the true n=50 VT-1M = **0.876**; the 0.716 is retired. |
|
|
| > **Metric-field caveat (read scores from `scores.metric`).** `summary.json`'s *top-level* `metric` |
| > field is a generic roll-up label that prints `pass_at_1` for MRCR β it is **not** the real metric. |
| > The authoritative metric is `scores.metric` = `sequence_matcher_ratio` (MRCR) / `string_match_all` |
| > (RULER-VT). All scores in Β§1 are the canonical `summary.json` `.score`. |
|
|
| --- |
|
|
| ## 7. Provenance / source paths |
|
|
| - **Quality scores (canonical):** `bs2:/srv/ml/omk_mrcr_dca/results/<template>/<served>/summary.json` `.score` |
| - **Per-cell server logs (tps, KV/VRAM):** `bs2:/srv/ml/omk_mrcr_dca/results/<template>/<served>/server.log` |
| - **Templates:** `bs2:/srv/ml/omk_mrcr_dca/omnimergekit/eval/templates/{ruler_native_vt,mrcr}_*_dcaon.yaml` |
| - **3-arm gen-tps:** `solidpc:backup_models/scripts/dca_gentps_3arm/` (`run.log`, `resp_dca{on,off}.json`) |
| - **Coherence/regression gates:** `solidpc:backup_models/scripts/dca_gate623_mc_coherence.sh`, `dca_gate_gemma_mc_regress.sh` |
| - **NIAH ladder:** `solidpc:backup_models/scripts/dca_niah_ladder_618.sh` β `bs2:/srv/ml/dca/dca_niah_ladder_618/` |
| - **Patch + RCA:** `vendors/patches/llamafile/0078-dca.patch`; `backup_models/.wolf/{buglog.json,cerebrum.md,memory.md}` |
| - **DSO under test:** solidpc `df4c46bca8a4b092` (build #4, qwen fix); bs2 `30ed439580de858c` (Gemma-validated; byte-identical on the Gemma DKQ=512 path by construction). |
|
|
| ## 8. MTP Γ DCA composition at 256k (#431/#439) |
|
|
| _bs2 GPU1, 2026-06-29/30._ Speculative MTP (both engines) composes logit-equivalently with |
| **inter-chunk DCA at 256k** β the decisive long-context composition cell (full detail in |
| [`mtp.md`](mtp.md) Β§4c/Β§5): |
|
|
| > **β The Gemma (#431) row was bug-2118-contaminated β RE-CONFIRMED on the fixed binary (2026-07-10).** |
| > When this cell was first logged, bug-2118 made `--dca on` a silent no-op on Gemma, so its |
| > `real_frac=0` measured DCA-**off**. Re-run with **genuine** DCA on the shipped WS2 binary |
| > (`6468ae37`/`cb8f942d`): **`real_frac=0.0`, `frac_full_agree=1.0` β still PASS** (Β§12 Tranche 4c). |
| > The Qwen NextN (#439) row is a full-attention path and was never bug-2118-affected. |
| |
| | engine | model | recipe | verdict | |
| |---|---|---|---| |
| | Qwen **NextN** self-spec | Qwen3.6-27B-Omnimerge Q6_K | `-c 262144 --dca on --dca-chunk-size 32768` (8 chunks), ref=plain / cand=`--spec-type draft-mtp` both DCA-on | **PASS** `real_frac=0` (#439) | |
| | Gemma **assistant-MTP** | Gemma-4 A4B-it Q6_K + adapted `gemma4-assistant` drafter | same recipe, cand=`--spec-type draft-assistant -ngld 99` | **PASS** `real_frac=0` (#431) | |
| |
| So MTP verify is bit-equivalent to plain decode over DCA-laid-out KV at 256k (the `mean_tv_advisory` |
| non-zero is the known empty-top-logprobs artifact for spec-accepted tokens; `real_frac` is the gate). |
| Separately, rolling-KV **POSITION_WINDOW Γ MTP** stands on logit-equivalence only β its 256k *engagement* |
| is architecturally N/A on the current binary (Gemma iSWA window-mode ineligibility, bug-797; |
| [`mtp.md`](mtp.md) Β§5). |
| |
| ## 9. All-KV-types DCA breadth matrix + q6_0 fix (#444β447) |
| |
| _2026-06-24, bs2 GPU0._ Goal: prove DCA works with **every** K/V type and asymmetric combo, not just the |
| per-type C-series logit-equiv gates. Harness `.opencoti/dca/dca-allkv-matrix.sh` (Qwen3.6-35B-A3B-redl, |
| IQ3_XXS, 128 head_dim; DCA-on `--dca-chunk-size 512` so cross-chunk attention engages; count-up coherence, |
| longest monotone +1 run, FLOOR 250 / 1500 n_predict). Control `dca-allkv-control.sh` re-runs the |
| non-passing cells DCA-**off** to separate DCA-path bugs from intrinsic tier quality. |
| |
| **Matrix verdict (26 combos):** 18/26 COHERENT. Findings: |
| |
| | class | combos | verdict | |
| |---|---|---| |
| | scalar sym | f16, bf16, q8_0, q5_1, q5_0, q4_0 | β COHERENT | |
| | scalar asym | q8_0/q5_1, q5_0/q4_0, f16/q4_0, bf16/q8_0 | β COHERENT | |
| | turbo | turbo3, turbo4, turbo8, turbo3_tcq (sym); turbo3/turbo2, q8_0/turbo3 (asym) | β COHERENT | |
| | **q6_0 (any position)** | q6_0/q6_0, q8_0/q6_0, q6_0/q4_0 | **π΄ CRASH β FIXED** | |
| | 2-bit / marginal | turbo2, turbo2_tcq (sym); turbo3/q8_0, turbo3_tcq/turbo2_tcq (asym) | β intrinsic quality, **not DCA** | |
| |
| **q6_0 was the only real DCA defect** (bug-694). `dca_lift_to_f16()` in `dca.cpp` had a `scalar_quant` |
| whitelist missing q6_0 (added later, #512), so q6_0 took a direct `ggml_cast(q6_0βf16)` with no CUDA cpy |
| kernel β CPU `dup_from_q` abort at `ggml-cpu/ops.cpp:594`. **Fix:** add `GGML_TYPE_Q6_0` to the whitelist |
| (lifts q6_0βf32βf16 on GPU like q5_0). Host-only rebuild (`c081ea54`β`7c1d4ca8`, DSO untouched), captured into |
| `0081` (re-capture proven byte-identical). **Re-test on bs2 gpu0:** all 5 q6_0 DCA-on combos COHERENT 318 |
| (q6_0/q6_0, q8_0/q6_0, q6_0/q4_0, f16/q6_0, q6_0/f16). |
| |
| **The β collapses are NOT DCA bugs** β the DCA-off control proves it: turbo2 (84 off / 140 on), turbo2_tcq |
| (113 / 68), turbo3/q8_0 (188 / 159) all collapse *equally or worse* with DCA off β intrinsic 2-bit-tier / |
| marginal-mix lossiness on the count-up task. turbo3_tcq/turbo2_tcq is the one DCA-sensitive case (318 off β |
| 173 on) β a weak 2-bit V pushed over by DCA's harder positional task, a quality limit not a correctness bug. |
| |
| **Net:** DCA is correct across the full scalar ladder (f16/bf16/q8_0/q6_0/q5_1/q5_0/q4_0) + turbo3/4/8 + |
| turbo3_tcq, symmetric and asymmetric. The only non-passing cells are 2-bit tiers at their intrinsic quality |
| floor. C-series "DCA all-KV" (#444β447) is empirically complete on a real model. |
| |
| ## 10. Sparse-V β attention-gated V-skip (#546/#549/#552/#565/#566/#567) |
| |
| Decode-time optimization: skip the V-contribution of low-attention keys (quantized-V only; f16/bf16 V is a |
| no-op by kernel construction). Two threshold knobs: a **static** `TURBO_SPARSE_V_TAU` (skip keys whose |
| softmax weight < Ο) and an **adaptive** mass-budget `TURBO_SPARSE_V_EPS` (#565, skip while total dropped |
| softmax mass < Ξ΅). **Headline verdict:** the win is **iSWA-static-Ο=0.05** (concentrated global V-cache β |
| a fat skippable low-weight band); it is shipped self-configuring in the binary (#567 auto-policy, Β§10e). On |
| **full attention** the picture splits by model class (Β§10c): a static Ο is a quality *cliff* on native-1M |
| diffuse-attention models, but a large lossless win on 256k-class merges; adaptive Ξ΅ is always lossless but |
| yields no full-attn speedup (Β§10d). |
|
|
| ### 10a. Directional probe β Qwen2.5-14B-1M @24k (3090, 2026-06-28) β not a verdict |
|
|
| Block-skip held at 50% coverage (proven lossless); swept `TURBO_SPARSE_V_TAU`. RULER niah_single_1, |
| 12 samples, fixed seed 42. tps = max-over-niah-eval-lines (UNRELIABLE). |
|
|
| | cell | Ο | niah | tps* | |
| |------|------|-------|------| |
| | dense | β | 100 | 17.97 | |
| | block-only | β | 100 | 21.50 | |
| | +V Ο=0.1 | 0.1 | 0 | 24.96 | |
| | +V Ο=0.05 | 0.05 | 91.67 | 25.35 | |
| | +V Ο=0.02 | 0.02 | 75.0 | 33.23 | |
| | +V Ο=0.01 | 0.01 | 91.67 | 36.55 | |
|
|
| *tps non-monotonic (rises as Ο falls) β max-over-bursts metric is noise, not skip-tracking. No clean |
| lossless static Ο on q8/14B-1M @24k (best niah 91.67): at 24k uniform per-position weight β 4e-5, so the |
| whole 0.01β0.1 Ο range sits above the thin-weight bulk and skips nearly all of it (all β equally |
| aggressive, all lossy). Motivates adaptive Ο (#565). KEEPER: block-skip alone = lossless q8 win |
| (niah=100, ~1.20Γ within-boot). Authoritative determination deferred to bs2 production models (Β§10b/c). |
| |
| ### 10b. Production iSWA validation β the lossless win (#566, bs2, 2026-06-29) |
| |
| Binary C-series 511d5305 / 671f6f15, `-ctk q8_0 -ctv q8_0` (or `-ctv q8_0` over Q6_K weights). |
| niah_single_1 base seed 42; tps = MEDIAN per-sample decode at true ctx depth. Three production iSWA models, |
| all **niah 100 at every Ο**: |
| |
| **Gemma-4-A4B-62e Q6_K** β static Ο is a lossless *decaying* win: |
|
|
| | ctx | dense tps | Ο=0.05 (niah/tps/Ξ) | Ο=0.10 (niah/tps/Ξ) | |
| |------|-----------|--------------------------|--------------------------| |
| | 64k | 112.97 | 100 / 124.56 / +10.3% | 100 / 124.76 / +10.4% | |
| | 128k | 91.10 | 100 / 97.85 / +7.4% | **96** / 96.61 / +6.0% | |
| | 256k | 64.08 | 100 / 67.18 / +4.8% | 100 / 67.94 / +6.0% | |
|
|
| **Official Gemma-4-31B-it Q6_K** (not a merge) β confirms the win at production scale: |
| |
| | ctx | dense tps | Ο=0.05 (niah/tps/Ξ) | Ο=0.10 (niah/tps/Ξ) | |
| |------|-----------|------------------------|------------------------| |
| | 64k | 32.47 | 100 / 33.34 / +2.7% | 100 / 33.71 / +3.8% | |
| | 128k | 25.41 | 100 / 25.79 / +1.5% | 100 / 25.74 / +1.3% | |
| | 256k | 17.57 | 100 / 17.80 / +1.3% | 100 / 18.12 / +3.1% | |
| |
| **Gemma-4-A4B-98e-v7-coder IQ4_XS** (the iSWA PRIMARY target) β lossless but FLAT on this 3090 vehicle: |
|
|
| | ctx | KV | V-skip | niah | decode tps | vs dense | |
| |------|-------|----------|-------|-----------|----------| |
| | 128k | f16 | off | 100 | 62.37 | β | |
| | 128k | f16 | Ο=0.05 | 100 | 61.97 | -0.6% | |
| | 128k | f16 | Ο=0.10 | 100 | 62.42 | +0.1% | |
| | 256k | q8_0 | off | 100 | 25.39 | β | |
| | 256k | q8_0 | Ο=0.05 | 100 | 25.61 | +0.9% | |
| | 256k | f16 | off | 100 | 75.85 | β (probe at ~60k depth) | |
| | 256k | f16 | Ο=0.05 | 100 | 75.59 | -0.3% | |
| | 256k | f16 | Ο=0.10 | 100 | 75.41 | -0.6% | |
|
|
| VERDICT (iSWA): **static Ο=0.05 is the safe always-on lossless setting.** On the bigger weight-bound |
| models (A4B-62e +5β10%, 31B +1β4%) it is a real decode win that *decays* with ctx (global V-cache fills β |
| smaller relative skip); the win is gentler on heavier per-token compute (31B < A4B-62e). On the f16-V |
| v7-coder the skip is a no-op (f16 V un-skipped by construction) so it is lossless-but-flat β composes |
| safely, no regression. The lone quality nick is A4B-62e 128k Ο=0.10 (niah 96) β **Ο=0.05 is the production |
| knob.** (v7-coder probe caveat: the fixed ~60k-token prompt measures decode at ~60k KV depth, not 256k; |
| niah is at true 256k.) |
|
|
| ### 10c. Full-attention behaviour β static-Ο cliff vs 256k-class lossless (#566, bs2, 2026-06-29/30) |
|
|
| Full attention splits by model class. **Native-1M Qwen2.5-14B-1M Q8_0** β static Ο is a quality CLIFF: |
| |
| | ctx | dense | Ο=0.05 (niah/tps) | Ο=0.10 (niah/tps) | |
| |------|-------|---------------------|--------------------| |
| | 64k | 28.45 | **60** / 41.46 (+46%) | **0** / 41.56 (+46%) | |
| | 128k | 18.26 | **8** / 27.52 (+51%) | **0** / 28.0 (+53%) | |
| | 256k | 10.01 | **0** / 18.85 (+88%) | **0** / 16.19 (+62%) | |
| |
| **256k-class Qwen3.6-27B-Omnimerge-v4 Q6_K** (a sub-1M-native merge) β lossless AND large win: |
|
|
| | ctx | dense tps | Ο=0.05 (niah/tps/Ξ) | Ο=0.10 (niah/tps/Ξ) | |
| |------|-----------|-------------------------|-------------------------| |
| | 64k | 37.48 | 100 / 45.03 / +20% | 100 / 45.01 / +20% | |
| | 128k | 28.17 | 100 / 37.68 / +34% | 100 / 37.56 / +33% | |
| | 256k | 18.08 | 100 / 26.62 / +47% | 100 / 26.54 / +47% | |
|
|
| VERDICT: the static-Ο cliff is a property of **native-1M diffuse-attention models specifically**, NOT of |
| full attention in general (a sharper finding than "no fixed Ο is lossless on full attention"). The 14B-1M |
| is trained diffuse to the extreme β flat long-ctx weights β the skippable low-weight band *includes* the |
| needle's contribution, so any Ο drops it (and harvests a big +46β88% speed in the process). The omnimerge |
| is a 256k-class merge with sharper long-ctx peaks β the needle's V stays above the Ο floor while the |
| diffuse filler below it is safely skipped β +20β47% lossless. **Serving rule:** 1M-native full-attn β use |
| adaptive Ξ΅ (#565, lossless-but-flat, Β§10d); 256k-class full-attn β static Ο=0.05β0.10 is a real lossless |
| win. (14B-1M 128k-Ο0.10 + the full 256k row filled 2026-06-30 from `sparse-v-566/qwen14b1m.tsv`.) |
|
|
| ### 10d. Adaptive-Ο mass-budget (#565) β lossless but no full-attn speedup (3090) |
|
|
| `TURBO_SPARSE_V_EPS`: skip key k iff its normalized contribution < Ξ΅/n_kv for every query column β total |
| dropped softmax mass < Ξ΅ by construction (Ξ΅=0 β‘ byte-identical static). Two kernel defects were found and |
| fixed in `fattn-vec.cuh` (DSO `4326ca7807fe`, both paths byte-identical; knobs=0 β dense output-identical): |
| (1) **partial-L inversion** β old threshold divided the PARTIAL running softmax-denominator by the TOTAL |
| n_kv, so the per-key bar was too low and skip VANISHED as ctx grew; FIX = divide by keys-actually-processed |
| (true running mean); (2) **sink cliff** β added `TURBO_SPARSE_V_SINK` / `_RECENT` always-keep guards |
| (protect attention-sink + recent window incl. MTP draft tokens; run sink=64 recent=256). |
|
|
| Qwen2.5-14B-1M full attention, q8_0 KV, RULER niah_single_1, MEDIAN decode tps: |
| |
| | ctx | dense | Ξ΅0.05+g | Ξ΅0.1+g | Ξ΅0.2+g | quality | |
| |-------|-------|---------|--------|--------|---------| |
| | 24576 | 14.36 | 14.02 | 13.28 | 13.65 | all niah 100 | |
| | 49152 | 9.25 | 9.12 | 9.16 | 9.22 | all niah 100 | |
| | 65536 | 7.56 | 7.29 | 7.29 | 7.36 | all niah 100 | |
| |
| (64k single-ctx control: dense 7.83, static Ο=0.05 β niah **33** / 11.91 (+52%, cliff repro); Ξ΅0.005β0.10 all |
| niah 100 / ~7.8β7.9 = flat.) FINDING: the combined fix DECISIVELY solves QUALITY (niah 100 in every cell, |
| cliff gone, inversion gone) but full attention yields NO decode win at any Ξ΅ up to 64k (every cell |
| 0.95β1.00Γ dense, flat across the whole Ξ΅ range). ROOT CAUSE: a mean-relative threshold can only skip keys |
| BELOW the running mean; diffuse full-attention weights concentrate NEAR the mean, so the skippable |
| population is tiny regardless of Ξ΅ β there is no fat sub-mean band to harvest. This is WHY the founding #546 |
| "scales with ctx / more on full attn" assumption inverted: the win needs CONCENTRATED attention (iSWA's |
| small global V-cache), which full attention by construction lacks. NET: adaptive Ξ΅ is the SAFE |
| full-attention default (never slower within noise, never lossy) but not a win there; the iSWA static-Ο=0.05 |
| win stands (Β§10b). Full-attention long-ctx speed is a different-mechanism problem (Β§11), not a V-skip |
| threshold problem. |
| |
| ### 10e. In-binary auto-policy (#567, patch 0088, host-only, 2026-06-29) |
| |
| The Β§10b sparse-V win is now self-configuring so a STANDALONE `llamafile --server` gets it with no flags |
| (intelligence in the binary, NOT the opencoti TS adapter β a standalone CLI user bypasses the adapter). At |
| `llama_context` construction: if the user has not set `TURBO_SPARSE_V_TAU` AND the model is iSWA |
| (`hparams.swa_type != NONE`) AND V is quantized (`type_v` not f16/bf16/f32), `setenv(TURBO_SPARSE_V_TAU=0.05, |
| overwrite=0)`. The kernel reads that env (ggml-cuda is a runtime DSO β env is the cross-DSO channel) β |
| host-only, DSO byte-unchanged. Full-attention models leave it unset β dense byte-identical. Announced once |
| at WARN (model-load INFO is suppressed). GATE (3090, binary `5bf9fac6`): decision table 4/4 PASS β A4B q8_0 |
| auto=ENGAGED; A4B q8_0 +`TURBO_SPARSE_V_TAU=0` override=off; A4B `-ctv f16`=off (kernel guard inert); |
| Qwen-14B-1M q8_0 full-attn=off (no iSWA). A/B @ 24k (A4B iSWA q8_0, 24 samples): dense niah 100 / 65.48 tps |
| vs auto niah 100 / 65.30 tps β LOSSLESS + non-slower (the iSWA win is tiny at 24k, grows with ctx β the |
| 50-sample production runs in Β§10b carry the measurable win). The Ξ΅/sink/recent knobs remain available as |
| explicit overrides for full-attention experiments (no auto-default there β no lossless win). |
|
|
| ### 10f. MTP composition (#549/#552) β parallel, turbo3_tcq, Qwen-NextN |
| |
| Sparse-V composes with speculative MTP across all tested KV tiers and engines; the old "disable sparse-V |
| under MTP (kills draft acceptance)" guard is RETIRED (a pre-combined-kernel artifact). |
| |
| **A4B iSWA q8_0 Γ assistant-MTP at `--parallel` β₯2** (3090, DSO `4326ca78`, draft acceptance = server-log |
| real_frac). Single-prompt per-slot: p1_off 0.805/114tps, p1_sv(Ο0.05) 0.770/110.7; p2_off 0.832+0.796 / |
| 52.6+51.8tps, p2_sv 0.847+0.837 / 53.3+52.8, p2_svguard(sink64 recent256) 0.847+0.819 / 54.3+54.6. All 6 |
| per-slot samples in a 0.80β0.85 band (noise); sparse-V tps if anything slightly HIGHER. Multi-prompt (4 |
| diverse coding prompts, parallel 2, mean accept): off 0.787, sv 0.819, svguard 0.819 β sv/svguard β₯ off, |
| per-prompt variance 0.74β0.89 dwarfs any sparse-V effect. (Harness gotchas, both in buglog: Gemma |
| assistant-MTP at `--parallel`>1 hard-requires `--kv-unified`; `wait $curlpid` only, not bare `wait`.) |
| |
| **The two untested cells (#552, closed)** β combined kernel Γ MTP, greedy chat, single-stream, 3090. |
| CELL A (turbo3_tcq KV tier): A4B-v6 iSWA `-ctk/-ctv turbo3_tcq` + 26B-assistant MTP β A_off 0.7587 vs |
| A_sv (auto-engaged: WARN confirms "iSWA + quantized V (turbo3_tcq) β 0.05") 0.7587 = BYTE-IDENTICAL |
| acceptance; turbo3_tcq booted clean (no bug-631 garbage, 0.76 β q8_0's 0.79). CELL B (Qwen NextN engine): |
| Qwen3.5-9B `--spec-type draft-mtp` q8_0 β B_off 0.6287 vs B_svF (`TURBO_SPARSE_V_TAU=0.05` FORCED; auto |
| leaves full-attn OFF) 0.6287 = BYTE-IDENTICAL (at 8k the full-attn skip is near-inert, but no mechanical |
| breakage of the NextN verify path). VERDICT: sparse-V composes with MTP across all KV tiers/engines β |
| q8_0Γassistant (#549), turbo3_tcqΓassistant (A), Qwen-NextN-self-spec (B). Byte-identical acceptance = |
| lossless-at-greedy. Production: auto-policy enables sparse-V only on iSWA+quant-V (incl. turbo3_tcq), |
| correctly OFF on Qwen full-attn β MTP and sparse-V are orthogonal there. |
| |
| ## 11. Sparse attention β block-selector / vertical-slash (#551, CLOSED) + #548 scout |
| |
| The open problem this line chased: lossless-AND-faster decode at 256k/1M on **full-attention** models |
| (where Β§10 sparse-V has no win). Verdict (2026-06-29): the block-selector / vertical-slash line is **DEAD** |
| across all five mechanisms tried. The shipped long-ctx win remains Β§10 sparse-V on iSWA. |
| |
| ### 11a. Quest block-skip @256k β fails the win bar (bs2, 2026-06-29, PIVOTAL NEGATIVE) |
| |
| Front A validated the proven 24k Quest block-skip win at real serving ctx (Qwen2.5-14B-1M Q8_0, q8_0 KV, |
| RULER niah_single_1 @262144, bs2 GPU1, binary 671f6f15 + sm120 DSO): |
| |
| | cell @256k | niah | decode tps | note | |
| |------------|------|-----------|------| |
| | dense | 100.0 | 13.43 | baseline, n=4 | |
| | quest_65 | 75.0 | 13.04 | topk 2662/4096, recent 2048, sink 1 β LOSSY + NO win | |
|
|
| The 24k bug-747 result (q8 niah 100 lossless @65%, 1.34Γ@50%) does NOT extrapolate to 256k: (1) niah |
| collapses 100β75 at the SAME 65% coverage β Quest's geometric min/max kbounds score is an extreme-value |
| statistic, so as n_block grows 24kβ256k (384β4096 blocks) the needle's lone constant-signal key is buried |
| by high-spread distractor blocks (SNR ~ 1/n_block); (2) no decode win (13.04 < 13.43, ~3% slower) β at 256k |
| the per-step selector overhead (kbounds fill + top-k over 4096 blocks EVERY decode step) cancels the |
| block-skip KV-read savings even though decode IS KV-bandwidth-bound there. Quest is a 24k-LOCAL win, fails |
| "must be a win even at 256k" on both axes. |
|
|
| ### 11b. Decode-probe correction + bug-761 refresh trap |
|
|
| The flat ~13 tps above was a per-step SELECT-KERNEL artifact, not a property of block-skip. Decode-tps |
| probe (same model, ~231k prompt, 256-tok decode, bs2 GPU1): dense 14.05 (1.00Γ); q65_r1 (refresh 1, |
| per-step select) 12.84 (0.91Γ β select tax > skip saving); q65_r256 (refresh 256, amortized select) 26.87 |
| (**1.91Γ**). So block-skip at ~50β65% coverage nearly DOUBLES 256k decode throughput once the |
| kbounds-fill+top-k-select over 4096 blocks is amortized off the per-step path β the speed half of the bar |
| IS clearable. BUT bug-761: `--sparse-attn-refresh 256` freezes the *first* decode token's pick (which |
| usually doesn't attend the needle) β **niah 0**. Mechanism (code read): Quest (mode 0) selects at |
| DECODE-time per token; `refresh N` trades correctness for speed. The correct per-step config (q65_r1) is |
| 12.84 < dense β Quest cannot be both fast and lossless at 256k. The remaining gap is SELECTION QUALITY: |
| refresh changes WHEN select runs, not WHAT it picks. |
| |
| ### 11c. Line closed β five mechanisms exhausted + #548 scout-negative |
| |
| The revival thesis (vslash content-selection with a wider question-window would find the needle where |
| Quest's geometric kbounds fails) was REFUTED on retest: restored `q_win` 8β64 (llama-graph.cpp:2871+3250), |
| host-rebuilt (sha `32460c35`), bs2 β vslash@24k f16 niah STILL 0 (zero movement). `q_win` is not the lever; |
| the real wall (buglog #563) is that the prefill question-window is a WORSE needle probe than the decode |
| answer-query (the decode query *generates* the needle; the prefill question doesn't reliably rank the |
| needle block) + recent-blocks frozen at prefill. A free MMA side-output would make prefill *scoring* free |
| but inherits the bad prefill-probe ranking β cannot fix selection correctness. **Five mechanisms now dead** |
| (Quest-geometric / max-logit / softmax-decode-q1 / prefill-window / q_win-restored); the only ever-lossless |
| variant (softmax-decode q_win=1) is 2.3Γ SLOWER + bimodal@40k. No lossless-AND-faster block-selector |
| exists. Tasks #568β572 (S2βS5 side-output) SHELVED. |
|
|
| **#548 importance-tiered bits SCOUT** (theTom turboquant_plus `layer-aware-v-compression.md`): LA-V7 = |
| V-only layer-aware (boundary L0,1,N-2,N-1 β q8_0-V; middle β turbo2-V; K=q8_0 all layers). theTom's OWN |
| numbers: advantage over uniform turbo2-V β ZERO by 16k (-0.006 PPL @16k phi-4), "no speed penalty" β NOT a |
| 256k win; dilutes with context, same per-token needle-ranking wall. theTom's central finding "ALL quality |
| loss is from K, not V" implies the only win-shaped salvage is layer-aware on K (unexplored bet) β DEFERRED |
| by user choice. **OPEN gap:** lossless+faster 256k decode on full-attention 1M-native models has no proven |
| lever; sparse-attention exploration is CLOSED. |
| |
| ## 12. #626 redo β GemmaΓDCA evals on the FIXED binary (post bug-2118/2119/2120/2121) |
| |
| **Why (2026-07-06):** bug-2118 made `--dca on` a silent no-op on ALL Gemma-4 archs, so every |
| historical GemmaΓDCA number in this file (and mtp.md Β§#431/#441, the June MRCR A4B on/off pair, |
| the 256k/512k 3-model anchors) actually measured DCA-OFF. Fixing 2118 surfaced two criticals: |
| bug-2120 (dual-ctx drafter accept=0 with any quant target KV β attention-rotation not inherited |
| by the shared draft cache) and bug-2121 (deep-spill streaming-FA prefill corruption β CUDA-pool |
| staging scratch aliased across streams). All four are fixed and gated; patches 0099β0102. |
| Binary = llamafile.dualctx sha 91a017c8, DSO sha 8b23afbf. Historical GemmaΓDCA rows above are |
| STALE for DCA-on claims; this chapter is the authoritative replacement as cells complete. |
| |
| ### Tranche 1 β 256k 3-model anchors (bs2 GPU0, 2026-07-06, first VALID Gemma DCA+MTP anchors) |
| |
| 212,327-token prompt, ctx 262144, q8_0-K/q4_0-V, window residency (all fully resident), greedy |
| needle + tps probe (`bs2-3model-anchors.sh`). Gemma cells run `--dca on --dca-chunk-size 32768` |
| + dual-ctx assistant drafter; Qwen cell is native NextN (no DCA). |
| |
| | cell | prefill t/s | decode t/s | draft accept | needle | |
| |---|---|---|---|---| |
| | A4B Q4_K_M + assistant-Q8_0, DCA on | 5200.2 | 73.5 | **0.700** (42/60) | PRESENT | |
| | 31B Q6_K + assistant-Q8_0, DCA on | 1148.9 | 26.9 | 0.456 (36/79) | PRESENT | |
| | Qwen3.6-35B UD-Q6_K NextN (native, no DCA) | 2811.8 | 109.7 | 0.606 (40/66) | PRESENT | |
| |
| > **Decode-tps re-run β 2026-07-12, patch 0119 (P0 DCA-on scalar in-register), bs2 gate binary |
| > `7abd6840`.** The 2026-07-06 decode column above used the pre-0119 whole-cache `to_fp16_nc` |
| > f16-lift and is **stale-LOW**; on the current in-register DCA-on decode path the same cells |
| > (warmup + 256-tok cache-reused measure, all needle=PRESENT) are: **A4B 73.5β114.75 (+56%)**, |
| > **31B 26.9β33.34 (+24%)**, **Qwen-35B NextN 109.7β151.53 (+38%)**. Accept/needle unchanged |
| > (lossless β those columns stand). The Qwen measured call reports `prompt_n=516` (a self-spec |
| > draft-mtp cache-reeval quirk); needle=PRESENT confirms the full 256k context is resident. |
|
|
| Reading: the previously-impossible composition (Gemma + DCA-actually-on + quant KV + dual-ctx |
| drafter) now works end-to-end at 256k β accept 0.700 on A4B where the pre-fix binary scored |
| 0.000 (bug-2120) on a config whose DCA flag did nothing (bug-2118). 31B accept 0.456 matches |
| its historically weaker adapted drafter, not a defect. 512k anchors + Β§5b niah matrix Gemma |
| cells + MRCR A4B on/off queued next. |
|
|
| **Losslessness gate (bug-2120 fix, 2026-07-06, bs2 A4B + assistant, 4k, n_max=1):** f16 β |
| plain vs dual-ctx spec token-IDENTICAL (40/40), spec deterministic. k8_v4 β spec deterministic |
| (specA==specB 40/40), accept 0.90, plain-vs-spec diverges at token 32: benign quant-KV |
| batch-vs-sequential greedy numerics (same class as the bug-858 upstream profile; the f16 |
| control run the same day is clean, so the spec path itself is lossless). |
| |
| ### Tranche 2 β 512k 3-model anchors (bs2 GPU0, 2026-07-06) |
| |
| Same harness at ctx 524288, 460k-token prompt (~424,631 tokens), q8_0-K/q4_0-V, DCA |
| `--dca on --dca-chunk-size 32768`, dual-ctx assistant drafter. (The anchors script's |
| inline curl truncated the A4B response on port-reap β false ABSENT; a clean re-probe |
| with `-m 3000` returned http 200, 3.0 MB body, needle PRESENT β recorded below.) |
| |
| | cell | prefill t/s | decode t/s | draft accept | needle | |
| |---|---|---|---|---| |
| | A4B Q4_K_M + assistant-Q8_0, DCA on | 3211.4 | 42.3 | 0.651 (41/63) | PRESENT (re-probe) | |
| | 31B Q6_K + assistant-Q8_0, DCA on | 643.8 | 14.3 | 0.326 (31/95) | PRESENT | |
| |
| Reading: A4B holds needle + 0.65 accept at 512k (2Γ native ctx via DCA), decode 42 t/s. |
| 31B accept softens to 0.326 at 512k (its adapted drafter degrades with chunked-DCA depth) |
| but retrieval is intact. Both prove the fixed binary composes DCA + dual-ctx MTP + quant KV |
| correctly out to 512k β the regime that was 100% broken pre-fix (bug-2120 accept 0.000 or |
| bug-2121 corruption). |
| |
| ### Tranche 3 β Β§5b DCA niah matrix redo (bs2, in progress) + a NEW crash it surfaced |
| |
| Re-running the #575 Gemma-4-A4B-v6-coder `niah_single_1` matrix (KV tiers Γ {256k,512k}, |
| `--dca on --dca-chunk-size 32768`, ns=5) on the fixed binary. This is the first time these |
| cells have *genuinely* run DCA β pre-fix (bug-2118) the flag was a silent no-op, so the |
| historical "all 100.0" (Β§5b, #575) was DCA-**off**. Turning DCA genuinely on splits the tiers |
| into a clean-pass group and a crash cluster: |
| |
| | tier (ctk/ctv) | ctx | niah | note | |
| |---|---|---|---| |
| | f16 / f16 | 256k | **100.0** | scalar tier β passes true DCA-on | |
| | q8_0 / q8_0 | 256k | **100.0** | scalar | |
| | q4_0 / q4_0 | 256k | **100.0** | scalar | |
| | q8_0 / q6_0 (q8q6asym) | 256k | **100.0** | asym scalar (q6_0 only as V) | |
| | q8_0 / q4_0 (q8q4asym) | 256k | **100.0** | **production tier** β matches the anchors | |
| | q6_0 / q6_0 | 256k | **CRASH** | bug-2125 | |
| | turbo3_tcq / turbo3_tcq | 256k | **100.0** | trellis-TCQ **passes** true DCA-on | |
| | turbo2_tcq / turbo2_tcq | 256k | **CRASH** | bug-2125 | |
| | turbo3_tcq K / turbo2_tcq V | 256k | **CRASH** | bug-2125 (the turbo2_tcq-V) | |
| | f16 / f16 | 512k | **100.0** | clean re-run β the earlier 40 was contamination; **no** DCA-depth cost at 4Γ native | |
| | q8_0 / q8_0 | 512k | **100.0** | scalar β matches 256k | |
| | q4_0 / q4_0 | 512k | **100.0** | scalar β matches 256k | |
| | q8_0 / q6_0 (q8q6asym) | 512k | **100.0** | asym scalar β matches 256k | |
| | q8_0 / q4_0 (q8q4asym) | 512k | **100.0** | **production tier** β holds at 4Γ native | |
| | turbo3_tcq / turbo3_tcq | 512k | **CRASH** | bug-2125 β **crashes at 512k though it PASSES at 256k** (chunk-count dependent) | |
| | q6_0, turbo2_tcq, t3kt2vasym | 512k | **CRASH** | bug-2125 β same crashers as 256k | |
| |
| Method note: the first pass was contaminated by two runners colliding on the shared server |
| port (duplicate rows, one spurious q6_0=100). The table above is from the **clean single-runner** |
| authoritative sweep (`s5b-clean.sh`, one runner, liveness-checked boot, port reaped between |
| cells) β **COMPLETE** (all 9 512k cells landed 2026-07-07): the crashes are confirmed real (not |
| port-collision), f16-512k is 100.0, and every scalar/asym tier (f16, q8_0, q4_0, q8q6asym, |
| q8q4asym) holds 100.0 at 512k while the q6_0/turbo2_tcq/turbo3_tcq crash cluster is bug-2125. |
| |
| **bug-2125 (NEW, exposed by the bug-2118 fix) β DCA + q6_0/turbo2_tcq KV-init segfault |
| (task #627, being fixed β NOT deferred).** Under real DCA, a subset of quantized tiers segfault |
| during context/KV-cache init (past model load + sparse-v auto-policy, at the window-tail |
| host-buffer setup), on `llamafile.dualctx` 91a017c8/8b23afbf, both `-fit on` and `-fit off`, |
| at **both 256k and 512k**: **q6_0-symmetric, turbo2_tcq-symmetric, and the turbo3_tcq-K / |
| turbo2_tcq-V asym** pairing all crash. The discriminator is **neither axis nor bit-count**: |
| **turbo3_tcq-symmetric passes 100.0** (3.25 bpv trellis on *both* K and V), and the crashing |
| t3kt2vasym carries a *safe* turbo3_tcq-K β so its crash is the **turbo2_tcq-V**, proving V can |
| trip it too. Nor is it "low bit": **q6_0 is a 6-bit scalar, hardly low-precision**, yet it |
| crashes while the 3.25-bpv turbo3_tcq passes. The clean split is by **specific type**: **q6_0 and |
| turbo2_tcq crash (on either K or V); q6_0/turbo2_tcq-free tiers pass 100.0 at 256k.** That q6_0 β |
| a high-precision scalar β segfaults marks this as a **genuine code defect**, not a precision floor. |
| **Crucially, the crash set GROWS with DCA chunk count:** turbo3_tcq **passes 100.0 at 256k (8 |
| chunks) but CRASHES at 512k (16 chunks)**, while f16 stays clean 100.0 at both. So the trigger is |
| not a fixed per-type property β it scales with the number of chunks, strongly implicating a |
| **window-tail host-buffer whose size is mis-computed as a function of n_chunks** (a block-size / |
| row-alignment / dequant-on-lift assumption in the DCA chunked-rope window-tail setup that q6_0 and |
| turbo2_tcq block layouts violate immediately, and that turbo3_tcq only overruns once the chunk |
| count is high enough). None of these ever ran before (the bug-2118 contamination hid the path). |
| It does **not** affect the production tier (q8_0-K/q4_0-V β clean at 512k) or any shipped anchor, |
| but it is a real latent segfault being **root-caused + fixed under task #627** (gdb/ASAN for the |
| exact fault site). Historical Β§9/Β§5b turboΓDCA and q6_0ΓDCA cells are invalid for the same |
| bug-2118 reason and are superseded by this chapter. |
| |
| The f16-512k number is **resolved: 100.0** (clean single-runner). The earlier 40.0 was the |
| two-runner contamination artifact β there is **no** DCA-depth retrieval cost for f16 at 4Γ native |
| (16 chunks). The remaining 512k scalar cells **landed 2026-07-07 all at 100.0** (q8_0, q4_0, |
| q8q6asym, q8q4asym) β the production tier q8_0-K/q4_0-V **holds at 4Γ native**. The stale note |
| below is retained only for history: |
| |
| β (superseded) The f16-512k = 40.0 reading (vs 100 at 256k) is from the possibly-contaminated first pass and |
| is being re-measured clean; if it holds, it is a genuine DCA-depth retrieval cost on this model |
| at 4Γ native context (16 chunks), not a bug β but treat it as provisional until the clean sweep |
| confirms. |
| |
| ### Tranche 3b β bug-2125 crash cluster RESOLVED + one NEW asym bug (bug-2141), re-measured on the WS2-shipped binary (2026-07-10) |
| |
| Re-ran the Tranche-3 crash cluster on the **current shipped WS2 binary β commit `6468ae37` / |
| dualctx `cd65e45f` / DSO `cb8f942d`** (adds the bug-2125 fix `cbe3cf5b5` #627 + WS1 bug-2127 DCA |
| per-tensor defer + **WS2 in-register turbo-V DEFAULT-ON** on top of the Tranche-3 B1 binary |
| `91a017c8`/`8b23afbf`). Single-runner `s626-crashcells.sh`, GPU0, `--dca on --dca-chunk-size 32768`, |
| Gemma-4-A4B-98e-v6-coder Q4_K_M, `niah_single_1` ns=5. **The entire bug-2125 crash cluster is |
| CLOSED** β every previously-crashing symmetric/scalar tier now boots and retrieves 100.0: |
| |
| | tier (ctk/ctv) | ctx | B1 (`8b23afbf`) | **B3 (`cb8f942d`)** | note | |
| |---|---|---|---|---| |
| | q6_0 / q6_0 | 256k | CRASH | **100.0** | bug-2125 FIXED | |
| | turbo2_tcq / turbo2_tcq | 256k | CRASH | **100.0** | bug-2125 FIXED | |
| | turbo3_tcq / turbo3_tcq | 256k | 100.0 | **100.0** | lossless-invariant (sanity) | |
| | turbo3_tcq K / turbo2_tcq V (asym) | 256k | CRASH | **20.0** β | now RUNS but **broken forward** β **bug-2141** | |
| | q6_0 / q6_0 | 512k | CRASH | **100.0** | bug-2125 FIXED | |
| | turbo2_tcq / turbo2_tcq | 512k | CRASH | **100.0** | bug-2125 FIXED | |
| | turbo3_tcq / turbo3_tcq | 512k | CRASH | **100.0** | bug-2125 FIXED (the chunk-count-dependent crash is gone) | |
| | turbo3_tcq K / turbo2_tcq V (asym) | 512k | CRASH | **100.0** | passes at the 16-chunk geometry (see bug-2141) | |
| |
| (The scalar / asym-scalar tiers f16, q8_0, q4_0, q8q6asym, q8q4asym scored 100.0 on B1 and are |
| lossless-invariant under bug-2125/2127/WS2 β not re-run; they stand at 100.0 at both ctx. All |
| symmetric turbo/TCQ tiers now hold retrieval under genuine DCA out to 4Γ native.) |
| |
| **Method note β re-measured on the WS2-shipped binary `6468ae37` / DSO `cb8f942d`.** Correctness |
| via RULER niah (never greedy); DSO deployed byte-identical at both bs2 side-load paths. |
| |
| **NEW: bug-2141 β asymmetric `turbo3_tcq`-K / `turbo2_tcq`-V is broken-forward at 256k (niah 20, |
| 4/5 EMPTY generation) but passes at 512k (100).** This is **NOT tier quality**: symmetric |
| `turbo2_tcq` (2-bit K+V) = 100 **and** symmetric `turbo3_tcq` = 100 at both ctx, so every |
| *component* of the asym cell already appears in a passing symmetric config β its K is strictly |
| higher-bit than the passing sym-t2 K and its V is *identical* to the passing sym-t2 V. The only |
| new variable is the Kβ V mismatch, and the failure mode is **empty generation** (broken forward / |
| NaN logits), **not** wrong-answer weak retrieval. **Root cause CONFIRMED** (static trace + |
| GPU discriminator): under DCA-on decode `dca_fused` hardcodes `type_K=F16` (K is f16-lifted) and |
| dispatches the fused instance on V-type, so the asym cell is the *only* config pairing a |
| turbo3-derived `K_f16` with the `turbo2_tcq`-V read **in-register** (WS2 default-on) in the D512 |
| fused kernel β a composition no symmetric control exercises. A DCA band-boundary phase whose mask |
| is all-`-inf` yields a zero exp-sum β 0/0 in the online-softmax normalization β NaN, which |
| `wht_o`'s 128-pt butterfly de-rotation (`dca.cpp:396`) smears across all 512 output lanes β empty |
| generation. It is **geometry-dependent** (256k/8-chunk trips the empty-band phase; 512k/16-chunk |
| does not) and **WS2-specific** (V f16-lift scored 60, functional; the WS2 in-register flip |
| regressed it to 20). **Decisive discriminator (bs2 GPU0, same binary):** asym @256k DCA-on with |
| `WS2_DCA_TURBO_V=0` β **niah 100.0 / 0 empty** (vs WS2 default-on **20.0 / 4 empty**) β forcing V |
| back to the f16-lift path (same K-lift) fully recovers, proving the fault is the **WS2 |
| in-register-V + `wht_o` composition**, not the K-lift or any codebook. (All per-tensor |
| type/codebook selection was verified correct by static trace; the stringly-typed `cache_k_`/`cache_v_` |
| split gates only a 4% norm-alpha and cannot NaN.) **Escape hatch that works today:** |
| `WS2_DCA_TURBO_V=0` for asym turbo_tcq Kβ V. Fix directions: (1) NaN-safe the online-softmax |
| normalization for all-`-inf` DCA band phases before `wht_o` (principled; keeps the WS2 win), or |
| (2) gate WS2 in-register-V off for asym turbo_tcq Kβ V. **Quarantine both asym-turbo_tcq directions |
| pending the fix; the production tier q8_0-K/q4_0-V is unaffected** (clean 100.0 at 256k and 512k). |
| Full RCA in `.wolf/buglog.json` bug-2141. |
|
|
| **Direction-specific (not symmetric).** The reverse asym `turbo2_tcq`-K / `turbo3_tcq`-V @256k |
| scored **100.0 / 0-empty** β clean. So the break is confined to the **`turbo3_tcq`-K + `turbo2_tcq`-V** |
| ordering at the 256k/8-chunk geometry: it needs the *higher-precision* turbo3-K_f16 (sharper KQ |
| logits, which is what drives a band phase to the all-`-inf` boundary) paired with the |
| turbo2-V-in-register instance. The reverse ordering (turbo2-K_f16 + turbo3-V-in-register) does not |
| produce the boundary condition, and both symmetric configs are clean β consistent with the |
| uniquely-uncovered-composition thesis. Confirmed cells (256k, DCA-on, ns=5): t3K/t2V = **20** |
| (4/5 empty), t3K/t2V `WS2_DCA_TURBO_V=0` = **100**, t2K/t3V = **100**, sym-t2 = **100**, |
| sym-t3 = **100**. Recommendation: prefer the escape hatch or avoid the t3K/t2V pairing under DCA |
| until the NaN-safe fix lands; production tier q8_0-K/q4_0-V is unaffected. |
|
|
| ### bug-2121 formal correctness gate (14B-1M q8K/q4V, window-mode host tail) |
|
|
| Beyond the greedy-needle deep-spill gate (tails 1600/3200/6400 all PRESENT, zero crashes), |
| a semantic `niah_single_1` gate (ns=5) on Qwen2.5-14B-1M q8_0-K/q4_0-V compares window mode |
| with a forced multi-tile host tail (β₯2 tail tiles) against the fully-resident control: |
|
|
| | config | niah | note | |
| |---|---|---| |
| | resident (control) | **100.0** | reference β all 5 samples finish=stop, correct needle | |
| | window, deep tail (256/80128 resident β **2.44 tail tiles**), max_tokens=24 | **100.0** | **clean pass** β genuine β₯2-tile spill, needle retrieved every sample | |
| |
| **Verdict: the clean ns=5 gate PASSES β #625 CLOSED.** The earlier "tail 3200 = 40.0" |
| reading was a **harness artifact, not a defect.** The original gate used max_tokens=120, so |
| some tail-region needles rambled to the token cap (finish=length) instead of retrieving and |
| stopping β 2/5 correct, 2/5 ramble, 1/5 truncate = 40 β a *scoring* confound, not the pre-fix |
| corruption signature (no GPFs, no garbage, no crash; decode was normal deep-spill ~0.6β1.6 tps, |
| and an earlier "159β400 s/token" reading was just a misread of `gen_secs`, which includes the |
| ~1307 s prefill). Re-running the **same deep-spill config with max_tokens=24** (so a |
| correct-but-verbose sample can't be mis-scored) and a forced **2.44-tile** host tail β deeper |
| than the original β the window path scores **100.0, identical to the fully-resident control.** |
| |
| So the bug-2121 window path is clean at genuine multi-tile deep spill, corroborating the |
| single-forward basis that already validated the fix: the greedy-needle deep-spill gate (tails |
| 1600/3200/6400 all **PRESENT**, zero crashes/GPFs), teacher-forced **logit-equiv real_frac=0**, |
| and the 35B NextN tail-collateral recovery (0.449β0.625, below). The prefill-corruption defect |
| bug-2121 targeted is gone by every measure β single-forward and now a clean multi-request niah. |
|
|
| ### Collateral: 35B NextN tail=200 accept recovery (confirms bug-2121 reach) |
|
|
| The pre-fix 35B-A3B NextN spill-decode anomaly β tail=200 accept dropping to 0.449 while |
| tail=0 held 0.606 β recovered to **0.625** on the fixed DSO (8b23afbf) with the tail=0 |
| control unchanged at 0.606 (same calibration). So the cross-stream pool aliasing (bug-2121) |
| was also silently corrupting that draft path; the fix repairs it. (buglog bug-2121 collateral.) |
|
|
| ### Tranche 4 β anchor + MTPΓDCA re-validation on the WS2-shipped binary (2026-07-10) |
|
|
| Re-ran the Tranche-1/2 anchors **and** the Β§8 Gemma MTPΓDCA logit-equivalence gate on the |
| **current shipped binary β commit `6468ae37` / dualctx `cd65e45f` / DSO `cb8f942d`** (bug-2125 fix |
| + WS1 bug-2127 + WS2 default-on), GPU0 (`tier23-master.sh`), `--dca on --dca-chunk-size 32768`. |
|
|
| **(a) Correctness re-validated β accept + needle are byte-stable B1 β B3.** Every anchor's draft |
| acceptance and needle match the Tranche-1/2 (B1 `8b23afbf`) values exactly, on the genuinely-DCA-on |
| WS2 binary: |
|
|
| | cell | ctx | accept B1 β **B3** | needle | prefill tok/s B1 β **B3** | |
| |---|---|---|---|---| |
| | A4B Q4_K_M + assistant-Q8_0, DCA on | 256k | 0.700 β **0.700** (42/60) | PRESENT | 5200 β **5188** (parity) | |
| | 31B Q6_K + assistant-Q8_0, DCA on | 256k | 0.456 β **0.4557** (36/79) | PRESENT | 1149 β **1147** (parity) | |
| | Qwen3.6-35B UD-Q6_K NextN (no DCA) | 256k | 0.606 β **0.606** (40/66) | PRESENT | 2812 β **2428** β (contention) | |
| | A4B Q4_K_M + assistant-Q8_0, DCA on | 512k | 0.651 β **0.651** (41/63) | PRESENT | 3211 β **3208** (parity) | |
| | 31B Q6_K + assistant-Q8_0, DCA on | 512k | 0.326 β **0.326** (31/95) | PRESENT | 644 β **642** (parity) | |
| |
| So MTPΓDCA + dual-ctx drafters compose correctly and byte-stably on the shipped WS2 binary; the |
| A4B/31B **prefill** tok/s are at parity with B1 (no prefill regression). |
| |
| **(b) Decode tok/s β DEFERRED, cross-GPU contention (not recorded as corrected values).** These |
| anchors ran while GPU1 was committed to task #631's spill sweep, and the cerebrum rule holds: |
| **tps cannot be trusted with the sibling GPU busy** (PCIe/host-BW contention). The observed B3 |
| decode numbers came in **uniformly ~15β30 % below B1 across all cells β including the no-DCA Qwen |
| NextN control** (a change in a non-DCA path that no WS2/bug-2127 edit touches), the tell-tale |
| signature of contention, not a code change. (Prefill, being compute-bound, held parity; decode, |
| the PCIe-sensitive phase, is the one that sagged.) **The manifest's "bug-2127 ~2Γ decode |
| understatement" premise does not apply to these cells anyway** β bug-2127's ~2Γ win is the |
| **asym scalar-K + turbo-V** decode path; these anchors are q8_0-K/**q4_0-V (scalar V)**, so neither |
| bug-2127 nor WS2-in-register-turbo-V engages. **A clean DCA-on decode-tps re-measure is deferred to |
| when GPU1 (#631) is idle** and should be run serially with the sibling GPU idle. (The DCA-on |
| turbo/TCQ-V decode win that WS2 *does* deliver is already the Β§5x matrix.) |
| |
| **(c) Β§8 Gemma assistant-MTP Γ DCA @256k real_frac β RE-CONFIRMED (bug-2118 fix).** The #431 |
| logit-equivalence gate (ref = plain DCA-on, cand = `--spec-type draft-assistant` DCA-on, both |
| `--dca-chunk-size 32768`, google 26B-A4B-128e Q4_K_M + drafters-hf assistant Q8_0, teacher-forced |
| top-20) now runs with **genuine** DCA (bug-2118 made it a no-op when Β§8 was first logged): |
| **`real_frac = 0.0`, `real_disagreements = 0`, `frac_full_agree = 1.0`** β **PASS**. So Gemma |
| assistant-MTP verify is bit-equivalent to plain decode over DCA-laid-out KV at 256k on the shipped |
| binary β the Β§8 claim stands, now on real DCA. (The runner's `mean_tv_advisory β 0.44` "VERDICT: |
| FAIL" is the documented empty-top-logprobs artifact for spec-accepted tokens β `real_frac` is the |
| gate, and the runner emitted `W4_GEMMA_DCA256K_PASS`.) Harness `tier3-mtp-dca-b3.sh`. |
|
|
| **GPU0 CLEAR after this tranche** (servers reaped by port); decode-tps re-measure pending GPU1 idle. |
|
|
| ### Tranche 5 β #674: DCA-OFF scalar-quant MMA decode generalized to Gemma D256/D512 (bs2 GPU1, 2026-07-14) |
|
|
| Folds the #674 result into this campaign. This is **not** a DCA cell β it's the DCA-**off** high-VRAM |
| serving path (scalar-quant KV over the tensor-core MMA decode kernel, patch 0127, chainβ73), the |
| D256(SWA-local)/D512(global) generalization of the #620 D128 lever that Β§3b (Tier-1) folded for Qwen. |
| Gemma-4 A4B native (google 26B-A4B-128e Q4_K_M), DCA-off, decode-tps + logit-equiv vs f16 (Gemma PPL |
| is garbage β correctness is top-token identity, `real_frac`): |
|
|
| | ctx | nkv | f16 | q4q4 | q8q8 | q8q4 | q8q4 vs f16 | env=0 VEC | real_frac | |
| |-----|-----|-----|------|------|------|-------------|-----------|-----------| |
| | 64k | 42.5k | 162.13 | 170.17 | 173.86 | **174.94** | **+7.9%** | 122.17 (MMA +43% over VEC) | 0.0 | |
| | 128k | 112k | 152.15 | 152.95 | β | **154.46** | **+1.5%** | (Β§3c had q8q4-VEC β35% here) | 0.0 | |
| |
| **Verdict:** scalar-quant KV now **beats f16 and is top-token-lossless** at both depths on Gemma's |
| D256+D512 β so with enough VRAM it is the **preferred serving path over turbo** (turbo is slower AND |
| lower quality). The Β§3c/Β§3d kernel-bound quant tax (β28β¦β35% at long ctx) is **erased**; the win |
| narrows deep (MoE-FFN + per-step launch dilute the KV-bandwidth delta) but stays β₯ f16. env |
| `OPENCOTI_QUANT_MMA_DECODE=0` reverts each pair to its native FA-VEC route at every head-dim (graceful). |
| Build note: the 20 D512-heavy instances push `ggml-cuda.so` to 4.43 GiB β bug-2178 (streamed |
| `sha256OfFile`). Tax-erasure detail in `hal_kv_compression.md` Β§3c. **256k cell intentionally skipped** |
| β the curve is monotone toward the f16 floor (parity), not a cliff, so it adds no serving-guidance signal. |
|
|
| ### Tranche 6 β Tier-1 spill + Tier-2 short cells on the fixed binary (bs2, 2026-07-12) |
|
|
| The remaining #654 re-run cells (binary `7abd684039a3` / DSO `1d8fe395c53a`, greedy, `cache_prompt=false`, |
| `n_predict` 256β300, `--kv-residency-mode window --vram-target 90000`). All decode-tps single-GPU |
| (no sibling contention this batch). Closes the campaign apart from two harness slips noted below. |
|
|
| **Tier-1 β Gemma/Qwen spill decode @256k/512k** (q8_0-K/q4_0-V, needle probe): |
|
|
| | model | ctx | decode tps | needle | |
| |-------|-----|-----------|--------| |
| | A4B (google 26B-128e) | 256k | 114.75 | PRESENT | |
| | A4B | 512k | 68.00 | PRESENT | |
| | Gemma-31B | 256k | 33.34 | PRESENT | |
| | Gemma-31B | 512k | 23.24 | PRESENT | |
| | Qwen3.6-35B-A3B NextN | 256k | 151.53 | PRESENT | |
|
|
| **Tier-2 short cells:** |
| - **Β§3.0a β A4B MTPΓKV-tier decode (turbo/TCQ), f16 anchor** (decode tps, off β on / accept): f16 200.4 β |
| **365.8** (0.984); turbo3 153.1 β **263.8** (0.984); turbo3_tcq 104.7 β **214.7** (0.990). MTP self-spec |
| ~1.4β1.8Γ decode across every KV tier; turbo/TCQ stay accept-lossless (β₯0.98). |
| - **Β§2a β 3-arm DCA on/off prefillΓgen** (A4B / Gemma-31B, prefill β gen tps): A4B off 6412 β 156.7, on |
| 7708 β 142.6; Gemma-31B off 2017 β 36.5, on 2121 β 35.7. DCA prefill even edges up on A4B (chunked |
| attn), decode within noise β no DCA tax. |
| - **Β§4c β NIAH q8_0/q8_0** 16k/32k/64k/128k all **100.0** (n=5). **real_frac gate** (assistant-MTP vs |
| plain, DCA-off): **`real_frac=0.0`, `frac_full_agree=1.0` β PASS** (the runner "FAIL" is the documented |
| empty-top artifact; `mean_tv_advisory` is advisory only). |
| |
| **Two harness slips (not engine regressions):** |
| 1. **short4 fused-nextn ours BOOT-FAIL β FIXED + re-run (2026-07-14).** The `run()` boot line omitted |
| `--server`, so ours (llamafile) came up in CLI **chat** mode and never answered `/health`; b9859 |
| (upstream `llama-server`) is a server by default so it booted (bug-2179). Fixed (conditional |
| `--server` for ours) and re-run on GPU1: ours base **208.3** (β b9859 212.0, parity), n1 **226.4**/acc |
| 0.892, n2 **230.4**/0.739, n3 **240.1**/0.638 β NextN decode trails b9859 by ~12β15 % (the unchanged |
| bug-858 verify/CUDA-graph gap, accept at/above upstream at n1). Full table in `fused_nextn_mtp.md`. |
| 2. **tier1-gpuB t2 @512k Qwen-NextN parse-fail** β server booted fine (KV fully resident) but the warmup |
| **prompt (435,574 tok) exceeded the available per-request context (262,144)** β `send_error`, which the |
| harness' JSON parse choked on. This is per-sequence context halving under the dual-context `draft-mtp` |
| path at 512k (`ctx_tgt`+`ctx_dft` split), not a crash; the t1 @256k cell is clean (151.53, PRESENT). |
| The Tranche-2 512k Qwen-NextN cell is **optional** β re-run needs a prompt sized to n_ctx/2, or `-c 1M`. |
| |