Bilibili2小时4分20秒 · —

K3 模型技术报告领读:架构创新、历史脉络与工程实践

K3 模型技术报告领读:架构创新、历史脉络与工程实践

K3 是 MiniMax 发布的有效扩展到 2.8T 总参数且全量开源的 MoE 模型,其价值不仅是架构创新本身,更在于它是国内第一个把模型规模推到新量级并打通全流程的实践;然而大模型领域可能已无巨大范式创新,后续进步将主要是改良性的。

背景与主题

本期节目是学习播客,主题为领读 MiniMax K3 技术报告,目标是理解 K3 模型的技术创新与历史脉络。主讲嘉宾为孙雨涛(节目中口述为“孙宇涛”,两人名多次混用),清华大学计算机系博士候选人,上海创智学院浦睿学者(“普瑞学者”),博士研究方向为 LLM 架构与预训练,核心兴趣是架构创新。孙雨涛自 2023 年开始博士研究(当时 ChatGPT 刚发布一段时间),但架构研究在 ChatGPT 发布前已开始。

主讲结构并非完全按 K3 论文展开,而是以 K3 为出发点,串联相关历史研究脉络,共涉及十多篇论文/技术报告。节目内容分三段:第一段涵盖背景、核心观点、孙雨涛个人工作(线性注意力、YOCO、大学模型、gated DeltaNet 等)及相关讨论;第二段聚焦 K3 的模型架构核心创新(Latent MoE、C-to-G、Q-Bias、优化器选择、位置编码)、预训练策略和后训练阶段;第三段深入大规模模型训练与推理的工程细节,包括 MTP、线性注意力分布式计算、MoE 的 EP 优化、多模态与 RL 训练工程问题。

核心要点

大模型智能的决定因素与研究方向转变

  • 参数量是最本质的决定因素:大模型智能最本质的决定因素是参数量,参数量是解决模型智能最有效的单一方式。架构改进带来的性能提升相对参数提升是相当微小的,但不同架构在推理效率与部署成本上差异巨大。“对于模型的性能而言,模型的参数量永远是一个最主要的一个因素……不同的架构在模型的推理方面性能差异是巨大的,而且这个也是主要决定了模型最后的一个部署的架格(价格)。”
  • 业界研究方向从性能导向转变为效率导向:ViT/ImageNet 时代追求更精妙架构提升表现,大模型时代则关注推理高效性与部署成本。
  • 对未来架构创新的预判:嘉宾预测 2026 年架构创新能做的越来越少。“大模型可能没有太大的创新了,后面都是一些改良性的进步。”
  • 架构演进是连续替换过程:以“忒修斯之船”类比——2017 年 Transformer 初期核心是 attention,随着时间推移部件一直被替换,最终是否还能称之为“原版”是个哲学问题。当前模型训练没有巨大的“范式创新”,而是将之前诸多工作糅合起来,寻找更优的组合。
  • 架构创新的价值:“我觉得架构创新比较有意思,就是比较好玩……它比较能起到一个四两拨千斤的效果。”

关于 MiniMax 与前人工作的态度

K3 技术报告引用前人工作时态度客观真实:“K 3 是一个比较好的点——他(MiniMax)比较客观或者说比较真实……前任的一些工作用一个比较可靠的方式引出来,不会说想办法去削弱之前一些人的贡献。”

K3 与 K2、DeepSeek 的关系

  • K2 主要沿用 DeepSeek 结构,发力点在模型扩展(scaling)本身,较少涉及架构创新。
  • K3 引入了大量架构创新(gate MLA、Latent MoE、gated DeltaNet、NoPE、Q-Bias 等),观感与 K2 差异显著。
  • K3 发布时点,其模型参数量比国内其他开源模型大很多(K3 之前国内最大开源模型约为千问 72B)。

孙雨涛第一篇工作:线性注意力与混合注意力探索

问题背景

2023 年开始探索线性注意力方向时,已有一个公认结论:纯线性注意力在有限上下文内难以达到与全注意力相同的性能

解决思路一:引入位置衰减项

在线性注意力中引入位置衰减项(如 RoPE 或衰减项),使模型获得位置感知能力。这一方向的代表工作是 RetNet。

解决思路二:chunkwise/blockwise recurrent 计算形式

提出 chunkwise/blockwise recurrent 计算形式作为 parallel(类全注意力)与 full recurrent 之间的 trade-off——获得整体计算复杂度收益,同时在 kernel 层面尽量调用 tensor core 提升局部计算密度。后续所有线性注意力改进工作(包括 Mamba、gated DeltaNet)都基于这一计算模式。

解决思路三:转向混合注意力(hybrid attention)

将线性注意力与全注意力组合。实验发现,保持一定全注意力比例可实现无损甚至更好的长上下文效果,从而大规模推广。

关键结论

  • “混合注意力它虽然从架构上来讲是一种 trade off,但是从最后模型本身的表现来说并不是一个 trade off。”
  • 混合注意力的推理加速比与混合比成正比例关系——若全注意力占 1/4(常见 3:1 混合比),最多只能拿到约 4 倍加速比,这是常数级别的改进,不是质的飞跃。“如果认为四分之一(全注意力比例)是一个比较无损的、也是一个比较极限的比例的话,我们其实很难拿到更大的加速比。”
  • 若用纯线性注意力,中间激活值更容易出现 outlier 问题;严格控制离群值必须从模型架构层面直接下手。

第二篇工作:YOCO(You Only Cache Once)

问题背景

从第一性原理出发思考:纯线性注意力为何无法匹敌全注意力性能。若保留获取全量上下文信息的基本能力,KV cache 无法在 token 维度节省——因此选择从层间维度节省。

架构设计

  • YOCO 架构:所有层共用一份 KV cache,但保持多层 cross-attention 计算——只保留一份 KV cache,获得与全注意力/混合注意力基本等价的模型计算结果。
  • Prefill 阶段直接跳过 cross-attention 计算——prefill 的唯一目的是获得 KV cache,无需解码每个位置的 next token prediction。
  • decode 阶段保持与传统模型相同的计算能力。

局限

该架构在 KV cache 存储角度达到极致(一份即最少),但未解决 decode 阶段计算开销;后续工作尝试用 sparse attention 解决,但 K3 未采用 sparse attention。

第三篇工作:大学模型(loop model + YOCO 融合)

问题背景

传统 loop model 在保持固定参数量下通过多次迭代提升 FLOPs 以提升能力,但 decode 成本难以忍受——只省参数不省计算,且相同计算下不如直接展开参数的更大模型。传统 loop model 的 value cache 存储随推理深度增加而增加,总 cache 开销相当大。

解决方案

基于 YOCO 架构做位置上的改变——将 loop 单元变成 high-efficiency 单元。YOCO 是两端式混合注意力架构:模型前期为纯线性注意力,后期为全注意力。选择只在前期线性注意力部分应用 loop

优势

  • 线性注意力的 KV cache 微乎其微(增长极小),长上下文下额外计算极小。
  • 获得接近全注意力的模型能力(从 model capability 或 scaling behavior 角度)。
  • 效果:用约 2 倍原模型计算强度,获得约 2 倍性能提升,模型存储和 cache 保持与原模型相当。

gated DeltaNet 的推导与设计

线性注意力历史发展阶段

阶段工作核心特点
早期线性注意力简单 KV 乘法加求和,比 RetNet 更简单,位置无关
引入位置衰减RetNet引入位置相关衰减项,模型具备位置感知能力;几乎所有后续工作保留此衰减项
标准计算模式chunkwise recurrent块递归计算形式成为后续标准;几乎所有后续改进工作基于此模式
位置衰减细化Mamba将位置无关衰减变为位置有关衰减
引入 gateDeltaNet早于孙雨涛团队,由宋林团队(苏建林团队?)开发并行计算模式;引入 gated delta rule,提升线性注意力上下文容量——在相同 KV cache 大小下从算法上提高上下文容量
结合衰减gated DeltaNet将位置衰减与 DeltaNet 更高容量线性注意力结合

gated DeltaNet 的数学关系

若去掉 α_t 项则退化为经典 DeltaNet,引入衰减后即得 gated DeltaNet。K 3 的 gated DeltaNet 进一步将标量衰减改为 channel-wise 衰减——严格更强(可退化为均匀衰减),但 kernel 实现更复杂。

数值处理技巧:decay 的绝对值位置编码化

为了让 channel-wise decay 易实现且数值稳定,对 Q 和 K 做 decay 的倒数变换——类比 RoPE 用绝对位置表示相对位置。核心思路:若衰减项为 α²(第 0 个 token 对第 2 个 token),则让 Q 先做较大衰减、K 做较大反衰减(如 Q 做 3 次方衰减、K 做 5 次方反衰减),通过乘法结合律得到与原始递归等价的形式。

数值精度问题:K 一侧除以很小的数,数值精度要控制在 BF16 范围内。解法为根据 BF16 动态范围反解,确保在一定 token 区间内衰减不超出 BF16 精度范围。K3 选择了类似 16 个 token 区间内的衰减最大量。这更像是对模型算法层面的限制,使 kernel 在数值上稳定高效。

限制

  • DeltaNet 在早期(未加位置编码)的 benchmark 结果不是特别好。
  • 标量衰减在 kernel 中处理特别容易(一个 tile 一个变量),channel-wise 衰减的处理难度大增。
  • gated DeltaNet 的数值处理需要在特定 token 窗口内控制衰减系数不超出 BF16 动态范围,否则 kernel 效率会降低——这是高效实现与模型表达之间的 trade-off。

关于 MLA 与 MTP 的讨论

MLA 的结构定位与问题

  • MLA 在数学上等价于大号 MQA
  • K3 中 gate MLA 设计:MiniMax 认为 MLA 在全注意力 scope 内是可接受的形式,没有理由改动,故沿用 K2 的 MLA(K2 当时主要跟随 DeepSeek),在此基础上增加 gate 操作,提升训练稳定性。
  • gate attention 最早由千问团队提出(“千面”为语音识别错误,实为千问),主要解决训练稳定性、线性度(linearity)等问题。千问 3 未用,千问 Next(含 3.5、3.6)采用了该架构。
  • DeepSeek V4 因主推 sparse 技术(与 MLA 在 prefill 阶段不完全兼容)而放弃 MLA,改用大号 MQA 形式。
  • MLA 在推理阶段计算远大于实际能力需求,存在计算浪费。

MTP 与 MLA 的关系

罗芙利(DeepSeek 团队,语音识别为“罗夫利”)当时在 V2 flash 中采用 MTP,认为 MLA 对 Chat 场景是优秀结构,但在当时 H 系列芯片上为达到良好访存-计算比设计,计算剩余太多,MTP 能更有效利用算力。

MTP 与 MLA 收益非正交,甚至互相冲突:MTP 本质是用更多 token 同时计算,在 memory-bound 条件下向 compute-bound 方向推进,会大大减小 MLA 的加速比。嘉宾观点:MLA 收益可由更好的参数设计获得绝大部分,MTP 选择不是“公式”,而是一种选择。

Hyper Connection 与 DenseNet 讨论

  • Hyper Connection:在残差分支上用大于模型状态的容量表示模型推理深度上的状态——更大容量必然更好效果;对推理基本免费(几乎不增加推理开销)。论文写得过于抽象,未能出圈,后续 MHS 流行主要是搭了大模型浪潮的便车。
  • DenseNet(黄高,更早的工作):深层要查看所有浅层状态再聚合。在无 attention 时代主要用大 Linear 聚合所有前层 hidden state——当时实现不快(连接带来大量额外计算)。在 Transformer 时代可将 DenseNet 中 heavy 的组件替换成轻量组件,并可用 block 方式解耦模型深度,解决全注意力模型越深上层与底层交互 overhead 越大的问题。
  • 嘉宾个人偏好 DenseNet 与 Hyper Connection:DenseNet 在早期就考虑了连接问题的本质(只是当时没有 attention);Hyper Connection 则在 Transformer 时代将强连接方式重新带回讨论。
  • 关于 Block Attention vs. dense residual:表达能力严格不如 dense residual,但损失不多且相对 baseline 有显著提升。
  • 关于 Pre-LN vs. Post-LN:BERT 时代更常用 Post-LN(结果稍好),但模型增大后出现梯度消失/训练不稳定问题,因此逐渐转向 Pre-LN。T5 采用 Pre-LN,但这不是简单的摆放方式区别——它严格更强,必须能退化为更强形式才能被大规模采用。

第 2 段:K3 架构核心创新

核心结论与观点(第 2 段)

  • 两个矩阵连乘与训练稳定性:两个线性层连续相乘在理论上可合并为一个线性层,不会改变模型表达能力,但在实际优化中常导致训练不稳定。因此,若架构需要将矩阵拆开(如低秩投影后再映射回高维),必须在中间加入 Normalization(如 RMSNorm)来控制中间状态,提升训练稳定性。
  • 当前模型研究范式:没有巨大的“范式创新”,而是将之前诸多工作糅合起来,寻找更优的组合。

Latent MoE

是什么:通过将 token dispatch 到低维空间来减少通信量的 MoE 架构。DeepSeek(V3)是采用 Latent MoE 的代表性模型,Kimi K3 也采用了此类结构。

为什么重要:相比传统 MoE,Latent MoE 的核心动机是降低 MoE 中 token dispatch 的通信开销(overhead)。在推理阶段,通信开销处于 critical path 上,难以完全掩盖,因此模型推理效率的收益大于训练效率的收益。

依据与适用条件:若设计得当(如 DeepSeek 的配置),Latent MoE 可以在完全保持甚至提升模型表达能力的前提下降低通信量,被视为一种“free lunch”式结构。“如果一个恰当设计的 Latent MoE 的 configuration,它其实是可以完全保持这个 standard MoE 的这样的一个结果的。就是也就是说我们可以在这个模型能力完全相等,甚至还能好一点的 context 底下,然后来去减少模型的通信开销。”

方法:在 dispatch 前将 state 降维(如减小 2 倍或 4 倍),再通过提升 FFN 参数量或增加 expert 数量来弥补模型表达能力。

限制:核心前提是通信开销需被有效控制。论文中结果(表现更好)可能是特定配置下的结果,需验证。

C-to-G(Soft Clip 激活函数)

是什么:将有上下界的 H 激活函数(Soft Clip)替换 FFN 中间的无界线性投影结果,严格约束激活值范围。

为什么重要:大模型 FFN 中间层激活值容易爆炸,且与优化器选择(如 Adam 比 Muon 更容易产生 outlier)和模型精度(低精度更容易出现)相关。这是从模型架构上根本性控制模型行为的思路,比依赖优化器细节更本质。

方法:将 FFN 中间的无界线性投影替换为 H 函数(Soft Clip),并处理 QK 部分可能出现的问题(如用 RMSNorm 或 QK-Clip 等),从而保证整个中间激活值有界。可设定 clip 值(如 5 到 10)来严格限制激活值的数学上限。

限制:该设计对模型表达能力的具体影响需要实验证明,讨论者认为它是一个相对安全的做法,但并非最优。

Q-Bias 与负载均衡

是什么:Q-Bias 是解决 MoE 专家负载不均衡的一种新方案(苏建林博客提出),通过为每个 expert 计算一个 bias 实现负载均衡。

为什么重要:区别于之前的 Aux Loss(加额外 loss)和 Loss-Free(启发式调整 bias)等方案,Q-Bias 可以从数学上推导出最优 bias 值,无需调参(少一个类似 learning rate 的参数),更 principled,且性能更优。可处理之前 Loss-Free 在前几层失效的问题(即前几层必须用 Dense 或加辅助 loss 的问题)。

方法

  1. 为每个 expert 计算一个 bias,使其负载均衡。
  2. 计算方式:对当前 step 的 token 激活情况(如分位数)求 bias。Bias 的计算方式与 expert choice 机制相关。
  3. 为避免信息泄露,bias 在下一个 step 才使用(延迟一步)。
  4. 工程实现:在超大 batch(如几十 million tokens)场景下,为计算分位数,需采用常数大小的直方图(Histogram)统计,在每个 GPU 上本地统计后聚合,将计算复杂度降至常数级且易于扩展。

限制:讨论了其与 Loss-Free 的数学形式的等价性(在特定条件下)。Q-Bias 的更新方式在数学上没有一个严格的收敛标准(与主模型更新耦合度不高),尽管在实践中能 work。

位置编码(NoPE)

是什么:在混合注意力模型中,去掉全注意力层的 RoPE(即 NoPE),利用线性注意力层注入位置信息。

为什么重要:RoPE 本质上只提供短期(recent)位置信息,对模型的长上下文能力没有帮助甚至有负面影响。使用 NoPE 不仅提升模型表现,更重要的是在扩展上下文长度时无需调整任何架构参数(RoPE 需根据不同长度调参),对长上下文外推极其有效。

依据:K3 团队内部验证有效的方案。但在其他混合注意力模型中的适用性尚需交叉验证。

WSD 学习率策略的取舍

背景:MiniMind 团队提出 WSD(Warmup-Stable-Decay)学习率策略,将数据策略(如高质量数据放在 Decay 阶段)与学习率衰减结合,可获得更好效果。

K3 不采用 WSD 的原因

  • WSD 的实际调节难度与普通 cosine 一样。
  • 任意扩展训练 token 数并非 WSD 独有能力。
  • WSD 多一个需要调节的变量(decay 比例),而 cosine 只有两个变量(训练 token 数、峰值学习率),更容易调参。

限制:WSD 允许任意扩展训练 token 数,但最优学习率与训练 token 数相关(如 10T 对应 6e-4,20T 对应 3e-4),因此“自由扩展”并非完全没有代价。

低精度训练的引入时机

K3 的方案:先用高精度训练,在 SFT 阶段再引入低精度量化(如从 W8A8 到 W4A8)。

理由

  • 从项目管理角度看,大规模训练采用高精度更保险,因为低精度在超大规模训练中的未知风险不可控。
  • 从技术角度看,低精度训练(如 W4A8)从零开始引入并无必要,只要训练量足够,最终效果与在 SFT 阶段才引入差不多。
  • “如果用低精度训练,最后的结果和复现的难度……最后都会落到一个差不多的位置,所以在 SFT 阶段引入低精度是一个更保险、技术上也无损的方式。”

限制:团队发现低精度训练并没有带来额外收益,但对超大规模训练中低精度的影响无法被“提前充分验证”,仍有一定风险。

稀疏注意力(Sparse Attention)的取舍

为何不采用

  • 在现有硬件(Blackwell)上,稀疏注意力的 index 计算开销过大,实际加速收益很小,甚至得不偿失。
  • 越先进的硬件,稀疏注意力的 index 计算开销越大。
  • 若要获得实际收益,需跨层共享 index(如 Index Cache 方案),但这对混合注意力模型不适用(因为不同注意力层之间隔着大量线性注意力层)。
  • 稀疏注意力难以从零训练(From Scratch),通常需从全注意力模型后训练转换而来,兼容性差。

改进方案讨论:一是 Index Cache(跨层共享 attention index);二是更激进的方案,如直接对 index 层也进行“once”处理,将 index 开销分摊到所有层。前提是能获得实际计算收益。

关于 Q-K Clip 与优化器选择

推测(讨论者认为)苏建林对“使用 Adam 会导致激活值爆炸、需用 Muon”的观点持反对意见,认为任何优化器都可能产生 outlier,只有从模型架构本身下手才能严格限制模型行为。K3 团队使用了 Muon 优化器并配合 QK-Clip 等技术来针对性处理。

限制:Q-K Clip 与 Muon 优化器的结合使用存在一些限制,例如某些模型(如 M1A)无法使用 Q-K Clip。

蒸馏与 On-Policy 训练

Online Policy(原 Reverse Scaling)取代经典蒸馏,成为主流微调方式。其动机:

  1. 自己蒸馏自己可简化团队管理(避免合并不同策略的 SFT 数据)。
  2. 技术上将不同能力(如不同 Reward Model、不同 RL 范式)合并比为不同模型合并(MoE/模型集成)更容易,因为模型是同构的,而数据/奖励是异构的。

第 3 段:大规模训练与推理的工程细节

推理加速:MTP 与 Draft Model

  • 核心思想:该类服务主要面向愿意付出更高成本但追求更强推理速度的用户群体。对于追求整体吞吐(throughput)的服务场景,这类方案收益较小;但在小 batch size、大 prompt 的场景下,收益会强很多。
  • MTP 改进:早期方案使用与主模型无关的小模型来服务大模型,无法充分利用大模型中间的 hidden state。如果能利用大模型中间的 hidden state,就能把小模型做得更小,或在相同参数量下提高接受率(acceptance rate),最终带来更强的整体推理效率。MTP 从零训练(from scratch)还有别的好处。
  • 与 Diffusion Language Model 的联系:DeepSeek 的 DSA(或类似方案)将传统语言模型和 diffusion language model 两条脉络联系起来。Diffusion language model 的核心主张是:在单用户或 batch size 较小的情况下,推理效率可以比传统语言模型快很多。但缺点有二:一是从零训练时的训练效率不够高,结果难以与传统 AR 语言模型匹敌;二是只能处理小 batch size 的输入,在多用户追求总吞吐的场景下没有优势。DeepSeek 的方案试图统一两者。
  • MTP 与预训练的关系:即使使用更先进的 draft model 策略,它与预训练(pretraining)的关系仍然很大。Draft model 需要在大模型的一定推理能力基础上才能进一步发挥作用,因此 MTP 需要在预训练阶段就提供一个接口(interface),这个接口对下游 draft model 的提升特别有帮助。
  • Draft model 自身的特化处理:可以用某种替代方式(可能指特定编解码方式)取代传统预测方式,使 draft model 与原始模型的对齐更好,进一步提升接受率。作者认为这一方向还会有更深层次的工作。

线性注意力的 CP(上下文并行)方案

  • 对于 sliding window 或 full attention 的 CP,概念上较简单——可以把所有需要的数据拿到一张卡上做计算。
  • 对 linear attention 的 CP,基本框架仍是经典的 chunk-wise recurrent:
  • 单机不开 CP 的训练场景下分两层:小的 chunk(如 16 个 state)之间用递归方式计算;chunk 内部用并行方式计算,KDA(可能指某种内核设计)也是这样做的。
  • chunk 之间的串行计算限制了并行度(KDA 的 decay 限制解决的是 chunk 内部的并行计算效率)。

纯 linear attention 的 CP 核心特性:chunk 可以任意拆分,数学上完全等价(不同 chunk 大小如 512 token 或 8K token 结果一致)。这跟拼接式方案(如 chunk 间用 linear attention、chunk 内用 full attention)不同——后者 chunk 大小与模型架构设计有关,纯 linear attention 则无关。

据此构建层次化 CP

  • 第一层:在机器间以 8K token 为一个 chunk,放一张卡,卡间采取递归计算。
  • 第二层:拿了 8K 后内部进一步拆分,在不同 GPU 的 kernel 层次再做一次 chunk。
  • 这构建了“chunk 套 chunk”的双重递归形式,即 linear attention 的 CP 方案。

MoE 的 EP(专家并行)优化

传统 EP 的问题:每个 token 选哪个专家不受整体约束,导致不同专家负载不同。两个具体问题:

  • 问题一:每张卡分到的 token 数不同,执行时间不同,互相等待浪费算力。
  • 问题二:各卡 token 数不确定,通信多一个阶段——先告知所有 GPU 要接收多少 token,再发送 token。严格来说传统 EP 不是最优方案。

理论最优方案:带 job 平衡的 EP——通过全局影响每个 token 的分配,用一系列分配算法让每个 expert 收到完全均匀的 token。但强制均衡会损失模型能力(load balancing token 方案大家都不用,因为对模型能力损失明显)。

K3 的 MoE EP 方案(更动态的方案)

  • 经典方案是静态的(如 128 专家,EP 8,每卡放 16 专家)。
  • K3 采用动态方案,引入冗余专家。数学上可以证明:只需增加一小比例冗余专家,就能保证各卡 token 数的完全对齐(典型的算法与数据结构问题)。
  • 具体实现采用 online planning 的方式,提前规划哪些卡放哪些冗余专家,实现不同卡间 token 数的完全均衡。

限制:卡间均衡并不代表专家层面均衡——该算法只保证每张卡的总 token 数固定,不保证每个专家的 token 数固定(因为卡内有多个专家)。要保证专家层面的完全均衡只能采取有损策略。

K3 与 DeepSeek(V3)的通信优化与 PP 策略对比

K3 的通信优化方式

  • K3 采用 latent MoE,极大降低了通信开销,因此通信量小得多,不需要跨 batch 做 overlap,可在 batch 内部用更简单的 overlap 手段隐藏通信。
  • 具体方案:把 MoE 的前向和后向通信与 shared expert 的计算 overlap 在一起(shared expert 有足够计算量且计算开销小)。
  • 若用传统 MoE,通信开销大,shared expert 无法完全 overlap,就必须把另一个 batch 拿进来才能完美隐藏通信。不同的模型架构带来了不同的 overlap 策略。
  • 这一策略的好处:推理的关键路径延迟(critical path latency)是免费的。

K3 的 offloading 策略:K3 采用大规模 offloading(把中间计算结果 offload 到 CPU),这是 V3 没有采用的。offloading 不拖慢训练的条件:必须保证 CPU-GPU 间的通信满足某个不等式,才能完全用计算 overlap 通信。为达成 overlap,把所有能 offload 的都使用 BF16 节省一倍显存,以跨越边界。具体边界计算取决于具体环境(集群环境和模型配置)。

DeepSeek V3 的通信优化方式

  • 一方面做细粒度的 MoE 角度的 overlap:MoE 中间有两个通信操作(dispatch 和 combine),开销很大。V3 把一个 batch 的 MoE backward 与下一个 batch 的 forward 融合,通过重排序计算顺序,把 dispatch 和 combine 的通信都隐藏。这要求把所有 forward 和 backward 计算从原子计算层面拆开手工重排,复杂度很高。
  • 另一方面采用 DOPP(也许指 DoMo 并行或类似策略)缓解 PP 气泡和不均匀。

PP 层面的处理差异

  • DOPP 或 DOPP+V 的 PP 排布方式使不同 PP rank 间相对对称;单向 PP 则不对称。
  • 不对称的两种解决方式:一是让 PP 变得对称;二是 K3 论文讨论的——把不均衡的显存占用转嫁掉。例如前面的 PP rank 进入更早、积累更多 batch、activation 压力更大,K3 把 memory 占用较大的 rank 直接存到较小的 rank 上,通过这种较简单的方式替代更复杂的 DOPP 设计。

关于“完美隐藏通信并非完全无损”:即使完美实现通信与计算隐藏,计算也会相对慢一些。DeepSeek 的 DP 优化方式是用足够少的 SBM 占用获得更大的整体通信吞吐,以让 overlap 跑得更快。

MoE 的优化器切分问题:MoE 需要全矩阵做牛顿(Newton)迭代(此处可能指二阶优化)。用传统 Adam 优化时把所有参数摊平再切分不会影响优化结果(因为 Adam 是 adwise 优化),但对 MoE 有影响——在某个 rank 上需要把一个矩阵的所有参数保存下来。所以需要在 MoE 这个角度做特殊处理才能更好地切分。

多模态训练中的特殊处理

  • 每引入多模态的一项功能,工程的难度直线提升。
  • Vision encoder 的处理:视觉 token 输入到大模型前通常被压缩(如输入前是 32K token,输入后是 8K token),但压缩在接入模型之前没有在 vision encoder 内部做,所以 vision encoder 内部计算会更长。解决办法可能是对 vision encoder 单独开 CP。
  • PP 与多模态:做 VLM 训练时每个 batch 中 VL token 只是一个比例,某些卡可能是纯文本、另一张卡可能是纯视觉的 VL 比例很大的状态。这种不均匀会影响 DP 也会影响 PP——需保证 PP 各阶段比较均匀才能让流水线打满。如果把 vision encoder 放在 PP 开头,会显著增强第一个 PP 阶段的计算强度,破坏流水线打满状态。
  • K3 的规避方式:不把 PP 放在整条流水线的开头,而是放在中间或尾巴上。在前面的浅层 language model 处理过程中,中间的 PP 是闲置的,可把 vision encoder 后面的一些步骤提前算出来,规避第一个 PP 阶段过重带来的气泡。

RL 训练的工程问题

  • RL 涉及大规模 sandbox(沙箱环境),有比较细的要求。每个 trajectory 可能对应一个自己的 docker,如何管理大规模 docker 是麻烦的问题。
  • K3 的一个优化:省一个 gradient buffer——把不同模型的 memory 拖到一块。原因是 reference model 没有梯度,在求 objective 过程中没有 gradient,等有 gradient 之后 reference model 就不再使用了。于是用 gradient buffer reuse for non-policy model for warding,将 reference model 和 gradient buffer 合并。

推理引擎对混合架构的处理

  • Prefix cache 在 linear attention 中是个麻烦点:对 full attention,每个位置有 cache 且下一个位置的 cache 一定是上一个的简单增量;但 linear attention 每步在原来的 carry cache 基础上做复写,每步的 prefix state 都不一样。全部存起来会失去 linear attention 的优点,完全不存则享受不到 prefix cache 的好处。当前策略是按 block 切:每个 block 做一个 prefix cache。
  • KV cache 的分布式实现:最简单的方式是不考虑层和层之间的一致性。如果要在现有推理引擎(如 vLLM)里引入混合架构,简单改法会把整个引擎搞乱,因为 vLLM 越来越复杂,需要特殊处理,把不同的 attention pattern 结合起来。对 full attention 可按配置管理,但 linear attention 不能按配置管理(不存在一个长久对 token 的生成方式),这需要对 VM 的设计做兼容性处理。

方法与步骤总结

混合注意力的设计原则

  • 3:1 的线性注意力与全注意力混合比是一个能在近似无损的情况下获得加速的经验比例。
  • 在保持一定全注意力比例基础上可实现无损甚至更好的长上下文表现,这是混合注意力被大规模采用的实验依据。

线性注意力分布式计算(CP)的实现步骤

  1. 确认纯 linear attention 的 chunk 可任意拆分,数学上完全等价。
  2. 第一层:机器间以 8K token 为一个 chunk,卡间采取递归计算。
  3. 第二层:拿了 8K 后内部进一步拆分,在不同 GPU 的 kernel 层次再做一次 chunk。
  4. 构建“chunk 套 chunk”的双重递归形式。

MoE 动态 EP 方案的实现步骤

  1. 识别传统 EP 的负载不均衡瓶颈。
  2. 引入一小比例冗余专家。
  3. 采用 online planning 方式,提前规划哪些卡放哪些冗余专家。
  4. 实现不同卡间 token 数的完全均衡。

c-to-g 的设计步骤

  1. 将 FFN 中间的无界线性投影替换为 H 函数(Soft Clip)。
  2. 设定 clip 值(如 5 到 10)限制激活值的数学上限。
  3. 处理 QK 部分可能出现的问题(如用 RMSNorm 或 QK-Clip 等)。
  4. 保证整个中间激活值有界。

Q-Bias 的推导与工程实现步骤

  1. 为每个 expert 计算一个 bias,使其负载均衡。
  2. 计算方式:对当前 step 的 token 激活情况(如分位数)求 bias。
  3. 为避免信息泄露,bias 在下一个 step 才使用。
  4. 在超大 batch 中采用常数大小的直方图(Histogram)技术,在每个 GPU 上本地统计后聚合。

K3 模型关键事实与数据

  • K3:有效扩展到 2.8T 总参数的 MoE 模型,激活参数约 100B 量级(“足足有 100B 量级”,比上一代多了三倍多),上下文扩展至 1M(“one命”为语音识别错误,应为 1M)量级,全量开源。
  • K3 训练规模对比:总参数量从 K2 的约 1T 增至 2.8T(近 3 倍),激活参数量从 32.6B 增至 104B(略高于 3 倍)。模型能力(在下游任务上的表现)提升了 2.5 倍。
  • K3 发布时点,其模型参数量比国内其他开源模型大很多(K3 之前国内最大开源模型约为千问 72B)。
  • K3 的 pre-train data 细节未公开,paper 未写。
  • K3 团队在已有开源模型基础上提升了约一个数量级。
  • 关键技术决策:不采用 WSD 学习率、不采用稀疏注意力、先高精度训练后在 SFT 阶段引入低精度量化、采用 cosine schedule。

限制与待确认问题

架构层面

  • 纯线性注意力在有限上下文内难以匹敌全注意力的性能——公认限制。
  • 混合注意力加速比受混合比限制——若全注意力占 1/4,最大加速比约 4 倍;这是常数级别改进而非质变。
  • DeltaNet 在早期(未加位置编码)的 benchmark 结果不是特别好。
  • Channel-wise 衰减在 kernel 中处理难度大增(vs 标量衰减)。
  • gated DeltaNet 的数值处理需要在特定 token 窗口内控制衰减系数不超出 BF16 动态范围。
  • K3 未采用 sparse attention。
  • MLA 未来是否会成为共识是未决问题;嘉宾认为 MLA 本质上等价于大号 MQA,其收益大多可由更好的参数设计获得,但 MLA 在遵循工程管理原则(能跑的东西不要动)下仍合理。
  • MiniMax 团队在 K3 中未对 MLA 做大的改动(沿用 K2 的 MLA)。
  • DeepSeek V4 因主推 sparse 技术而放弃 MLA,改用大号 MQA 形式。

训练与工程层面

  • 冗余专家 EP 方案只能保证卡间 token 均衡,不能保证专家层面均衡;要专家层面均衡只能采取有损策略。
  • Offloading 的可行性受 CPU-GPU 通信不等式约束。
  • 通信与计算的 overlap 即使在理想的完美情况下也不是完全无损——计算本身会相对慢一些。
  • 多模态 VL 训练中 VL token 比例不均匀会影响 DP 和 PP;需把 vision encoder 放中间或尾巴上。
  • WSD 的“自由扩展”并非完全没有代价(最优学习率与训练 token 数相关)。
  • 稀疏注意力难以从零训练,且不兼容混合注意力架构。
  • Q-K Clip 与 Muon 优化器的结合使用存在一些限制(如 M1A 无法使用 Q-K Clip)。
  • Q-Bias 的更新方式在数学上没有一个严格的收敛标准。

NoPE 的适用性

该方案是 K3 团队内部验证有效的方案,但在其他混合注意力模型(如 Hybrid Attention 模型)中的适用性尚需交叉验证。

团队风格与研究方法论

Kimmy 团队的工作风格

  • Kimmy 团队的特点是团结、能把力量往一处使,杨植麟(Kimmy)没有人怕他——“有道理你就谁有道理谁说了算”,所以是集体工作,不依赖个人英雄主义。
  • 科学化体现在 Kimmy 强调模型内科(预训练行为科学归因)、让不同行为 trace 有更可靠的获取方式、使模型不稳定性和损失(loss)现象能更明确归因。不科学的方式就是基于某些利益需求把科学方式干掉。

关于复现难度

对于“如果 K3 把细节写出来,复现难吗”:所有工程实现本质上是确定性的事情,不存在本质上的难;但自己提出方案需要较高的分析能力、组织密度和团队氛围。发文团队能做出来,其他人可以跟随好的工程实践,但若连 follow 都搞不定就不太应该了。

对团队创业与新模型的看法

对新的创业团队重做模型:如果团队足够好、氛围足够好、单兵作战能力强则有机会,但“这个条件大概率是不存在的”——好的人和好的组织文化有历史局限,leader 的 taste 和性格决定团队氛围。

K3 与 V3/V4 的对比

K3 和 V4 是不同层面的东西。V3 更强调性价比(还有一个做得好的 flash 模型),目前主要精力是提升开源模型能力上限,而非优先考虑性价比;K3 则价格相当贵。技术层面不存在太多偏差,好坏有客观标准,组织团队的走向取决于人的选择。

对未来模型发展的展望

  • 大模型可能没有太大的突破性创新了,后面都是改良性进步。模型能达成什么性能取决于“大家怎么定义这个能力”——只要任务能清晰定义就能达成。纯 language scope 内问题不大;但如果定义 AGI 为与真实物理世界交互,gap 会更大。
  • 模型不会无限增大:人类互联网上可获取的信息量是有限的,数学上模型没有必要无限大。如果未来有更难的任务必须更大的 size,就可能从更窄的棒(指具体任务上的感知充分程度不充分)退化到更宽的棒(指规模上限)。
  • 作者个人为何探索世界模型:大模型领域的改良空间、改进空间都不够大,没有大的突破就没有大的 credit;对个人职业生涯而言,这不是一个能做出太大贡献的领域。世界模型问题更大,但至少是新的东西。

重要观点摘录

  • “混合注意力它虽然从架构上来讲是一种 trade off,但是从最后模型本身的表现来说并不是一个 trade off。”
  • “如果认为四分之一(全注意力比例)是一个比较无损的、也是一个比较极限的比例的话,我们其实很难拿到更大的加速比。”
  • “对于模型的性能而言,模型的参数量永远是一个最主要的一个因素……不同的架构在模型的推理方面性能差异是巨大的,而且这个也是主要决定了模型最后的一个部署的架格(价格)。”
  • “我觉得架构创新比较有意思,就是比较好玩……它比较能起到一个四两拨千斤的效果。”
  • “K 3 是一个比较好的点——他(MiniMax)比较客观或者说比较真实……前任的一些工作用一个比较可靠的方式引出来,不会说想办法去削弱之前一些人的贡献。”
  • “如果是想严格控制的(outlier)方法的,一定是直接从模型架构下手的。”
  • “大模型可能没有太大的创新了,后面都是一些改良性的进步。”
  • “如果一旦涉及到通过更慢的模型实现也好、更慢的模型架构设计也好取得模型更好的表现,那这块就带来一个自然的疑问——就是我为什么不能去扩有更大的 size?……一切通过更慢的模型实现去提升模型效果的方法,都是会被 fully question 的。”
  • “从模型的能力本质上,模型的参数大小还是最有效的一个方式。”
  • “两个矩阵连成在模型表达能力上是等价的,但优化性质上并不是,经常会出现模型训练不稳定的问题,需要加 Normalization 来控制中间状态。”
  • “对于模型推理的 latency 来说,通信开销还是一个相当不可忽略的一个点。”
  • “用 NoPE 去除全注意力层的 RoPE,可以带来更好的模型表现,且在长上下文扩展时无需调整任何参数,是一个在混合注意力领域相当优美的解决方案。”
  • “RoPE 本质上带来的是 recent bias,它对短上下文建模能力特别有效,但对长板(长上下文)来说没有帮助,甚至是有负面影响的。”
  • “WSD 的实际调节难度和 cosine 一样,而且它可能并不一定好调整……选择一个更简单的方案(cosine)是更好的。”
  • “如果用低精度训练,最后的结果和复现的难度……最后都会落到一个差不多的位置,所以在 SFT 阶段引入低精度是一个更保险、技术上也无损的方式。”
  • “对于稀疏注意力,如果想获得实际加速收益,需要做很多额外的事情(如跨层共享 index),且它并不兼容混合注意力架构。”
  • “现在大家都不做 city(小模型),都是搞一个旗舰模型,然后直接做 on-policy 蒸馏,这能简化团队管理,且技术上合并不同模型比合并不同数据/奖励更容易。”
  • “当前模型训练没有巨大的范式创新,而是把之前很多工作糅合起来,寻找一个更优的组合。”
  • “科学研究是不存在跳跃性的提升的。只是说大家习惯把技术的间接性提升的某些节点称为一个 milestone。”
  • “技术永远是慢慢去提升,然后可靠。公司里的所有人,项目里的所有人,包括整个业界的同学一块去推动的。”
  • “K3 最大的问题就是它其实是国内第一个把模型 size 给到一定程度,并且把全流程打通的。在 K3 之前嘛,可能最大的就是千问 72B。从模型 size 身上是一个比较大的飞跃。因为有 size 它才有智能。”
  • “你扩大模型 size,它本身不是创新,你把这个东西做 work,它中间才有创新。”
  • “好的人和好的组织文化想达成,我觉得是有历史的局限的。”
  • “模型 capability 取决于大家怎么去定义这个能力。只要你能清晰定义这个任务本身,它的能力就能够达成。”
  • “K3 最让人 impressive 的地方:激活量做得特别大,足足有 100B 量级,比上一代多了三倍多。这更多是一个非技术性的决定(取决于要达到什么阶段的效果),而不是依赖任何技术能力。”
  • Kimmy 团队“非常团结,非常的能把力量往一处使”是科学化的一个重要体现。