2.8T 参数的 Kimi K3,哪些是真新东西,哪些只是放大?
本课一问: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 岔路讲过「固定状态」为什么回来了)。
数字口径: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,最显眼的数字都在变大。朴素的读法是「参数翻倍、专家翻倍,所以更强」:
- ① 朴素方案
- ② 它在哪失败
- ③ 改进方案
| 维度 | Kimi K2 | Kimi K3 | 变化 |
|---|---|---|---|
| 总参数 | 1.04T | 2.78T(HF 计数 2,779,931,837,184) | +167% |
| 激活参数 | 32.6B | 104.2B | +220% |
| 路由专家 | 384 | 896 | +133% |
| 每 token 选中 | 8 | 16 | +100% |
| 稀疏度 | 48 | 56 | +16.7% |
K2 一列取自 K3 报告表 1(本地 PDF),K3 一列由 config 读取。
先自己判断每一行属于哪一类,再点「揭晓」。机制变了 = 新增、换掉或删掉了一个部件;数值变了 = 同一个东西放大或缩小;没变。
K2 一列取自 K3 技术报告 Table 1 与 §2(本地 PDF);K3 一列能在 config 里找到的都由 frontier-models.json 读取。
试三件事(先点「换成改进方案」):① 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 的状态有 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 账上就是「层」这一刀:
口径: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,慢路径被整个删掉。
线性注意力的「三起两落」。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 对深度做同样的事:
试三件事:① 点最后一层:它能取用 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 让路由专家在一个压缩过的潜空间里干活,共享专家仍走全宽:
| 维度 | 含义 | 真实规模 | 小规模 |
|---|---|---|---|
| d | hidden_size | 7168 | 8 |
| ℓ | 潜空间维度 routed_expert_hidden_size | 3584 | 4 |
| f | 每个专家的中间维 moe_intermediate_size | 3072 | 6 |
| 1 | 一个 token | 1 | 1 |
用 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 都把它留到了这里:
试三件事:① 默认的「乘积 · 全景」:把探针 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 直接从分位数算出偏置:
C11 第 2 课已用同一组 8 × 4 分数逐步算过一遍;下面的组件多了固定步长的对照和 4,096 个 token 的合成批次。
试三件事:① 连点两次「两边各走一步」: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)」是讲机制的示意,不是保证。
其余几项:大多是已学概念的延续
- Per-Head Muon(C5 第 7 课):不对完整的 Q/K/V 矩阵做 Newton-Schulz,而是按头切开各自正交化,避免梯度大的头主导共享的更新尺度;沿用 K2 的权重裁剪。K2、K3 都不用 AdamW 当主优化器。
- cosine 与 WSD 各自调优后再比(C5 第 5 课):两种调度的最优超参差别很大,用同一套超参比会偏袒其中一个;各做一次独立的 scaling-law 搜索后,cosine 的最终 loss 更低。方法论比结论更值得带走。
- MXFP4 量化感知训练(C9 岔路):从 SFT 阶段起就做 QAT,专家权重 MXFP4、激活 MXFP8,注意力投影、潜空间投影、共享专家与路由器保持更高精度;RL 的 rollout 与训练共用同一套量化方案,消除训练与推理的不匹配(K3 报告 §4.1.1、§4.1.4,本地 PDF 核对过原句;一轮对抗验证只找到博客里的说法而把它否决,那是来源定位问题,不是报告里没有)。
- MoonViT-V2(原生多模态):401M、27 层的视觉编码器从零用 next-token 预测训练,不用 SigLIP 类对比预训练初始化;报告说对比初始化的编码器和 LLM 联合训练时梯度范数偏高、尖峰频繁,从零训练反而稳定,视觉评测上持平。
后训练:九个专家合成一个(回扣 C12)
| 阶段 | 做什么 | 回扣 |
|---|---|---|
| 1. SFT | 用前代 Kimi 模型合成 agentic 轨迹,多阶段验证加人在环标注;用自研的 XTML 模板序列化 | C12 的 SFT |
| 2. RL | 三个领域(通用 / 通用 agent / 编码 agent)× 三档推理力度(low / high / max)= 9 个专家模型 | C12 的 RL |
| 3. MOPD | 多教师 on-policy 蒸馏,把 9 个专家合回一个模型 | C12 的蒸馏 |
另外三个设计: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 范围内 证据等级 · 数学可证明 在写明的前提下可以严格推导出来,不依赖实验。只要前提成立,换数据、换规模仍然成立。 本条e^80 ≈ 5.5×10^34,小于 BF16 最大有限值约 3.39×10^38。 出处待补 ;SiTU-GLU 输出有界 ≤ β₁β₂ 证据等级 · 数学可证明 在写明的前提下可以严格推导出来,不依赖实验。只要前提成立,换数据、换规模仍然成立。 本条tanh 的绝对值小于 1,σ 在 0 与 1 之间。 出处K3 报告附录 B(本地 PDF) ↗ ;QB 由最优均衡分配的对偶推出 证据等级 · 数学可证明 在写明的前提下可以严格推导出来,不依赖实验。只要前提成立,换数据、换规模仍然成立。 本条线性规划松弛与坐标下降;单步更新不保证收敛到均衡。 出处K3 报告附录 C ↗ ;有界激活利于低精度、跨层注意力缓解稀释是理论动机 证据等级 · 有理论动机 有数学或机制上的理由说明它可能有效,但没有证明它一定更好。最后是否采用,仍然要看实验。 本条报告的论证,没有证明它们一定更好。 出处待补 |
| ③ 实验上为什么最后选了它? | 2.5 倍 scaling 效率、AttnRes 与 RMSNorm 改善验证 loss、软封顶训练更好,全是 K3 自报 证据等级 · 实验验证 由对比实验得出的经验结论,只在出处写明的模型、数据和规模下成立。换了条件可能不再成立,引用时要带上实验设置。 本条内部训练曲线拟合,第三方无法复现。 出处K3 报告 §2–§3、图 7 ↗ ;架构部分能用 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。
- 「K3 的 2.5 倍能信吗?」 它来自内部训练曲线的拟合,第三方无法复现,只能引作「官方自报」;K3 报告自己把第三方评测单列了一节,怎么分层读见岔路课。
- 「为什么 K3 发布的 checkpoint 里 MTP 是 0 层?」 预训练带 1 层 MTP,后训练把它微调成 EAGLE-3 风格的草稿模型,训练时展开 7 步、直接优化接受率;发布的 config 里 num_nextn_predict_layers 是 0。