models / compare / gpt-oss-120b-vs-deepseek-v4
gpt-oss-120b vs DeepSeek-V4-Pro
How gpt-oss-120b (OpenAI, August 2025) and DeepSeek-V4-Pro (DeepSeek, April 2026) are built, drawn on the same November 2026 blueprint. They make different choices on 12 of 27 components. Select a component in either diagram to find it in the table.
--- frontier-llm@2026-11+++ gpt-oss-120b@2025-08+0~4−9
gpt-oss-120b
OpenAI, August 2025, 117B total, 5.1B active
--- frontier-llm@2026-11+++ deepseek-v4@2026-04+0~1−3
DeepSeek-V4-Pro
DeepSeek, April 2026, 1.6T total, 49B active
Component by component
gpt-oss-120b and DeepSeek-V4-Pro differ on 12 of 27 components.
| Blueprint component | gpt-oss-120b | DeepSeek-V4-Pro |
|---|---|---|
Single residual streamOne d = 2,880 residual stream with pre-norm sublayers; no hyper-connections. | Same as the blueprintmHC with n = 4 streams of width 7,168 around every attention and MoE sublayer. The residual-mixing matrix is projected to doubly stochastic with 20 Sinkhorn–Knopp iterations; read-in uses σ(·) and write-back 2σ(·). DeepSeek reports a 6.7% wall-time overhead per overlapped 1F1B pipeline stage. | |
Same as the blueprintAn RMS normalization of each of the 128 query heads and an RMSNorm on the single 512-dim KV entry, applied just before core attention in both CSA and HCA. DeepSeek credits this for training with Muon without QK-Clip. | ||
Full RoPE with YaRN scalingRotary embeddings on all 64 head dims, θ = 150,000, stretched 32× with YaRN. | Same as the blueprintPartial RoPE on the last 64 of 512 dims of queries and KV entries. Because each entry is both key and value, the same 64 dims of every head's output are rotated by −i so each entry's contribution depends on relative distance. All 61 layers are compressed and use θ = 160,000 with YaRN (factor 16 over a 65,536-token base) to reach 1,048,576 positions. | |
Dense grouped-query attentionFull causal attention with 64 query heads sharing 8 KV heads, in every other block. | Heavily Compressed Attention (HCA)Every 128 tokens pooled into one KV entry; dense shared-KV attention over all of them plus a 128-token window. | |
Same as the blueprintCompressed Sparse Attention in 30 of 61 layers (even layers 2–60), interleaved with HCA. Each KV entry pools 8 overlapping tokens at stride m = 4 with a per-channel softmax. A lightning indexer (64 heads × 128 dims, ReLU scores weighted per head) keeps the top 1,024 entries, which the 128 query heads attend to together with the SWA entries. | ||
Softmax top-k routerA linear router picks the top 4 of 128 experts; softmax over those 4 logits gives the weights. | Same as the blueprint√softplus affinities over 384 experts with a per-expert bias used only to pick the top 6 (auxiliary-loss-free balancing, bias speed 0.001) plus a 0.0001 sequence-wise balance loss. The selected scores are normalized and scaled by 2.5. V3's node limit is removed, and the first 3 MoE layers pick experts by a fixed token-id hash. Anticipatory Routing (indices from Δt-step-old parameters) was switched on only around loss spikes. | |
Same as the blueprintOne always-active shared SwiGLU expert of intermediate size 3,072 in every MoE layer, with the same clamping; unlike the routed experts it is not stored in FP4. | ||
Same as the blueprintOne MTP module (depth 1), unchanged from DeepSeek-V3: an extra block that combines the normalized next-token embedding with the trunk's normalized state and shares the embedding and LM head. Its attention is sliding-window only. Loss weight 0.3, lowered to 0.1 when learning-rate decay starts. | ||
Same as the blueprintMuon for most matrices: 10 hybrid Newton–Schulz steps (8 with coefficients (3.4445, −4.7750, 2.0315), then 2 with (2, −1.5, 0.5)), Nesterov momentum 0.95, weight decay 0.1, update RMS rescaled to 0.18. AdamW (β = 0.9 / 0.95) trains the embedding, prediction head, RMSNorm gains and mHC static biases and gates. No QK-Clip. | ||
Same as the blueprintMore than ten specialist teachers are merged into one student by on-policy distillation with a weighted, full-vocabulary reverse-KL loss. Teacher logits are rebuilt on the fly from cached last-layer hidden states instead of being stored. | ||
Same as the blueprintKV entries store the 64 RoPE dims in BF16 and the rest in FP8 (nearly half of BF16), and indexer keys are FP4. At 1M tokens the cache is 10% of V3.2's and about 2% of a BF16 GQA-8 baseline. Compressed entries are written to disk for prefix reuse; SWA KV (about 8× larger) is fully cached, periodically checkpointed or recomputed, depending on deployment. |