models / compare / gemma-4-vs-gpt-oss-120b
Gemma 4 31B vs gpt-oss-120b
How Gemma 4 31B (Google DeepMind, April 2026) and gpt-oss-120b (OpenAI, August 2025) are built, drawn on the same November 2026 blueprint. They make different choices on 17 of 29 components. Select a component in either diagram to find it in the table.
--- frontier-llm@2026-11+++ gemma-4@2026-04+2~7−6
Gemma 4 31B
Google DeepMind, April 2026, 30.7B
--- frontier-llm@2026-11+++ gpt-oss-120b@2025-08+0~4−9
gpt-oss-120b
OpenAI, August 2025, 117B total, 5.1B active
Component by component
Gemma 4 31B and gpt-oss-120b differ on 17 of 29 components.
| Blueprint component | Gemma 4 31B | gpt-oss-120b |
|---|---|---|
SentencePiece BPE with byte fallbackGemini's 262,144-entry SentencePiece vocabulary: character-level BPE, split digits, bytes only as a fallback. | Same as the blueprinto200k_harmony: a byte-level BPE with 201,088 entries, extending o200k with the tokens of OpenAI's harmony chat and tool-call format. | |
Same as the blueprintA ~550M-parameter ViT (27 layers, width 1,152, MLP 4,304, 16 heads, 16-px patches) with 2D RoPE and 2D absolute position embeddings, kept frozen during pretraining. Its outputs are pooled 3 × 3, so each soft token covers 48 × 48 px, under a per-image budget of 70, 140, 280 (default), 560 or 1,120 tokens. Video enters as frames; the 31B has no audio encoder. | ||
Single residual stream with per-layer scalarsOne d = 5,376 stream, RMSNorm before and after each sublayer, and a stored scalar that rescales the stream after every block. | Single residual streamOne d = 2,880 residual stream with pre-norm sublayers; no hyper-connections. | |
Same as the blueprintPer-head RMSNorm with a learned gain on queries and keys (256-dim heads in local layers, 512-dim in global ones), so the logits use scale 1 instead of 1/√d. Values get a gain-free RMSNorm. There is no attention-logit soft-cap. | ||
RoPE by layer type: full RoPE local, p-RoPE globalLocal layers rotate all 256 dims (θ = 10⁴); global layers keep only the 64 fastest of 256 frequency pairs (θ = 10⁶). | Full RoPE with YaRN scalingRotary embeddings on all 64 head dims, θ = 150,000, stretched 32× with YaRN. | |
Global GQA with keys reused as valuesEvery sixth layer: full causal attention, 32 query heads and 4 KV heads of dim 512, V taken from the key projection. | Dense grouped-query attentionFull causal attention with 64 query heads sharing 8 KV heads, in every other block. | |
Same as the blueprintNo output gate. Each head instead has a learned sink logit added to the softmax denominator, so it can assign attention mass to nothing. | ||
Post-attention RMSNorm (sandwich norm)The attention output is RMS-normalized with a learned gain before the residual add; there is no output gate or sink. | Not present | |
Dense GeGLU feed-forwardOne gated MLP per layer, 5,376 → 21,504 → 5,376 with tanh-approximated GELU; all 30.7B parameters are active. | Softmax top-k routerA linear router picks the top 4 of 128 experts; softmax over those 4 logits gives the weights. | |
Post-feed-forward RMSNorm (sandwich norm)The MLP output is RMS-normalized with a learned gain before it is added to the residual stream. | Not present | |
Same as the blueprint128 experts, top-4 active, each a SwiGLU with intermediate size 2,880. The gate is clamped at 7.0 and the linear branch to ±7.0, combined as (x_lin + 1) · x_glu · σ(1.702 · x_glu). Expert weights ship in MXFP4. | ||
Tied LM head with logit soft-cappingLogits come from the input embedding matrix (no separate head) and are squashed by 30·tanh(z/30). | Same as the blueprintUntied output projection to 201,088 logits, kept in BF16. | |
Autoregressive MTP drafter (4 layers, reads trunk KV)A separate ~500M-parameter, 4-layer Transformer drafts tokens one at a time while attending to the 31B's own KV cache. | ||
Same as the blueprintPretrained at 4,096 tokens and extended to 131,072 with YaRN (factor 32). | ||
Same as the blueprintPost-trained with chain-of-thought reinforcement learning described as similar to o3, with selectable low, medium and high reasoning effort and native tool use through the harmony format. | ||
Same as the blueprintThe 31B pairs with its released drafter (gemma-4-31B-it-assistant): the drafter proposes several tokens and the 31B verifies them in one forward pass. The drafter's model card claims up to 3× faster decoding at the same output quality. Google's example starts at 4 draft tokens and adapts the count to the acceptance rate. | ||
Same as the blueprintEvery 31B layer owns its KV, but most of it is bounded: the 50 local layers keep 1,024 tokens, and the 10 global layers cache 4 heads × 512 dims with keys reused as values. The report lists +1.10 GB for an int8 KV cache at 32K tokens on the 31B. Cross-layer KV sharing is used only in E2B and E4B. |