从0训练LLM · 现代大模型体系 阅读 + 实验 ≈ 60 分钟 页内实验 ×7
C15 前沿解剖:2026 开源模型各自改了什么、为什么 第 4 课

2.8T 参数的 Kimi K3,哪些是真新东西,哪些只是放大?

Kimi K3:2.8T 参数里,哪些是真新东西
K3 的参数从 1.04T 涨到 2.78T、路由专家从 384 涨到 896,稀疏度却只从 48 升到 56;报告要证明的是同算力下 2.5 倍的 scaling 效率(官方自报)。逐行做新旧分离:21 项变化里 8 项是机制变化,其中 KDA 混合栈与 NoPE 来自同团队的 Kimi Linear,LatentMoE 是前人工作,按头 Muon 晚于 GLM-5;对领域真正原创的是 AttnRes、SiTU-GLU、Quantile Balancing,以及让 KDA 全走 Tensor Core 的衰减下界。
❓

本课一问:Kimi K3 是 2026 年公开权重里最大的模型:2.78T 总参数、104.2B 激活、1M 上下文。它的 47 页报告里,哪些是真新东西,哪些只是 K2 的放大?

这一课先不碰:KDA 状态更新的分块并行(结论见 C11 第 4 课 Dig,推导见《DeltaNet Explained (Part II)》)、MOPD 之外的 RL 细节(C12)、K3 评测数字的分层(下一堂岔路课与 C14)。

从已有出发

同一句「小明把苹果给了小王」进入 K3(词表 163,840 行,token 数可能与 Qwen 不同,按每个 token 计):93 层里只有 24 层 MLA 存 KV,每层每 token 一个 512 + 64 = 576 维条目,合计 27,648 B;另外 69 层 KDA 不存历史 token,每层维护一个 96 头 × 128 × 128 的状态,合计 108,527,616 个元素——读 5 个 token 是这么大,读 1M 个还是这么大(C0 岔路讲过「固定状态」为什么回来了)。

从已有出发 · 累计数据流 点已学环节看形状与参数
解码层
演进图 · 本课在哪一段 QwenGLMDeepSeekKimi
Kimi 2025-07 Kimi K2
引入1.04T / 32.6B,61 层 MLA;优化器 Muon + QK-Clip(MuonClip)。
借来MLA 与 MoE 结构沿用 DeepSeek-V3。
卡在原版 Muon 下注意力 max logit 超过 1,000,才加了 QK-Clip(C8)。
Kimi 2025-10 Kimi Linear 48B-A3B
引入KDA:Gated DeltaNet 的遗忘门从每头一个标量改成每个通道一个;KDA : MLA = 3 : 1;全局层不用位置编码(NoPE)。
借来delta rule(Schlag 2021)、Gated DeltaNet(NVIDIA / MIT)。同期反例:MiniMax M1 用线性混合,M2 又退回全注意力(列了 4 条理由)。
卡在48B 的研究规模;衰减无下界,分块计算里的倒数会溢出,对角块只能走慢路径。
Kimi 2026-07 Kimi K3 本章讲它的那一课 →
引入69 层 KDA + 24 层 Gated MLA(NoPE),每 token KV 27,648 B,另有与长度无关的固定状态 108,527,616 个元素;衰减下界 −5(算子全走 Tensor Core);AttnRes、SiTU-GLU、Quantile Balancing 是 K3 自己的;896 选 16,稀疏度 56。
借来KDA / NoPE / 混合栈出自自家 Kimi Linear;LatentMoE 是报告引用的前人工作;按头 Muon 晚于 GLM-5 的 Muon Split。
卡在架构能用 config 逐项核验,训练侧(预训练配方、RL、基础设施)只有报告自述;「2.5 倍 scaling 效率」来自内部训练曲线,第三方无法复现。

看四条泳道的完整演进图 →

数字口径:KV 字节、固定状态、稀疏度、GLM 的参数差值都由 frontier-models.json / anchor-model.json 的官方 config 在构建时现算,并与数据文件的 _meta.checks 逐项核对(对不上就构建失败);V4.1 的 890 B 另用了两个格式常数(FP4 条目 288 B、索引 key 68 B,见 R3 §1.5e)。其余文字出自各家技术报告与模型卡,归属判断见 R2 §0.1、R3 §1.7。

先自己设计:进步来自规模和稀疏度

K2 到 K3,最显眼的数字都在变大。朴素的读法是「参数翻倍、专家翻倍,所以更强」:

  1. ① 朴素方案
  2. ② 它在哪失败
  3. ③ 改进方案
朴素方案参数与专家数暴涨 → 进步主要来自规模和稀疏度
维度Kimi K2Kimi K3变化
总参数1.04T2.78T(HF 计数 2,779,931,837,184)+167%
激活参数32.6B104.2B+220%
路由专家384896+133%
每 token 选中816+100%
稀疏度4856+16.7%

K2 一列取自 K3 报告表 1(本地 PDF),K3 一列由 config 读取。

🎯

试三件事(先点「换成改进方案」):① 21 行都先自己判断再揭晓——旧版课程的 15 行对照里「真正的新东西」是 7 行,正文却写成 6 行(数漏了一行);这里补上报告正文里的几项改动,机制变了的是 8 行;② 揭晓第二级,数「对领域首创」:SiTU-GLU、AttnRes、Quantile Balancing 三行,视觉编码器算一半;③ 点「注意力机制」一行的出处:KDA 与混合栈来自同团队 2025-10 的 Kimi Linear——对 K3 是新,对领域不是。「对我新 ≠ 对领域新」,想搞懂 KDA 该读的是 Kimi Linear。

报告把 K3 的架构组织成三个正交的扩展方向:序列长度(混合注意力)、网络深度(AttnRes)、模型宽度(Stable LatentMoE)。下面按这三个方向拆,每一个都回扣前面的某一章。

方向一 · 序列:KDA 混合栈与 NoPE(回扣 C11、C2、C0 岔路)

KDA 的机制在 C11 展开,这里只保留读懂 K3 需要的一条公式:

KDA 的状态更新(K3 报告 Eq.1;机制出自 Kimi Linear)
= ( I − ) +
👆 公式里带下划线的每一项都可以点——点哪项,讲哪项。
对比 C3 的注意力:那里要拿 q 和所有历史 k 逐个点积。KDA、NoPE 与 KDA : MLA 混合栈都来自同团队的 Kimi Linear(arXiv 2510.26692,48B / 3B 研究规模);任何把「48B / 3B」标成 K3 的资料都是把 Kimi Linear 认成了 K3,差约 58 倍。

固定状态不是免费的:一层 KDA 的状态有 1,572,864 个元素,一层 MLA 每 token 存 576 个,要到 1,572,864 ÷ 576 ≈ 2,731 个 token 时,一层 MLA 的缓存才追上一层 KDA 的状态(按元素数比,不计 FP32 状态与 16 位缓存的字节差;R1 E12 的口径)。所以 KDA 是为长上下文准备的;短序列时它反而更大。K3 的做法是每 3 层 KDA 插 1 层 Gated MLA,最后一层额外保证是全局注意力:69 + 24 = 93。KV 账上就是「层」这一刀:

KV 账本:从「同形 MHA」一刀一刀砍下来

口径:BF16 每元素 2 B,只算随序列长度增长的全局 KV(与 frontier-models.json _meta.checks 同一口径,✓ = 现算值与核对值一致);线性注意力的固定状态与滑窗常数不随长度变,另列。V4.1 的原生格式用两个格式常数:FP4 KV 条目 288 B(256 B E2M1 + 32 B E4M3 scale)、索引 key 68 B(OCP MXFP4 推算),出自模型卡、FlashMLA README 与 R3 §1.5e。

🔍 一个下界为什么能提速:衰减下界 −5 与 BF16 的算术

(C11 第 4 课的 Dig 算过同一笔账,这里从 K3 的角度复习。)KDA 的分块计算要把每块里的 key 按「累积衰减的倒数」重新缩放。Kimi Linear 用 −A·Softplus(z) 做对数衰减,取值范围 (−∞, 0) 没有下界,倒数可能溢出;为了不溢出,对角块只能逐个位置对计算,这条慢路径成了主要瓶颈。K3 改成 g = gmin·Sigmoid(eAz),把对数衰减限制在 (-5, 0):每步 α ≥ e-5 = 6.74e-3,一个 16 token 的块里累积对数衰减 ≥ -80,倒数不超过 e80 = 5.54e+34,小于 BF16 的最大有限值 3.39e+38(C9)。于是对角块也能用稠密矩阵乘走 Tensor Core,慢路径被整个删掉。改一个激活函数的值域,换来整个算子的吞吐——算法与系统协同设计的教科书例子。K3 报告 §2.1.1(本地 PDF);config 的 kda_gate_lower_bound = -5。同一个下界在一个月内出现在 GLM-5.3-Flash、Ling-3.0、Yandex AliceAI 的 config 里。

🔎

线性注意力的「三起两落」。MiniMax-01(2025-01)用线性混合,M2 又退回全注意力,官方列了 4 条理由:训练受访存限制、对低精度敏感、难兼容前缀缓存与投机解码、规模变大后多跳推理有缺陷。K3 对前三条逐一给了工程回答:衰减下界让 BF16 够用;KDA 感知的前缀缓存(状态只在部分哈希端点存检查点);投机解码被拒时只缓存草稿 token 的投影输入、在片上重建状态。第四条是另一种回答:有论文证明全局层不能全部换成线性层(arXiv 2602.01763),所以要混合——但比例 3 : 1 没有理论,是实验选的(R3 §3.1)。

⚠

「NoPE 就是不需要长上下文训练。」报告的原意是扩到 1M 时不需要改位置编码参数(不用重调 RoPE 频率、不用 YaRN),不是不需要长上下文训练:K3 照样走了四段课程——预训练 8K → 64K,冷却阶段 256K → 1M——还专门合成了「只有跨完整 1M 注意才能解」的数据,防止注意力退化成只看局部。省掉的只是位置编码这一个环节。另外,NoPE 不是混合架构的必然选择:同是 KDA 混合的 Ling-3.0 用了部分 RoPE,Qwen 的报告还给出了 NoPE 的反证(第 1 课)。

方向二 · 深度:AttnRes(回扣 C4 第 2 课、C8 第 2 课)

标准残差把所有历史压进一个向量沿深度传递——就像 RNN 沿时间把历史压进一个状态。Transformer 当年用注意力取代了沿时间的递推,AttnRes 对深度做同样的事:

Attention Residuals(K3 报告 §2.2,Eq.8–10)
= Σi ·
👆 公式里带下划线的每一项都可以点——点哪项,讲哪项。
把注意力从「跨 token」搬到「跨层」。K3 实际:93 层按 12 层一块分成 8 块,最后一块只有 9 层,连同 embedding 共 9 个来源。第三方(Raschka)把它单独点名为 K3 里「非效率型的真创新」;收益(验证 loss 与下游改善)是 K3 自报。
AttnRes:每层对前面各块做一次注意力
🎯

试三件事:① 点最后一层:它能取用 embedding 和前面 7 个完整的块,外加本块的部分和;② 点第 5 层(第 1 块里):它只能取用 embedding 和本块——分块越细,可选的来源越多、存得也越多;③ 读说明最后一段:标准残差里第 93 层看到的和中,一层只占约 1%,这就是 C8 第 2 课的「深层写入被稀释」。同一个问题,DeepSeek 与 GLM 的答案是加宽残差(第 3 课的 mHC),Qwen 是 Gated Residual(第 1 课)——分歧就在这里。

方向三 · 宽度:Stable LatentMoE(回扣 C11、C4 岔路、C9)

要把专家池从 384 扩到 896、每 token 选 16 个,卡间通信先扛不住:每个 token 要把完整的 hidden 向量发给每个被选中的专家。LatentMoE 让路由专家在一个压缩过的潜空间里干活,共享专家仍走全宽:

K3 的 LatentMoE:一个 token 走一个路由专家(config 真实维度;可切小规模)
y = Σj Ejshared(x) + W↑·RMSNorm(u), u = Σi∈T_k pi·Ei(W↓·x)
输入参数(可学习)输出中间结果
边长按对数比例缩放,块边上的数字是真实值;同一维度符号的边在全图等长。
维度含义 真实规模 小规模
d hidden_size 7168 8
ℓ 潜空间维度 routed_expert_hidden_size 3584 4
f 每个专家的中间维 moe_intermediate_size 3072 6
1 一个 token 1 1
LatentMoE 本身是报告引用的前人工作;K3 的贡献是让它稳定的三件事:上投影前的 RMSNorm、SiTU-GLU、Quantile Balancing。和 C12 第 1 课讲过的 LoRA 是同一个思想:在低秩空间里干活。

用 C4 岔路课的参数账本算一下这个结构把参数花在哪:一个路由专家 3 × 3,584 × 3,072 = 33,030,144 个参数(门、上、下三个矩阵都在潜空间里);× 896 个专家 × 92 个 MoE 层 = 2,722,740,830,208,占总参数的 97.9%;每个 token 只经过其中 16 个,约 48,620,371,968 个参数。2.78T 的「大」,几乎全在不常被激活的专家里。

极端稀疏引出两个故障:激活值失控、专家饿死。三件稳定器各对付一部分。

稳定器一与二:RMSNorm 与 SiTU-GLU(回扣 C4 第 4 课、C8、C9)

原始 LatentMoE 直接把加权和 u 送进上投影,而 u 的尺度随被选中的专家与路由权重变化;K3 在中间插了一个 RMSNorm,报告称这既稳了训练,也持续改善验证 loss。第二件是给 SwiGLU 封顶——C4 第 4 课与 C8 都把它留到了这里:

给 SwiGLU 封顶:硬截断 vs SiTU-GLU(真函数,切片 g = u = x)
— GLU— SwiGLU— 硬截断— SiTU-GLU
🎯

试三件事:① 默认的「乘积 · 全景」:把探针 x 拖到 40,SwiGLU 是 1,600,超出 FP8 E4M3 能表示的 448;硬截断 99.995,SiTU-GLU 92.167;② 切「近原点」:三条线几乎重合——常用区间的行为不变;③ 切「导数」:硬截断在 x 超过 10 之后导数恰为 0,SiTU-GLU 不为 0——K3 报告说软封顶「在饱和边界之外仍保留非零梯度,训练表现更好」(官方自报)。

⚠

「SiTU-GLU 是为 MXFP4 权重服务的。」旧版课程这样写不准确。报告的原话是:两个乘法因子都无界,坐标同时变大时会产生离群值,「在低精度算术下增加溢出风险」;K3 的量化方案是专家权重 MXFP4、激活 MXFP8。被封顶的是激活。两家的封法不同、上界却在同一个量级:硬截断 SiLU(10) × 10 ≈ 99.995,SiTU-GLU 是 β₁β₂ = 100。

稳定器三:Quantile Balancing(回扣 C11 的负载均衡)

C11 讲过无辅助损失的负载均衡:给每个专家一个偏置,只用来决定「选谁」,不进混合权重,所以不干扰路由器的梯度。原方法用固定步长更新偏置,γ 在「调得慢」与「来回振荡」之间取舍;896 个专家下它太慢。K3 的 QB 直接从分位数算出偏置:

Quantile Balancing(K3 报告 Eq.13–14)
👆 公式里带下划线的每一项都可以点——点哪项,讲哪项。
全局批次的 margin 以百万计、散在各卡上,精确分位数不可行;K3 读每个专家的直方图分位数,一次 all-reduce 汇总分箱计数。附录 C 从最优均衡分配的对偶问题推出了这条更新(数学推导),「它在训练中更快、更稳」则是实验。

C11 第 2 课已用同一组 8 × 4 分数逐步算过一遍;下面的组件多了固定步长的对照和 4,096 个 token 的合成批次。

Quantile Balancing vs 固定步长:同一批分数,同时走
🎯

试三件事:① 连点两次「两边各走一步」:QB 是 (4,3,1,0) → (4,2,2,0) → (3,2,2,1),之后停住——旧版课程写「一步就改善到极差 2、饿死的专家被救活」,按这组分数不成立;② 把固定步长 γ 换成 0.01 再重来:要走 8 步才动,之后在两个状态之间来回跳;③ 切到「合成批次」,m = 4,096 跑 20 步:QB 的最大负载 ÷ 目标降到 1.004,固定步长 γ = 0.01 还在 1.09–1.11 之间振荡。论文图 5 的「一步到 (2,2,2,2)」是讲机制的示意,不是保证。

其余几项:大多是已学概念的延续

后训练:九个专家合成一个(回扣 C12)

阶段做什么回扣
1. SFT用前代 Kimi 模型合成 agentic 轨迹,多阶段验证加人在环标注;用自研的 XTML 模板序列化C12 的 SFT
2. RL三个领域(通用 / 通用 agent / 编码 agent)× 三档推理力度(low / high / max)= 9 个专家模型C12 的 RL
3. MOPD多教师 on-policy 蒸馏,把 9 个专家合回一个模型C12 的蒸馏
MOPD 的奖励(K3 报告 Eq.15)
= clip( sg( log ÷
👆 公式里带下划线的每一项都可以点——点哪项,讲哪项。
报告还诚实记了一笔负面结果:试过更细粒度的 top-k 蒸馏目标,「在收敛速度与最终性能上都未见明显优势」。

另外三个设计:partial rollout——每轮在 λ 比例的轨迹完成时就暂停,没跑完的排队下一轮继续,避免整批被最慢的一条拖住,代价是数据陈旧,靠逐 token 正则化扛住;推理力度 RL——每个问题一个初始 token 预算,超过 τ 倍预算的轨迹奖励直接改成 −1,先训 max 档,再收紧 τ 退火出 high / low;Agentic 生成式奖励模型——不可验证的任务让 AI 当裁判,但强制它先读产出、再生成评分细则、再逐条打分、记到评分板,并给候选设长度上限,超长自动判负,防「写得又长又满」骗过裁判(C12 的 reward hacking)。

🤝

独立收敛。K3 与 DeepSeek-V4 是两支互不相干的团队,却给出几乎同构的后训练范式:专家分开练,再蒸馏合成一个。差别在实现:K3 把蒸馏写成 RL 里的稠密奖励;V4 直接优化全词表的 reverse KL。V4.1 甚至说后训练「没有算法创新」。这种互不引用的收敛,比任何一家的自述都更能说明这条路走得通。

⚠ 常见误解

⚠

「K3 发明了 KDA 和 NoPE。」来自同团队的 Kimi Linear(2025-10);K3 的贡献是把它推到 3T 级并让它稳定(衰减下界、全秩输出门、配套的推理基础设施)。

⚠

「专家数暴涨 = 稀疏度暴涨。」384 → 896 是 +133%,稀疏度 48 → 56 只有 +16.7%;激活参数反而涨得比总参数还快(+220%)。

⚠

「K3 的 KV 只有 24 层,所以长上下文不占显存。」24 层 MLA 的 KV 仍随长度线性增长(1M 时 27 GiB);69 层 KDA 的状态不增长,但每条序列都要付。它省的是「层数比例」这个常数因子,不是把增长本身消掉——这一点和旧版课程对 K3「不存」的限定一致。

在演进图上的位置

Kimi 这条线:K2 是 DeepSeek-V3 式的 MLA + MoE,加上 MuonClip;Kimi Linear 在 48B 研究规模上验证了 KDA 混合与 NoPE;K3 把它放大到 2.8T,并补上 AttnRes、SiTU-GLU、QB 三件自己的东西。之后一个月里,KDA 与衰减下界外溢到了 GLM-5.3-Flash 等三家。

证据三问

问本课的回答
① 它解决什么问题?三个方向扩展信息流:序列(1M 上下文下 KV 不爆)、深度(残差的单一向量瓶颈)、宽度(896 个专家的通信与稳定)
② 数学上为什么可能有效?KDA 状态大小与长度无关、衰减下界保证倒数在 BF16 范围内 ;SiTU-GLU 输出有界 ≤ β₁β₂ ;QB 由最优均衡分配的对偶推出 ;有界激活利于低精度、跨层注意力缓解稀释是理论动机
③ 实验上为什么最后选了它?2.5 倍 scaling 效率、AttnRes 与 RMSNorm 改善验证 loss、软封顶训练更好,全是 K3 自报 ;架构部分能用 config 与权重体积独立核验

一句话

📌

先分「新 / 放大 / 不变」,再追每个新东西的出处:K3 对领域真正原创的只有几项。

🚦

先停在这里:记住三个方向(序列、深度、宽度)与四个真原创(AttnRes、SiTU-GLU、QB、衰减下界)。
再深一层:读 K3 报告附录 B、C,把 SiTU-GLU 的上界与 QB 的对偶推导自己推一遍;再追一条引用链:Kimi Linear → Gated DeltaNet → DeltaNet。

下一个缺口

四家各拆了一遍:Qwen 的消融、GLM 的后训练与拼装、DeepSeek 的四刀、Kimi 的三个方向。放到同一张表上,2026 年到底趋同了什么、分歧在哪? → 实验课:12 个模型的 config 并排

岔路:一份 47 页的报告,怎么在半小时里读出「哪些是新的、哪些数能信」?→ 怎么读一份前沿技术报告

你可能会问

这一课还没有收到真实提问;你的提问会记到 05-问答记录/C15-L4.md。