Qwen3-8B — BPDQ coded planes, 2.5 bits

Qwen3-8B with the linear weights stored as three bit-planes per weight and the two low planes coded per block of 8 weights. The first plane is stored as is, the second as an even-weight codeword (7 bits), and the third as one of the 8 codewords of the Reed–Muller code RM(1,3) (3 bits). That is 18 bits per 8 weights. With fp16 coefficients per 256 columns, the total is 2.5 bits/weight. The embedding is 4-bit and the head is 8-bit. 3.1 GB on disk.

Recipe: block-Babai encoding, then 3056 steps of KD QAT, then 250 steps of GRPO.

Benchmarks

fp16 this model
bits/weight (linears) 16 2.5
KL to fp16, WikiText-2 0 0.254
GSM8K nothink 91.7 84.2
GSM8K think @1024 83.0 87.6
HumanEval 82.9 71.3
MBPP 66.6 57.6
IFEval (prompt strict) 81.7 76.3
TriviaQA 5-shot 56.7 37.3
BFCL simple 94.5 93.8
BFCL multiple 96.5 93.0
BFCL parallel 94.0 93.5
BFCL parallel-multiple 91.0 87.0
BFCL irrelevance 83.8 81.7
BFCL multi-turn 45.0 31.0
12-task average 80.6 74.5

Decode throughput, vLLM 0.28, one RTX 4090: 260 tok/s at batch 1, 970 at 4, 3280 at 16, 5040 at 32, 6560 at 64, 7700 at 256.

Run it

CUDA only (sm80+).

import sys; sys.path.insert(0, MODEL_DIR)
import bpdq   # registers the "bpdq" quantization method with vLLM
from vllm import LLM
llm = LLM(model=MODEL_DIR, quantization="bpdq", dtype="float16")

or vllm serve MODEL_DIR --quantization bpdq --dtype float16 after import bpdq. bpdq.load(MODEL_DIR) gives a transformers model.

Downloads last month
325
Safetensors
Model size
2B params
Tensor type
I32
·
F16
·
I16
·
U8
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for gitarist/Qwen3-8B-BPDQ-coded-2.5bit

Finetuned
Qwen/Qwen3-8B
Quantized
(475)
this model