Qwen3.6-35B-A3B-Uncensored-HauhauCS-Aggressive — TTQ quant set
TTQ (TokenTinkerer Quant) is a ten-rung GGUF ladder built from HauhauCS/Qwen3.6-35B-A3B-Uncensored-HauhauCS-Aggressive, from 3.33 bpw to 6.72 bpw. Every rung was measured on the same machine, with the same protocol, against the same reference — and every claim below is a measurement, not an estimate.
Source caveat — there is no full-precision release of this model. The fine-tune is published only as GGUF; no F16/BF16 weights exist. The highest-quality source available is therefore upstream's
Q8_K_P(~10 bpw), and it serves as both the requantization source for every rung here and the reference against which all KLD / RMS figures are measured. Two consequences: every quality number below is relative to that file rather than to the true full-precision model, and an unknown fraction of each measured divergence is inherited from it and cannot be separated without a full-precision source. Comparisons between files remain valid, because they all share the same reference. The full-precisionQwen/Qwen3.6-35B-A3Bbase model is not a substitute — the fine-tune is a different model.
The point of the set is efficiency at a given size, and it holds two ways. Every rung beats the base repository's nearest-size quant on KLD — by 1.26× to 3.51×. And every rung's nearest-quality partner there is a 1.44 to 7.90 GiB larger file. The matched pairings below are also faster: +6% to +19% decode, +28% to +80% prefill. All with significance shown.
| this set | vs base repo file | KLD | size | decode | prefill | RMS Δp |
|---|---|---|---|---|---|---|
| 6.72 bpw Q6_K (27.10 GiB) | Q6_K_P (28.54 GiB) |
1.61× better (5.1σ) | −1.44 GiB | +11% | +50% | better |
| 6.06 bpw Q5_K_M (24.45 GiB) | Q6_K_P |
1.23× better (2.5σ) | −4.09 GiB | +19% | +80% | better |
| 5.59 bpw Q5_K_S (22.54 GiB) | Q5_K_P (26.10 GiB) |
1.28× better (3.9σ) | −3.56 GiB | +6% | +28% | better |
| 4.90 bpw Q4_K_M (19.76 GiB) | Q5_K_P |
a tie (0.65σ) | −6.34 GiB | +16% | +45% | better |
The last line is the shape of the whole set: where it does not win on quality, it wins by being dramatically smaller at the same quality.
The ladder
KLD is KL divergence against the model's Q8_K_P logits, measured over 40 fixed chunks of an
internal evaluation set (lower is better; ± is the standard error). RMS Δp is the root-mean-square
difference in the probability assigned to the actual next token, so it reads directly as
percentage points. The corpus and chunking are identical for every rung here and for both
reference files, which is what makes the columns comparable. tg128 is llama.cpp llama-bench
decode at -ncmoe 40 (all experts on CPU), -p 512 -n 128 -r 5 — see
Speed before comparing it to anything.
| file suffix | declared type | GiB | bpw | KLD ± | PPL(Q) | RMS Δp | tg128 |
|---|---|---|---|---|---|---|---|
TTQ-3.33bpw-IQ3_XXS |
IQ3_XXS (23) | 13.46 | 3.33 | 0.060539 ± 0.001366 | 6.060 | 7.339% | 27.07 |
TTQ-3.51bpw-IQ3_XS |
IQ3_XS (22) | 14.16 | 3.51 | 0.051261 ± 0.001194 | 6.094 | 6.757% | 26.30 |
TTQ-3.67bpw-Q3_K_S |
Q3_K_S (11) | 14.84 | 3.67 | 0.042459 ± 0.001034 | 5.960 | 5.924% | 36.28 |
TTQ-3.93bpw-Q3_K_M |
Q3_K_M (12) | 15.85 | 3.93 | 0.034379 ± 0.000873 | 5.959 | 5.205% | 37.41 |
TTQ-4.18bpw-IQ4_XS |
IQ4_XS (30) | 16.90 | 4.19 | 0.025999 ± 0.000740 | 5.944 | 4.520% | 37.22 |
TTQ-4.51bpw-IQ4_NL |
IQ4_NL (25) | 18.20 | 4.51 | 0.018427 ± 0.000634 | 5.896 | 3.789% | 53.86 |
TTQ-4.90bpw-Q4_K_M |
Q4_K_M (15) | 19.76 | 4.90 | 0.015152 ± 0.000886 | 5.902 | 3.415% | 53.36 |
TTQ-5.59bpw-Q5_K_S |
Q5_K_S (16) | 22.54 | 5.59 | 0.011316 ± 0.000672 | 5.879 | 3.115% | 48.65 |
TTQ-6.06bpw-Q5_K_M |
Q5_K_M (17) | 24.45 | 6.06 | 0.007621 ± 0.000252 | 5.868 | 2.501% | 48.38 |
TTQ-6.72bpw-Q6_K |
Q6_K (18) | 27.10 | 6.72 | 0.005800 ± 0.000218 | 5.872 | 2.173% | 45.46 |
Full filenames are Qwen3.6-35B-A3B-Uncensored-HauhauCS-Aggressive-<suffix>.gguf. The suffix is
the only part that varies.
How to read the names
Two independent fields, and they mean different things:
<bpw>bpwis the true measured rate, computed from the finished file's byte count. Trust this number.- The trailing token is the file's declared
general.file_type, and it is deliberately chosen to understate the true rate and to be distinct across the whole set. For exampleTTQ-3.33bpw-IQ3_XXSis not a plain IQ3_XXS file — it is 3.33 bpw, comfortably above the 3.06 bpw that the IQ3_XXS label nominally implies.
That second rule is not cosmetic. If two files in a repository declare the same general.file_type,
the Hub's download selector collapses them and one becomes effectively invisible. Every token here
is distinct and monotone, so all ten rungs stay individually downloadable.
Which rung should I use?
| if you want | use | why |
|---|---|---|
| the smallest usable file | 3.33 bpw IQ3_XXS (13.46 GiB) | 3.33 bpw is the practical floor for this model; below it, quality collapses (see Limits) |
| best quality per byte below 4 bpw | 3.67 bpw Q3_K_S | 1.76× better than the base repo's IQ3_M at a comparable size, and 37% faster than the two codebook rungs |
| the one that also dominates on size | 3.51 bpw IQ3_XS | 1.46× better than IQ3_M and 0.22 GiB smaller — but it is the slowest file in the set (codebook) |
| fastest small rung in this column | 4.51 bpw IQ4_NL | 53.86 tg, statistically tied with the 4.90. This ranking does not survive serving — see the caveat below: in a GPU-resident config the 3.93 rung runs ~21% faster than this one |
| the best balance | 4.90 bpw Q4_K_M | ties the base repo's Q5_K_P on KLD at 6.34 GiB smaller, and is 16% faster on decode and 45% faster on prefill |
| near-Q8 quality, small | 6.72 bpw Q6_K (27.10 GiB) | best KLD and best RMS in the set, and it beats Q6_K_P on every axis |
| maximum quality, cost no object | Q8_K_P (from the base repo) | the reference this whole ladder is measured against |
The one non-obvious trap: do not pick by size alone. The two smallest rungs use codebook expert formats and are the slowest files in the set (26-27 tg), while the two rungs around 18-20 GiB are the fastest (53-54 tg) — nearly 2× quicker than files barely larger than the 3.51. Details below.
Serving
Stock llama.cpp
llama-server -m TTQ-3.93bpw-Q3_K_M.gguf \
-c 32768 -ngl 99 -fa on --jinja \
-ctk q8_0 -ctv q8_0
--jinja makes llama.cpp apply the chat template embedded in the file (Qwen's official one) —
no extra files needed. The whole point of these quants is behaviour parity with the base model, so
the defaults are the right starting point.
Fitting the experts. A 35B MoE at these sizes will not fit its experts in VRAM on a consumer
card, and llama.cpp handles that well: -ncmoe N keeps the experts of the first N layers on the
CPU and the rest on the GPU. That dial matters more than any other flag:
- Measured on an 8 GB card,
-ncmoe 36ran ~20% faster than-ncmoe 40(all experts on CPU). - One step further (
-ncmoe 34) bought another ~5%, for ~800 MiB of VRAM. - Leave 0.5-1 GiB of VRAM free. On Windows/WDDM, running out does not fail cleanly — it collapses prefill (measured: 1104 → ~600 t/s). If throughput suddenly drops, check VRAM before suspecting the model.
- The optimum is rung-specific, not transferable: the 4.51 rung has an earlier cliff than the 3.93. Tune it per rung.
Sampling
What this set is served with:
--temp 0.6 --top-p 0.95 --top-k 20 --min-p 0
That is Qwen's own recommended sampling, verbatim. Their card lists, for thinking mode on
precise coding tasks: temperature=0.6, top_p=0.95, top_k=20, min_p=0.0, presence_penalty=0.0, repetition_penalty=1.0. The two penalties are already off by default in llama.cpp, so the command
above is that preset exactly. Nothing here is a house preference.
For comparison, their card suggests two other presets: temperature=1.0, presence_penalty=1.5 for
thinking mode on general tasks (hotter, more variety), and temperature=0.7, top_p=0.80 for
non-thinking mode. Swap to either if it suits your use; these quants are not tuned to a sampler.
The two benchmark spot-checks below were run greedy, not at the serving sampling above. Greedy is the stricter and more reproducible test: no sampling variance, so a score cannot be flattered by a lucky draw, and anyone can re-run it. All KLD, PPL and RMS figures in this card are sampler-independent: perplexity evaluation is a deterministic single pass over fixed text.
buun-llama-cpp
Same command line — the fork is a drop-in — with one addition:
--moe-cache, which stock does not have. It caches hot experts in VRAM. Its value is rung-dependent — worth roughly +11% decode on the 3.93, roughly 0% on the 4.51. It is elastic: the pool is free-VRAM-minus-reserve and shrinks itself under pressure rather than failing, so it never blocks anything. Pass an explicit size (--moe-cache 1000);onlets it silently shrink other allocations instead of erroring, andoffcosts nothing on the 4.51 but ~11% on the 3.93.
With the MTP head (speculative decoding)
This repository also ships the model's multi-token-prediction head as a sidecar. Attaching it recovers most of the decode lost to quantization:
llama-server -m TTQ-3.93bpw-Q3_K_M.gguf \
-c 32768 -ngl 99 -fa on --jinja \
-md Qwen3.6-35B-A3B-MTP-ONLY-Q4_K_M-shared.gguf \
-ngld 999 -ctkd q8_0 -ctvd q8_0 \
--spec-type draft-mtp --spec-draft-n-max 2
Measured, same session, greedy, at 3.93 bpw: 37.30 → 49.35 t/s, +32%. Prefill pays a few percent for the verify batch.
-ctkd/-ctvd set the head's own KV cache — it is a separate model and needs its own. -ngld
is its layer offload. If your build supports TurboQuant KV types, use them instead — they
preserve more quality at a given size: turbo8 in place of q8_0, or turbo4 in place of q4_0.
The measurements above were taken with TurboQuant KV; q8_0 is the stock-safe choice.
--spec-draft-n-max 2 measured best. On real workloads — the two benchmark runs below — draft
acceptance came in at 84.5-95%. A depth sweep on a varied-prompt harness gave 89% → 82% → 74% →
68% from n_max 1 → 4, with decode peaking at 2: higher values trade acceptance for verify-batch
cost.
The MTP head in this repository
Qwen3.6-35B-A3B-MTP-ONLY-Q4_K_M-shared.gguf — 532 MiB, a sidecar, not a quant of the model.
It is stripped: token_embd.weight and output.weight were removed and
qwen35moe.nextn_shared_target_tensors = true added, so the loader borrows the target model's
copies instead of duplicating ~670 MiB of weights. The unstripped head is 1192 MiB. Use it only with
the matching target model and a build that supports --spec-type draft-mtp.
Speed column conditions
Read this before comparing tg128 to any other number, including numbers on other cards.
What was measured. llama-bench -ngl 999 -ncmoe 40 -t 6 -p 512 -n 128 -r 5, i.e. all expert
layers on CPU, batch 1, no speculative decoding. That isolates the expert kernel, which is what
differs between rungs — but it is not serving throughput. Measured serving numbers with expert
layers moved to GPU and an MTP drafter attached differ substantially, and the ordering itself can
invert. Same-session 2×2 at a matched config (ncmoe 36, cache 1000, np 1, greedy):
| rung | drafter off | drafter on |
|---|---|---|
| 3.93 Q3_K_M | 37.30 | 49.35 |
| 4.51 IQ4_NL | 37.84 | 45.88 |
The 4.51's 44% advantage in the llama-bench column does not survive any GPU residency — with the drafter off the two are a tie, and with it on the 3.93 leads by 8%. The 4.51 also runs materially closer to the VRAM ceiling (7.7 GiB peak against the 3.93's 6.6-7.4 GiB), and on this machine how much VRAM is left over is what prevents prefill collapse. Do not read this column as throughput, and do not choose a rung for serving from it.
The speed column is not monotonic in size, and the reason is the format. Two families are in play:
| family | rungs | tg128 |
|---|---|---|
| codebook, IQ3 and below (IQ3_XXS, IQ3_XS) | 3.33, 3.51 | 24-26 |
| codebook at 4-bit (IQ4_XS) | 4.18, 4.51 | 36-54 |
| linear (Q3_K, Q5_K, Q6_K) | 3.67, 5.59, 6.06, 6.72 | 33-52 |
A codebook format reconstructs weights by looking up a memory-resident grid; on AVX2 there is no register-resident equivalent, and the 256-512 entry tables cost more than the bytes they save. So the 14.16 GiB rung is slower than the 15.85 GiB rung, and the fastest file in the set is the 18.20 GiB one. A card listing only size and KLD would actively mislead here, which is why this column exists.
The penalty is specific to IQ3 and below, not to codebooks in general. IQ4_XS does not suffer it — the 4.51 and 4.90 rungs, whose experts are IQ4_XS, are the two fastest files in the set. Below 4 bits the lookup cost dominates; at 4 bits it does not.
Why the bottom rungs stay codebook. Going fully linear is not possible below roughly 3.6 bpw
without losing a lot of quality. A measured all-Q3_K build at 3.46 bpw scored KLD 0.138805
— 3.3x worse than the 3.67 — with same-top-p down to 82.78%. token_embd and output.weight
at Q3_K are catastrophic on 1.017 B params of vocabulary projection, and with Q2_K ruled out there
is no budget to keep the non-expert side high once the experts are linear at that size. For
reference, that is worse than the 2.75 bpw codebook rung at 0.135076. So the 3.3-3.5 rungs
keep codebook experts deliberately: it is the only way to hold usable quality at those sizes,
and they pay for it in decode speed (24-26 versus 33-52). That is a quality-over-speed trade at
the low end, not an oversight.
Above ~20 GiB the picture is muddier. Within the linear family the rate is roughly 2.3% decode per GiB — but format choices move it: raising the expert gate/up from Q4_K to Q5_K is speed-neutral (−0.6% for +1.9 GiB), while Q8_0 on expert tensors costs 7.7% per GiB. There is no single rate.
These numbers were measured with llama-bench's own short, highly repetitive prompt. That
matters: with repetitive text, the same experts are selected every token, so the CPU's L3 cache
actually helps and the all-CPU configuration is flattered. Giving the same model a realistic,
varied prompt costs about 30% of decode in a server setting. Treat tg128 as a comparative
expert-kernel measurement and nothing more.
How these were made
- Requantized from upstream's
Q8_K_P(see the source caveat above) using thebuun-llama-cppfork and our own imatrix, computed for this model rather than taken from the base model. - Chat template: every file embeds Qwen's official template at
tokenizer.chat_template(7,764 characters, sha256 prefixe84f32a2), inherited unchanged from the upstream source and verified identical to the template published inQwen/Qwen3.6-35B-A3B. No serving-side template is baked in, so these files behave as the base model does out of the box. If you want to reproduce the author's serving setup, it uses a separate community template; pass it explicitly with--chat-template-file. - Expert tensors are mixed per-layer and per-tensor; the non-expert tensors (attention, SSM, shared-expert, embeddings, output) are held at Q8_0 in every rung above 5.59 bpw, which is why those rungs carry a higher byte count than a stock recipe of the same nominal type.
- The output head is kept at Q8_0 even in the smallest rungs where the embeddings drop to Q4_K. It is the last projection before the logits that KLD is measured on, and protecting it is cheap.
- The declared
general.file_typeis patched after each build to keep the token set distinct and monotone (see How to read the names).
Measurement protocol
Everything is measured locally, on the same machine, with the same harness:
- KLD / PPL / RMS: divergence against a stored Q8_K_P reference, 40 fixed chunks of an
internal evaluation set at 512 tokens each, KV pinned, a single greedy deterministic pass.
Reported
±is the standard error over chunks. The reference logits are derived from the sameQ8_K_Pfile that every rung is requantized from. - Speed: one fixed serving configuration, recorded from a second consecutive invocation. The first is cold, and understates prefill by up to 1.58× and decode by about 12% — an artifact of the page cache rather than a property of the model, and the single easiest way to produce a misleading GGUF comparison.
- Significance is quoted as
|Δ| / sqrt(σ₁² + σ₂²).
Hardware: an 8 GB GPU, 6-core CPU, 32 GB DDR4-2133, Windows. Speed numbers in particular are hardware-specific; the KLD, PPL and RMS numbers are hardware-independent and can be compared directly with any other measurement made with the same reference and chunk count.
Comparison against the base repository's quants
All files below were measured by the same protocol on the same machine, so the columns are directly
comparable. _P files and IQ3_M/IQ4_XS/Q4_K_M are from the base repository.
| file | GiB | bpw | KLD ± | PPL(Q) | RMS Δp |
|---|---|---|---|---|---|
Q2_K_P |
13.95 | 3.46 | 0.140590 ± 0.003094 | 6.456 | 10.855% |
| TTQ-3.33bpw-IQ3_XXS | 13.46 | 3.33 | 0.060539 | 6.060 | 7.339% |
IQ3_M |
14.38 | 3.56 | 0.074836 ± 0.001481 | 6.127 | 7.990% |
| TTQ-3.51bpw-IQ3_XS | 14.16 | 3.51 | 0.051261 | 6.094 | 6.757% |
| TTQ-3.67bpw-Q3_K_S | 14.84 | 3.67 | 0.042459 | 5.960 | 5.924% |
| TTQ-3.93bpw-Q3_K_M | 15.85 | 3.93 | 0.034379 | 5.959 | 5.205% |
| TTQ-4.18bpw-IQ4_XS | 16.90 | 4.19 | 0.025999 | 5.944 | 4.520% |
IQ4_XS |
17.44 | 4.32 | 0.032877 ± 0.000864 | 6.010 | 5.253% |
Q3_K_P |
17.72 | 4.39 | 0.064623 ± 0.001405 | 6.085 | 7.055% |
| TTQ-4.51bpw-IQ4_NL | 18.20 | 4.51 | 0.018427 | 5.896 | 3.789% |
| TTQ-4.90bpw-Q4_K_M | 19.76 | 4.90 | 0.015152 | 5.902 | 3.415% |
Q4_K_M |
19.71 | 4.88 | 0.028658 ± 0.001102 | 5.928 | 4.709% |
Q4_K_P |
21.82 | 5.41 | 0.024974 ± 0.001055 | 5.920 | 4.359% |
| TTQ-5.59bpw-Q5_K_S | 22.54 | 5.59 | 0.011316 | 5.879 | 3.115% |
| TTQ-6.06bpw-Q5_K_M | 24.45 | 6.06 | 0.007621 | 5.868 | 2.501% |
Q5_K_P |
26.10 | 6.47 | 0.014504 ± 0.000463 | 5.884 | 3.511% |
| TTQ-6.72bpw-Q6_K | 27.10 | 6.72 | 0.005800 | 5.872 | 2.173% |
Q6_K_P |
28.54 | 7.07 | 0.009366 ± 0.000664 | 5.863 | 2.749% |
Q8_K_P (reference) |
40.61 | 10.06 | — | — | — |
Read that table by size, not by row order. The pattern is consistent: every file in this set beats the base repository's nearest-size quant on KLD — by 1.26× to 3.51× — and every file's nearest-quality partner there is 1.44 to 7.90 GiB larger.
KLD against file size. Gold is this set. The dashed line joins only the base repository's files that are
best at their size; the hollow marker is its Q3_K_P, which is bigger than — and worse than — the repo's
own IQ4_XS, so it sits off the line. The recommended rung carries its benchmark spot-checks, and the
footnote the top-rung comparison against Q6_K_P.
Benchmark spot-checks
Measured with greedy sampling, on the same harness and benchmark set as the CyberTiel TTQ ladder's spot-checks. More will be added as they are run — a new commit, not a new model, and every TTQ card is updated together when a result lands.
| TTQ-3.93bpw-Q3_K_M (15.85 GiB) | benchmark | Cyber-Tiel 3.92 (16.22 GiB) | Groot 4.70 IQ4_NL (10.39 GiB) | reference: base model (full precision) | notes |
|---|---|---|---|---|---|
| 84.8 | GPQA Diamond, 198 q | 88 | 86 | official 86.0 — ~0.3σ, indistinguishable | accuracy, answer-match, greedy |
| 97.0 | HumanEval, 164 problems | 98.2 | 98.2 | no official figure published for this model | pass@1, greedy |
| 92.6 | MMLU-Redux, 5,330 q | pending | pending | official 93.3 — ~1.4σ, consistent | accuracy, answer-match, greedy |
| 79.9 | LiveCodeBench v6 | 86.5 | pending | official 80.4 — 0.5 points, inside sampling noise | pass@1, greedy |
| 93.05 | IFEval | pending | 92 | ~93.06 third-party — matched to 0.01 points | prompt-level accuracy (strict/loose avg), greedy |
The rung is a header because this is the only rung we benchmark. Every model column carries its size in GiB — this rung 15.85, Cyber-Tiel's 16.22, Groot's 10.39.
The Cyber-Tiel 3.92 and Groot 4.70 IQ4_NL columns are context, not controls. Both are
different models at a comparable ladder position, measured by the same harness on the same packs — so
they answer "does this rung land where a rung of this family should?", not "what did quantization
cost". None of the three is a size- or quality-matched pairing.
GPQA Diamond, MMLU-Redux and LiveCodeBench are the three with published comparisons. GPQA cannot resolve much: at n=198 and p ≈ 0.85 the binomial standard error is ±2.5 points, so its 1.2-point gap is roughly 0.3σ, and resolving a difference that small at 95% confidence would need on the order of 3,400 questions. MMLU-Redux is the one that can: 5,330 questions, SE ±0.35 points, so its 0.7-point gap is about 1.4σ — consistent with the official figure, though not proof of parity. HumanEval gives no point of comparison here — it is not on the base model's card — so treat 97.0 as an absolute result, with a ±1.3-point binomial standard error at n=164.
LiveCodeBench v6 lands 0.5 points below the official 80.4. On a competitive-programming benchmark that gap is well inside sampling noise, so read it as a tie — and it is a third distinct task type, not another function-completion test. IFEval lands at 93.05 (the average of strict and loose scoring), against a third-party ~93.06 for the full-precision model — a 0.01-point match, which on 541 prompts is 0.009σ. The reference is third-party, not on Qwen's own card, so treat it as indicative rather than official; but the agreement is as close as this benchmark can resolve.
What these do and do not show. They show no measurable collapse in quality: a 15.85 GiB file at 3.93 bpw answers graduate-level science and a 5,330-question general benchmark at parity with the full-precision model, solves 159 of 164 Python problems, matches full precision on instruction following, and lands within 0.5 points of it on competitive programming. MMLU-Redux now puts a number on the resolution — 1.4σ rather than "too small to measure" — but 0.7 points is still inside the noise, so this bounds the loss rather than proving there is none.
Four caveats apply. The official figures come from Qwen's own harness, whose protocol for these benchmarks is not published, so the comparisons are approximate. The sampling used here is greedy, while normal use samples at temp 0.6 — greedy is the stricter test, but it is not the distribution you will see in normal use. And the MMLU-Redux pack shuffles answer order deterministically, so it is not the canonical option order. And the IFEval reference of ~93.06 is third-party rather than published on Qwen's own card, so that comparison stays indicative even though the two numbers agree to 0.01 points.
Limits and things that did not work
Recorded because negative results are results, and because several of them contradict intuitions that this project started with.
3.33 bpw is the floor. Below it, both available routes were built and measured:
- a 2.75 bpw codebook rung (IQ2_S gate/up + IQ2_XS down) scored KLD 0.135076 — a statistical
tie with
Q2_K_P, the worst file in the table, at 2.84 GiB smaller. Not worth publishing. - the linear route (Q2_K/Q3_K at the bottom) is dominated for the same reason.
The reason is measurable: the marginal KLD cost per GiB rises as the model shrinks. Dropping from 3.33 to 2.75 bpw costs 0.0318 KLD/GiB, roughly 2.4× the 0.0133 KLD/GiB of the 3.33→3.51 step. Bytes buy quality cheaply at the top of the ladder and expensively at the bottom.
Allocation shape barely matters. Three 5.58 bpw rungs were built to the same size with the expert bits placed very differently — gate-heavy, down-heavy, and with the non-expert reduced to fund more gate. They came out statistically indistinguishable (0.7-1.05σ). A fourth rung that spent 1.46 GiB on Q8_0 expert gates gained no KLD at all while losing 11% of decode. Design has to be justified by size, format family and simplicity — not by where the bits sit.
Two obvious-looking allocation principles were tested and failed: "put the bits on gate/up and take them from down" and "the non-expert is a poor place to spend". Both were contradicted at the size where they were tested. They may hold elsewhere; they are not stated here as rules.
The speed column is a comparative kernel measurement, as explained above — not throughput, and its rung ordering is not necessarily the ordering you will see in a server.
Credits and licence
- Base model: HauhauCS/Qwen3.6-35B-A3B-Uncensored-HauhauCS-Aggressive, itself a fine-tune of Qwen/Qwen3.6-35B-A3B. All credit for the model belongs there; this repository only re-quantizes it.
- Quantization: TokenTinkerer, using our own imatrix for this model.
- Licence follows the base model: apache-2.0. The base model's own terms and acceptable-use policy apply.