Kimi 研究员、RoPE 提出者苏剑林近日发布文章《简单谈谈 K3 的 MoE 和 Attention》,集中剖析了 Kimi K3 在专家架构、训练稳定性、负载均衡和注意力设计上的几项关键取舍。文章披露,K3 拥有 2.8 万亿总参数,配置了 896 个路由专家,但每个 Token 仅激活其中 16 个;注意力结构则采用 KDA 与 Gated MLA 交替排列的方式。这些配置共同指向 K3 的基本设计思路:模型可以继续扩大容量,但不能让计算成本随总参数量和上下文长度同步增长。
K3 的 MoE 架构引入了 LatentMoE 机制。传统 MoE 中,Token 的完整隐藏状态会被发送给选中的专家,而 K3 先将隐藏状态压缩到更窄的潜在空间再交给专家计算。具体而言,K3 的主隐藏维度为 7168,路由专家在 3584 维空间中计算,完成后再恢复。这种降维不仅减少了单个专家的计算量,也降低了跨设备通信的数据量。K3 将省下的预算用于扩大专家池:原本可以采用从 448 个专家中选择 8 个的方案,最终扩展为从 896 个路由专家中选择 16 个。两种配置的激活比例相同,但后者的专家分工更细致。此外,K3 还保留了 2 个共享专家,始终参与计算,负责语言结构、基础语义等通用能力,路由专家则专注细分能力。
规模扩张也带来了数值和负载风险。LatentMoE 的计算路径更长,数值波动更容易被放大。为此,K3 加入了 RMSNorm、SiTU-GLU 和 Quantile Balancing,将其改造为 Stable LatentMoE。RMSNorm 放在专家结果聚合之后、升维之前,校准专家分支的整体尺度;SiTU-GLU 通过 Soft Cap 限制激活值增长,避免离群值对 BF16、FP8 等低精度训练的干扰;Quantile Balancing 则直接观察 Router 分数与 Top-K 门槛的分布,估计每个专家的选择门槛,以协调近千个专家之间的负载,避免少数专家持续过载。
注意力设计上,K3 采用 KDA 与 Gated MLA 的组合,大致每 3 层 KDA 插入 1 层 MLA。MLA 保留对完整历史的全局访问能力,承担全局检索任务;KDA 则将历史信息写入固定大小的状态,通过更新、遗忘和覆盖维持连续状态,以较低成本处理长序列。这种分工让 K3 能够在 MLA 中移除 RoPE,因为 KDA 的递归更新已部分包含顺序与距离信息。文章强调,所谓“广义 RoPE”并非 KDA 与 RoPE 完全等价,而是位置信息可由具有顺序性的状态更新机制表达。MLA 输出后还增加了 Gate,控制检索结果写回主干的强度。
文章还讨论了 K3 保留 64 维分支和采用 Per-Head Muon 优化器的原因。NoPE MLA 中原本用于 RoPE 的额外 64 维分支虽在理论上可删除,但删除会改变张量形状,影响 KV Cache 布局、Attention Kernel、通信逻辑和推理框架,因此 K3 选择保留,以复用成熟的 MLA 基础设施。Per-Head Muon 则按不同 Attention Head 分开处理参数,避免梯度较大的 Head 影响其他 Head 的更新尺度。
苏剑林指出,K3 的最终架构并非仅由理论效果决定,通信成本、低精度数值、Kernel 复用、框架兼容和工程风险都参与了设计取舍。文章也承认 K3 仍存在未完全回答的问题,如低维潜在空间可能损失信息、KDA 固定状态会遗忘细节、更多专家未必形成同等数量的清晰能力。但 K3 展示了一条明确路线:当模型进入万亿参数和百万上下文阶段,Scaling 的重点已不只是扩大容量,而是建立更有效的参数、记忆与计算调度机制。