CoolFace
Modelpublic

DCC-BS/Qwen3-Reranker-4B-FP8-Dynamic

sourceHugging Faceupdated 2mo agoView on Hugging Face
0likes2.3kdownloads
Model Card

Qwen3-Reranker-4B-FP8-Dynamic

Qwen/Qwen3-Reranker-4B quantised to FP8 with llm-compressor, for serving with vLLM.

What was done

SchemeFP8_DYNAMIC — weights static per-channel FP8, activations dynamic per-token FP8
Calibrationnone needed; dynamic activation scales are computed at inference time
Left in bf16lm_head, and the token embeddings
Weights before7.49 GiB
Weights after4.83 GiB (35% smaller)

The score is read from the yes/no logits of the model head, which is left in bf16. Quantising it would put error directly into the number documents are ranked by.

Quality gate

`WikipediaRerankingMultilingual` from MTEB — reranking Wikipedia passages in 16 languages, scored by map_at_1000.

languagebf16FP8Δ
de0.96000.9594-0.0006
en0.97150.9726+0.0011
it0.97100.9702-0.0008
mean0.96750.9674-0.0001

Languages evaluated: de, en, it. Tolerance: 0.0100 mapat1000 per language.

PASSED — no language lost more than 0.0100 map_at_1000.

Why

Serving Qwen/Qwen3-Reranker-4B in bf16 leaves little room for KV cache on a small GPU: the weights take what the cache needs, and the context length has to be cut until it fits. Halving the weights gives that memory back — the same card serves a longer context without any other change.

Serving

bash
vllm serve DCC-BS/Qwen3-Reranker-4B-FP8-Dynamic \
  --max-model-len 32768 \
  --gpu-memory-utilization 0.85

The checkpoint is in compressed-tensors format, so vLLM detects the quantisation from config.json; no extra flag is required.

FP8 arithmetic is native on Ada and Hopper (compute capability 8.9+). On Ampere it runs through Marlin: the memory saving still applies, the speed is roughly unchanged.