models / compare / kimi-k3-1-pro-vs-deepseek-v4-1-flash
Kimi K3.1 Pro vs DeepSeek-V4.1-Flash
How Kimi K3.1 Pro (Moonshot AI, October 2026) and DeepSeek-V4.1-Flash (DeepSeek, September 2026) are built, drawn on the same November 2026 blueprint. They make different choices on 11 of 27 components. Select a component in either diagram to find it in the table.
--- frontier-llm@2026-11+++ kimi-k3-1-pro@2026-10+0~5−2
Kimi K3.1 Pro
Moonshot AI, October 2026, 2.8T total, 104B active
--- frontier-llm@2026-11+++ deepseek-v4-1-flash@2026-09+0~3−1
DeepSeek-V4.1-Flash
DeepSeek, September 2026, 552B + 196B Engram total, 16B (8B in prefill) active
Component by component
Kimi K3.1 Pro and DeepSeek-V4.1-Flash differ on 11 of 27 components.
| Blueprint component | Kimi K3.1 Pro | DeepSeek-V4.1-Flash |
|---|---|---|
Same as the blueprintTwo Engram modules (196B parameters, FP8) at layers 1 and 14: n-gram orders 2–4, 8 hash heads per order, 2,048 dims per order, about 16M rows per head table. A sigmoid gate on each mHC stream's normalized dot product with its own key adds a shared value. The short causal conv was dropped. Rows are prefetched from host memory over RDMA. | ||
Block Attention Residuals (AttnRes)Each sublayer reads a softmax-weighted mix of the embedding and earlier 12-layer block summaries, as in K3. | Same as the blueprintSingle-Pass mHC: n = 4 streams of width 5,120 and 20 Sinkhorn iterations as in V4, but each sublayer reads its input with the mixing coefficients predicted by the previous sublayer. Removing that dependency lets the Mega-mHC kernel read and write the residual once, halving activation traffic, with negligible quality loss reported. | |
QK-Clip and normalized latents; LayerNorm on the indexer keyNo per-head QK-Norm: K2-style weight clipping for MLA, L2-normalized q/k in KDA, a LayerNorm on the DSA indexer key. | Same as the blueprintRMSNorm on the single 512-dim KV entry, which the report uses to bound every FP4 KV channel to about √512 ≈ 22.6, and on the 1,280-dim query latent. Unlike V4's reference code, V4.1's applies no separate per-head RMS normalization to queries. | |
Same as the blueprintKDA in 69 of 93 layers (three of every four, starting at layer 1), unchanged from K3: 96 heads with 128-dim q, k, v and a 128 × 128 state per head; short conv (kernel 4) + Swish on q, k, v; L2-normalized q, k. The log-decay is bounded as g = −5·σ(eᴬ·z), which keeps 16-token-tile rescaling inside BF16 range so every intra-chunk tile runs as a tensor-core matmul. | ||
Same as the blueprintGated MLA in the same 24 layers as K3 (4, 8, …, 92 plus 93), every projection the same shape: 96 heads, queries via a 1,536-dim latent, keys and values from a 512-dim latent plus a 64-dim shared key slot (576 cached values per token per layer), q/k head dim 192, v head dim 128. The difference is the key set: each query now attends only to the 2,048 tokens its layer's DSA indexer selects, not the full prefix. | CED decoder attention (CSA2 over encoder-projected KV)Layers 20–39 take uncompressed global KV from the encoder's last hidden state and re-select with a hierarchical indexer. | |
Same as the blueprintNew in K3.1: a DSA lightning indexer in each of the 24 MLA layers, each with its own weights (vLLM: no index sharing). 32 heads × 128 dims; queries from the 1,536-dim query latent (1,536 → 4,096), one shared 128-dim key from the hidden state with a LayerNorm, per-head weights from a 7,168 → 32 projection. Scores I = Σₕ wₕ·ReLU(qₕ·k) pick the top 2,048 tokens per query. 7.44M BF16 parameters per layer. DeepSeek-V3.2's indexer has 64 heads. How it was trained is unpublished. | CSA2 encoder layers (2× compression, Full + Reuse)Layers 2–19: KV pooled 2→1 and computed in only 3 of 18 layers; the rest reuse that KV and its top-512 selection. | |
Same as the blueprintLayers 0–1 are pure sliding-window layers; every other layer adds the 128 most recent uncompressed tokens (SWA KV kept in FP8) to its sparse selection. SWA KV is never persisted: on a prefix-cache hit it is rebuilt by replaying only the last 128 tokens (SWA Bounded Replay), with negligible measured loss. | ||
Sigmoid router with Quantile BalancingSigmoid scores pick 16 of 896 experts; each expert's selection bias is set every step from a quantile of routing margins. | Same as the blueprint√softplus scores over 384 experts, top-6, with auxiliary-loss-free bias balancing kept separately for text and image tokens (each bias set updated from its own modality's load, speed 0.001) plus a 0.0001 sequence-level loss. Selected scores are normalized and scaled by 1.5. V4's hash-routed early layers are gone. | |
Stable LatentMoE routed experts (SiTU-GLU)896 SiTU-GLU experts run in a 3,584-dim latent (half of d); 16 fire per token; an RMSNorm precedes the up-projection. | Same as the blueprint384 SwiGLU experts of intermediate size 2,304, 6 active per token, in all 40 layers, with V4's clamp (linear branch ±10, gate ≤ 10). The release stores them in FP4. | |
No MTP layer in the open checkpointThe checkpoint ships without MTP weights; Moonshot has not described a K3.1 drafter, so serving engines bring their own. | DSpark drafter (trained after pretraining)Three 128-token-window blocks draft 5 tokens per pass from the backbone's last 3 layers; no MTP loss in pretraining. | |
Same as the blueprintThe final stage is full-vocabulary on-policy distillation over all domains from more than 40 teachers, which may differ architecturally from the student, run with asynchronous generation. |