sakamakismile/Huihui-gemma-4-12B-it-abliterated-NVFP4A16
Huihui-gemma-4-12B-it-abliterated-NVFP4A16
NVFP4 (W4A16) quantization of [huihui-ai/Huihui-gemma-4-12B-it-abliterated](https://huggingface.co/huihui-ai/Huihui-gemma-4-12B-it-abliterated) — the abliterated (uncensored) Gemma 4 12B unified model (text + vision + audio).
24 GB → 7.7 GB. Runs on a single 16 GB Blackwell GPU, or shards across several for higher throughput. Up to 118 tok/s single-stream (TP=4 + MTP speculative decode) and ~1117 tok/s aggregate.
Weight-only FP4 (W4A16) keeps activations at BF16, so it is robust where full W4A4 NVFP4 collapses on this architecture.
Quickstart
Requires a Blackwell GPU (SM120 / RTX 50-series / GB10 / B100/B200), Docker with the NVIDIA runtime, and the hf CLI. Gemma 4 unified is brand new — you need vLLM nightly (released ≤ 0.22.1 lack the Gemma4Unified class).
# 1) Download this model (7.7 GB). For spec-decode, also grab the 0.4B MTP draft.
hf download sakamakismile/Huihui-gemma-4-12B-it-abliterated-NVFP4A16 --local-dir ./model
hf download google/gemma-4-12B-it-assistant --local-dir ./draft # optional, for spec-decode
# 2a) Simplest — single GPU, no speculative decode
docker run --rm --gpus '"device=0"' --ipc=host --shm-size 16gb -p 8000:8000 \
-v $PWD/model:/model:ro \
vllm/vllm-openai:nightly \
--model /model --served-model-name gemma4-12b --max-model-len 65536 \
--gpu-memory-utilization 0.92 --trust-remote-codeMulti-GPU — read this if your box has no NVLink
On consumer/entry Blackwell (e.g. RTX PRO 2000) over plain PCIe there is no working GPU P2P, and vLLM tensor-parallel hangs unless you disable both NCCL P2P and vLLM's custom all-reduce:
docker run --rm --gpus '"device=0,1,2,3"' --ipc=host --shm-size 16gb -p 8000:8000 \
-e NCCL_P2P_DISABLE=1 \ # <-- without this, hangs at NCCL init
-v $PWD/model:/model:ro \
vllm/vllm-openai:nightly \
--model /model --served-model-name gemma4-12b \
--tensor-parallel-size 4 \
--disable-custom-all-reduce \ # <-- without this, the forward deadlocks
--max-model-len 65536 --gpu-memory-utilization 0.85 --trust-remote-codeMaximum interactive speed — TP=4 + MTP speculative decode
Google ships a 0.4B MTP draft (google/gemma-4-12B-it-assistant). It nearly doubles single-stream throughput (lossless — the target verifies every token). Use `num_speculative_tokens: 3` (the stable optimum; k≥5 collapses acceptance) and `--kv-cache-dtype fp8` (NVFP4 KV would break the draft):
docker run --rm --gpus '"device=0,1,2,3"' --ipc=host --shm-size 16gb -p 8000:8000 \
-e NCCL_P2P_DISABLE=1 \
-v $PWD/model:/model:ro -v $PWD/draft:/draft:ro \
vllm/vllm-openai:nightly \
--model /model --served-model-name gemma4-12b \
--tensor-parallel-size 4 --disable-custom-all-reduce \
--kv-cache-dtype fp8 \
--speculative-config '{"method":"mtp","model":"/draft","num_speculative_tokens":3}' \
--max-model-len 65536 --gpu-memory-utilization 0.85 --trust-remote-codeTest it:
curl -s localhost:8000/v1/chat/completions -H 'Content-Type: application/json' -d \
'{"model":"gemma4-12b","messages":[{"role":"user","content":"Explain the CAP theorem in one sentence."}]}'Flag cheat-sheet
Benchmarks
Measured on 4× RTX PRO 2000 Blackwell (16 GB, SM120, 288 GB/s, PCIe — no NVLink), TP=4, -c 65536.
Single-stream decode (interactive) — TP sweep, 1 request × 512 tok:
(TP=4 + MTP peaks at 121.0 with k=4, but k=3 is the stable optimum.) MTP gives a steady ~1.6–1.8× at every TP. TP scaling is sub-linear on this no-NVLink box (host-memory all-reduce). Pick by what you have:
Aggregate throughput (concurrency sweep, no spec-decode):
64K and 128K context decode identically (sliding-window KV). Rule: MTP spec-decode for low concurrency (≤8); turn it off for high-concurrency batch serving (it costs throughput once the batch saturates).
Quality — measured vs BF16 base and an FP8 build (same huihui base)
Greedy side-by-side on EN / 繁體中文 / 日本語 / code / facts / reasoning traps:
- Standard tasks: identical. Facts (Chernobyl: April 1986, reactor 4), Traditional-Chinese & Japanese explanations,
17×23−100 = 291,60 km / 45 min = 80 km/h, code — NVFP4 = FP8 = BF16 base, no collapse, no drift. - Hard reasoning traps (7 tested): a small, real W4A16 tax. FP8 matched the BF16 base on every trap the base got right; NVFP4 slipped on ~1 of 7 (it answered a Barbara-type syllogism "Yes" where No is correct, plus one minor secondary-detail slip). One age-word-problem even the BF16 base fails — a model limit, not a quant artifact.
Verdict: half the size and faster than FP8, at standard-task parity. Choose FP8 for maximum reasoning fidelity; choose this NVFP4A16 for the best size/speed at ~85–90% reasoning parity — the right default for most local-agent and chat workloads.
Notes
- Abliterated (uncensored). Use responsibly.
- NVFP4 is Blackwell-specific; it will not run on Ampere/Hopper.
- Multimodal vision/audio embedders kept in BF16.
Credits
- Base model & abliteration: huihui-ai
- Original model: Google DeepMind (Gemma 4)
- Quantization & serving recipe: Lna-Lab · Tooling: llm-compressor / vLLM
Support the Base Model Author (huihui-ai)
If you find the abliterated base useful, please support huihui-ai:
- Ko-fi: https://ko-fi.com/huihuiai
- Bitcoin:
bc1qqnkhuchxw0zqjh2ku3lu4hq45hc6gy84uk70ge
