Kimi 研究员、RoPE 提出者苏剑林近日发布文章《简单谈谈 K3 的 MoE 和 Attention》,系统复盘了 Kimi K3 在专家架构、训练稳定性、负载均衡和注意力设计上的多项关键取舍。K3 拥有 2.8 万亿总参数,配置了 896 个路由专家,但每个 Token 仅激活其中 16 个,注意力结构则采用 KDA 与 Gated MLA 交替排列。这些设计共同指向一个核心思路:模型可以继续扩大容量,但不能让计算成本随总参数量和上下文长度同步增长。

K3 的 MoE 架构引入了 LatentMoE,改变了 Token 进入专家的方式。传统 MoE 中,专家分布在不同 GPU 上,Router 选择后需将 Token 的隐藏状态发送到相应设备,隐藏维度越宽、激活专家越多,通信数据量越大,在大规模场景下通信往往比计算更早成为瓶颈。K3 不直接发送完整隐藏状态,而是先将其压缩到更窄的潜在空间:主隐藏维度为 7168,路由专家在 3584 维空间中计算,完成后再恢复。降维不仅减少单个专家的计算量,还同步降低权重读取、激活处理和跨设备传输的数据量。K3 将这部分预算用于扩大专家池,从原本“448 个专家选 8 个”的方案,扩展为“896 个路由专家选 16 个”。两种配置激活比例相同,但后者拥有更多可组合的专家,使模型能让多个较窄的专家共同处理一个 Token,分工更细致。

潜在空间也是一道信息瓶颈,维度过窄可能导致信息损失。因此 K3 保留了 2 个始终参与计算的共享专家,负责语言结构、基础语义和常见推理模式,路由专家则专注细分能力,避免数百个专家重复承担通用计算。LatentMoE 的意义不只是把专家做小,而是重新组织通用能力、专业能力与通信成本之间的关系。

规模扩张也带来新问题。专家数量增加后,Router 不仅要准确选择专家,还要避免少数专家持续过载;Token 被发送到不同 GPU 上的专家时,跨设备通信迅速增加。更长的上下文推高 KV Cache 和注意力计算成本,而 BF16、FP8 等低精度训练虽节省资源,却更容易受异常激活影响。为此,K3 将 LatentMoE 升级为 Stable LatentMoE,加入 RMSNorm、SiTU-GLU 和 Quantile Balancing 三重机制。

RMSNorm 放在专家结果聚合之后、升维之前,校准专家分支的整体尺度,相当于在路由分支与主干网络之间建立统一的数值接口。SiTU-GLU 通过 Soft Cap 限制 SwiGLU 乘法放大导致的离群值,在低精度训练下保护动态范围。Quantile Balancing 则处理专家负载:MoE Router 容易形成正反馈,少数专家可能持续过载。K2 已采用无辅助损失的负载均衡方法,通过调整选择偏置控制流量,但偏置更新类似 SignSGD,固定步长在专家增至 896 个后难以兼顾速度与稳定。Quantile Balancing 直接观察 Router 分数与 Top-K 门槛的分布,估计每个专家的选择门槛应移动至何处,使负载均衡从经验性反馈调节转向更直接的分布求解。

注意力方面,K3 由 KDA 和 Gated MLA 共同组成,大致每 3 层 KDA 插入 1 层 MLA。MLA 保留对完整历史的全局访问能力,将 KV Cache 压缩到潜在空间,但当前 Token 仍可回查历史具体内容,承担全局检索任务;KDA 不保存所有历史 Token 的完整表示,而是将过去信息持续写入固定大小状态,通过更新、遗忘和覆盖维持,能以较低成本处理长序列,但固定容量会压缩部分历史细节。K3 让 KDA 高频维持连续状态,MLA 周期性访问完整历史,补充固定状态遗漏的重要信息。

这种分工解释了 K3 为何能在 MLA 中移除 RoPE。纯 MLA 模型需显式建模位置关系,K2 依赖 RoPE;K3 的 KDA 按 Token 顺序递归更新状态,顺序与距离已部分包含在状态演化中,MLA 不再需要独立承担全部位置建模,可将能力用于全局内容匹配。所谓“广义 RoPE”,并非 KDA 与 RoPE 完全等价,而是强调位置信息也可由具有顺序性的状态更新机制表达。K3 还在 MLA 输出后增加 Gate,根据当前输入判断哪些通道值得写回主干,控制检索结果的使用强度。

K3 的 NoPE MLA 仍保留原本用于 RoPE 的额外 64 维分支。虽然理论上可删除,但删除会改变 Query 和 Key 的张量形状,影响 KV Cache 布局、Attention Kernel、通信逻辑和推理框架。对已建立完整训练与部署链路的 2.8 万亿参数模型,底层形状变化意味着大量组件需重新开发验证,保留结构反映最小改动原则,可复用成熟 MLA 基础设施,降低风险。此外,K3 继续使用 Muon 优化器,但按不同 Attention Head 分开处理参数(Per-Head Muon),避免梯度较大的 Head 影响其他 Head 的更新尺度,使优化方式与模型结构边界一致。

从这些细节可见,K3 的最终架构并非仅由理论效果决定,通信成本、低精度数值、Kernel 复用、框架兼容和工程风险都参与设计取舍。K3 仍存在尚未完全回答的问题:低维潜在空间可能损失信息,KDA 固定状态会遗忘细节,更多专家不必然形成同等数量的清晰能力,效率还依赖专家通信、低精度训练和专用 Kernel,单独复制架构未必能获得相同收益。但 K3 展示了一条明确路线:当模型进入万亿参数和百万上下文阶段,Scaling 的重点已不只是扩大容量,而是建立更有效的参数、记忆与计算调度机制。