7月几天之内,中国大模型行业接连出现了两个超过2万亿参数的模型。
Kimi率先发布K3。它的总参数量2.78万亿,每个Token激活约1042亿参数,拥有896个路由专家,支持最长100万Token上下文。
随后,阿里又预览了总参数量2.4万亿的Qwen3.8-Max。
两个2T以上模型前后脚出现,说明训练一个3T级模型有了一些具体的、可复用的配方。
而这个配方,K3的技术报告都已经给了出来。
大家都觉得训练一个3T参数的模型很难,尤其是中国开源模型训练出这个大小的模型,更难。
因为中国的算力有一些瓶颈。
Kimi 没有披露 K3 主预训练使用了多少张卡、什么型号,也没有公布训练 Token 总量和 GPU 小时,但其资源区间应该与DeepSeek相似。他们手上并不缺数千张 Hopper 等效卡,但应该没有可以大规模铺开的 GB200 NVL72 或同等级超级节点。
这正是理解 K3 的起点。
01
训练没有门槛,效率和效果才是门槛
训练一个模型,原本可以拆成五个问题。模型、梯度和优化器状态能不能装得下,算力是不是能够算得动,数据能不能在数千张卡之间传得动,数据到位后 GPU 能不能持续算得满,花出去的计算最后能不能让模型学得好。
第一步是装得下。
K3 是 MoE 模型。每读入一个 Token,并不会调用全部 2.78T 参数,而是激活约16个专家MoE,约计 104.2B 参数。
K3 的 2.78T 参数只按 BF16 保存一份权重,就需要大约 5.56TB。BF16 是训练常用的 16 位浮点格式,每个参数占 2 字节。训练时还需要梯度、优化器状态、各层产生的中间激活和通信缓冲,整个系统要管理的是几十 TB 数据。
因此理论上,2.78T的参数,只需要70多张 80GB GPU 理就能放得下,用上千张就能训练的起来。
但你得先把它们给拆开,并有效存储,还能互相连通着能汇总信息跑的下去。过去几年形成的分布式训练方法,解决的就是怎样拆。
2019 年的 Megatron-LM 给出了 Transformer 大矩阵的实用切法。2021 年,NVIDIA 又将张量、流水线和数据并行组合起来,在 3072 张 A100 上就跑通了 1T 稠密模型的训练迭代。它其实已经证明了,模型只要能够沿矩阵、网络层和训练数据等方向拆开,万亿参数就不再存在不可跨越的容量上限。
理论上,模型继续扩大,只需要增加设备和切分规模。
当然模型真正开始训练后,前向传播产生的中间结果要暂时保留,反向传播还需要梯度和优化器状态,都要有地方存。不同设备通信时,也要准备收发缓冲区。而这种计算过程中,任何一类数据在同一时刻集中出现,都可能让某张GPU显存撑不住。
因此,一般的训练体系中还得有一个统一调度,防止存储「冒顶」现象的出现。比如 K3 通过Unified Activation Manager,也就是统一激活管理器,把它们整合成张量级的存储调度。每个反向传播需要的中间结果,都可以由这个管理器动态决定是留在GPU、还是转到CPU的存储去,是压缩成FP8,还是干脆不保存,等反向传播时重新计算。

它像一个统一仓储系统。马上要用、重新制造又昂贵的零件放在线边、暂时不用的送去外仓。体积大的压缩存放,便宜易造的零件不留库存,用到时再生产。
这种细粒度调度则就负责避免训练运行到某一层、某个批次时突然局部爆仓。
到这一步,就是能切,能训不炸了。
但能切不等于能高效训练。模型切得越散,原本发生在一张GPU内部的数据交换,就越多地变成跨卡通信。而且,设备增加以后,专家负载、流水线等待和故障概率也会同步上升。
因此,能切以后,大模型竞争的核心从「参数能不能放下」,转向四个问题。怎么才能算的更快,卡间需要传多少数据,GPU有多少时间真正用于计算,以及每单位FLOPs能换来多少模型质量。
能在有限算力中高效训练出来,更大参数这件事儿才能成立。
而过往的经验中,大家都也都是主要在这四个点上下功夫。招式也几乎差不多。比如到了 DeepSeek-V3 这一代,大规模 MoE 的主要优化方向已经基本定型。
招数可以分为几大方向。
算得动,主要靠修改注意力机制,减少长上下文的存储与计算。DeepSeek从MLA开始选择了稀疏路径,Minimax和Kimi选择了线性。
传得了,一来是控制单个 Token 的激活成本。总参数继续扩大,但每个 Token 实际调用的参数、产生的计算和通信不能同步增长。这就是MoE的作用。
二是把训练精度压小,比如用FP8,乃至FP4的数据训练。
三来是疏通堵点,比如平衡专家负载,避免少数热门专家堵住整个集群。DeepSeek 使用无辅助损失负载均衡。
算的满,主要依靠重排并行与流水线,让通信和计算重叠,挤掉 GPU 空等的气泡。
最终,依靠压缩稀疏处理和高效运用GPU,模型训连的整体速度自然快。
但学得快还有另一层意思,就是提高每单位训练计算的学习回报。这可以通过优化器(Muon)和残差流改造。
这套框架和方法点,后来的 DeepSeek-V4 和 Kimi K3 这次在模型上的三项架构改造基本上是完整的进行了继承,只是增加了细化。

但K3面对了一些新挑战。
从1T道2.8T,新增参数必须以某种方式进入模型的实际计算,而且得让它尽可能有用。不然就白白浪费了。K3因此同时扩大了宽度、深度和长度。
变宽最直接地产生参数。K3把路由专家从384个增加到896个,让模型拥有更大的专业参数库。同时把每Token激活专家从8个增加到16个,使新增容量不只是静静躺在模型里,而能更多地参与一次计算。
变深增加每个Token接受加工的次数。K3从61层增加到93层,使信息能够经过更多轮变换。只增加专家,相当于扩建图书馆,却没有增加研究员处理材料的步骤。增加深度,才让模型能够把更大的参数容量组织成更复杂的表示和推理过程。
变长则扩大模型需要处理的问题范围。上下文从128K增加到100万Token,并不会直接增加参数,但它让更大的模型在训练中面对更长的依赖、更复杂的材料和更长期的任务。否则模型虽然拥有2.8T参数,训练时仍只处理较短的信息片段,新增容量未必能转化成长程能力。
100万Token会让全局注意力计算急剧增长,算不过来。K2还能用的MLA必须得换成线性了。
更多专家和一次用一倍的专家,则会增加通讯负担和负载不均风险。
93层会增加学习的效果压力,残差在越来越深的层里迷失,就学不会了。
因为当前算力本身的限制,算的过来和传的动是最大的卡点。因此和DeepSeek一样,在稀疏和均衡上,Kimi先下了大力。
02
第一关:KDA 解决算得动
K3 把上下文从 128K 拉到 1M,网络又从K2时代的 61 层加深到 93 层。如果 93 层全部沿用 MLA,序列长度增加约八倍后,算力的增加完全没法处理。
这是因为全注意力处理 100 万个 Token 时,会把所有词全部摆开,让每个新词都能看到之前的所有词。代价是 100 万 × 100 万 = 1 万亿次巨量计算。
而线性注意力的核心目标,它不再保留全部历史,而是把读过的内容不断压进一个固定大小的状态矩阵。是把全注意力那个存储了所有历史信息的的NxN的巨大矩阵,压缩成一个小巧的、可以持续更新的记忆胶囊。
它维护一个固定大小的状态向量(比如 128 维),每来一个新词就更新这个状态。写入新信息,部分保留旧信息,部分遗忘。无论序列多长,只存储这个固定大小的状态,计算量降到 O(N),内存变成恒定。
材料从一万字增加到一百万字,这个胶囊还是一样的大小。
除了算的快以外,线性注意力也从根本上改变了长上下文的成本曲线。由于每一步面对的状态大小基本不变,序列增加一倍,注意力计算通常只增加一倍,而不是四倍。
但线性注意力本质上,是在用“有损压缩”换取效率。这种有损压缩带来的核心问题是精确检索困难。当你需要从 100 万个 Token 中精确找回第 3 万个位置的某个关键信息时,那个被压缩了 97 万次的状态,已经很难给你准确答案了。
想要让它能减少这种压缩中的损失,就得让它更好的选择记忆什么和忘掉什么。
这就靠的是 Kimi Linear 架构的核心,KDA(Kimi Delta Attention)注意力机制。

(K3的架构整体)
一个token进入后要经历生成控制信号 → 遗忘旧状态 → 按更新强度纠错写入 → 读取新状态 → 输出门筛选 → 送入下一层的全流程。

先过的是通道级的遗忘门,它确定哪个状态可以被遗忘。
为了保证更精细地管理有限记忆,KDA在注意力头中引入了「通道级别」的细粒度门控机制。在遗忘门这里,就是可以保证状态矩阵的不同方向可以用不同速度衰减。比如实体关系可能需要长期保留,局部措辞和临时格式则可以更快淡化。这样关键结论记得久,临时提醒会加速被忘掉。
Kimi Linear允许模型在一步之内,把某个记忆通道几乎完全清空。这样看起来很灵活,却会给并行计算制造麻烦。KDA为了同时计算一小段Token,需要先把不同位置经历的衰减换算到同一尺度。如果某段信息已经被淡化到接近零,计算机就必须用一个极大的倍数把它重新放大,数字很容易超出BF16能够表示的范围。
同一个小块内部的部分位置关系,也因此无法使用GPU最擅长的整块矩阵乘法,只能逐对处理。
K3给遗忘踩了一脚刹车,单步保留率最低约为0.67%,不允许任何通道在一步内彻底归零。这不会让模型忘不掉,因为连续多步衰减后,信息仍会迅速变得极小。它只是避免计算过程中突然出现过于极端的数字,KDA也因而跑得更稳、更快。
下一步纠错写入的更新的规则,KDA 用了 Delta Rule,也就是增量纠错规则。模型写入新内容前,会先根据当前 Key 从状态中读一次,比较现有记忆与新 Value 的差异,再针对误差做修改。靠着它,线性注意力可以记得更准。
KDA 完成修改后并不直接把token送到后面的神经网络中,这里还有一道输出门。它负责决定候选信息里的哪些特征可以进入下一层。
可以把它想成一间录音室。模型的Query操作先从新改好的资料库里找回许多声部,输出门再像调音台一样,压低这次任务无关的通道,放大有用信号。
它不会修改笔记里长期保存了什么,只控制这一次读出的内容怎样影响后续计算。
K3 为了进一步保证信息更有效的输出,把原始Linear的低秩输出门改成了全秩输出,让当前 Token 可以更细地调节各个输出通道。它增加了一点计算,却让固定状态的读取更灵活。
即使如此,固定状态一定会损失细节。它不可能无损装下一百万 Token 的每个字符。K3 因此没有完全放弃全局 Attention,而是沿用 Kimi Linear 的 3∶1 混合结构:连续三层 KDA 后插入一层 MLA。K3 最终有 69 层 KDA 和 24 层 MLA,并在模型末尾用 MLA 收尾。
固定状态一定会损失细节。它不可能无损装下一百万 Token 的每个字符。K3 因此没有完全放弃全局 Attention,而是沿用 Kimi Linear 的 3∶1 混合结构:连续三层 KDA 后插入一层 MLA。K3 最终有 69 层 KDA 和 24 层 MLA,并在模型末尾用 MLA 收尾。
MLA负责定期重新查看全部历史Token,弥补线性注意力难以精确找回原文细节的问题。
K3的MLA不再使用显式位置编码,前后顺序和远近信息主要由KDA提供,因此扩展上下文时不必重新调整RoPE,计算量也有明显减少。
多数注意力层的计算变成近似线性增长,大幅减少,这样大幅减少了算力需求,算的动了。
03
第二关,压缩和防堵车系统解决传得了
所有分布式训练方法都在做同一笔交换:用通信换显存。
一个公司,把机器、楼层、专业车间和账本分散到不同园区,确实解决了单个园区装不下的问题;但从此以后,半成品、生产记录和结算信息都必须在园区之间运输。
因此并行之后,信息传递就大大增大了。
而并行的方法很多,又分成张量并行把同一层的巨大矩阵切给多张GPU。流水线并行把不同网络层交给不同设备组。每张卡只需要保存部分层及其训练状态。数据并行让多个设备组同时处理不同训练样本,它换来的是更高的Token吞吐。
上下文并行则是把一条长序列沿Token方向分给多张GPU。它换来的是每张卡只保存和处理一部分上下文序列的激活。
专家并行则是MoE独有的特色,它把不同专家固定在不同GPU上,换来的是每张卡只保存专家池的一部分,而不是全部896个专家。但代价是专家权重虽然不动,Token却必须移动,一组训练数据得在被激活的专家间来回跑。
LatentMoE ,压缩更多专家带来的膨胀
虽然有这么多并行模式,但这次承担参数增长的主要是专家总数和激活专家数量增多。
MoE模型,并不会让每个Token都经过全部参数。每个Token只选择其中几个,而这一次训练中主要的信息传递就发生在 token的激活被分发被选中的专家,专家完成计算后,再将多路结果返回并汇总。
而K3把每Token激活专家从8个增加到16个,压力一下子翻了一倍,专家并行自然成为「传得动」的主要难题。
针对这一问题,K3采用了Nvida在1月提出的 LatentMoE 技术,可译作潜在空间混合专家,就是把需要分给专家的参数压缩一倍。

K3 的两个共享专家仍在 7168 维主空间工作,所有 Token 都会经过它们。路由专家收到数据前,系统先用一次下投影,把 Token 从 7168 维压缩到 3584 维潜在空间。而16 个路由专家只处理这份半宽表示,结果汇总后,再投影回 7168 维。
未经压缩的K2需要处理的维度是8 个专家 × 7168 维 = 57,344,经过LatentMoE 压缩后,K3则是16 个专家 × 3584 维 = 57,344,刚好完全一致。
靠着这一手,专家数量增加了,需要传递的材料总量并没变厚。
这不等于 K3 的整体通信和 K2 相同。但K3从61层增加到93层,MoE层数量也从约60层增至92层,深度还是增加了的。但K3从61层增加到93层,Token需要经历更多轮专家分发与结果回收。
但 LatentMoE 消掉的是最危险的一次乘法,专家调用翻倍,不再直接乘上完整表示宽度。
KDA 上下文并行,让上下文的交接变薄
另一个大幅增加的传输压力,来自于上下文并行。原来不到1M的上下文并不需要很多并行,但K3是需要的。
为应对这一点,KDA 在卡间通信上做了更多优化,这就是KDA Context Parallelism,即 KDA 上下文并行。

全局 Attention 做上下文并行时,把长上下文切成小块分给多个GPU去计算,不同 GPU 要随时交换随序列增长的 Key 和 Value。但KDA则要求每张GPU先在本地处理自己负责的那一小段序列片段,然后总结出两项信息。一是这一段会怎样修改此前传入的记忆状态,二是假设进入时没有旧记忆,这一段自己会生成什么状态。
这像每位研究员不再复印整章逐句索引,而只提交一份格式固定的交接表,里面写着这一章会怎样修改前面的结论,以及新增了哪些结论。
一章是1万字还是10万字,GPU在本地需要做的阅读工作会增加,但最终交出的交接表大小基本不变。
然后总编按章节顺序合并这两类信息,便能恢复出每一章之前的准确笔记。技术上,这个顺序合并叫 Prefix Scan,也就是前缀扫描。
这样,模型计算需要交换的对象就变得大小固定,不再随本段 Token 数量一起增长。这在长上下文训练情况下大幅同样大幅降低了跨GPU通讯的压力。
Quantile Balancing,解决线路堵车问题
平均通信量被压下来,MoE的网络仍然可能会被堵死。
路由器不会自然把 Token 均匀分给 896 个专家。某批代码数据可能让一组专家特别热门,另一组专家几乎无人访问。如果几个热门专家恰好在同一张 GPU 上,这张卡就会收到大量 Token。其他卡已经算完,也只能等它。
DeepSeek-V3之前,MoE通常会在主训练目标之外增加一个负载均衡损失,迫使Token平均选择专家。但这个额外目标可能干扰模型学习,路由器为了平均分配任务,