Only with CPU offload
Gemma 4 12B at Q4_K_M needs 8.2 GB but only 7.0 GB is addressable, so about 17% of the layers would stream from system RAM at roughly 60 GB/s. Expect around 16 tokens per second — usable for batch work, painful for chat.
The "unified" Gemma 4: text, image and audio in one 12B that fits a 12 GB card at Q4. 140+ languages.
What hardware do I need for Gemma 4 12B? →
Fits instead: Gemma 4 E4B (5.2 GB) · Gemma 4 E2B (3.5 GB)
The VRAM budget
Quantisation ladder
| Quant | Weights | Total @ 8K | Max context | Tok/s | Quality | Fit |
|---|---|---|---|---|---|---|
| F16 | 22.4 GB | 23.8 GB | — | ~2.0 | Reference | 16.8 GB over |
| Q8_0 | 11.9 GB | 13.3 GB | — | ~4.9 | −0.1% ppl | 6.3 GB over |
| Q6_K | 9.2 GB | 10.6 GB | — | ~7.7 | −0.4% ppl | 3.6 GB over |
| Q5_K_M | 7.9 GB | 9.3 GB | — | ~10 | −0.8% ppl | 2.3 GB over |
| Q4_K_M | 6.7 GB | 8.2 GB | — | ~16 | −1.9% ppl | 1.2 GB over |
| Q3_K_M | 5.5 GB | 6.9 GB | 10K | 32 | −5.4% ppl | Fits |
| Q2_K | 4.7 GB | 6.1 GB | 22K | 37 | −15% ppl | Long context |
Quality is the published perplexity delta against f16 weights. Max context assumes an f16 KV cache; q8_0 roughly doubles it. This model interleaves sliding-window layers (1024 tokens, 8 of 48 layers global), which is why its cache barely grows with context.
How to run it
$ llama-server \
-hf google/gemma-4-12B-it:Q4_K_M \
-c 8192 -ngl 39
The engine underneath most of the others. Every knob is exposed. More on llama.cpp.