Views
No views yet
Qwen/Qwen3.8-27B,
built with llm-compressor using
AWQ activation-aware scaling followed by AutoRound.| component | precision |
|---|---|
mlp.{gate,up,down}_proj, layers 0–55 | NVFP4 (4-bit, group-16, FP8-e4m3 scales → 4.5 effective bits) |
mlp.{gate,up,down}_proj, layers 56–63 | FP8 e4m3 |
self_attn.{q,k,v,o}_proj | FP8 e4m3 |
linear_attn.{in_proj_qkv,in_proj_z,out_proj} (GDN) | FP8 e4m3 |
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. The scales merge fully
into weights, so unlike rotation methods (QuIP/SpinQuant) this still runs under
tensor parallelism.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 | 24.7 GB | 93.38% | 34.18% | 8.67% | 1.85% | 0.17% | 28 | 10590 |
RadixArk/Qwen3.8-27B-NVFP4 | 21.9 GB | 90.23% | 43.80% | 14.49% | 3.29% | 0.70% | 11 | 11436 |
unsloth/Qwen3.8-27B-NVFP4 | 23.4 GB | 91.75% | 40.12% | 10.32% | 3.91% | 0.25% | 19 | 11069 |
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).RadixArk, −1.75%) has the worst
certain-bucket damage measured (0.70%, 4× this model's). Do not rank FP4 checkpoints
of this model by perplexity.confident damage
falls from 2.69% (GPTQ) → 1.85% (AutoRound) — a paired McNemar z of 9.26 over
33,812 high-confidence positions. Against a plain NVFP4+GPTQ build without AWQ (3.97%),
the two passes together close 84% of the distance to FP8.1from vllm import LLM
2llm = LLM("TelperionAI/Qwen3.8-27B-NVFP4-AWQ-AutoRound", tensor_parallel_size=2)compressed-tensors.mtp speculative decoding:1from vllm import LLM
2llm = LLM("TelperionAI/Qwen3.8-27B-NVFP4-AWQ-AutoRound", 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.this model has not been supported on this architecture. Gradients are noisier than
intended, so these numbers likely understate what the method can do here.k_scale / v_scale in
model-kv-scales.safetensors, with kv_cache_scheme recorded under
quantization_config — the on-disk contract llm-compressor emits and vLLM reads
in BaseKVCacheMethod. With no scales present vLLM falls back to 1.0.--kv-cache-dtype fp8 # 32 KiB/token, from 64 KiB at fp16full_attention and
carry a KV cache at all, so this is 32 scalars in a 4 KB file.memoryless_minmax,
llm-compressor's default KV observer); k_scale = amax/448.