Views
No views yet
Qwen/Qwen3.8-27B,
built with llm-compressor using
AWQ activation-aware scaling followed by GPTQ.Qwen3.8-27B-INT4-AWQ-GPTQ,
keeps the GDN projections at 8-bit and is more accurate again (0.93% vs 1.15% confident).| component | precision |
|---|---|
mlp.{gate,up,down}_proj, layers 0–55 | INT4, group-32, asymmetric (~4.6 effective bits) |
mlp.{gate,up,down}_proj, layers 56–63 | INT8 W8A16 |
self_attn.{q,k,v,o}_proj | INT8 W8A16 |
linear_attn.{in_proj_qkv,in_proj_z,out_proj} (GDN) | INT4, group-32, asymmetric |
lm_head, embed_tokens, norms, GDN state params, vision tower | BF16 |
post_attention_layernorm → {gate_proj, up_proj}
and up_proj → down_proj. Gate and up share one input, so the reciprocal scale folds
into the norm weights: zero size and zero throughput cost.actorder="static", dampening_frac=0.01.lm_head and embed_tokens stay BF16, matching Qwen's own official FP8 release.| checkpoint | size ↓ | top-1 ↑ | near-tie ↓ | moderate ↓ | confident ↓ | certain ↓ | divmed ↑ | tok/s ↑ |
|---|---|---|---|---|---|---|---|---|
Qwen/Qwen3.8-27B-FP8 (8-bit ref) | 30.9 GB | 96.15% | 22.70% | 3.48% | 1.45% | 0.08% | 47 | 8711 |
| this model (GDN 4-bit) | 22.6 GB | 95.88% | 25.26% | 3.60% | 1.15% | 0.13% | 51 | 4716 |
| our 25.1 GB sibling (GDN 8-bit) | 25.1 GB | 96.30% | 22.29% | 3.52% | 0.93% | 0.09% | 48 | 4617 |
cyankiwi/Qwen3.8-27B-AWQ-INT4 | 21.0 GB | 94.35% | 33.74% | 5.59% | 1.35% | 0.12% | 29 | 4787 |
top-1 is raw argmax agreement with BF16. The four bucket columns are
disagreement rates, split by how confident the base model was at that position
(top1−top2 logprob margin): near-tie <0.5, moderate 0.5–2, confident 2–5,
certain >5. Only confident and certain are real damage — a flip where the base
model was itself nearly tied is numerical noise. divmed is the median token index at
which free greedy generation first diverges from BF16 (higher is better).certain-bucket
damage. Do not rank quantizations of this model by perplexity.confident 0.93% → 1.15% and certain 0.09% → 0.13% — real but modest.
Note the two are not a pure bit-width comparison: at 4-bit the GDN projections also move
into GPTQ's error compensation, where at 8-bit they were plain round-to-nearest, so the
true cost of 4-bit GDN in isolation is likely a little larger than shown.cyankiwi (21.0 GB), this build is still ahead on confident
(1.15% vs 1.35%) and level on certain — so the AWQ+GPTQ recipe, not the extra bits,
accounts for most of the margin.1from vllm import LLM
2llm = LLM("TelperionAI/Qwen3.8-27B-INT4-AWQ-GPTQ-gdn4", tensor_parallel_size=2)mtp speculative decoding:1from vllm import LLM
2llm = LLM("TelperionAI/Qwen3.8-27B-INT4-AWQ-GPTQ-gdn4", tensor_parallel_size=2,
3 speculative_config={"method": "mtp", "num_speculative_tokens": 2})Qwen3_5ForConditionalGeneration does not carry mtp.* in its state dict, so
llm-compressor never sees it and it is silently dropped, even though config.json still
declares mtp_num_hidden_layers: 1. It is grafted back in here from the base checkpoint
and excluded from quantization (re:.*mtp.* in
quantization_config.ignore; without that exclusion the quantization target regexes also
match mtp.layers.0.mlp.* and vLLM fails to load). Draft quality drives acceptance rate,
so it is kept at full precision rather than quantized.lm_head would free a further ~1.3 GB but was not measured here.k_scale / v_scale in
model-kv-scales.safetensors, with kv_cache_scheme under
quantization_config — the on-disk contract llm-compressor emits and vLLM reads
in BaseKVCacheMethod. Without them vLLM falls back to a scale of 1.0.--kv-cache-dtype fp8 # 32 KiB/token, from 64 KiB at fp16