Reference Every checkpoint, decoded

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

Six checkpoint types
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 only
Reading a name

What each part means

Repository names are precise and case-sensitive. Every segment carries information.

google/gemma-4-12B-it-qat-q4_0-gguf
google - the publisher. Anything else is a community re-upload: often fine, occasionally stale or quantised more aggressively than advertised.
gemma-4 - the generation. Gemma 3 uses gemma-3 with a lowercase size suffix, which is a real trap when scripting across both.
12B - the size, with a capital B on Gemma 4. gemma-4-12b-it will 404.
it - instruction-tuned. No -it means the base pre-trained model, which does not follow instructions.
qat-q4_0-gguf - the format and precision. Absent means full-precision Safetensors.
🎭

-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.

What it is A ~0.4B draft model

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.

What it does Up to 3× faster decoding

Measured gains reach 3.11× on the 31B at low concurrency. No quality change - the full model still verifies every token it emits.

How to use it Load it alongside the main model

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.
🏗️
Why it's so small. The drafter shares the target model's KV cache rather than building its own, uses static position IDs since it never updates that cache, takes projected embeddings and hidden states from the target's last token instead of raw tokens, and cross-attends to the target's cache to keep its drafts aligned. All of which is why roughly 0.4B parameters is enough to usefully predict what a 12B model will say next.
The grid

Every checkpoint, every size

Prefix all Hugging Face rows with google/, except the mobile builds, which come from litert-community/.

Checkpoint type31B26B A4B12B E4BE2BUse 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.

A second naming scheme

Ollama tags don't match Hugging Face

Same models, different conventions. Translating between them catches people out constantly.

Hugging FaceOllama equivalentDifference to watch
google/gemma-4-12B-itgemma4:12b Lowercase b; no hyphen after gemma; -it implied
google/gemma-4-26B-A4B-itgemma4:26b The A4B part is dropped entirely
google/gemma-4-E2B-itgemma4:e2b Lowercase e2b
...-it-qat-q4_0-ggufgemma4:12b-it-qat Shortened; the q4_0-gguf part is implicit
no direct equivalentgemma4:12b-mlx Apple silicon build, packaged by Ollama
no direct equivalentgemma4:latest Currently resolves to E4B - and may be repointed at any time
🏷️
Don't pin production to :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.
Decision

Which one should you download?

What you're doingDownloadAlso 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-itBase model if you're doing full post-training
Custom quantisation -it-qat-q4_0-unquantizedQAT weights beat quantising the plain checkpoint
Android or iOS app litert-community/gemma-4-E2B-it-litert-lmE4B 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
Avoid these

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.

FAQ

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.