Only with CPU offload
Gemma 3 12B at Q4_K_M needs 8.3 GB but only 7.0 GB is addressable, so about 19% of the layers would stream from system RAM at roughly 60 GB/s. Expect around 14 tokens per second — usable for batch work, painful for chat.
Strong multilingual chat with images, sized for 12–16 GB cards. Gemma 4 12B is the same size and better.
What hardware do I need for Gemma 3 12B? →
Fits instead: Gemma 3 4B (3.3 GB) · Gemma 3 1B (1.2 GB)
The VRAM budget
Quantisation ladder
| Quant | Weights | Total @ 8K | Max context | Tok/s | Quality | Fit |
|---|---|---|---|---|---|---|
| F16 | 22.7 GB | 24.1 GB | — | ~2.0 | Reference | 17.1 GB over |
| Q8_0 | 12.1 GB | 13.5 GB | — | ~4.7 | −0.1% ppl | 6.5 GB over |
| Q6_K | 9.3 GB | 10.7 GB | — | ~7.2 | −0.4% ppl | 3.7 GB over |
| Q5_K_M | 8.1 GB | 9.5 GB | — | ~9.6 | −0.8% ppl | 2.5 GB over |
| Q4_K_M | 6.9 GB | 8.3 GB | — | ~14 | −1.9% ppl | 1.3 GB over |
| Q3_K_M | 5.6 GB | 7.0 GB | 8K | 28 | −5.4% ppl | Fits |
| Q2_K | 4.8 GB | 6.2 GB | 21K | 33 | −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, 1 global in 6), which is why its cache barely grows with context.
How to run it
$ llama-server \
-hf google/gemma-3-12b-it:Q4_K_M \
-c 8192 -ngl 39
The engine underneath most of the others. Every knob is exposed. More on llama.cpp.