Downloads · 30 days
536
13% of all-time downloads
dbirks/Qwen3.8-27B-NVFP4-AutoRound
Qwen3.8-27B-NVFP4-AutoRound is a image-text-to-text model from dbirks. Use it for the image-text-to-text task on the model card, and read the license before you ship it in a product. It is set up for transformers. The card lists the license as apache-2.0.
An NVFP4 (4-bit, W4A4) quantization of Qwen/Qwen3.8-27B, made with Intel AutoRound and packaged in compressed-tensors for vLLM. It's a text-only quant: the language decoder's high-volume projections are NVFP4, while t…
Downloads · 30 days
536
13% of all-time downloads
All-time downloads
4.2K
Public
Parameters
16.7B
20.6 GB on disk
Likes
5
Public
Click a slice to open those files.
.safetensors20.6 GB · 100%
How the weights are stored.
U824.3B · 88%
From the Hugging Face model README
An NVFP4 (4-bit, W4A4) quantization of Qwen/Qwen3.8-27B, made with
Intel AutoRound and packaged in
compressed-tensors for vLLM. It's a text-only quant: the
language decoder's high-volume projections are NVFP4, while the GatedDeltaNet recurrence-control projections
(in_proj_a / in_proj_b), the vision tower, the MTP head, and lm_head stay in BF16. It's about 20.6 GB on
disk, down from roughly 52 GB at BF16.
This build is aimed at NVIDIA Blackwell, where the FP4 tensor cores run W4A4 natively. On an older GPU, the weight-only Qwen3.8-27B-W4A16-AutoRound sibling is the better fit. Accuracy notes are in the Evaluation section below.
Qwen/Qwen3.8-27B — a hybrid GatedDeltaNet (linear-attention) + full-attention multimodal decoder (64 layers: 48 linear-attn + 16 full-attn) with a vision tower; 262K context.Linear layers, except the two tiny per-layer recurrence-control projections (in_proj_a, in_proj_b) which stay BF16.linear_attn.in_proj_a / in_proj_b (GDN decay/write-strength — quantizing these wrecks the recurrence), the entire visual.* vision tower, the mtp head, and lm_head.nvfp4-pack-quantized), auto-detected by vLLM.NVFP4 — 4-bit weights + input activations, NVFP4 microscale (group size 16, FP8 e4m3 block scale + FP32 global), symmetric, strategy: tensor_group.in_proj_qkv / in_proj_z / out_proj + all MLP gate/up/down + the 16 full-attention layers' q/k/v/o projections.in_proj_a, in_proj_b, visual.*, mtp, lm_head.NeelNanda/pile-10k, 128 samples, seqlen 2048, 200 tuning iters (screen recipe).vLLM auto-detects the NVFP4 scheme from config.json — no quantization flag needed. Serves as
Qwen3_5ForConditionalGeneration. On consumer Blackwell (SM120) use FP4 tensor-core kernels:
VLLM_ATTENTION_BACKEND=FLASHINFER FLASHINFER_CUDA_ARCH_LIST=12.0f \
vllm serve dbirks/Qwen3.8-27B-NVFP4-AutoRound --max-model-len 8192 --trust-remote-code
compose.yamlservices:
qwen38-nvfp4:
image: vllm/vllm-openai:latest # any recent vLLM with Qwen3.8 (qwen3_5) + SM120 NVFP4 support
ports:
- "8000:8000"
ipc: host
environment:
# consumer Blackwell (SM120): use FlashInfer FP4 tensor-core kernels (not the Marlin fallback)
- VLLM_ATTENTION_BACKEND=FLASHINFER
- FLASHINFER_CUDA_ARCH_LIST=12.0f
volumes:
- ~/.cache/huggingface:/root/.cache/huggingface
command:
- "--model=dbirks/Qwen3.8-27B-NVFP4-AutoRound"
- "--served-model-name=qwen3.8-27b"
- "--max-model-len=8192"
- "--trust-remote-code"
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: all
capabilities: [gpu]
Measured in the model's default thinking mode with its recommended sampling (temperature 1.0, top-p 0.95, top-k 20), using EleutherAI lm-evaluation-harness.
| Task | BF16 base | This (NVFP4 W4A4) |
|---|---|---|
| GSM8K (full 1319, thinking) | 0.911 ±0.015 | 0.905 ±0.016 |
| HumanEval (pass@1, instruct) | 0.939 ±0.037 | 0.927 ±0.040 |
| MMLU-Pro (100/subject, thinking) | 0.819 ±0.020 | 0.796 ±0.021 |
Across all three tasks the quant lands inside the BF16 base's confidence interval, so there's no measurable accuracy loss from the NVFP4 quantization. (MMLU-Pro here is 100 questions per subject, so it's an internal reference against our own BF16 baseline, not directly comparable to a full-split MMLU-Pro number elsewhere.)
from auto_round import AutoRound
# keep in_proj_a/b + visual + mtp in BF16 via a bits=16 layer_config (built from module names)
ar = AutoRound("Qwen/Qwen3.8-27B", scheme="NVFP4", dataset="NeelNanda/pile-10k",
nsamples=128, seqlen=2048, batch_size=4, iters=200,
device_map=0, trust_remote_code=True, quant_nontext_module=False, seed=42,
layer_config=BF16_FOR_IN_PROJ_AB_VISUAL_MTP)
ar.quantize_and_save(output_dir="Qwen3.8-27B-NVFP4-AutoRound", format="llm_compressor")
Toolchain: auto-round 0.15.0, transformers-from-source (qwen3_5 arch), compressed-tensors, torch 2.13+cu130.
@article{cheng2023optimize, title={Optimize Weight Rounding via Signed Gradient Descent for the Quantization of LLMs}, author={Cheng, Wenhua and others}, journal={arXiv:2309.05516}, year={2023}}