看到 Kimi K3 的第一眼,很多人会被两个数字吸引:
- 总参数约 2.8T;
- 每个 Token 激活约 104B 参数。
于是,一个很自然的判断出现了:
K3 的核心竞争力,就是把 MoE 模型继续做大。
但真正读完它的架构设计后,我反而认为,2.8T 是 K3 最不值得单独讨论的部分。
因为参数规模只是结果。
K3 真正解决的问题是:当 Transformer 的上下文、层数和参数规模同时增长时,如何避免计算成本、缓存成本和训练难度一起失控。
传统 Transformer 的扩展通常有三个方向:
- 把上下文拉长,让模型一次看到更多信息;
- 把网络堆深,让模型完成更多层次的信息变换;
- 把参数做大,让模型拥有更强的知识和能力容量。
这三个方向看起来相互独立,实际上都会遇到各自的扩展瓶颈。
上下文变长后,Attention 和 KV Cache 越来越昂贵。
模型变深后,早期信息会不断混入残差流,深层网络未必还能准确取回需要的表示。
参数变多后,如果每个 Token 都调用全部参数,单次推理成本将难以接受。
K3 的特殊之处,就在于它没有依赖某一个“万能创新”解决所有问题,而是针对三个扩展方向,分别设计了不同结构:
| 扩展方向 | 传统瓶颈 | K3 的处理方式 |
|---|---|---|
| 序列长度 | Attention 和 KV Cache 随上下文增长 | KDA 与 Gated MLA 混合 |
| 网络深度 | 历史层表示无差别累加 | AttnRes |
| 参数容量 | 每个 Token 计算成本过高 | Stable LatentMoE 与稀疏激活 |
| 数值精度 | 训练精度与部署精度脱节 | MXFP4、MXFP8 与量化感知训练 |
理解这张表,才算真正进入 K3 的技术核心。
一、长上下文真正难的不是“窗口开到一百万”
很多模型发布时都会强调支持 128K、256K,甚至一百万 Token 上下文。
这很容易给人一种错觉:
长上下文只是把最大输入长度调大。
实际上,当上下文从 8K 增长到 1M 时,模型面对的并不是一个配置问题,而是计算和存储结构发生了数量级变化。
1. Softmax Attention 为什么会越来越贵
标准 Attention 的核心计算可以写成:
\text{Attention}(Q,K,V)
=======================
\text{Softmax}
\left(
\frac{QK^T}{\sqrt{d}}
\right)V
假设序列长度为 (n)。
在 Prefill 阶段,模型需要计算大量 Token 之间的相关性。完整 Attention 矩阵的大小与 (n^2) 同阶。
也就是说:
n=10,000
和:
n=1,000,000
并不是简单相差 100 倍。
如果按照完整两两关系计算,矩阵规模可能相差约一万倍。
进入生成阶段后,模型虽然不需要每次重新计算完整 Attention 矩阵,但必须保存历史 Token 对应的 Key 和 Value,也就是 KV Cache。
KV Cache 的占用大致受以下因素影响:
\text{KV Cache}
\propto
\text{上下文长度}
\times
\text{层数}
\times
\text{KV 维度}
\times
\text{数据精度}
\times
\text{并发序列数}
这里最容易被忽略的是最后一项:并发序列数。
单条一百万 Token 请求能够放进显存,并不代表推理服务可以同时处理几十条同样长度的请求。
所以,真正的长上下文问题不是:
模型能不能读完一百万 Token?
而是:
模型读完一百万 Token 后,还能不能保持合理的缓存占用、生成速度和并发能力?
二、KDA:把无限增长的历史,写进有限大小的状态
K3 没有让全部 93 层都使用传统 Attention。
它使用了:
- 69 层 KDA;
- 24 层 Gated MLA。
整体上接近三层 KDA 配一层 Gated MLA 的混合结构。
这不是随意组合,而是在“历史压缩”和“精确检索”之间做出的结构性分工。
1. KDA 改变了什么
传统 Attention 会显式保存大量历史 Token 对应的 Key 和 Value。
KDA 的思路不同。
它不要求每一次查询都重新访问所有原始历史位置,而是把历史信息不断写入一个可更新的状态。
为了理解 Delta Rule,可以使用一个不对应官方全部实现细节的简化表达。
设当前记忆状态为 (S_{t-1}),当前输入产生 Key (k_t) 和目标 Value (v_t)。
模型先从旧状态中读取一个预测值:
\hat{v}*t=S*{t-1}k_t
然后计算预测结果和目标值之间的误差:
e_t=v_t-\hat{v}_t
最后,根据误差更新记忆:
S_t
===
G_t\odot S_{t-1}
+
\eta_t e_tk_t^T
其中:
- (G_t) 控制旧记忆保留多少;
- (\eta_t) 控制本次写入强度;
- (e_t) 是需要修正的信息;
- (e_tk_t^T) 决定将修正写入什么位置。
这里最重要的不是公式本身,而是更新逻辑:
KDA 不是把每条新信息无条件追加到历史中,而是先检查现有记忆是否已经表达了这条信息,再写入尚未表达正确的部分。
假设模型先读到:
“项目将在 8 月 1 日上线。”
后来又读到:
“由于测试延期,项目上线时间调整为 8 月 15 日。”
简单堆叠式记忆可能同时保留两个日期。
Delta 更新则更倾向于:
- 根据“项目上线时间”读取旧状态;
- 发现当前记忆仍指向 8 月 1 日;
- 计算新旧值的差异;
- 修正相关记忆。
这也是“Delta”这个名字的含义:写入的重点不是完整新值,而是当前状态需要被修正的部分。
2. 为什么这种结构适合长上下文
传统 KV Cache 会随着序列增长不断扩张。
循环状态类结构的关键优势,是可以把大量历史压缩到相对固定大小的状态中。
这意味着,在理想情况下:
- 历史从 10K 增长到 100K;
- 从 100K 增长到 1M;
核心记忆状态不必按照相同比例增长。
这就是线性注意力在长上下文中的吸引力。
Kimi Linear 的公开实验表明,在特定百万上下文设置中,其混合注意力架构相较全 MLA 基线最多可以减少约 75% 的 KV Cache,并获得最高约 6 倍的解码吞吐提升。
这里必须强调:
这是 Kimi Linear 实验模型在特定配置下的结果,不能直接理解成完整 K3 在任何工作负载中都会获得 6 倍提升。
真正值得关注的是方向:KDA 试图把长上下文成本从“保存全部历史位置”,转化为“持续维护有限状态”。
三、为什么 K3 没有全部使用 KDA
如果 KDA 能够显著降低长上下文成本,为什么 K3 还要保留 24 层 Gated MLA?
答案在于:压缩和精确检索之间存在天然矛盾。
1. 压缩状态不等于原始记录
假设模型需要处理一份超长合同。
合同中有一句:
“第 873 页第 4.2 条规定,逾期付款的违约金比例为 17.35%。”
如果模型只需要回答:
“合同是否规定了逾期付款违约金?”
压缩状态很可能足够。
因为模型只需要保留一个语义事实:
合同存在逾期付款违约金条款。
但如果问题变成:
“违约金比例具体是多少?”
模型必须恢复一个精确数值:
17.35%。
这类信息对压缩记忆更加困难。
因为固定大小的状态需要同时容纳大量人物、数字、代码、日期和语义关系。随着输入不断增加,不同记忆之间可能产生干扰。
线性注意力最难处理的,往往不是“理解大意”,而是从极长历史中精确恢复某个低频细节。
2. MLA 保留了一条显式历史检索路径
MLA 的全称是 Multi-head Latent Attention。
它不会像传统多头注意力那样完整保存所有 Key 和 Value,而是先把它们压缩到更低维的 latent 表示。
因此,MLA 也能降低 KV Cache。
但它与 KDA 的关键区别在于:
MLA 仍然保留了与历史 Token 位置相关的缓存,查询时仍能对历史位置执行显式检索。
可以把二者的分工理解为:
KDA 更擅长维护长期、压缩、不断更新的语义状态。
Gated MLA 更擅长在必要时回到显式历史表示中,恢复精确细节。
所以,K3 的混合注意力并不是“新旧技术拼在一起”,而是一种职责划分:
- 大部分层负责低成本维护长期状态;
- 少部分层负责恢复全局精确检索能力。
这比“彻底用线性注意力替换 Softmax Attention”更加保守,却也更符合实际工程需求。
因为长上下文模型同时需要两种能力:
- 对整篇文档形成稳定理解;
- 在需要时准确找到某个原始细节。
纯压缩结构擅长第一种。
显式历史检索更擅长第二种。
K3 没有在两者中二选一,而是把二者放进了同一个网络。
四、AttnRes:Transformer 不只是序列太长,网络本身也会太深
KDA 解决的是序列方向的扩展问题。
AttnRes 处理的是另一个较少被普通开发者关注的问题:
当 Transformer 层数越来越多时,信息究竟如何穿过整个网络?
1. 传统残差连接并不是没有代价
标准 PreNorm Transformer 的残差更新可以简化为:
x_l=x_{l-1}+F_l(x_{l-1})
不断展开后,可以近似理解成:
x_l === x_0 + F_1 + F_2 + \cdots + F_l
也就是说,当前层看到的是原始输入和前面所有层更新的累计结果。
残差连接解决了深层网络难以训练的问题。
它为梯度和信息提供了一条直接通道,使每一层只需要学习“在原有表示上增加什么”。
但当模型变得非常深时,这种累加方式也会产生新问题。
所有历史更新都被放进同一条残差流中,后面的层很难区分:
- 哪些信息来自输入 Embedding;
- 哪些是浅层提取的局部结构;
- 哪些是中层形成的语义关系;
- 哪些是深层推理结果;
- 哪些只是中间计算产生的噪声。
传统残差连接的默认假设近似是:
之前所有层产生的更新,都以固定方式继续传递。
这在层数较少时非常有效。
但当网络变成几十层甚至上百层时,模型可能需要的不再只是“继续累加”,而是“选择性取回”。
2. AttnRes 把 Attention 引入网络深度
普通 Attention 解决的问题是:
当前 Token 应该关注哪些历史 Token?
AttnRes 解决的问题是:
当前层应该读取哪些历史层?
它将当前层的输入表示为多个历史层表示的加权组合:
h_l
===
\sum_{i=0}^{l-1}
\alpha_{i\rightarrow l}v_i
其中:
- (v_i) 是第 (i) 层产生的表示;
- (\alpha_{i\rightarrow l}) 是当前第 (l) 层对第 (i) 层的权重。
传统残差更接近:
\alpha_{i\rightarrow l}=1
即历史更新持续累加。
AttnRes 则允许这些权重根据当前输入动态变化。
例如,模型处理代码时,不同阶段可能需要不同层次的信息。
识别变量名、括号结构和局部语法时,浅层表示可能更加重要。
分析函数职责、跨文件依赖和系统架构时,中高层表示可能更加有用。
检查是否偏离用户原始任务时,又可能需要重新读取早期输入表示。
AttnRes 让深层模型不再只能被动接收一条不断混合的残差流,而是可以在深度方向重新检索。
这是 K3 中非常值得重视的一项设计。
因为它说明,Attention 的使用范围已经不再局限于 Token 之间。
Attention 本质上是一种选择机制。
只要系统中存在大量候选信息,并且不同任务需要选择不同信息,就有可能引入 Attention。
在传统 Transformer 中,候选信息是历史 Token。
在 AttnRes 中,候选信息变成了历史层。
3. Block AttnRes 为什么必要
如果每一层都保存并直接访问所有历史层输出,代价同样会不断增长。
假设模型有 93 层。
第 93 层若要访问前面 92 层的完整表示,就会引入额外的内存访问、状态保存和计算成本。
因此,AttnRes 又引入了 Block 化设计。
它不要求后续层逐一查看所有历史层,而是将若干层组织成一个 Block,并形成 Block 级表示。
例如:
- 第 1 至 12 层形成一个 Block;
- 第 13 至 24 层形成一个 Block;
- 第 25 至 36 层形成一个 Block。
后续层主要在少量 Block 表示之间做选择,而不是访问全部历史层。
这和长文档检索的思想很相似。
直接访问每一页,精度最高,但成本也最高。
先形成章节级表示,再根据任务选择相关章节,成本更可控。
Block AttnRes 本质上是在“细粒度访问能力”和“可扩展性”之间做折中。
它解决的不是模型能否继续堆层,而是:
网络堆深以后,后面的层还能否高效地找到真正需要的历史表示?
五、2.8T 参数和 104B 激活参数,分别意味着什么
理解 K3 的 MoE 设计,首先必须分清两个概念:
- 总参数;
- 激活参数。
这是分析所有超大 MoE 模型的第一步。
1. 总参数决定容量,也决定存储下限
K3 总参数约为 2.8T。
这意味着模型中所有专家、共享层、注意力结构、Embedding 和其他模块加起来,拥有约 2.8 万亿个参数。
无论某个 Token 最后调用多少专家,这些权重都必须存放在某个位置。
因此,总参数主要决定:
- 模型权重需要多少存储空间;
- 需要多少显存或主存;
- 权重如何切分到不同设备;
- 模型最少需要多大的硬件容量。
“某次推理没有使用这个专家”,并不意味着这个专家的权重可以不存在。
2. 激活参数决定一次前向的大致计算规模
K3 每个 Token 激活约 104B 参数。
它拥有 896 个路由专家,每个 Token 从中选择 16 个,并额外经过共享专家。
因此,单个 Token 不需要让全部 2.8T 参数参与计算。
这正是 MoE 的核心价值:
\text{超大总容量}
+
\text{有限单次计算}
但这里有一个常见误区:
104B 激活参数,不等于 K3 就是一台 104B Dense 模型。
原因是 MoE 还需要完成额外步骤:
- Router 为 Token 计算专家分数;
- 选择 Top-K 专家;
- 将 Token 分发给目标专家;
- 各专家分别执行计算;
- 汇总专家输出;
- 处理专家容量和负载不均衡问题。
所以,激活参数只能近似反映矩阵计算规模,不能完整代表真实推理成本。
一个 104B Dense 模型和一个激活 104B 的 MoE 模型,计算组织方式并不相同。
Dense 模型更像一条连续的大型计算路径。
MoE 则包含动态路由和大量稀疏分支。
六、Stable LatentMoE:先压缩表示,再进入专家网络
K3 的专家系统并不是直接在主干隐藏维度上执行。
根据公开架构信息,K3 的主干 Hidden Dimension 为 7168,而 Latent MoE Dimension 为 3584。
可以将这一过程理解成:
7168
\rightarrow
3584
\rightarrow
\text{Experts}
\rightarrow
7168
也就是:
- 将主干 Hidden State 投影到较低维的 latent space;
- 在 latent space 中执行路由和专家计算;
- 再把专家结果映射回主干空间。
为什么要多做一次投影?
因为专家数量非常多。
如果 896 个专家全部直接在完整 7168 维空间中工作,专家层参数量和每次专家计算成本都会进一步增长。
LatentMoE 将两个目标分开:
- 主干 Hidden Dimension 负责全局表达能力;
- Latent Dimension 控制专家计算成本。
这是一种很典型的“解耦”设计。
模型不再要求:
主干表示有多宽,专家内部就必须有多宽。
而是允许:
主干保持较高表达维度,专家在更经济的潜在空间中完成稀疏计算。
这也是 Stable LatentMoE 名称中 “Latent” 最值得理解的部分。
它不是简单增加专家数量,而是在重新设计专家工作的表示空间。
七、MoE 最难的不是选 16 个专家,而是避免路由系统失控
很多介绍 MoE 的文章,到“每个 Token 选择部分专家”就结束了。
但真正训练超大 MoE 时,这只是开始。
Router 至少要解决三个问题:
第一,专家能否形成差异化
如果所有专家最后学到的内容几乎相同,那么 896 个专家只是重复存储。
MoE 的总参数虽然很大,但并没有转化成真正不同的能力。
第二,Router 能否选对专家
即使模型内部存在合适专家,如果 Router 没有把 Token 发送给它,这部分能力也不会被使用。
因此,MoE 的有效能力取决于:
\text{专家能力}
\times
\text{路由准确性}
专家本身很强,但路由错误,结果仍然不好。
第三,专家负载能否保持平衡
假设某个批次的路由结果是:
- 专家 A:10,000 个 Token;
- 专家 B:8,000 个 Token;
- 专家 C:100 个 Token;
- 专家 D:20 个 Token。
专家 C 和 D 很快完成计算。
但整个批次仍然必须等待专家 A。
此时系统性能取决于最繁忙的专家,而不是平均负载。
这就是分布式系统中的 Straggler 问题。
MoE 中还可能出现专家坍缩:
- 某些专家早期略微占优;
- Router 更愿意选择这些专家;
- 它们获得更多训练样本;
- 能力进一步增强;
- Router 更加依赖它们;
- 其他专家逐渐失去训练机会。
最终,模型名义上有大量专家,实际长期活跃的却只有少数几个。
Quantile Balancing 的意义
K3 使用 Quantile Balancing 处理专家平衡。
它不是只依赖固定阈值或人工反复调整的启发式参数,而是利用 Router 分数分布中的分位信息,推导更合适的专家分配边界。
这里需要避免一个误解:
负载均衡并不意味着每个专家永远收到完全相同数量的 Token。
如果强行平均,Router 可能为了平衡而把 Token 交给不合适的专家,损害模型能力。
理想的平衡机制需要同时考虑两个目标:
- 让 Token 尽量进入最合适的专家;
- 避免少数专家长期过载。
这两个目标并不总是一致。
所以,MoE 路由本质上是一个多目标优化问题,而不是简单的 Top-K 分类。
896 个专家决定模型有多大的潜在容量。
Router 和负载平衡机制,决定这些容量能否真正被使用。
八、量化为什么开始进入训练过程
完成架构设计后,K3 还要面对一个非常现实的问题:
2.8T 参数即使采用低精度,依然是一个极其庞大的模型。
过去,大模型常见的量化路径是:
- 使用 BF16 或 FP16 完成训练;
- 得到高精度模型;
- 在部署前再进行 INT8 或 INT4 量化。
这种方法被称为训练后量化,也就是 PTQ。
它的问题在于,训练阶段的模型从未真正经历过部署时的低精度误差。
假设某个权重原本为:
0.183726
量化后可能只能表示为:
0.1875
单个权重的误差很小。
但模型中存在万亿级参数,误差还会经过数十层矩阵运算、非线性激活和残差累积。
最终结果可能是:
- 困惑度上升;
- 长文本能力下降;
- 推理稳定性降低;
- 某些敏感任务出现明显能力损失。
K3 的处理方式
K3 使用:
- MXFP4 权重;
- MXFP8 激活。
并从 SFT 阶段开始引入量化感知训练。
这里的表述需要准确:
这不代表 K3 从预训练第一步开始,所有计算都完全使用 4bit。
更准确的理解是:
从 SFT 阶段开始,训练过程会模拟目标低精度格式产生的误差,让模型通过梯度更新适应最终部署环境。
量化感知训练的逻辑是:
- 前向传播时模拟量化;
- 模型看到量化后的近似数值;
- 损失函数反映量化误差带来的能力下降;
- 反向传播调整权重分布;
- 模型逐渐学会在目标精度下保持能力。
这意味着,量化不再只是部署团队最后进行的模型压缩。
它已经进入训练目标本身。
MXFP4 为什么不等于普通 INT4
MXFP4 属于 microscaling 浮点格式。
它的基本思路不是让整个张量共享一个巨大范围,而是让较小的数据块共享 Scale,块内元素使用低位宽浮点数表示。
可以理解为:
x_i \approx s_b \times q_i
其中:
- (s_b) 是当前数据块共享的缩放因子;
- (q_i) 是低位宽浮点表示;
- 不同数据块可以使用不同 Scale。
这种设计让低位宽格式在保留较低存储成本的同时,获得比固定整数范围更灵活的动态范围。
K3 使用 MXFP4 存储权重,而激活使用更高的 MXFP8。
原因也不难理解:
- 权重在推理期间基本固定,数值分布相对稳定;
- 激活取决于输入内容,变化更加剧烈;
- 激活需要更大的动态范围来避免溢出或精度损失。
因此,权重可以更加激进地压缩,而激活通常需要保留更高精度。
九、把 K3 拆开之后,会发现它其实在做同一件事
KDA、Gated MLA、AttnRes、Stable LatentMoE、Quantile Balancing 和量化感知训练,看起来属于完全不同的技术方向。
但它们背后的目标是一致的:
让模型规模继续扩大,但不让成本按照传统方式同步扩大。
KDA 解耦的是:
\text{历史长度}
\quad\text{与}\quad
\text{记忆状态大小}
AttnRes 解耦的是:
\text{网络深度}
\quad\text{与}\quad
\text{历史信息访问方式}
MoE 解耦的是:
\text{模型总容量}
\quad\text{与}\quad
\text{单 Token 计算量}
LatentMoE 进一步解耦:
\text{主干表达宽度}
\quad\text{与}\quad
\text{专家计算维度}
量化感知训练解耦的是:
\text{模型能力}
\quad\text{与}\quad
\text{高精度部署成本}
所以,K3 真正的技术主题不是“大”。
它的技术主题是:
解耦。
传统 Scaling 路线中,很多变量会被绑定在一起:
- 上下文越长,KV Cache 必然越大;
- 网络越深,残差流必然越混合;
- 参数越多,单 Token 计算必然越高;
- 模型越强,部署精度似乎就必须越高。
K3 的每一项结构创新,都在尝试打破其中一组绑定关系。
这也是理解 Scaling Efficiency 的关键。
所谓 Scaling Efficiency,不只是用更少 FLOPs 获得更高 Benchmark 分数。
它更深层的含义是:
当某一个能力维度继续扩大时,系统能否避免其他成本按照相同比例恶化?
十、K3 并没有“取代 Transformer”,它展示了混合架构的现实价值
技术传播很喜欢“新架构淘汰旧架构”的故事。
但 K3 并不是这样的故事。
它没有完全抛弃 Softmax Attention,而是保留 Gated MLA。
它没有完全依赖循环状态,而是混合显式历史检索。
它没有把所有参数都做成稀疏专家,而是保留共享专家和公共主干。
它没有只追求最低精度,而是让权重和激活采用不同格式。
它没有让每一层访问所有历史层,而是引入 Block AttnRes 控制成本。
这说明一个很现实的架构规律:
成熟系统通常不是选择某一种机制做到极致,而是让不同机制在各自擅长的区域工作。
KDA 擅长维护低成本长期状态,但精确细节恢复存在风险。
MLA 成本更高,但保留了显式历史访问路径。
MoE 可以扩大总容量,但会引入路由和负载平衡问题。
AttnRes 改善深度信息访问,但需要 Block 化控制额外开销。
低精度可以降低存储和带宽压力,但必须通过训练适应误差。
K3 的价值,不在于宣称某个技术没有缺点。
恰恰相反,它承认每种结构都有边界,然后用另一种结构补足边界。
十一、对普通开发者而言,K3 最值得学习的是什么
绝大多数开发者不会训练一个 2.8T 模型,也没有必要部署完整 K3。
但 K3 背后的设计思想并不只适用于基础模型。
1. 长期记忆不能只有一种形态
做 Agent、RAG 或企业知识系统时,经常有人选择两个极端:
- 保存全部历史;
- 只保存一份摘要。
更合理的设计通常是分层记忆:
- 原始记录保存精确证据;
- 结构化状态保存当前任务信息;
- 动态摘要保存长期语义;
- 向量检索负责找回历史细节。
这本质上与 KDA 和 MLA 的混合思路一致:
高频访问的信息进入压缩状态,低频但必须精确的信息保留可检索原文。
2. 历史状态不是越多越好
很多 Agent 系统会把全部历史消息、工具结果和日志重新塞回模型。
这种方法短期简单,长期一定会遇到:
- 上下文膨胀;
- 关键信息被淹没;
- 历史错误持续污染后续步骤;
- 推理成本不断上升。
AttnRes 提供的启发是:
系统不应该只是继承历史,而应该学习选择历史。
规划阶段、执行阶段、验证阶段和失败恢复阶段,需要的上下文并不相同。
3. 总能力和单次调用成本应该分开设计
MoE 的思想也可以迁移到 Agent 平台。
一个企业 AI 系统可以拥有:
- 代码分析能力;
- 文档解析能力;
- 数据分析能力;
- 合同审核能力;
- 流程执行能力;
- 质量验证能力。
但每个任务不应该调用全部模块。
合理的方式是:
- 识别任务类型;
- 选择必要能力;
- 执行并验证;
- 必要时再调用其他模块。
这就是软件系统中的稀疏激活。
4. 部署限制必须进入设计阶段
K3 的量化路径说明,部署约束不应该等系统完成以后再考虑。
企业 AI 项目从设计阶段就应该明确:
- 最大上下文是多少;
- 单次请求允许多少延迟;
- 是否需要并发;
- 模型运行在本地还是 API;
- 是否允许低精度;
- 需要保存哪些状态;
- 出错后如何恢复。
一个完全忽略部署条件的模型方案,通常不是先进,而是不完整。
十二、结语:2.8T 只是表面,扩展效率才是主线
如果只用一句话概括 K3,我不会说:
它是一个拥有 2.8T 参数的超大 MoE 模型。
我更愿意把它概括为:
K3 是一次围绕 Transformer 扩展效率进行的系统重构。
它分别回答了四个问题。
上下文越来越长,怎么办?
使用 KDA 压缩长期状态,同时保留 Gated MLA 提供精确检索。
模型越来越深,怎么办?
使用 AttnRes 在网络深度方向选择历史表示,而不是只依赖无差别残差累加。
参数越来越多,怎么办?
使用 Stable LatentMoE 扩大总容量,让每个 Token 只激活部分专家。
低精度部署损害能力,怎么办?
从 SFT 阶段开始进行量化感知训练,让模型主动适应 MXFP4 权重和 MXFP8 激活。
这些设计并没有消除大模型的成本。
K3 依然需要巨大的权重存储、复杂的推理系统和高性能硬件。
它真正证明的不是“硬件不再重要”,而是:
当模型规模接近传统架构的成本极限时,继续扩展不能只靠堆参数,还必须重新设计信息存储、网络深度、专家路由和数值精度。
参数规模决定模型有多大。
扩展效率决定这个模型是否真正可训练、可运行、可继续演进。
这才是 Kimi K3 最值得研究的地方。

501

被折叠的 条评论
为什么被折叠?



