docs(pfi): evaluate the two gen-seat replacement candidates

preetpatel/Qwen3.8-27B-Uncensored-NVFP4 is disqualified on two independent hard
failures, both read directly off the artifacts via HTTP Range requests against the
safetensors header (about a megabyte, not a 20 GB download):

  - ZERO mtp tensors. The author's recipe.yaml asks to ignore re:.*mtp.*, but the
    written config.json has no mtp ignore entry while re:.*visual.* expanded to 110
    explicit ones. That asymmetry is llm-compressor pruning a pattern that matched
    nothing, i.e. the MTP head was never loaded. Costs roughly half our decode.
  - NVFP4 W4A4, 4-bit activations. Precisely the AEON failure mode: the fidelity
    gradient is W4A4 < W4+FP8 < W4+bf16, W4A4 drove ~15-20% stochastic degeneration,
    and it collapses past ~30k context. The gen seat serves 262K.

orcarouter/Qwen3.8-27B-Uncensored checks out as a quant source: stock-Qwen base
rather than a reasoning-compression finetune, Arditi-style single-direction
abliteration, 15 mtp and 333 visual tensors verified present, chat template
byte-identical to the heresy build we are serving, and the gate is already accepted
on our token.

Also records the author's FP8 release as a noted-but-not-recommended third option:
far more traction, but 30.9 GB against NVFP4's 22 GB, and on a zero-sum GPU0 that
+9 GB comes out of the KV pool and breaks 262K context.

And states the imatrix constraint plainly. Our recipe has always requested
imatrix_mse and always silently fallen back to uniform MSE; playbook 3.13 warns
against assuming an imatrix would help before verifying llm-compressor can consume
external importance data at all. The W4A16 portions are data-free by construction
and cannot use it regardless.
This commit is contained in:
2026-08-21 00:50:57 -07:00
parent 48410a6a90
commit bf65d0254d
@@ -0,0 +1,89 @@
# Gen-seat candidate evaluation — 2026-08-21
Cold-Fusion was abandoned (see `persistent-memory.md`); the seat is on
`qwen38-27b-heresy-nvfp4-mixed`. Two replacement candidates were put up. All facts
below come from the HF registry and from reading the artifacts directly — the
safetensors headers were fetched with HTTP **Range** requests, so the tensor census
cost about a megabyte rather than a 20 GB download.
## The candidates
| | `orcarouter/Qwen3.8-27B-Uncensored` | `preetpatel/…-NVFP4` |
|---|---|---|
| what | BF16 source weights | NVFP4 quant **of orcarouter** |
| size | 55.6 GB | 19.7 GB |
| base | `Qwen/Qwen3.8-27B` (**stock Qwen**) | orcarouter |
| **MTP tensors** | **15 ✓** | **0 ✗** |
| visual tensors | 333 ✓ | 333 ✓ |
| scheme | n/a (bf16) | **NVFP4 W4A4** ✗ |
| `re:^mtp.*` in ignore | n/a | **absent** ✗ |
| traction | 3,278 dl / 60 likes | 36 dl / 0 likes |
| gated | yes — **our token already has access** | no |
| chat template | **sha `c3cf9e34` — byte-identical to the live heresy seat** | same |
## Verdict: preetpatel is disqualified, on two independent hard failures
**1. Zero MTP tensors.** Read straight from the safetensors header: 2,672 tensors,
**none** matching `mtp.*`. The author's own `recipe.yaml` asks to ignore
`re:.*mtp.*`, but the written `config.json` contains no mtp ignore entry at all —
while `re:.*visual.*` expanded to 110 explicit entries. That asymmetry is the
signature of llm-compressor pruning an ignore pattern that matched nothing, i.e.
the MTP head was never loaded and never quantized. It is the same
`re:^mtp.*`-pruning trap documented in the playbook, seen from the outside.
Cost: no speculative decoding. Our seat runs MTP at ~59% acceptance and 118 tok/s;
without it, roughly half the decode throughput.
**2. NVFP4 W4A4 — 4-bit activations.** `input_activations: num_bits 4, type float`.
This is precisely the AEON failure mode we spent a multi-day saga diagnosing and
purging: the activation-fidelity gradient is W4A4 < W4+FP8 < W4+bf16, W4A4 was
responsible for ~15-20% stochastic degeneration, and W4A4 collapses past ~30k
context. **The gen seat serves 262K.**
Either failure alone would rule it out. It is also one day old with 36 downloads.
## orcarouter checks out as a quant source
Stock-Qwen base (not a reasoning-compression finetune — the trait that sank
Cold-Fusion), Arditi-et-al. single-direction abliteration, MTP and vision both
explicitly preserved and verified at 15/333, chat template byte-identical to the
build we are serving right now, and the gate is already accepted on our token.
## Third option, noted and not recommended
`orcarouter/Qwen3.8-27B-Uncensored-FP8` — 76,109 downloads, 693 likes, far more
traction than either candidate. **But 30.9 GB against NVFP4's 22 GB**, and GPU0 is
zero-sum with meromero co-resident: +9 GB of weights comes straight out of the KV
pool, taking it from ~14.4 GiB / 403k tokens to roughly 5 GiB / ~150k — which
breaks 262K context at 1.5x concurrency. Viable only if the seat gives up long
context or meromero moves.
## The imatrix constraint — read before committing to it
The operator asked for imatrix if we quant ourselves. **This is not a switch.**
`quant_mixed_nvfp4.py` already sets `observer="imatrix_mse"` on the W4A4 group and
has **never once used it** — llm-compressor logs `no importance data available.
Falling back to uniform MSE` and proceeds. Playbook §3.13 documents this and warns
explicitly: *do not "fix" it by assuming an imatrix would help; verify first that
your llm-compressor version can consume an externally supplied importance matrix at
all, and in what format.* Parked as `park/…imatrix-mse…` (id 42) with the
calibration corpus that would feed it.
Also note the W4A16 portions of the mixed recipe are **data-free by construction**
llm-compressor infers `DataFreePipeline` for weight-only quantization and ignores
calibration data entirely. Imatrix can only ever bite on the W4A4 MLP group.
So "quant with imatrix" is two projects: an unscoped capability investigation, and
then the ~2h quant. Recommendation is to decouple them — ship the proven recipe
first, run imatrix as its own bounded experiment. Every A/B we hold is
uniform-MSE-to-uniform-MSE, so a non-imatrix build stays directly comparable to
heresy's PPL 6.910 / 47.2% acceptance.
## Mandatory step if we pull
Run `services/gen-seat-mixed-quant/bench/think-leak/think_prior.py` on the bf16
**before any GPU time**. It is a ~10s CPU measurement and it is the gate that would
have disqualified Cold-Fusion before its 300-trial study ever ran. Prior is
favourable — stock-Qwen base, template identical to heresy, which measures <0.002
against Cold-Fusion's 0.185 — but measure, don't assume.