|
Download appendix/original-ICE/RECIPE.md from gbuzhf/ICE-quantization: direct link, hf CLI and curl.
- Browser
- Download file 6.42 kB
-
https://huggingface.co/gbuzhf/ICE-quantization/resolve/main/appendix/original-ICE/RECIPE.md
- Command line
-
hf download hf://gbuzhf/ICE-quantization/appendix/original-ICE/RECIPE.md
-
curl -L -o RECIPE.md https://huggingface.co/gbuzhf/ICE-quantization/resolve/main/appendix/original-ICE/RECIPE.md
6.42 kB
| title: ICE for Ornith-1.5-35B-A3B — the concrete instantiation | |
| created: 2026-08-21 | |
| status: SHIPPED 2026-08-21 — 4 tiers live, uniform expert allocation | |
| principle: see PRINCIPLE.md (model-agnostic) | |
| # ICE — Ornith-1.5-35B-A3B | |
| The general method is in [PRINCIPLE.md](PRINCIPLE.md). This file is what it | |
| produced for *this* model, with the arithmetic shown. | |
| ## Architecture inputs | |
| | | | | |
| |---|---| | |
| | blocks | 41 = 30 linear/SSM + 10 full-attention (3,7,…,39) + 1 MTP (`blk.40`) | | |
| | residual width | 2048 | | |
| | experts | 256, 8 active → **sparsity ratio 32** | | |
| | expert FFN / shared FFN | 512 / 512 | | |
| | KV heads | 2, head_dim 256, on 10 blocks only → ~20 KB/token | | |
| | vocab | 248,320 → `output.weight` = 508.6 M in one tensor | | |
| **Every block is 95.6% expert weights** (805.3 M of ~842 M). The surgical field is | |
| the remaining ~35 M per block plus the two 508 M end-caps. | |
| ## Active-compute geography (measured) | |
| | role | params | % of file | % of *active* compute | | |
| |---|---:|---:|---:| | |
| | routed experts (8/256) | 32.21 B | 92.94% | 34.2% | | |
| | attention | 1.03 B | 2.96% | **34.9%** | | |
| | output head | 0.51 B | 1.47% | **17.3%** | | |
| | ssm | 0.26 B | 0.74% | 8.7% | | |
| | shared expert | 0.13 B | 0.36% | 4.3% | | |
| | token_embd | 0.51 B | 1.47% | 0% (`get_rows`) | | |
| **65.8% of active parameters are non-routed.** Active total 2.95 B — which is what | |
| the "A3B" label means, and a useful check that the accounting is right. | |
| ## The assignment | |
| | tensor | × | params | class | type | | |
| |---|---:|---:|---|---| | |
| | `ffn_gate_inp`, `ffn_gate_inp_shexp` | 80 | 21.0 M | DISCRETE | F32 † | | |
| | `ssm_conv1d` | 30 | 1.0 M | RECURRENT | F32 † | | |
| | `ssm_alpha`, `ssm_beta` | 60 | 3.9 M | RECURRENT | **F32 (pinned)** | | |
| | `ssm_a`, `ssm_dt`, all norms | — | 0.3 M | RECURRENT / — | F32 † | | |
| | `attn_k`, `attn_v` | 20 | 21.0 M | **CACHED** | **F16** | | |
| | `attn_q` | 10 | 167.8 M | INSTANT | Q8_0 | | |
| | `attn_output` | 10 | 83.9 M | INSTANT | Q8_0 | | |
| | `attn_qkv` | 30 | 503.3 M | INSTANT | Q8_0 | | |
| | `attn_gate` | 30 | 251.7 M | INSTANT | Q8_0 | | |
| | `ssm_out` | 30 | 251.7 M | INSTANT | Q8_0 | | |
| | `ffn_*_shexp` | 120 | 125.8 M | always-on | Q8_0 | | |
| | `output.weight` | 1 | 508.6 M | always-on | Q8_0 | | |
| | `token_embd` | 1 | 508.6 M | — | Q8_0 | | |
| | `blk.40.nextn.eh_proj` + blk.40 attn/shexp | — | 39.3 M | draft projections | Q8_0 | | |
| | **`ffn_{down,gate,up}_exps`** | 123 | **33.02 B** | INSTANT | **the dial** | | |
| † already F32 in llama.cpp: `ffn_gate_inp*` is excluded by name, `ssm_conv1d` has | |
| first dim 4 (not a multiple of 256), 1-D tensors are never quantized. Pinning them | |
| would be *inert* and fail GATE 0 — the intent is satisfied by the quantizer itself. | |
| **Fixed body ≈ 2.6 GB.** Propagating set = 47 M params = **0.14% of the model**, | |
| exact for 0.15 GB. | |
| ### Expert split | |
| **UNIFORM** — `down` = `gate` = `up`. The first ladder shipped a 0.79 bpw bump on | |
| `down` derived from `log4(0.6104/0.2048)`; a controlled test at identical size | |
| refuted it (0.041192 uniform vs 0.046449 bumped, **11.3% better uniform**), and the | |
| ladder was rebuilt. See PRINCIPLE.md Law 3. | |
| ### Draft head | |
| `blk.40`'s **experts follow the tier**; only its projections are Q8_0. Draft errors | |
| are verified by the target model, so they cost *acceptance*, not correctness. | |
| Frees ~0.40 GB versus pinning the whole block. | |
| ### No depth grading | |
| Refused deliberately. Water-filling over the real routing histogram shows the | |
| optimal gain is **+0.139 bpw**, and the direction of a depth profile is unresolved | |
| (PR says middle, convention says edges). Not worth the risk budget. | |
| ## The ladder | |
| | tier | built | expert bpw | down = gate = up | | |
| |---|---:|---:|---| | |
| | `19G-ICE` | 18.82 GB | 3.899 | IQ3_S / IQ4_XS | | |
| | `21G-ICE` | 20.84 GB | 4.383 | IQ4_XS / Q4_K | | |
| | `23G-ICE` | 22.83 GB | 4.868 | Q4_K / Q5_K | | |
| | `25G-ICE` | 24.84 GB | 5.353 | Q5_K / Q6_K | | |
| GATE 0: **0 double-matched, 0 uncovered, 0 inert** on all four. | |
| ## Predicted position (active bpw, pre-measurement) | |
| | build | disk | ACTIVE bpw | dense | blk.40 | | |
| |---|---:|---:|---:|---:| | |
| | UD-IQ4_XS | 18.68 G | 6.762 | 2.47 G | 0.90 G | | |
| | **19G-ICE** | 18.84 G | **7.191** | 2.61 G | 0.43 G | | |
| | **23G-ICE** | 22.83 G | **7.521** | 2.61 G | 0.53 G | | |
| | UD-Q4_K_XL | 23.21 G | 7.471 | 2.59 G | 0.90 G | | |
| | **25G-ICE** | 24.84 G | **7.691** | 2.61 G | 0.53 G | | |
| | UD-Q5_K_S | 25.83 G | 7.693 | 2.59 G | 0.90 G | | |
| `25G-ICE` matches `UD-Q5_K_S`'s active precision at **0.99 GB less**. | |
| ## Falsifiable predictions — scored | |
| 1. ~~`25G-ICE` ≥ `UD-Q5_K_S` on measured KLD at ~1 GB less.~~ **FAILED.** 0.0303 vs | |
| 0.0272; ICE is 0.99 GB smaller but not better. The 0.79 gap it rested on was then | |
| refuted outright. | |
| 2. **`19G-ICE` beats `UD-IQ4_XS`** — **HELD.** 0.060844 vs 0.0723, **15.8% better** | |
| at 0.14 GB *smaller* (18.82 vs 18.68 GB is +0.14; after the uniform rebuild the | |
| file is 18.82 GB and still wins). | |
| 3. **Un-pinning `blk.40` costs <2 pp acceptance** — **HELD, direction unverified.** | |
| 96.04% measured, above the 92.97% baseline, but on a different tier so not a | |
| clean comparison. No collapse. | |
| Same harness as the UD/APEX ladder — wikitext-2-raw, 16 chunks, 2048 ctx — so the | |
| numbers drop straight into the existing table. Changing the harness would make the | |
| comparison meaningless. | |
| ## Results — shipped | |
| | tier | size | mean KLD | top-1 | vs UD curve at same size | | |
| |---|---:|---:|---:|---:| | |
| | `25G-ICE` | 24.84 GB | 0.030304 | 93.16% | −1.9% | | |
| | `23G-ICE` | 22.83 GB | 0.036069 | 92.65% | −6.3% | | |
| | `21G-ICE` | 20.84 GB | 0.041192 | 92.03% | **−18.6%** | | |
| | `19G-ICE` | 18.82 GB | 0.060844 | 89.72% | **−13.6%** | | |
| **MTP draft acceptance: 96.04%** (388/404), measured on the shrunk `blk.40`. | |
| Baseline with the block fully Q8_0 was 92.97% on a different tier, so this is not a | |
| clean comparison — but it establishes the smaller draft head still drafts. | |
| The advantage grows as size falls: at the top of the ladder the calibration floor | |
| (~0.0185) dominates and no allocation choice can move it. | |
| ### What did not survive measurement | |
| | idea | verdict | | |
| |---|---| | |
| | `down` bumped above `gate`/`up` | **refuted, −11.3%** — ship uniform | | |
| | `token_embd` → Q4_K | **not replicated** — helps at 21G, hurts at 19G | | |
| | `attn_gate` / `ssm_out` → Q6_K | **harmful** — always-on, 32× law | | |
| | `attn_q` demotion | dropped before shipping — arithmetic didn't hold | | |
| | up↔down scale migration | **dead** — `down` columns uniform (p95/p05 = 1.09) | | |