领读 Kimi K3 技术报告:线性注意力的前世今生、架构—Infra 协同设计与"忒修斯之船"(张小珺第 152 期,2026-08-26)¶
- 嘉宾: 孙宇涛(清华大学计算机系博士候选人;上海创智学院璞锐学者。研究方向:LLM 架构与预训练,核心关切是推理低效性)
- 主持: 张小珺
- 来源: YouTube · 124 分钟
- 转录稿: sources/zhang-xiaojun/20260826-axFwKz1X0is(无字幕,faster-whisper large-v3-turbo 本地转录)
- 说话人分离: speakers.md(pyannote community-1,3 个标签 / 164 轮次;
transcript.md逐字节未动)
说话人认定依据:SPEAKER_01 = 孙宇涛(嘉宾)、SPEAKER_02 = 张小珺(主持)。
- 说话占比 SPEAKER_01 94.4%(01:56:12)/ SPEAKER_02 5.4%(00:06:36)——本期是"领读"体裁,嘉宾近乎全程讲述,占比结构与普通访谈不同。
- 开场 [00:00:03]–[00:01:03] 整段归 SPEAKER_02,正是"我是小珺 + 介绍嘉宾"那段自述。
- ⚠️ 第三个标签 SPEAKER_00 仅 16 秒(0.2%),本库判定为分离产生的碎片,不对应第三个真人——本页不使用它。
- ⚠️ 标签是证据不是判决。本页凡引用主持方处写明"张小珺",其余默认为孙宇涛。
本地转录专名对照表(转录稿拼写 → 本页采用):
小俊→小珺、上海创制学院普瑞学者→上海创智学院璞锐学者、Racket→RetNet、Mion/mium→Muon、Alt-Line/onbondy→outlier、速箭林/苏建林/松林→苏剑林、拖到东瑞/拖乱东特瑞→TL;DR、约克/优扣→YOCO、现行注意力/限制助力/线线主义力→线性注意力、全助力/复尔腾认→全注意力、前面/签问→Qwen(前面3→Qwen3、前面next→Qwen Next)、会儿→GQA、荣誉专家→冗余专家、取发式→启发式、偶合→耦合、单v作战→单兵作战、上显→上限、白饮→buy in、折押多数→绝大多数、泰修斯之船→忒修斯之船、凯文→(何)恺明、黄高老师→黄高、杨志明/杨志林→杨植麟、罗弗利/卢弗利→罗福莉、tipsic/Deepsig/DFTV3→DeepSeek。⚠️ 以下几处本库明确不裁决: -
木音P([01:37:13]):Kimi 那套动态 EP 方案的名字,转录不可辨,本库只描述机制,不认领名称。 -太阳亮团队([01:29:11])、董老师/艾演员院/郁贤([01:24:10])、陈简([01:32:12]):人名与机构名转录含混,不猜。 -C2GLU/SiTU-GLU([00:50:50]–[00:52:50]):该算子名称转录不一致,本页按机制描述,不固定写法。 -千倍72B([01:59:25]):他在讲"K3 之前国内最大的模型"时的对照物,疑为 Qwen 72B,但与本库已知的 K2(1T)不自洽,本库照录存疑、不解释。 -现归([00:57:54])、移步([00:57:54])、隧道([00:36:40]):语义不明,不猜。
概要¶
这是本库第一份"论文领读"体裁的材料,也是迄今技术密度最高的一期。它的价值不在于介绍 K3 本身,而在于嘉宾刻意不按论文顺序讲——他把 K3 的每一项设计还原成一条历史脉络,串讲了十几篇论文。他自陈方法论([00:16:23]):
"如果只看这篇论文,你会知道它是这样做的,但你可能不太清楚它为什么这样做,或者历史上大家是怎么做的、为什么最后达到这个解。"
⚠️ 嘉宾本人是这条脉络中的当事人之一:RetNet(chunk-wise recurrent 的提出)、YOCO(You Only Cache Once)、loop language model 三项工作都出自他本人([00:03:10]–[00:14:21])。本库把这记为利益相关,也记为这份材料稀缺性的来源。
本期最该被单独引用的七条:
- ⚠️ "忒修斯之船"——本期最该被引用的一条,也是他自称的"暴论"([01:08:00]–[01:09:00]、[02:01:26]):
"大家现在都叫 Transformer,但什么是 Transformer,其实是没有办法清晰定义的。"
2017 年这条船开始行驶时是 attention + residual + stack layer(而这些在 Transformer 之前也并非全新概念);行驶了八九年,某些部分换了、某些部分换了,到 2026 年"跟 Transformer 已经像素很低很低了"——"你是否还把这个东西叫做 Transformer?"
他的暴论:"大模型可能没有太本质的创新了,后面都是一些改良性的渐进进步。"
- ⚠️ 推理开销的三分法,是本期最有用的一个分析框架([00:11:18]):
"模型的推理开销主要就分为三个部分:prefill 的计算开销、decode 的开销、KV cache 的存储开销。这三个是最主要的……不可能有第四个。"
他用这个框架给自己的工作定位(YOCO 解决了 prefill 与 KV cache、没解决 decode),也用它解释 K3 为什么不用 sparse attention。
- ⚠️ "纯线性注意力无疑是一个比较失败的尝试"([00:06:14])——有限的 state 难以在长上下文里匹敌全注意力。但 hybrid 的反转才是关键([00:07:16]):混合注意力从架构上是 trade-off,从模型表现上却不是——保持一定全注意力比例可获得无损甚至更好的长上下文表现。正是这个实验结论让混合注意力被大规模采用。
- ⚠️ 算法为 infra 让步的一个干净样本:KDA 的 lower-bound decay([00:29:33]–[00:32:37])。KDA 把衰减从标量变成 channel-wise(严格更强,因为可退化到均匀衰减),代价是 kernel 更难写。为了沿用"用绝对位置表示相对位置"这套 RoPE 式技巧,q/k 要做衰减的倒数变换,一边会除以很小的数——于是必须把 16 个 token 的 tile 内的衰减量限制在 bf16 动态范围内,并反解出最大可衰减量。
- ⚠️ 一条可以到处用的工程定律([00:49:49]):
"两个矩阵连乘,在模型表达能力上是 free 的(严格可以合并成一个),但优化性质上并不是——经常会出现训练不稳定。"
TL;DR:如果你不得不把两个矩阵连乘拆开,中间一定要加一个类似 normalization 的手段。 他指出 MLA(low projection 再打回)与 Latent MoE 是同一个模式。
- ⚠️ 一条纠正广泛误解的话([01:21:08]):
"RoPE 本质上带来的是 recency bias……它对 short context 的建模特别有效,但对长文没有帮助,甚至有负面影响。认为是 RoPE 引入了长文表现,这个是错误的——RoPE 并不带来任何长文能力,它甚至损害长文能力。"
所以在 hybrid 架构下(线性注意力已经引入了位置信息),全注意力那部分可以直接改成 NoPE,扩长文不需要调任何参数。⚠️ 他说自己审到这篇时直接给了 strong accept——"我这几年可能也没有给过几个 strong accept"。
- ⚠️ 他对 K3 最 impressive 之处的回答,是一个非技术答案([01:54:24]–[01:55:24]):不是任何架构创新,而是激活量做到了约 100B——"比我预期的还要大一些"。
"这个不依赖任何能力……我觉得这个决定是一个非技术性的决定。"
配一句:"有价值的技术创新,他们都单写了一个 paper 了,所以 K3 刚出来的时候我主要就 surprise 这个 size,别的都符合我预期。"
核心观点¶
一、他自己的三项工作,以及一条贯穿的动机¶
⚠️ 本节内容的作者就是受访者本人,本库照录其自述。
- 研究取向的时代背景([00:03:10]):他指出整个领域从"性能导向"转向"效率导向"——ImageNet 时代追求更精妙的架构来提升表现;而大模型时代发现参数量才是性能最主要的因素,架构改进带来的性能提升相对微小;
"但是不同的架构在模型的推理方面,性能差异是巨大的,而且这个主要决定了模型最后的部署价格。"
- ① RetNet(2023)([00:04:11]–[00:05:12]):解决两件事——让线性注意力在通用场景下逼近全注意力(引入衰减项,让它从 position invariant 变成位置相关),以及提出 chunk-wise recurrent(块递归)的计算形式。
- ⚠️ chunk recurrent 的动机值得单记:纯递归形式特别慢,训练中甚至比 parallel representation 还慢;但纯 parallel 又完全享受不到线性复杂度的收益("跟全注意力的计算强度一模一样,甚至更高")。所以要在两者之间找 trade-off。
- ⚠️ "之后所有线性注意力的改进工作,都是基于这样 chunk-wise 的计算形式"——包括 Mamba2、Gated DeltaNet,直到今天的 Kimi KDA。
- ② YOCO(You Only Cache Once)([00:08:16]–[00:10:17]):动机来自对 hybrid 的不满——
- ⚠️ "混合注意力的加速比永远和混合比成正比":常用 3:1(全注意力占四分之一),所以最多也就 4 倍加速,"只是一个常数级别的改进,所以当时觉得可能不是很有意思"。
- 第一性原理:模型至少要有获取全文信息的能力,所以沿 token 长度这个维度,KV cache 省不掉。那就换一个维度——沿层间省:所有层共用一份 KV cache。
- 把计算与存储解耦:只有一份 KV cache,但保持多层的完整计算结构。
- ⚠️ 额外收益:prefill 可以直接跳过全注意力计算——因为 prefill 的唯一目的就是拿到 KV cache,无需解码出每个位置的 next token prediction。
- 他对这项工作的定性:"从 KV cache 的存储角度基本上已经达到极致了"——token-wise 必须保证的话,一份就是最少,不可能再少。(标题致敬 YOLO,"你只能缓存一次"。)
- ③ Loop language model / YOCO universal([00:11:18]–[00:14:21]):在固定参数量下通过多次迭代提升 FLOPs。
- ⚠️ 传统 loop LM 的两个问题:只省参数不省计算(相同计算下不如直接把参数展开);KV cache 会随推理深度增加,总量相当大。
- 解法:YOCO 是两段式(前期全线性、后期全注意力)而非交错式,所以把 loop 单元放在线性注意力那一段——linear attention 的 KV cache 微乎其微,长上下文下额外计算也很小。效果是约两倍计算强度换约两倍性能提升,而存储与 KV cache 基本不变。
二、线性注意力的演进史:K3 的 KDA 是怎么长出来的¶
他说如果直接读 KDA 的公式会发现"特别特别长",每一项背后都有一个历史因素([00:21:26])。脉络是:
- 最初的线性注意力:KV 乘出来加起来,比 RetNet 还简单,且位置无关。
- RetNet:引入与 token 位置相关的衰减项。⚠️ 理由是语言的特性——更近的位置有更高的权重,"在有限的上下文下要达到更好结果,衰减这项是必不可少的"。此后所有工作都保留了衰减。
- Mamba:把位置无关的衰减变成位置相关的衰减。
- DeltaNet:提升在相同 KV cache 大小下的上下文容量。⚠️ 苏剑林的贡献是让 DeltaNet 变成 GPU 可并行的 chunk recurrent 形式——他自陈当时有疑虑:"我说看上去好像 DeltaNet 不太可以并行啊;他说可以并行,并且他已经搞定了。"
- ⚠️ 一处坦率的心态分歧([00:25:28]):当时他自己倾向"认输"——"我当时意识到,从线性注意力的视角出发,是很难去匹敌全注意力的";而苏剑林是另一个想法,"他觉得我还可以再努力"。
- Gated DeltaNet(NVIDIA):delta rule 的高容量 + 衰减结合。
- Kimi Delta Attention(KDA):把衰减项从标量变成 channel-wise——每个 channel 的衰减系数可以不同,严格更强(可退化到均匀衰减)。代价与 co-design 见上文"最该被引用的第 4 条"。
- TL;DR(他自己的总结,[00:32:37]):KDA 拓展了 GDN 的计算能力;为拓展带来的额外 infra 麻烦,则在模型表达范围内采取了一些限制,让它满足 kernel 化的要求。
三、Gated MLA,以及 MLA 还会不会是共识¶
- MLA 来自 DeepSeek V2,目的是减少 KV cache;K2 沿用,K3 继续沿用并加上 gating。
- Gated attention 最早是 Qwen 团队用的,它与 GQA/MLA 正交。⚠️ 大家最 buy in 的点是训练稳定性,而且这是被广泛验证过的。
⚠️ "模型的能力本质上最主要的因素是模型的参数大小,所以好一点差一点,它都不如稳定性要重要。"——因为 run 一旦崩掉,前面整个 checkpoint 都废了,"对任何团队而言都是不可接受的"。
- ⚠️ 为什么 DeepSeek V4 不再用 MLA([00:36:40]):他们主推 sparse,而 sparse 与 MLA 不是 100% 兼容(尤其 prefill 阶段);他们实际用的是 MLA 的等价 MQA 形式——
"从数学上来讲,MLA 本质上就是一个大号的 MQA。"
- ⚠️ 他对 MLA 的祛魅:"MLA 本质上并没有带来新的东西";"MLA 主要拿到的收益,其实可以被更好的 GQA 参数设计拿到绝大多数";而且要达到相同计算效果,MLA 其实会增加更多计算去弥补损失。
- ⚠️ 张小珺引入了罗福莉的观点,并被他接受([00:36:40]–[00:37:40]):罗福莉认为 MLA 对 chat 是优秀结构,但不适合 agent 范式——MLA 设计之初是为了在 H 系列芯片上打破访存瓶颈而不浪费算力,结果发现计算剩余太多,MTP 能更有效地利用。
- 孙宇涛的补充机制:MLA 在推理阶段计算大大浪费了,"计算远大于它实际的建模能力";更关键的是——MLA 的计算模式与 MTP 的收益不正交,甚至互相缓冲,因为 MTP 本质上是用更多 token 同时计算,把 memory bound 往 compute bound 推,所以两者叠加时加速比会大大减小。
- ⚠️ 但他拒绝把它上升为定论:"我觉得它从来也不是公式,它只是一个选择。"
- K3 为什么还用 MLA([00:38:41]):⚠️ 他给的是组织与工程理由而非技术理由——
"从工程或者从组织管理上,能跑的东西就不要动。如果 MLA 不是一个特别大的问题,可能就暂时不会动。"
并补一句:"我觉得这块是一个比较暂态的状态。"
四、Attention Residuals:他最欣赏的其实是更早的两项工作¶
- 历史线([00:39:41]–[00:40:42]):ResNet 有两个版本(CVPR 与 ICCV),⚠️ pre-LN / post-LN 与训练稳定性的讨论在 ResNet 时代就由恺明讨论过;BERT 时代更常用 post-LN(觉得结果稍好),模型增大后 post-LN 出现梯度消失与训练不稳定,于是逐渐转向 pre-LN。
- ⚠️ 一条硬约束:attention residual 绝不能只是"换一个 LayerNorm 摆放方式"——那样风险很大,"一旦触及 post-LN 之前的问题,大的 run 大家肯定不敢上"。所以它必须是 pre-LN 的超集、至少能退化到 pre-LN、严格比 pre-LN 更强。
- Hyper-Connections(字节 Seed):⚠️ 他认为这是相当好的工作,并给了一句话概括——
"在 residual 这个分支上,用比模型 hidden state 更大的容量,来表示模型在推理深度上的状态。"
- ⚠️ 他对它没出圈的诊断很直接:"它一个最大的问题就是 paper 写得太抽象了,不太容易读。"
- ⚠️ 一条关于注意力经济的观察:"后来 MHC 比 HC 本身火很多,最重要的原因还是 MHC 是 DeepSeek 的。我觉得可能没有别的原因。"
- DenseNet(黄高):深层去看所有浅层的状态再聚合。⚠️ 他认为 attention residual 考虑的问题,DenseNet 当年其实都考虑到了,"只不过当时没有 attention 而已"——DenseNet 时代是用一个大 linear 去聚合,很重;到 attention 时代可以把高权重部件换成轻量部件。
- Attention residual 的效率来源:block attention 解耦了模型深度——否则"模型越深,上层要跟底下所有层交互,overhead 越不可 hold"。代价是表达能力严格不如完整版,但 claim 是"并没有损失太多"。
- ⚠️ 一条可推广的产业判据([00:42:44]):这类设计能被接受,是因为"对于推理来说基本是免费的"。
"一切通过更慢的模型实现去提升模型效果的做法,都会被 fully question——我为什么不能去扩更大的 size?这样还简单一些。"
- ⚠️ 被问"哪个创新性最强"时,他没选 K3 的([00:45:46]):"我更喜欢 DenseNet 和 Hyper-Connections"——因为 DenseNet 在那个时代就想到了本质问题,而 Hyper-Connections 在 Transformer 时代把这个问题重新带了回来。"我觉得后面的工作大的框架其实是之前的工作已经定好了。"
五、Latent MoE、两个矩阵连乘的定律,与激活值的 bound¶
- MoE 的核心工程难题是 all-to-all dispatch 的 overhead(EP 下),这正是 DeepEP 这类通信库存在的理由。⚠️ 他强调不同的 MoE 架构不仅影响模型,"它甚至影响了底层不同的 infra 的设计选型"([00:46:46])。
- Latent MoE(NVIDIA)的思想:把 dispatch 的 hidden state 压小(2–4 倍),再用提升 FFN intermediate dimension 或拆更多 expert来补回参数量。
⚠️ "如果一个恰当设计的 Latent MoE configuration,其实可以完全保持 standard MoE 的结果。" ——所以它不是 trade-off,而是 free lunch 或类 free lunch。
- ⚠️ 通信开销在训练与推理中的地位不同,本库认为这条值得单记([00:48:48]):训练主要优化 throughput,可以用 overlap 手段掩盖通信;而推理 latency 的通信开销在 critical path 上,避免不了。
所以从效率上讲,Latent MoE 的推理收益比训练收益要大。
- ⚠️ 两个矩阵连乘的定律([00:49:49],见"最该被引用的第 5 条"):表达能力上 free,优化性质上不是。TL;DR —— 拆开就一定要在中间加 normalization。同一模式出现在 MLA 与 Latent MoE(后者压到低维 latent 后紧接 FFN 的第一个 linear,于是需要 RMSNorm)。
- 激活值的严格上界([00:50:50]–[00:53:51]):FFN 中间的 hidden state 特别容易 activation explode,且精度越低越容易出 outlier。
- GPT-OSS 的做法是 clamped SwiGLU(hard clip,例如 clip 到 5–10)。
- ⚠️ hard clip 软化之后自然就得到 tanh——"tanh somehow 就是一个 soft clip",指定上下界后以平滑方式逼近。他的定性:soft clip 是"比较安全的做法",但"升级版在表达能力上有多大影响,是另一回事,需要具体实验证明"。
- K3 的算子把所有可能 unbounded 的地方用 tanh 的上下界放缩 bound 住 → MLP 中间激活获得严格的数学上界。
- ⚠️ 一处他主动预演的学术分歧([00:52:50]–[00:54:52]):他说用 Muon 更容易出现 outlier,并预判苏剑林一定会反对——
苏的立场(他的转述):"对于任何优化器来说,都一定会出现 outlier,因为你从模型架构上是控制不了的。所以想严格控制,一定要直接从模型架构下手。"
- 历史对照:K2 的 QK-Clip 就是同一场讨论——Muon 训练下 QK logits 更容易爆炸。⚠️ 而用 MLA 就没法加 QK-Norm(QK-Norm 严格限制 QK 边界),所以 K2 才引入 QK-Clip;DeepSeek V4、Qwen 用 Muon + GQA,可以直接上 QK-Norm,本质上是更简单的办法。
六、Quantile Balancing:从启发式到可推导¶
- 对照组是 loss-free routing:只用一个 bias 而非整体 loss 来控制专家负载均衡。⚠️ 问题在于 bias 的更新方式是启发式、ad hoc 的——"没有一个比较严格的数学收敛标准",而且与主模型的更新耦合感不强。
- ⚠️ loss-free 的一个已知副作用,本库认为很值得记([00:56:54]):正因为 loss-free 对底层几层 work 得不好,大家通常把最底下一到三层的 MoE 去掉、改成 dense。
"前底层用 dense,其实并不是一个原理上一定要这么做的方式,而是在 loss-free 的 context 底下不得不采用的方式。"
- QB 的改进([00:57:54],出自苏剑林的博客,未发论文):用更 principled 的方式直接推导出 bias 应该长什么样。机制朴素——某个专家激活得多了就把 bias 往下砍一点,少了就往上加一点,区别在于 loss-free 是启发式地调,QB 是推导出来的。
- ⚠️ 为避免信息泄漏(不让任一 token 获得其他 token 的信息),bias 不在当前 step 使用,而是在下一步使用。
- 两个优点:不需要调参(loss-free 有一个类似 learning rate 的更新参数);负载均衡能力更优——所以第一层可以直接 balance,不必再退化成 dense。
- ⚠️ K3 论文里的工程实现与博客不同,这是本期一处很细的观察([01:00:55]–[01:01:55]):一个 batch 可能大到几十 million token,精确求分位数需要把所有 token 的激活都存下来,工程上不可能。
- 博客的方案:每个 GPU 求 local 分位数,再做 pooling。
- K3 的方案:不按 token 切 chunk,而是在数值区间上切桶(例如 sigmoid 输出落在 0–1 之间,就切成 n 个桶做 histogram 统计)→ 常数存储、计算更高效、在大规模 DP/EP 下更易扩展。
- ⚠️ 他自己加了限定:"当然也有可能是我理解错的。"
七、为什么 K3 不用 sparse attention¶
([01:03:57]–[01:08:00])线性注意力、全注意力、sparse attention 三选二的问题。
- sparse 在 decode 里的加速其实特别小:因为求 index 这一步相当昂贵。⚠️ 而且在 Blackwell 这类更先进的硬件上,这个 overhead 反而越大——甚至"在 decode 当中,sparse attention 相比 full attention 并不会带来显著加速"。
- 已有的缓解:GLM 团队的 Index Cache——把求 index 的操作跨层共享(每 4 层或每 8 层)。⚠️ 他自己的工作做得更极端:基于 YOCO 把 sparse index 也做成 Once,把每层的 index 开销摊到所有层。
- ⚠️ K3 不用的两个理由:
- 对 hybrid attention 来说,跨层共享 index 是 non-trivial 的——full attention 层之间隔着很多线性注意力层,"这种 index share 是否有效、加速比是否足够高,其实是相当可疑的"。
- sparse attention 基本没法 from scratch 训练——现在一般是 post-train 从 full attention 转化;⚠️ 而如果用了 MLA,这件事会更难。
- 他的定性:"留一个接口,之后再做也行。"
- hybrid 本身的 trade-off([01:06:58]):就是调线性与全注意力的比例——比例越大加速比越高,而 3:1 是实验上比较 work 的方案。
八、预训练:learning rate schedule、长上下文与低精度时机¶
- WSD 的来历与好处([01:13:01]–[01:15:02]):MiniCPM 提出。核心观察是中间具体的 decay 方式对最终结果影响没那么大,而 cool down 阶段是模型学习最快的阶段——所以把更多更好的数据放到 cool down 阶段。
- 第二个好处:前段 learning rate 不变 → 与总 token 量无关 → 可以在训练途中自由切换最终 config(提前或推迟发版)。
- ⚠️ K3 指出的 WSD 问题,本库认为这是本节最有价值的一条([01:16:04]):最优 learning rate 与你要跑的 token 数是有关系的——"跑 10T 可能 6e-4 最优,跑 20T 可能 3e-4 最优"。
所以"可以任意扩展 token 数"这件事,并没有大家想的那么有效。
- K3 选 cosine decay 的理由是"更好调"([01:17:05]):cosine 只有两个变量(总 token 数 + max learning rate),WSD 多一个 decay 比例变量。
- scaling efficiency([01:17:05]–[01:18:06]):K3 相对 K2 是 2.5 倍;参数 1T → 2.8T(不到 3 倍),激活 32.6B → 约 100B(比 3 倍更多)。
- ⚠️ 他对这个数字加了重要限定:K3 与 K2 的数据不可能一样,所以这个 2.5 倍是架构 + training recipe + 数据策略的综合结果,而"是否固定 data,paper 应该也没有直接写"。
- ⚠️ 长上下文与 NoPE([01:19:07]–[01:22:08]):见"最该被引用的第 6 条"。补充机制——在 hybrid 架构下,线性注意力那一段已经引入了位置信息,所以全注意力那部分改成 NoPE 之后:外推效果直接就好很多,扩长度不需要调任何架构参数。
他的评价:"这个效果无疑是很优雅的,因为我们会觉得模型架构的参数选择,当然是跟具体的长度没有关系的——也没有任何理论支持我们要为不同长度采取不一样的参数。"
- Vision encoder 是否用已有 VIT 初始化([01:01:55]–[01:03:57]):K3 发现直接用 SigLIP 初始化,模型的不稳定性比 native train 更大(主要看 gradient norm 的分布:尖刺多不多、norm 大不大)。from scratch 可能多用算力,但结果不会有损,甚至可能更好,且兼容性更好。
- ⚠️ 他给的猜测很有意思:SigLIP 是用 Adam 训练的;而这对应一个既有讨论——Adam 训练的模型能否用 Muon 微调,反之亦然。"最后的结论就是原生的方式肯定是最好的。"K3 大概是希望走全 Muon 的路线。
- 低精度训练的时机([01:22:08]–[01:23:10]):DeepSeek V3 原生 FP8、V4 直接 W4A8 原生训练;K3 不同——先高精度训练,到 SFT 阶段才引入低精度 QAT。两个理由:
- ⚠️ 项目管理角度:大规模训练用更高精度是更保险的方案——"因为它无论如何也不会错",而大规模 scaling 中出的问题很难提前被充分验证。
- 技术角度:"低精度从 from scratch 就引入,并不会带来任何模型能力的提升"——只要过了一定训练量,最后结果都差不多。
九、后训练:on-policy distillation 为什么从"蒸馏"变成了"自己蒸自己"¶
([01:24:10]–[01:29:11])
- 源头是白盒蒸馏:黑盒蒸馏只能拿到输入输出(现在常见的 API 蒸馏);白盒可以拿到模型内部任意状态。
- ⚠️ OPD 的反直觉之处:传统做法是老师生成答案,学生用 SFT / forward KD 学进来;OPD 反其道而行——学生自己生成答案,老师做逐步纠正(reverse KL)。
他的类比很清楚:一个是老师讲课你把结果学进来;另一个是你自己做题、自己写推理过程,老师指出你中间哪里做得不对。
Thinking Machines Lab 给它的另一个名字就是 on-policy distillation。
- ⚠️ 但现在大家用它,目的已经不是蒸馏了——因为要蒸馏就得先有一个大模型再训一个小模型,而现在大家一般是搞一个旗舰模型就完事,不存在大蒸小的场景。于是变成"自己蒸馏自己"。 两个原因:
- 非技术:让 post-train team 的管理更简单。post-train 合版是很重的事——"post-train 会用一些更复杂或更先进的训练策略,这些策略可能不太容易训练场,直接做合版会有难度"。
- ⚠️ 技术(本库认为这条最值得记):不同能力的 RL 有不同的 reward(math 是 verifiable reward、preference 要 reward model),把不同专项模型的 reward 直接合到一起难度很大;而 OPD 可以把不同的 reward model / RL 范式简化成不同的模型,再做 multi-teacher 合版。 > "对于 RL scale 或者 data,它是一个高度异构的状态;但是对于模型来说,它是一个高度同构的状态。"——因为现在不会为不同任务设计不同的模型架构。
- 不是 K3 首创:他说这是现在 widely accepted 的做法。
- Draft model / 投机推理([01:29:11]–[01:33:12]):他认为 K3 这块目前优化得不是很完善,之后还有更深层次的工作空间。
- Eagle3 与 MTP 的共同思想:利用大模型中间的 hidden state → 小模型可以做得更小,或在相同参数下接受率更高。
- DeFlash 的意义:把传统 AR language model 与 diffusion language model 两条脉络联系了起来。diffusion LM 此前的两个问题是——from scratch 训练效率不够高;只能打小 batch size 的 throughput,多用户总 throughput 场景下没有优势。
- ⚠️ 一条对预训练的要求:MTP 需要在 pretrain 阶段就提供接口——"这部分其实是需要在 pretrain 阶段就引入的",它对下游 draft model 的提升特别有帮助。
- 一个细节:draft model 可用 KL loss 替代传统的 next-token-prediction loss,让它与原模型 verify 的过程对得更齐,进一步提升接受效率。
十、Infra:K3 与 DeepSeek 的路线差异¶
⚠️ 他开宗明义([01:33:12]):关键的架构设计需要与 infra 做 co-design,而且模型架构本身会反过来影响整个 infra 栈的设计选型。
- ⚠️ 线性注意力的 context parallel(CP),是本节最精彩的一段([01:34:12]–[01:37:13]):
- full attention 的 CP 概念上相对简单(ring attention、zigzag attention)——因为计算模式够简单,无非是把跨 GPU 的 KV cache 都拿到一张卡上算。
- linear attention 的 CP 复杂得多。关键洞察是: > ⚠️ chunk 本身可以任意拆分——512 个 token 一个 chunk,还是 8k 一个 chunk,在数学上完全等价。
- 由此可以做层次化的 chunk:机器之间以大 chunk 为单元做递归计算(如 8k 放一张卡),机器内部在 kernel 层面再切小 chunk(如 16 tile 内用并行方式算)→ 双层 chunk。
- ⚠️ 对照:早年有些工作让 chunk 之间用线性注意力、chunk 内部用全注意力——那样 chunk 大小就与具体架构设计绑死了;而纯线性注意力与 chunk 大小无关,所以才能任意拆。
- MoE 的 EP 负载均衡([01:37:13]–[01:40:15]):
- 传统 dropless EP 的两个问题:① 每张卡分到的 token 数不同 → 执行时间不同 → 互相等 → 浪费算力;② token 数不确定 → 通信要多一个阶段(先告诉每张 GPU 要接收多少 token)。
- ⚠️ Kimi 的方案:动态 EP + 冗余专家(名称转录不可辨,本库不认领)。数学上可证明:只需增加一小比例的冗余专家,就能保证各卡 token 数完全对齐;用 online planning 提前规划哪些卡放哪些冗余专家。他的评价:"我感觉像是一个比较经典的数学结构与算法问题。"
- ⚠️ 他把限度也点明了:卡层面均衡不代表专家层面均衡——"一张卡里有多个专家,如果还想保证每个专家都一定,那就只能采取有损的策略"。
- 显存([01:40:15]–[01:41:16]):细粒度地控制每个部件用 activation checkpointing 还是 offloading。
- ⚠️ K3 采取了大规模 offloading 到 CPU,而这是 non-trivial 的——offloading 不拖慢训练是有条件的:CPU 与 GPU 之间的通信要满足某个不等式,才有可能用计算完全 overlap 掉通信。
- ⚠️ 为了跨过这个边界,K3 把所有可 offload 的东西都用 FP8 存——"省一倍,它可能才能从一个边界跨到另一个边界"。
- ⚠️ 与 DeepSeek 的两处明确分野([01:42:16]–[01:46:22]):
- DeepSeek V3 的两招:① 细粒度的 MoE overlap——把上一个 batch 的 MoE forward/backward 与下一个 MoE forward 融合,重排计算先后顺序,把 dispatch 与 combine 的通信全部藏起来;⚠️ 他指出这需要把 forward 与 backward 从原子计算层面拆开、手工重新排布,"我觉得这个还是有一定的难度的"。② DualPipe / DualPipeV。
- ⚠️ K3 这两招都没用,而是走了另一条路,根源在架构选择:
> 因为用了 Latent MoE,通信开销本来就小得多,所以没必要拿另一个 batch 来 overlap——在一个 batch 内部,用 shared expert 的计算就能把 MoE 前后向的通信盖掉。
>
> "用不一样的 MoE 架构,带来了不一样的 overlap 策略。"
- 反面:如果用传统 MoE,通信开销太大,shared expert 盖不住,就必须把另一个 batch 拿进来。
- 额外好处:推理的 critical path latency 是免费的。
- PP 的不对称问题:单向 PP 下,靠前的 PP rank 进入更早、积累的 batch 更多、activation 压力更大。⚠️ K3 的做法是把 memory 占用大的 PP rank 直接存到占用小的 PP rank 上——用一个 lightweight 的方式规避了 DualPipe 那种更复杂的设计。
- ⚠️ 另一条即使完美 overlap 也存在的损耗:通信与计算完美隐藏时,计算本身也会相对变慢,"它不是完全可以无损的"。DeepEP 的应对是用足够少的 SM 占用换更大的整体通信 throughput。
- Muon 的分布式切分([01:46:22]):⚠️ Adam 是 element-wise 的,怎么切都不影响优化结果;而 Muon 需要对整个矩阵做 Newton–Schulz 迭代,所以某个 rank 上必须保存该矩阵的全部参数 → 在 optimizer 维度切分时需要额外处理。
- ⚠️ 多模态让 infra 难度直线上升([01:47:22]–[01:49:23]):
"对于多模态而言,你每引入多模态的一项功能,它的 infra 难度其实都是直线提升的。"
- Vision encoder 内部序列更长:输入可能 32k token,压缩后进主干只剩 8k → 主干不需要开 CP 时,vision encoder 可能反而需要开 CP。
- ⚠️ PP 的不均匀:有的卡是纯文本、有的卡视觉比例相当大 → 不仅影响 DP,也破坏 PP 流水线的打满。K3 的解法是不把 vision encoder 放在 PP 的开头,而放在中间或尾部——这样在前面的 PP 计算时,中间原本闲置的 PP 可以提前把 vision encoder 的后续步骤算出来。
- RL infra([01:50:23]–[01:52:24]):大规模 sandbox 管理是主要麻烦(每个 task 对应自己的 docker)。
- ⚠️ 一个很 tricky 的省显存技巧:一个完整的 RL 至少有 policy model、reference model、梯度与 optimizer,可能还有 reward model。reference model 没有梯度,而在求 objective 的过程中你还没有 gradient;等有了 gradient,reference model 就不用了 → 于是把 gradient buffer 复用给 reference model 做 forward。
- 推理引擎的适配([01:52:24]–[01:54:24]):
- ⚠️ linear attention 的 prefix cache 是真麻烦:full attention 每个位置都有 cache,下一个位置的 cache 是上一个的简单增量;而 linear attention 每一步是在上一步 cache 的基础上做复写,每一步的 prefix state 都不一样。 > 全存则线性注意力的好处完全没有了;完全不存则享受不到 prefix cache。 当前策略是按 block 切,每个 block 做一次 prefix caching。
- ⚠️ vLLM 的 paged KV 在概念上不考虑层与层之间的异质性,所以直接引入混合架构在 infra 上并不容易;linear attention 与 sliding window 无法按 page 管理,因为它们不存在一个对 token 而言长久的 KV cache 生成方式。
十一、他对 K3、Kimi 团队与这个领域的判断¶
- ⚠️ "有效的 scaling"这个区分值得单记([00:19:24]):
"无效的 scaling 我今天就可以给你——我晚上回去起一个 2.8T 的模型 init,跑个 100B 的 token,然后我就可以放出来。"
- K2 与 K3 的战略差异([01:10:01]–[01:12:01]):K2 主要 follow DeepSeek V3 的结构,当时的重心是先把结果跑出来、把 base model 的整体 pipeline 做稳;K3 才引入大量架构创新。
⚠️ "我觉得是个战略的问题。" 并补充:架构团队内部一直在做,"只不过看你什么时候亮出来——研究工作是一个更长期的工作,它可能要看放在哪个模型里跟它一起结合"。
- ⚠️ 他对 Kimi"研究方式比较科学"的解释([01:56:25]–[01:57:25]):认可,并归因于内部管理方式——
Kimi 是"公开里大家认可的最强调模型内科的团队":让不同行为的 trace 能用更可靠的方式获取到,让模型的不稳定性或 collapse 现象能被更明确地归因。
- ⚠️ 他对"不科学"的定义是尖锐的:科学的标准是明确的 ablation、足够的变量控制;"不科学就是基于某些利益需求,然后把科学的方式都干掉了"——他特意补一句"不特指任何技术"。
- ⚠️ 组织观察([02:00:26]):"Kimi 这个团队非常团结,能把劲往一处使。" 张小珺提到"所有人好像都不怕杨植麟",他的回应是:
"对啊,为什么要怕呢?谁有道理谁说了算。"——"还是一个非常集体的工作,不依赖于个人英雄主义。"
- ⚠️ K3 与 DeepSeek V4 的分化([01:58:25]–[01:59:25]):DeepSeek 更强调性价比(同时有 1.2T 与更小的 size,Flash 模型做得不错);Kimi 目前的主要精力是提升开源模型能力的上限,性价比不是首要考虑——"K3 的 API 相当贵,比别的模型贵多了。"
- ⚠️ 他对会不会持续分化的回答,落在组织而非技术上: > "技术上这个东西不存在太多 debate,好就是好、不好就是不好,有明确的客观标准。但是对于组织、对于人,这个是比较模糊的。"
- ⚠️ "科学研究不存在跃迁性的提升"([01:55:24]):
"只是说大家习惯把技术渐进提升的某些节点,称为一个 milestone。技术永远是慢慢去提升,靠公司里所有人、包括整个业界的同学一块去推动的。"
- 架构创新的窗口([00:15:21]):⚠️ "2023 年是这样的,2026 年的话,可能架构创新能做的其实是越来越少了。" 他还指出一个时代差异——在 ResNet 时代,注意力设计、MoE、优化器、连接方式,每一个单拿出来都算一个架构;在 Transformer 时代不是,必须综合起来、跑出来才有意义(要做 scaling 验证、要把工程和数据都搞定)。
- 对未来的判断([02:01:26]–[02:03:27]):
- 模型 size 毫无疑问还会继续扩大,但不可能无限大——⚠️ 理由是数据侧的:人类互联网上能集结到的信息量是有限的,"你想吃掉一个足够大的数据量,模型不可能是无限的,也没有必要是无限的"。
- ⚠️ 能力定义论:"只要大家能清晰定义一个能力,就能去达到。" coding 被清晰定义出来,大家就做到了。 > "AGI 最大的问题就是它没有被 well-defined,所以只要能够定义,它就能达到,后面就是一系列的优化工作。" > > ⚠️ 但他给了边界:如果把 AGI 定义为具身、与真实物理世界交互,那 gap 就大得多;"如果还是在 language model 的 scope 里讨论问题,我觉得问题不大"。
- ⚠️ 新团队还有没有机会从头做模型:"如果这个团队足够好、氛围足够好、单兵作战能力足够强,是有机会的。但这个条件我觉得大概率是不存在的。" > "因为好的人其实已经进去了。" 并补一句:"好的人和好的组织文化想达成,是有历史的局限的——不是你想达成就能达成的。"
- ⚠️ 他自己为什么转去做世界模型([02:03:27]):"大模型不存在太大的改进空间;没有大的突破,就没有大的 credit。所以对个人职业来讲,不是一个能做出太大贡献的领域。" 他同时承认世界模型"问题更大",但"至少是一个新的东西"。
与本库其它观点的关系¶
- LLM 训练管线:线性注意力从 RetNet → Mamba → DeltaNet → Gated DeltaNet → KDA 的完整脉络;hybrid 不是 trade-off 这条实验结论;两个矩阵连乘的定律;激活值的严格上界(clamped SwiGLU → tanh 软化);Muon 与 outlier 之争及 QK-Clip / QK-Norm 的分岔;Quantile Balancing 及其对"底层必须 dense"的解除;WSD 的隐藏代价与 K3 选 cosine 的理由;NoPE 与"RoPE 不带来长文能力"的纠正;低精度训练的引入时机。
- AI 算力与基础设施:线性注意力 CP 的层次化 chunk;动态 EP + 冗余专家及其"卡均衡 ≠ 专家均衡"的限度;offloading 的不等式条件与 FP8 存储;K3 与 DeepSeek 在 overlap 与 PP 上的路线分野(而分野的根源是 MoE 架构选择);多模态让 infra 难度直线上升;linear attention 的 prefix cache 难题与 vLLM paged KV 的不适配。
- 中美 AI 生态对照:K3 与 DeepSeek V4 的定位分化(上限 vs 性价比);Kimi 的定价;⚠️ 以及一条罕见的、来自中国架构研究者的对中美工作互相引用的正面评价——他称赞 K3"把前人的工作用可靠的方式引出来,不会想办法削弱之前一些人的贡献"([00:18:24])。
- AI 实验室文化与组织:"模型内科"作为 Kimi 的方法论标签;⚠️ 他对"科学 vs 不科学"的定义(不科学 = 基于利益需求把科学方法干掉);"所有人都不怕杨植麟"与"不依赖个人英雄主义";"好的人其实已经进去了"这条对新团队窗口的判断。
- 评估与 Benchmark:⚠️ "有效的 scaling" vs "无效的 scaling" 这个区分;以及能力定义论——"只要能清晰定义一个能力就能达到",AGI 的问题首先是没有被 well-defined。
- ⚠️ 与本库同批收录的三期构成一组对照:曾鸣 说"大模型可能没有太本质的创新了"是从产业史推出的;孙宇涛从架构内部得出了几乎同一句话("后面都是一些改良性的渐进进步"),但路径完全不同——他数的是每一项改进的来源与代价。而 Greg Brockman 与 Satya Nadella 都认为能力已经够用、瓶颈在别处。四期并读,会看到"还能不能变强"和"变强还重不重要"是两个问题。