Signal-3.8-27B-NVFP4
NVFP4 (W4A16) quantization of agentionai/Signal-3.8-27B for NVIDIA Blackwell GPUs (RTX 50-series, DGX Spark, B100/B200), produced with NVIDIA TensorRT Model Optimizer 0.45.0.
Signal is a "directness" self-distill of Qwen/Qwen3.8-27B — only lm_head.weight differs from stock — that produces ~57% fewer answer tokens and ~52% fewer thinking tokens at matched answer quality. This quant keeps that behavior: same terse answers, ~4x smaller weights, NVFP4-accelerated decode on Blackwell.
Sampling — read this first
Use temperature 0.6, top_p 0.95, top_k 20, min_p 0.05. The upstream checkpoint originally shipped a generation_config.json with temperature: 1.0, which could degenerate on casual/open-ended prompts (garbled reasoning, noisy follow-ups). Upstream has since patched their default to 0.6 (their min_k: 0.05 appears to be a typo for the standard min_p, which is what this repo ships). The generation_config.json in this repo is already updated; make sure your server applies it (recent vLLM does by default; if you pass --generation-config vllm, set the sampling params yourself). Use sampling rather than greedy — upstream observed a generation loop at temperature 0.
Usage (vLLM)
vllm serve Shockem/Signal-3.8-27B-NVFP4 \
--quantization modelopt --dtype bfloat16 \
--reasoning-parser qwen3 \
--max-model-len 65536 \
--trust-remote-code
Chat template and tokenizer are the stock Qwen3.8 ones. Thinking is on by default; send "chat_template_kwargs": {"enable_thinking": false} to disable. Vision works as in the base model (add --language-model-only if you only need text).
Speculative decoding (MTP)
The checkpoint carries the Qwen3.8 MTP head (model_mtp.safetensors) plus an optional vocab-truncated draft head (40960-id BF16 mtp.draft_lm_head, mapping in mtp_draft_vocab_ids.pt) that raises draft acceptance ~20% at equal quality. Using the truncated draft head requires the syv-ai qwen3_5_mtp patch for vLLM; without the patch, simply serve without --speculative-config (or use stock MTP) — the truncated head is inert otherwise.
Quantization recipe
- Model Optimizer 0.45.0, NVFP4 W4A16: NVFP4 weights with block scales, BF16 activations
- ~400 linear tensors quantized; embeddings, vision tower, and MTP layers kept in BF16
- Dequantized-weight cosine similarity vs the BF16 source: 0.9955
Quality
Passed initial testing on a house agentic harness (instruction / reasoning / structured / coding / compaction suites, 10 runs each), served by vLLM v0.28 TP=2 on 2x RTX 5060 Ti 16 GB, 200k context, FP8 KV, MTP 3:
| Suite | Mean score (10 runs) | Range | Tests passed |
|---|---|---|---|
| easy | 94.5% | 94.5-94.5% | 40/40 |
| medium | 94.1% | 94.1-94.1% | 90/90 |
| hard | 93.6% | 83.2-94.8% | 139/140* |
* 9 of 10 hard runs scored 94.8%; the single 83.2% run hit a known-flaky LRU codegen test (syntax), which passes on rerun. Decode ~50-70 tok/s with total solution wall time roughly half of stock Qwen3.8-27B thanks to Signal's terseness.
Credits
- agentionai for the Signal fine-tune
- Qwen for the Qwen3.8-27B base model
- Quantized and published by Shockem
vLLM + MTP speculative decoding note
vLLM (as of v0.28) rejects min_p when speculative decoding (MTP) is enabled —
requests will 400 with "min_p and logit_bias sampling parameters are not yet
supported with speculative decoding". If you run this checkpoint with the MTP
draft head on, either:
- drop
min_pfrom your sampling params (therepetition_penalty: 1.05default in this repo'sgeneration_config.jsonalready guards against the repetition runaways min-p is meant to prevent), or - serve without speculative decoding to use
min_pas upstream recommends.
- Downloads last month
- 171