Kimi K3 的架构信息出来之后,大家的目光基本都在参数规模和评测分数上。我反而更关注它的“门控”设计。Gated MLA、KDA 门控分支、MoE 中的 SiTU-GLU、SwiGLU,这些词围绕同一个核心:如何让信息在深层网络中流动得更可控。门控机制不是新概念,但在 Kimi K3 这种规模的模型里,门控设计的优劣会直接影响长上下文能力、推理效率和训练稳定性。
这篇文章不聊跑分,只拆架构。我会把 Gated MLA 的门控思路、KDA 中的门控分支作用、MoE 场景下 SwiGLU 到 SiTU-GLU 的演进逻辑逐一讲清楚,并给出一套可以迁移到其他 LLM 项目里的分析框架。如果你正在做大模型架构选型、微调实验或者推理服务调优,这篇文章可以直接收藏。
1. 核心概念速览
| 概念 | 所属模块 | 核心作用 | 关键差异 |
|---|---|---|---|
| 门控机制 | 全模型 | 决定信息是保留、衰减还是阻断 | 从注意力到 FFN 到 MoE 路由无处不在 |
| Gated MLA | 注意力层 | 在潜在多头注意力基础上增加门控 | 相比 MLA 多一层信息筛选,控制历史信息进入当前 Token 的强度 |
| KDA 门控分支 | 注意力/推理路径 | 通过旁路门控补充主路径信息 | 分支结构与主路径并行,门控负责权重分配 |
| MoE | 前馈层 | 按 Token 动态选择专家子网络 | 门控路由是关键,路由策略决定计算效率 |
| SwiGLU | FFN 激活函数 | 用门控线性单元替代普通激活 | 使用 SiLU/Swish 作为门控 |
| SiTU-GLU | FFN 激活函数 | SwiGLU 的变体,门控函数换为 SiTU | 相比 SwiGLU,激活形状更平滑,训练更稳定 |
从标题看,Kimi K3 的门控设计横跨了注意力、专家路由和 FFN 三层。这不是单点优化,而是一套系统性的架构选择。
2. 本文适合谁看
这篇文章适合四类人:
第一类是 LLM 架构研究者。你需要理解一个前沿模型怎么把已有的门控思路组合成新架构,Gated MLA 和 KDA 门控分支的设计逻辑是什么。
第二类是做大模型微调的技术人员。门控机制影响梯度传播。理解门控设计的边界条件,能帮助你判断某些 LayerNorm、激活函数替换是否安全。
第三类是推理部署工程师。MoE 模型的门控路由直接影响显存占用和吞吐量。SwiGLU 和 SiTU-GLU 的计算差异虽然不大,但在长序列压测下会明显影响延迟。
第四类是技术选型决策者。你在对比 Kimi K3、DeepSeek、Qwen 这些模型时,不能只看榜单,更要看架构设计是否符合你的业务场景。长上下文场景优先关注 Gated MLA 的信息压缩方式,多任务并行场景优先关注 MoE 路由门控的负载均衡能力。
阅读本文前,你最好熟悉以下概念:多头注意力机制、潜在状态压缩、MLP 前馈网络、专家混合模型。如果对 MoE 的基本结构还不熟悉,建议先补充基础知识。
3. LLM 中的三种“门”
很多人以为门控机制只是 MoE 路由器里的 Softmax 操作,这是误解。在 Kimi K3 这类现代 LLM 里,门控至少出现在三个层面。
3.1 注意力门控
注意力机制本身就是一种软门控。Query 和 Key 计算出的注意力分数,决定了 Value 信息能以多大权重进入当前位置。传统多头注意力里,这个门控是动态计算的,每个 Token 对历史 Token 的关注程度不同。
但问题在于:注意力分数的分布往往非常尖锐。少数几个历史 Token 获得了绝大部分注意力权重,其他 Token 的信息几乎被丢弃。这不是设计者想要的,而是数据分布自然导致的结果。
所以现代模型开始在注意力内部增加额外的门控结构。Gated MLA 的思路就是在这个位置做文章。注意力分数已经是一个门控,但模型可能还需要一个“控制门”来控制信息进入的强度,尤其是在处理超长上下文时。
3.2 FFN 门控激活
FFN 层的门控激活函数是另一个重要位置。传统 FFN 使用 ReLU 或 GELU 这类非线性激活,没有显式的门控结构。GLU(Gated Linear Unit)家族则把激活函数改造成一个显式门控:
GLU(x) = f(W1 * x) ⊙ (W2 * x)其中 f 是激活函数,⊙ 是逐元素乘。第一个分支经过激活函数后作为门控,控制第二个分支信息的通过程度。SwiGLU 用的是 SiLU,SiTU-GLU 用的是 SiTU。
这个门控的意义在于:FFN 层是 LLM 中参数量最大的部分,门控决定哪些特征被放大、哪些被抑制。Kimi K3 在 MoE 场景下选择 SiTU-GLU,说明它对 FFN 特征稀疏性的要求更高。
3.3 MoE 路由门控
MoE 里最经典的门控是 Token 到专家的路由分配。这个门控通常是一个线性层加 Softmax,输出每个专家被选中的概率。Kimi K3 这类大规模 MoE 模型会把绝大多数 Token 路由到少数几个专家上,实现稀疏激活。
MoE 路由门控面临的核心问题有三个。
第一个是负载均衡。如果大部分 Token 都涌向某个专家,这个专家会成为瓶颈。传统 MoE 会用辅助损失惩罚负载不均衡,但辅助损失过大会干扰主任务学习。
第二个是专家退化。某些专家可能从训练开始就没被激活过,形成死专家。解决思路包括更强的路由温度、更细粒度的专家划分。
第三个是路由波动。训练时路由越稳定,模型收敛越快。如果同一个 Token 在不同训练步被路由到完全不同的专家,梯度会不稳定。
Kimi K3 的 MoE 架构如果沿用 Gated MLA 的门控思路,路由门控可能会引入更低维度的中间投影,让路由决策更平滑。
4. Gated MLA:在潜在注意力中加一道可控门
Gated MLA 是这份架构信息里最值得拆解的部分。它建立在 MLA 的基础上,增加门控机制。要理解它,得先回头看 MLA 解决了什么问题。
4.1 MLA 的基础:低秩压缩
传统多头注意力的 KV Cache 开销与序列长度和头数线性相关。序列越长,KV Cache 占用显存越大。MLA 的解决方式是把 Key 和 Value 压缩到低维潜在空间,推理时只需要缓存低维潜在向量,而不是完整的 K 和 V。
公式层面可以这样理解:
K = W_k * c V = W_v * c其中 c 是压缩后的潜在向量。K 和 V 都是通过潜在向量 c 乘以投影矩阵恢复出来的。这样 KV Cache 的存储量大幅降低,长上下文推理成本显著下降。
DeepSeek-V2 使用 MLA 后,KV Cache 比标准多头注意力降低了数倍。Kimi K3 选择 Gated MLA,说明它认可 MLA 的压缩思路,但认为单纯的低秩压缩还不够,需要加门控来筛选信息。
4.2 Gated MLA 的改进思路
Gated MLA 的核心假设是:低秩压缩后的潜在向量可能包含大量冗余信息。不是所有历史信息都对当前 Token 的预测有贡献,因此需要在注意力计算中加入门控,决定潜在向量中的哪些维度可以被放大、哪些维度应该被压缩。
可能的门控方式包括两种:
第一种是逐维度门控,对潜在向量的每个维度学习一个缩放系数:
g = sigmoid(W_g * c) c_gated = g ⊙ c这个门控向量与输入相关,可以根据当前 Token 的语义动态调整历史信息的利用方式。
第二种是逐头门控,对每个注意力头设置一个标量门控:
alpha = sigmoid(w_alpha * c) attn = alpha * softmax(Q * K^T / sqrt(d)) * V每个注意力头可以完全关闭或增强。在长上下文中,部分头的注意力可能失效或引入噪声,逐头门控允许模型自动关闭这些头的贡献。
从实现角度推测,Kimi K3 的 Gated MLA 很可能同时包含了这两种门控:先对潜在向量做逐维度筛选,再对注意力头输出做逐头加权。这种多层门控结构比单一门控更灵活,但也需要训练策略配合,否则门控可能塌缩到全 1 或全 0。
4.3 门控位置与信息流
门控放在哪里,决定了信息流的路径。标准 MLA 的信息流是:
输入 -> 压缩 -> 投影 -> 注意力 -> 输出Gated MLA 的信息流变成:
输入 -> 压缩 -> 门控筛选 -> 投影 -> 注意力 -> 逐头门控 -> 输出门控引入了额外的非线性变换和一个可学习的参数矩阵。这让注意力的信息筛选能力更强,但也增加了一定的计算量。好在这个计算量主要在潜在低维空间中进行,整体开销远小于在完整维度上的操作。
从信息论角度看,Gated MLA 更像是一个自适应信息瓶颈。低秩压缩是静态瓶颈,门控是动态瓶颈。静态瓶颈决定了模型能容纳多少历史信息,动态瓶颈决定了在特定上下文下哪些信息被真正使用。
5. KDA 门控分支分析
KDA 门控分支是标题里的另一个重点。虽然 KDA 的完整名称和具体实现细节在这个信息切片里没有展开,但从命名和上下文可以判断,它属于 Kimi K3 中与门控相关的一种分支结构设计。
5.1 门控分支的设计意图
大型 LLM 的深层网络面临一个普遍问题:信息在逐层传递过程中会被稀释。Attention 层输出的是历史信息的加权混合,FFN 层输出的是特征变换结果。当网络深度达到几十层甚至上百层,深层网络很难继续利用浅层捕捉到的原始信息。
门控分支的典型设计是在主路径旁边增加一条信息通路,让浅层信息可以更直接地影响深层输出。这个分支上设置一个门控单元,决定浅层信息以多大强度注入深层。
从功能上推测,KDA 的门控分支可能承担以下两个任务之一。
第一个任务是长程信息保持。通过分支结构,把较早层的信息直接送到较晚层,避免逐层遗忘。这个思路类似于残差连接,但比残差连接更灵活,因为它通过门控决定注入强度。
第二个任务是任务自适应。某些任务需要更多底层语义信息,某些任务需要更多高层抽象信息。门控分支可以根据 Token 内容动态调整浅层信息的贡献比例。
5.2 分支与主路径协同
门控分支要发挥作用,关键在于分支与主路径的协同方式。一种常见的做法是把分支输出作为主路径输出的残差修正项:
output = main_path(x) + g * branch(x)其中 g 是门控系数。g 接近 0 时,模型退化为普通主路径结构;g 接近 1 时,分支信息完整注入。
另一种做法是在 Attention 内部做分支。例如对 K 或 V 的投影矩阵增加一个独立分支,通过门控控制其输出:
K_final = K_main + g * K_branch这样可以改变注意力的关注范围。如果分支输出的 K 与当前任务高度相关,模型可以选择性地加强相关 Token 的注意力。
KDA 门控分支如果与 Gated MLA 联合使用,效果可以叠加。Gated MLA 控制历史信息的整体利用方式,KDA 分支控制特定层间的信息通道,两者互补。
这里需要提醒一点:由于目前对 KDA 的具体实现披露有限,以上是基于架构设计的合理推理。最终准确结论需要以 Kimi K3 的技术报告或源码为准。但从工程角度,门控分支的设计思路是成熟的,很多模型都已经验证过有效性。
6. MoE 中的激活函数:从 SwiGLU 到 SiTU-GLU
Kimi K3 选择在 MoE 前馈层使用 SiTU-GLU,这一点值得仔细展开。因为它和 LLaMA 系列使用的 SwiGLU 有直接演进关系。
6.1 GLU 家族的一般形式
GLU 的通用形式可以写成:
GLU(x, W, V, b, c, f) = f(x * W + b) ⊙ (x * V + c)f 是激活函数。不同 GLU 变体的区别主要在于 f 的选择:
| 变体 | 激活函数 f | 代表模型 |
|---|---|---|
| ReGLU | ReLU | 一些早期模型 |
| GeGLU | GELU | PaLM 等 |
| SwiGLU | SiLU(Swish) | LLaMA、Mistral 等 |
| SiTU-GLU | SiTU | Qwen3、Kimi K3 |
6.2 SwiGLU:当前主流选择
SwiGLU 使用 SiLU 作为门控激活函数。SiLU 的定义是:
SiLU(x) = x * sigmoid(x)SiLU 的特点是平滑、处处可导、有下界无上界。在负区间,输出可以是一个小的负值,而不是像 ReLU 那样完全为 0。这个性质让梯度可以更顺畅地流过负区间,避免死神经元问题。
SwiGLU 的计算公式为:
SwiGLU(x) = SiLU(x * W1) ⊙ (x * W2)第一个线性变换经过 SiLU 后作为门控,第二个线性变换作为信息载体。两个分支的乘积实现了特征选择。
SwiGLU 在 LLaMA 系列中验证了效果:相比普通 FFN,SwiGLU 可以用更少的参数达到相当的效果。所以它成为开源社区的事实标准。
6.3 SiTU-GLU:更平滑的门控变体
SiTU-GLU 的改进点在于激活函数本身。SiTU 的全称通常理解为 Sigmoid-Tanh-Unit,它的定义可以表达为:
SiTU(x) = sigmoid(βx) * tanh(x)其中 β 是缩放参数。sigmoid(βx) 是一个 0 到 1 之间的门控信号,tanh(x) 提供 -1 到 1 之间的非线性变换。两者相乘的结果是:输出被限制在 (-1, 1) 区间,同时保持平滑可导。
和 SiLU 对比,SiTU 有几个差异:
第一,SiTU 的输出有上界,不会出现大正值。这有助于稳定深层网络中的激活值分布。
第二,tanh 的饱和特性让极端的输入不会导致极端输出。SiLU 在 x 很大时输出接近 x,可能产生很大的激活值;SiTU 在 x 很大时输出接近 1,更加温和。
第三,sigmoid(βx) 在 β 较大时接近 0/1 门控,可以选择性地放行或阻断信息。这正好契合门控的语义。
SiTU-GLU 的完整计算为:
SiTU-GLU(x) = SiTU(x * W1) ⊙ (x * W2)用 SiTU 替换 SiLU 后,门控信号不再是无上界函数,而是被限制在 sigmoid 门控范围内。这让 MoE 专家的输出更加可控。
这里需要说明,SiTU 具体系数和实现形式可能存在版本差异。要在自己的项目中复现,应以对应模型的开源代码为准。
6.4 激活函数对 MoE 的影响
在 MoE 模型里,激活函数的影响被放大了。原因在于每个 Token 只激活少数专家,专家的输出质量直接决定最终效果。如果激活函数在这些专家中产生不稳定的激活值,路由门控的训练会受影响。
SiTU-GLU 在 MoE 中的优势可以从三个角度理解。
训练稳定性方面,SiTU 的有界输出意味着 FFN 层的输出被压缩到有限区间。这让后续层的梯度更稳定,尤其在超大规模模型训练中,激活值爆炸是常见的训练失败原因。
稀疏激活方面,SiTU 的透明门控特性让大部分输入维度在通过 sigmoid 后被压缩到接近 0。这相当于在专家内部实现了维度级稀疏,与 MoE 的 Token 级稀疏互为补充。
推理速度方面,SiTU 的激活函数计算非常简单。相比需要指数运算的 SiLU,SiTU 额外增加了一个 tanh 计算。从硬件角度看,这两个函数在现代 GPU 上都有高效实现,开销差异可以忽略。
Kimi K3 的 MoE 规模下,激活函数微小的计算差异会被大规模矩阵乘法淹没,真正受益的是训练过程的稳定性和输出分布的平滑性。
7. 门控机制的计算代价与显存影响
门控不是免费的。无论是 Gated MLA 还是 KDA 门控分支,都引入了额外的参数和计算。在做推理部署时,这些代价是实际存在的。
7.1 计算增量在哪里
Gated MLA 的门控计算集中在潜在空间。逐维度门控需要对压缩后的向量做一次线性变换和 sigmoid,再把门控结果与原向量逐元素相乘。这个操作的复杂度是 O(d_c),其中 d_c 是潜在向量维度。相比注意力计算 O(n*d) 的复杂度,门控本身的开销很小。这里 n 是序列长度,d 是隐藏维度。
KDA 门控分支带来的额外计算主要在分支线性层。如果分支维度低于主路径维度,则额外计算量有限;如果分支与主路径维度一致,则等效于增加了一个并联的线性层,计算量大约增加一个线性层的开销。
SiTU-GLU 相比 SwiGLU 的计算差异最集中在 tanh 和 sigmoid 两个函数的计算上。对 GPU 来说,这两个函数的吞吐量远低于矩阵乘法,所以实际推理时感知不到明显差异。
7.2 对 KV Cache 的影响
Gated MLA 对 KV Cache 的影响需要区分看待。如果门控只作用于潜在向量压缩后的结果,不影响 KV Cache 的结构,那么和标准 MLA 的显存占用基本一致。如果门控改变了缓存的粒度,比如需要额外缓存门控参数或未压缩的中间状态,那显存占用会上升。
按目前架构趋势推测,Gated MLA 的 KV Cache 应该仍然保持潜在低维存储。门控参数是模型权重的一部分,不需要写入 KV Cache。所以长上下文的显存优势应该保留。
KDA 门控分支如果涉及注意力头的扩展,可能增加 K 和 V 的投影维度,这会让 KV Cache 的维度变大。具体影响需要看分支维度与主维度之比。
对于 MoE 部分,SiTU-GLU 本身不改变 KV Cache 大小。MoE 的显存压力主要在专家权重本身。Kimi K3 这类大规模 MoE 部署时,需要考虑专家权重的加载和卸载策略。
7.3 训练与推理的差异
门控机制在训练阶段和推理阶段的表现不同。
训练阶段:门控参数需要与其他参数一起接受梯度。Gated MLA 的门控会让梯度路径更复杂。如果门控饱和,梯度会接近 0,导致门控参数自身无法有效学习。这需要门控初始化策略和温度调节来避免。
推理阶段:门控参数是固定的,计算路径是确定的。对于 MoE 模型,推理时的门控路由决策会直接影响哪些专家被加载。如果路由分布较集中,推理时可以用较小的专家集合,减少显存占用。
这里要强调:门控机制的显存和计算开销必须以实际模型配置为准。不同模型隐藏维度、层数、专家数量的差异会导致最终数据完全不同。做部署规划时,最好先用实际模型权重跑一轮 profile。
8. 门控机制对实际应用的影响
架构设计最终要落到应用场景。Kimi K3 的门控机制在几个实际场景里会有可感知的差异。
8.1 长上下文场景
Gated MLA 对长上下文的提升最明显。处理几十万字的长文本时,注意力计算必须从海量历史 Token 中筛选关键信息。门控提供了一个机制,让模型可以动态抑制无关历史信息,增强关键历史信息。
对 RAG 应用来说,这意味着检索到的文档块即使包含较多噪声,模型也能通过门控减弱噪声片段的影响。对代码仓库分析来说,模型可以在面对数千个文件时保持对核心依赖关系的关注。
8.2 代码与数学推理
代码和数学任务的关键特征是:推理链长、中间结果重要。门控机制让中间状态可以更有效地传递到后续计算中。
KDA 门控分支如果确实承担长程信息保持的功能,那么它在多步推理任务中的优势会更明显。因为每一步推理都需要前面的几个关键状态,而不是所有历史状态。
SiTU-GLU 的有界输出也有利于代码生成。代码 Token 的分布往往比自然语言更集中,有界激活可以防止少数极端 Token 主导输出。
8.3 Agent 工具调用与多轮交互
Agent 场景下,同一个对话中会交替出现工具调用结果、用户指令、系统提示词。这些不同类型的信息对模型的重要性不同。门控机制可以学习按内容类型动态调整注意力权重。
例如,在工具返回错误信息时,模型的门控可以降低该段错误信息的权重,转而关注后续的用户反馈。在多轮对话中,模型可以抑制旧的、不再相关的上下文,集中处理当前问题。
对实际用户来说,这些差异表现为:长对话不跑偏、工具调用更稳定、复杂任务多轮纠错能力更强。不过这些体验差异很难在单次测试中量化,需要在实际任务中压测。
9. 常见问题与技术思考
| 问题 | 思考方向 | 建议 |
|---|---|---|
| Gated MLA 一定优于 MLA 吗 | 门控增加了参数和训练难度,效果取决于数据规模 | 小数据量下门控可能过拟合,需对比实验 |
| SiTU-GLU 可以替代 SwiGLU 吗 | 可以,但需要调整学习率和初始化方式 | 在已有 SwiGLU 模型上直接替换可能导致不稳定 |
| KDA 门控分支适合小型模型吗 | 分支增加了计算开销,小模型收益可能不明显 | 建议在 7B 以上模型尝试 |
| MoE 路由门控与注意力门控有关系吗 | 两者独立但互补,可共同优化 | 不要只调一个,两个门控需要协同训练 |
| 门控会减慢推理速度吗 | 潜在空间的门控开销很小 | 实际推理速度差异远小于显存带宽影响 |
| 如何在现有模型上引入门控 | 需要修改网络结构和训练流程 | 建议从旁路门控开始,避免破坏主干结构 |
如果你准备在自己的实验中尝试这些结构,第一条建议是保持主干网络不变,先加旁路门控验证效果。第二条建议是对门控参数使用独立的初始化策略,避免门控一开始就饱和。第三条建议是记录门控值的分布情况,观察模型是否真的在利用门控,还是门控退化成了常数值。
10. 总结与下一步
Kimi K3 的门控设计是一套组合拳。Gated MLA 在注意力层面筛选历史信息,KDA 门控分支在层间通道上补强长程依赖,SiTU-GLU 在 FFN 层面提供更平滑的特征门控。这三个设计互相配合,共同解决大规模语言模型中信息流动的精确控制问题。
对于只是使用 API 的开发者来说,这些架构差异会表现为更稳定的长文本处理能力和更好的多轮对话一致性。对于做模型部署和微调的技术人员来说,理解门控机制有助于判断不同模型在特定任务上的行为差异。
接下来可以关注几个方向:Kimi K3 正式技术报告的细节、SiTU-GLU 在开源社区中的复现效果、Gated MLA 对 KV Cache 实际占用数据的验证。等这些信息进一步公开后,可以做一轮更精确的横向对比。目前这份分析可以作为理解 Kimi K3 门控架构的基础框架,建议收藏备用。