从异常激活到专家拥堵,拆解超大模型训练难点。 作者丨郑佳美 编辑丨岑 峰 这几天,Kimi 研究员、RoPE 提出者苏剑林发布了一篇名为《简单谈谈 K3 的 MoE 和 Attention》的文章,集中讨论了 Kimi K3 在专家架构、训练稳定性、负载均衡和注意力设计上的几项关键取舍。 苏神在文章中提到 K3 拥有 2.8 万亿总参数,并配置了 896 个路由专家。但模型不会让每个 Token 调用全部专家,而是只从中激活 16 个。在注意力结构上,K3 也没有沿用单一方案,而是将 KDA 与 Gated MLA 交替排列。 这些配置共同指向了 K3 的基本设计思路:模型可以继续扩大容量,但不能让计算成本随着总参数量和上下文长度同步增长。更多专家意味着模型拥有更细致的能力分工,混合注意力则让模型能够以更低成本处理长上下文。 然而,规模扩张也会带来新的问题。 当专家数量增加时,Router 不仅要准确选择专家,还要避免少数专家持续过载;当 Token 被发送到不同 GPU 上的专家时,跨设备通信也会迅速增加。 与此同时,更长的上下文会推高 KV Cache 和注意力计算成本,而 BF16、FP8 等低精度训练虽然能够节省资源,却更容易受到异常激活的影响。 因此,K3 的关键并不是简单加入更多专家或更换注意力模块,而是为规模扩张建立一套配套的控制机制。 LatentMoE 负责降低专家计算和通信成本,RMSNorm 与 SiTU-GLU 用来稳定专家分支的数值,Quantile Balancing 负责协调近千个专家之间的负载,KDA 与 NoPE MLA 则重新分配长上下文中的记忆和检索任务。 换句话说,K3 真正要解决的问题是:模型可以拥有更大的参数和信息空间,但每一步计算都必须控制实际调用的部分。 01 LatentMoE 如何重新分配专家预算 传统 MoE 会在模型内部设置大量专家,再由 Router 根据 Token 内容选择其中少数几个参与计算。这样,模型可以拥有很大的总参数量,同时将单次计算控制在较小范围内。 但在真实训练系统中,专家通常分布在不同 GPU 上。Router 完成选择以后,系统还需要把 Token 的隐藏状态发送到相应设备。隐藏维度越宽、每个 Token 激活的专家越多,需要传输的数据就越多。到了大规模 MoE 阶段,通信往往比矩阵计算更早成为瓶颈。 LatentMoE 改变了 Token 进入专家的方式。K3 不会直接把完整隐藏状态发送给路由专家,而是先将其压缩到更窄的潜在空间。K3 的主隐藏维度为 7168,路由专家则在 3584 维空间中计算,完成后再将结果恢复到完整隐藏维度。 降维带来的收益,不只是减少单个专家的计算量。专家需要读取的权重、处理的激活以及跨设备传输的数据都会同步下降。K3 将这部分预算用于扩大专家池:原本可以采用从 448 个专家中选择 8 个的方案,引入 LatentMoE 后,最终扩展为从 896 个路由专家中选择 16 个。 两种配置的激活比例相同,但后一种方案拥有更多可组合的专家。模型可以让多个较窄的专家共同处理一个 Token,而不是依赖少数宽专家完成所有变换。专家分工由此变得更加细致。 潜在空间同时也是一道信息瓶颈。路由专家接收到的是压缩表示,如果维度过窄,部分信息可能在进入专家前已经损失。 K3 因此还保留了 2 个始终参与计算的共享专家,负责处理语言结构、基础语义和常见推理模式。路由专家则集中学习更加细分的能力,避免数百个专家重复承担相同的通用计算。雷峰网 LatentMoE 的意义,因而不只是把专家做小,而是重新组织通用能力、专业能力与通信成本之间的关系。 02 Stable LatentMoE 如何处理数值与负载风险 LatentMoE 增加了降维、专家计算、结果聚合和重新升维等步骤,计算路径比普通 MoE 更长。 路径中的数值波动也更容易被后续矩阵放大。K3 因此加入 RMSNorm、SiTU-GLU 和 Quantile Balancing,将其改造成 Stable LatentMoE。 RMSNorm 被放在专家结果聚合之后、升维之前。由于不同 Token 会进入不同的专家组合,Router 分配的权重也不相同,聚合结果的尺度可能存在较大差异。如果模型直接将结果升维并送回主干,这些波动就可能继续扩散。 RMSNorm 会先校准专家分支的整体尺度,再由升维矩阵恢复完整表示。它相当于在路由分支与主干网络之间设置了一套统一的数值接口。 不过,整体尺度稳定,并不意味着局部没有异常。SwiGLU 会生成两个分支,再将它们逐位置相乘。如果两个分支在同一位置同时产生较大数值,输出就会被乘法迅速放大。 这类离群值对 BF16、FP8 等低精度训练尤其危险。少量极端数值会占用较大的动态范围,使大量正常数值只能被压缩到更窄的精度区间。雷峰网 SiTU-GLU 通过 Soft Cap 限制这种增长。激活较小时,它尽量保留原有函数的计算行为;数值进入危险区域后,增长速度逐渐降低并趋于饱和。与直接 Clamp 相比,这种处理更加平滑,也不会把所有超过阈值的数值简单压成同一个结果。 RMSNorm 和 SiTU-GLU 解决的是数值问题,Quantile Balancing 处理的则是专家负载。 MoE Router 容易形成正反馈。某个专家早期获得更多 Token,就会得到更多梯度;能力提升后,它又更容易被继续选择。长此以往,少数专家可能持续过载,其他专家则缺少训练机会。 K2 已经采用无辅助损失的负载均衡方法。系统通过调整专家的选择偏置控制流量,而不是额外加入均衡损失干扰 Router 的语义学习。不过,K2 的偏置更新类似 SignSGD,只会按照固定步长提高或降低专家被选中的概率。 当专家数量增加到 896 个后,固定步长很难兼顾调整速度和稳定性。Quantile Balancing 不再逐步试探,而是直接观察 Router 分数与 Top-K 门槛之间的分布,估计每个专家的选择门槛应该移动到什么位置,才能接收到目标数量的 Token。 这种变化让负载均衡从经验性的反馈调节,转向更直接的分布求解。RMSNorm、SiTU-GLU 与 QB 分别控制整体尺度、局部极值和专家流量,共同构成了 Stable LatentMoE 的稳定机制。 03 KDA 与 NoPE MLA 如何分配记忆任务 K3 的注意力结构由 KDA 和 Gated MLA 共同组成,大致每经过 3 层 KDA,就插入 1 层 MLA。两者的区别不仅在于计算成本,也在于它们保存历史信息的方式。 MLA 保留了对完整历史的全局访问能力。虽然它会将 KV Cache 压缩到潜在空间,但当前 Token 仍然可以根据 Query 回查历史中的具体内容。它承担的是全局检索任务。 KDA 则不会保存所有历史 Token 的完整表示,而是把过去的信息持续写入固定大小的状态,并通过更新、遗忘和覆盖维持这份状态。它能够以较低成本处理长序列,但固定容量意味着部分历史细节会被压缩。 K3 没有要求其中一种机制独立承担所有任务。KDA 负责高频地维持连续状态,MLA 则周期性访问完整历史,补充固定状态可能遗漏的重要信息。 这种分工也解释了 K3 为什么能够在 MLA 中移除 RoPE。 纯 MLA 模型需要显式建模 Token 之间的位置关系,因此 K2 仍然依赖 RoPE。K3 中的 KDA 会按照 Token 顺序递归更新状态。较早的信息需要经历更多次传播、衰减和覆盖,较近的信息则通过更短的路径影响当前位置。顺序与距离已经部分包含在状态演化过程中。 因此,MLA 不再需要独立承担全部位置建模任务,可以将更多能力用于全局内容匹配。所谓“广义 RoPE”,并不是说 KDA 与 RoPE 完全等价,而是强调位置信息也可以由具有顺序性的状态更新机制表达。 K3 还在 MLA 输出后增加了 Gate。MLA 负责从历史中找到相关内容,Gate 再根据当前输入判断哪些通道值得写回主干。这样,模型不仅能够控制检索对象,也能够控制检索结果的使用强度。 KDA、MLA 与 Gate 因此形成了明确分工:KDA 维持连续状态,MLA 执行全局回查,Gate 筛选回查结果。 04 64 维分支与 Per-Head Muon 反映了哪些系统约束 K3 的 NoPE MLA 仍然保留了原本用于 RoPE 的额外 64 维分支。既然模型已经不再对这部分施加 RoPE,从理论形式看,这段结构似乎可以删除。 但删除分支会改变 Query 和 Key 的张量形状,并可能影响 KV Cache 布局、Attention Kernel、通信逻辑和推理框架。对于已经建立完整训练与部署链路的 2.8 万亿参数模型,底层形状变化意味着大量组件需要重新开发和验证。 K3 保留原有结构,反映的是一种最小改动原则。它未必是数学上最简洁的形式,却可以继续复用成熟的 MLA 基础设施,降低训练和部署风险。 Per-Head Muon 处理的则是优化器与注意力结构之间的关系。 K3 继续使用 Muon 优化器,但会按照不同 Attention Head 分开处理相关参数。多个 Head 往往学习不同的信息模式,如果优化器将它们作为一个整体统一归一化,梯度较大的 Head 可能影响其他 Head 的更新尺度。 Per-Head Muon 不一定直接带来显著的指标提升,但它让优化方式与模型内部的结构边界保持一致,减少了不同 Head 之间不必要的耦合。 从这些细节可以看到,K3 的最终架构并不是只由理论效果决定。通信成本、低精度数值、Kernel 复用、框架兼容和工程风险都会参与设计取舍。 K3 仍然存在尚未完全回答的问题。低维潜在空间可能损失信息,KDA 的固定状态仍会遗忘细节,更多专家也不必然形成同等数量的清晰能力。模型的效率还依赖专家通信、低精度训练和专用 Kernel,单独复制架构未必能够获得相同收益。 但 K3 展示了一条较为明确的路线:当模型进入万亿参数和百万上下文阶段,Scaling 的重点已经不只是扩大容量,而是建立更有效的参数、记忆与计算调度机制。 参考链接:https://kexue.fm/archives/11848 上车,带你看遍全球 AI 顶会精华 可独家畅览: 专家演讲PPT 大会报告全文 热门论文解读 学术新星访谈 扫描上方二维码 或点击「阅读原文」关注专区。
苏神复盘 Kimi K3:896 个专家背后,藏着哪些关键技术取舍?
从异常激活到专家拥堵,拆解超大模型训练难点。 作者丨郑佳美 编辑丨岑 峰 这几天,Kimi 研究员、RoPE 提出者苏剑林发布了一篇名为《简单谈谈 K3 的 MoE 和 Attention》的文章,集中讨论了 Kimi K3 在专家架构、训练稳定性、负载均衡和注意力设计上的几项关键取舍。 苏神在文章中提到 K3 拥有 2.8 万亿总参数,并配置了 896 个路由专家。但模型不会让每个 Token 调用全部专家,而是只从中激活 16 个。在注意力结构上,K3 也没有沿用单一方案,而是将 KDA 与 Gated MLA 交替排列。 这些配置共同指向了 K3 的基本设计思路:模型可以继续扩大容量,但不能让计算成本随着总参数量和上下文长度同步增长。更多专家意味着模型拥有更细致的能力分工,混合注意力则让模型能够以更低成本处理长上下文。 然而,规模扩张也会带来新的问题。 当专家数量增加时,Router 不仅要准确选择专家,还要避免少数专家持续过载;当 Token 被发送到不同 GPU 上的专家时,跨设备通信也会迅速增加。 与此同时,更长的上下文会推高 KV Cache 和注意力计算成本,而 BF16、FP8 等低精度训练虽然能够节省资源,却更容易受到异常激活的影响。 因此,K3 的关键并不是简单加入更多专家或更换注意力模块,而是为规模扩张建立一套配套的控制机制。 LatentMoE 负责降低专家计算和通信成本,RMSNorm 与 SiTU-GLU 用来稳定专家分支的数值,Quantile Balancing 负责协调近千个专家之间的负载,KDA 与 NoPE MLA 则重新分配长上下文中的记忆和检索任务。 换句话说,K3 真正要解决的问题是:模型可以拥有更大的参数和信息空间,但每一步计算都必须控制实际调用的部分。 01 LatentMoE 如何重新分配专家预算 传统 MoE 会在模型内部设置大量专家,再由 Router 根据 Token 内容选择其中少数几个参与计算。这样,模型可以拥有很大的总参数量,同时将单次计算控制在较小范围内。 但在真实训练系统中,专家通常分布在不同 GPU 上。Router 完成选择以后,系统还需要把 Token 的隐藏状态发送到相应设备。隐藏维度越宽、每个 Token 激活的专家越多,需要传输的数据就越多。到了大规模 MoE 阶段,通信往往比矩阵计算更早成为瓶颈。 LatentMoE 改变了 Token 进入专家的方式。K3 不会直接把完整隐藏状态发送给路由专家,而是先将其压缩到更窄的潜在空间。K3 的主隐藏维度为 7168,路由专家则在 3584 维空间中计算,完成后再将结果恢复到完整隐藏维度。 降维带来的收益,不只是减少单个专家的计算量。专家需要读取的权重、处理的激活以及跨设备传输的数据都会同步下降。K3 将这部分预算用于扩大专家池:原本可以采用从 448 个专家中选择 8 个的方案,引入 LatentMoE 后,最终扩展为从 896 个路由专家中选择 16 个。 两种配置的激活比例相同,但后一种方案拥有更多可组合的专家。模型可以让多个较窄的专家共同处理一个 Token,而不是依赖少数宽专家完成所有变换。专家分工由此变得更加细致。 潜在空间同时也是一道信息瓶颈。路由专家接收到的是压缩表示,如果维度过窄,部分信息可能在进入专家前已经损失。 K3 因此还保留了 2 个始终参与计算的共享专家,负责处理语言结构、基础语义和常见推理模式。路由专家则集中学习更加细分的能力,避免数百个专家重复承担相同的通用计算。雷峰网 LatentMoE 的意义,因而不只是把专家做小,而是重新组织通用能力、专业能力与通信成本之间的关系。 02 Stable LatentMoE 如何处理数值与负载风险 LatentMoE 增加了降维、专家计算、结果聚合和重新升维等步骤,计算路径比普通 MoE 更长。 路径中的数值波动也更容易被后续矩阵放大。K3 因此加入 RMSNorm、SiTU-GLU 和 Quantile Balancing,将其改造成 Stable LatentMoE。 RMSNorm 被放在专家结果聚合之后、升维之前。由于不同 Token 会进入不同的专家组合,Router 分配的权重也不相同,聚合结果的尺度可能存在较大差异。如果模型直接将结果升维并送回主干,这些波动就可能继续扩散。 RMSNorm 会先校准专家分支的整体尺度,再由升维矩阵恢复完整表示。它相当于在路由分支与主干网络之间设置了一套统一的数值接口。 不过,整体尺度稳定,并不意味着局部没有异常。SwiGLU 会生成两个分支,再将它们逐位置相乘。如果两个分支在同一位置同时产生较大数值,输出就会被乘法迅速放大。 这类离群值对 BF16、FP8 等低精度训练尤其危险。少量极端数值会占用较大的动态范围,使大量正常数值只能被压缩到更窄的精度区间。雷峰网 SiTU-GLU 通过 Soft Cap 限制这种增长。激活较小时,它尽量保留原有函数的计算行为;数值进入危险区域后,增长速度逐渐降低并趋于饱和。与直接 Clamp 相比,这种处理更加平滑,也不会把所有超过阈值的数值简单压成同一个结果。 RMSNorm 和 SiTU-GLU 解决的是数值问题,Quantile Balancing 处理的则是专家负载。 MoE Router 容易形成正反馈。某个专家早期获得更多 Token,就会得到更多梯度;能力提升后,它又更容易被继续选择。长此以往,少数专家可能持续过载,其他专家则缺少训练机会。 K2 已经采用无辅助损失的负载均衡方法。系统通过调整专家的选择偏置控制流量,而不是额外加入均衡损失干扰 Router 的语义学习。不过,K2 的偏置更新类似 SignSGD,只会按照固定步长提高或降低专家被选中的概率。 当专家数量增加到 896 个后,固定步长很难兼顾调整速度和稳定性。Quantile Balancing 不再逐步试探,而是直接观察 Router 分数与 Top-K 门槛之间的分布,估计每个专家的选择门槛应该移动到什么位置,才能接收到目标数量的 Token。 这种变化让负载均衡从经验性的反馈调节,转向更直接的分布求解。RMSNorm、SiTU-GLU 与 QB 分别控制整体尺度、局部极值和专家流量,共同构成了 Stable LatentMoE 的稳定机制。 03 KDA 与 NoPE MLA 如何分配记忆任务 K3 的注意力结构由 KDA 和 Gated MLA 共同组成,大致每经过 3 层 KDA,就插入 1 层 MLA。两者的区别不仅在于计算成本,也在于它们保存历史信息的方式。 MLA 保留了对完整历史的全局访问能力。虽然它会将 KV Cache 压缩到潜在空间,但当前 Token 仍然可以根据 Query 回查历史中的具体内容。它承担的是全局检索任务。 KDA 则不会保存所有历史 Token 的完整表示,而是把过去的信息持续写入固定大小的状态,并通过更新、遗忘和覆盖维持这份状态。它能够以较低成本处理长序列,但固定容量意味着部分历史细节会被压缩。 K3 没有要求其中一种机制独立承担所有任务。KDA 负责高频地维持连续状态,MLA 则周期性访问完整历史,补充固定状态可能遗漏的重要信息。 这种分工也解释了 K3 为什么能够在 MLA 中移除 RoPE。 纯 MLA 模型需要显式建模 Token 之间的位置关系,因此 K2 仍然依赖 RoPE。K3 中的 KDA 会按照 Token 顺序递归更新状态。较早的信息需要经历更多次传播、衰减和覆盖,较近的信息则通过更短的路径影响当前位置。顺序与距离已经部分包含在状态演化过程中。 因此,MLA 不再需要独立承担全部位置建模任务,可以将更多能力用于全局内容匹配。所谓“广义 RoPE”,并不是说 KDA 与 RoPE 完全等价,而是强调位置信息也可以由具有顺序性的状态更新机制表达。 K3 还在 MLA 输出后增加了 Gate。MLA 负责从历史中找到相关内容,Gate 再根据当前输入判断哪些通道值得写回主干。这样,模型不仅能够控制检索对象,也能够控制检索结果的使用强度。 KDA、MLA 与 Gate 因此形成了明确分工:KDA 维持连续状态,MLA 执行全局回查,Gate 筛选回查结果。 04 64 维分支与 Per-Head Muon 反映了哪些系统约束 K3 的 NoPE MLA 仍然保留了原本用于 RoPE 的额外 64 维分支。既然模型已经不再对这部分施加 RoPE,从理论形式看,这段结构似乎可以删除。 但删除分支会改变 Query 和 Key 的张量形状,并可能影响 KV Cache 布局、Attention Kernel、通信逻辑和推理框架。对于已经建立完整训练与部署链路的 2.8 万亿参数模型,底层形状变化意味着大量组件需要重新开发和验证。 K3 保留原有结构,反映的是一种最小改动原则。它未必是数学上最简洁的形式,却可以继续复用成熟的 MLA 基础设施,降低训练和部署风险。 Per-Head Muon 处理的则是优化器与注意力结构之间的关系。 K3 继续使用 Muon 优化器,但会按照不同 Attention Head 分开处理相关参数。多个 Head 往往学习不同的信息模式,如果优化器将它们作为一个整体统一归一化,梯度较大的 Head 可能影响其他 Head 的更新尺度。 Per-Head Muon 不一定直接带来显著的指标提升,但它让优化方式与模型内部的结构边界保持一致,减少了不同 Head 之间不必要的耦合。 从这些细节可以看到,K3 的最终架构并不是只由理论效果决定。通信成本、低精度数值、Kernel 复用、框架兼容和工程风险都会参与设计取舍。 K3 仍然存在尚未完全回答的问题。低维潜在空间可能损失信息,KDA 的固定状态仍会遗忘细节,更多专家也不必然形成同等数量的清晰能力。模型的效率还依赖专家通信、低精度训练和专用 Kernel,单独复制架构未必能够获得相同收益。 但 K3 展示了一条较为明确的路线:当模型进入万亿参数和百万上下文阶段,Scaling 的重点已经不只是扩大容量,而是建立更有效的参数、记忆与计算调度机制。 参考链接:https://kexue.fm/archives/11848 上车,带你看遍全球 AI 顶会精华 可独家畅览: 专家演讲PPT 大会报告全文 热门论文解读 学术新星访谈 扫描上方二维码 或点击「阅读原文」关注专区。
