Model Variants &
Specifications
Five model sizes, six checkpoint types, and two incompatible naming schemes. This page decodes every suffix so you download the right thing first time - starting with the one almost everyone misreads.
For architecture internals see technical specs
gemma-4-12Bbase · for fine-tuning-itinstruction-tuned · what you want-it-assistantMTP drafter · not a chat model-it-qat-q4_0-ggufofficial 4-bit-it-qat-q4_0-unquantizedQAT weights, full precision-it-litert-lmmobile · edge sizes onlyWhat each part means
Repository names are precise and case-sensitive. Every segment carries information.
gemma-3 with a lowercase size suffix, which is a real trap when scripting across both.gemma-4-12b-it will 404.-it
means the base pre-trained model, which does not follow instructions.-it-assistant is not an assistant
The most misleading name in the family, and one this site had wrong until recently. These are Multi-Token Prediction drafters for speculative decoding - not chat models, and not usable on their own.
It proposes several tokens ahead, which the full model verifies in parallel. It shares the target model's KV cache and skips prefill entirely, so it costs very little to run.
Measured gains reach 3.11× on the 31B at low concurrency. No quality change - the full model still verifies every token it emits.
It is a companion, never a replacement. Loading one on its own and expecting a chatbot is the mistake the name invites.
# The assistant is passed as a second model, not used alone from transformers import pipeline pipe = pipeline( task="image-text-to-text", model="google/gemma-4-12B-it", assistant_model="google/gemma-4-12B-it-assistant", # the drafter ) # Without assistant_model the main checkpoint still works - # just slower. This is free speed most people never claim.
Every checkpoint, every size
Prefix all Hugging Face rows with google/, except the mobile builds, which come
from litert-community/.
| Checkpoint type | 31B | 26B A4B | 12B | E4B | E2B | Use it when |
|---|---|---|---|---|---|---|
-it Safetensors BF16 |
✓ | ✓ | ✓ | ✓ | ✓ | The default. Instruction-tuned, full precision, for serving and fine-tuning |
| base no suffix | ✓ | ✓ | ✓ | ✓ | ✓ | You're doing your own post-training. It won't follow instructions as shipped |
-it-qat-q4_0-gguf |
✓ | ✓ | ✓ | ✓ | ✓ | Running locally on llama.cpp, Ollama or LM Studio - best 4-bit quality available |
-it-assistant ~0.4B drafter |
✓ | ✓ | ✓ | ✓ | ✓ | Alongside the matching -it model, for up to 3× faster decoding |
-it-qat-q4_0-unquantized |
~ | ~ | ✓ | ~ | ~ | You want to apply your own quantisation to QAT-trained weights |
-it-litert-lm litert-community/ |
- | - | - | ✓ | ✓ | Android or iOS on-device deployment with GPU and NPU acceleration |
~ means published for some sizes; check the repository before assuming. The Hugging Face collection is the authoritative list.
Most people need two
The -it-qat-q4_0-gguf build to run locally, or the plain -it to serve at
full precision. Add the matching -it-assistant if you want the speedup.
Base models disappoint
Downloading the no-suffix repo and finding it rambles rather than answering is a common first mistake.
That's expected - it hasn't been instruction-tuned. Use -it.
Mobile is a different publisher
The .litertlm builds live under litert-community/, not google/,
and exist only for E2B and E4B.
Ollama tags don't match Hugging Face
Same models, different conventions. Translating between them catches people out constantly.
| Hugging Face | Ollama equivalent | Difference to watch |
|---|---|---|
google/gemma-4-12B-it | gemma4:12b |
Lowercase b; no hyphen after gemma; -it implied |
google/gemma-4-26B-A4B-it | gemma4:26b |
The A4B part is dropped entirely |
google/gemma-4-E2B-it | gemma4:e2b |
Lowercase e2b |
...-it-qat-q4_0-gguf | gemma4:12b-it-qat |
Shortened; the q4_0-gguf part is implicit |
| no direct equivalent | gemma4:12b-mlx |
Apple silicon build, packaged by Ollama |
| no direct equivalent | gemma4:latest |
Currently resolves to E4B - and may be repointed at any time |
:latest. It's an alias Ollama can repoint, so the
model underneath you can change without warning. Name the size explicitly - and the quantisation too if
it matters. The full tag list also covers -q8_0, -bf16, -mxfp8 and
-nvfp4 variants for every size.
Which one should you download?
| What you're doing | Download | Also grab |
|---|---|---|
| Chatting locally | gemma4:12b-it-qat via Ollama | - |
| Serving with vLLM | google/gemma-4-26B-A4B-it |
-it-assistant for speculative decoding |
| Maximum local speed | google/gemma-4-31B-it |
google/gemma-4-31B-it-assistant - 3.11× faster |
| Fine-tuning for a task | google/gemma-4-12B-it | Base model if you're doing full post-training |
| Custom quantisation | -it-qat-q4_0-unquantized | QAT weights beat quantising the plain checkpoint |
| Android or iOS app | litert-community/gemma-4-E2B-it-litert-lm | E4B build if the device allows |
| Audio or video input | google/gemma-4-12B-it |
Nothing larger accepts them - the 31B and 26B are text and image only |
Five ways to download the wrong thing
Lowercase the size
gemma-4-12b-it returns a 404. Gemma 4 uses a capital B. Gemma 3 used
lowercase, which is exactly why the mistake is so easy.
Grab the assistant expecting a chatbot
It's a 0.4B speculative-decoding drafter. On its own it does nothing useful - it needs the main model loaded alongside it.
Take a community quant over the QAT build
Google's -qat-q4_0-gguf checkpoints are quantisation-aware trained and lose less quality
than post-hoc community quants at the same bit depth.
Download the base model by accident
No -it means no instruction tuning. It'll continue your text rather than answer you,
which reads like a broken model if you weren't expecting it.
Reach below 4-bit
Q2 and Q3 builds load and run, but reasoning and code quality fall off sharply. A smaller model at 4-bit beats a larger one at 3-bit.
Use weights cached before mid-July
The July 15, 2026 refresh fixed the chat template and tool calling without a version bump. Same name, different weights - re-pull.
Variant questions
What is the -it-assistant variant really for?
Speculative decoding. It's a roughly 0.4B Multi-Token Prediction drafter that proposes several tokens ahead for the full model to verify in parallel, giving up to about 3× faster decoding at no quality cost.
The name strongly implies a chat model and it isn't one. Load it as a second model alongside the
matching -it checkpoint.
Do I need the base model?
Almost certainly not. Base checkpoints have no instruction tuning - they continue
text rather than answering questions. They exist for people doing their own post-training from scratch.
For fine-tuning on a task, starting from -it is usually the better choice.
QAT GGUF or a community quant?
The official QAT build, where one exists. Quantisation-aware training exposes the model to rounding error during training so it adapts; post-hoc quantisation just rounds a finished model. Community quants from reputable packagers are fine, but at the same bit depth the official one is generally better.
What's the unquantized QAT variant for?
It holds the quantisation-aware-trained weights at full precision, so you can apply your own quantisation scheme and still benefit from QAT. Useful if you need a format Google doesn't publish. If you just want 4-bit, take the GGUF.
Why do Ollama tags look nothing like the repo names?
They're independent naming schemes. Ollama uses gemma4:12b - no hyphen,
lowercase, instruction-tuning implied - while Hugging Face uses google/gemma-4-12B-it. The
26B's A4B designation disappears entirely in Ollama. Translate deliberately rather than
guessing.
Is gemma4:latest safe to use?
For experimenting, yes. For anything reproducible, no - it's an alias that currently resolves to E4B and can be repointed, changing the model under your application without warning. Pin the size and quantisation explicitly.
Which sizes have mobile builds?
Only E2B and E4B, as .litertlm files published under
litert-community/. The 12B and larger have no mobile build - they're far too large for a
phone.
Know which file you need?
Exact repository IDs and pull commands for every checkpoint in the family.