大模型训推算子与 Infra 研究报告
基于 2024–2026 年主流模型架构的算子需求、训推差异与"倒挂"分析
00执行摘要
本报告梳理了 2024 年底至 2026 年 10 月公开技术细节的 12 个主流大模型系列,从架构出发分析训练与推理两侧的算子需求,归纳出以下结论:
- 架构已收敛到"超稀疏 MoE + 高效注意力 + 原生低精度"。 样本中的 MoE 模型激活参数比例大多在 3%–6% 之间,路由专家数从 128 增长到 512。注意力分化为 KV 压缩、稀疏选择、线性混合、局部窗口四条路线,且经常组合使用。
- 同一个模型在训练和推理中对应两套不同的算子。 MLA 的 decode 走权重吸收路径,线性注意力的 decode 走递推路径,MoE 的 decode 是小批量、访存受限的 GEMM。这些路径在训练中根本不存在,必须为推理单独实现。
- 硬件决定了瓶颈在哪里。 无论哪代显卡,一个权重矩阵每步约需 300 个 token 才能喂满算力;超稀疏 MoE 因此需要上万 token 的全局 batch 和上百卡专家并行(DeepSeek 的 decode 部署用了 144 卡)。GPU 代际之间 kernel 互不兼容(Hopper、Blackwell 数据中心卡、Blackwell 消费级卡各需一套),FP8 方言不同(OCP 与 FNUZ)会让数值差 2 倍。详见第 3 章。
- "倒挂"体现在四个方面: 推理侧算子变体数量远多于训练侧(阶段 × 精度 × 缓存 × 并行的组合);新架构先在训练栈落地,但能否上线取决于推理算子是否就绪;推理 Infra 的成熟度正在反向约束架构选择;推理集群混合多代硬件,算子还要按硬件代际重复实现。
- 头部团队用"开源推理算子"来解决 day-0 问题。 DeepSeek(FlashMLA、DeepGEMM)、Moonshot(KDA kernel)、Qwen(依托 flash-linear-attention)都在模型发布时同步提供推理 kernel,vLLM、SGLang 才能当天支持。
- 训推数值一致性正在成为一等需求。 RL 后训练中 rollout 与训练的 logprob 偏差会让 on-policy 退化为 off-policy。DeepSeek-V4 报告中提出了 batch-invariant 的确定性 kernel 库,实现训练与推理逐 bit 一致。
- 建议:把推理算子成本纳入架构评审;训推共用 kernel 源码(统一 DSL);用 QAT 让训练与部署使用同一低精度格式;把训推一致性纳入持续集成。详见第 12 章。
01研究范围与方法
样本
- 12 个模型系列,时间跨度 2024-12 至 2026-06(技术报告发布时间)
- 覆盖 DeepSeek、Moonshot(Kimi)、阿里(Qwen)、智谱(GLM)、MiniMax、OpenAI(gpt-oss)、Meta(Llama)、Google(Gemma)
- 入选标准:公开了足以分析算子需求的架构细节(技术报告、模型配置或推理引擎实现)
资料来源与限定
- 一手资料优先:技术报告、模型卡 / config、vLLM 与 SGLang 官方博客、开源 kernel 仓库
- 闭源模型(GPT、Gemini、Claude 等系列)未公开架构细节,不做逐项分析
- 参数以官方口径为准;不同来源有出入处已注明。文中性能数字均引自原文,未经本报告复现
02主流模型架构全景
| 模型 | 发布 | 总 / 激活参数 | 注意力 | MoE 配置 | 低精度与其他 | 上下文 |
|---|---|---|---|---|---|---|
| DeepSeek-V3 | 2024-12 | 671B / 37B | MLA | 256 路由 + 1 共享,激活 8 | FP8 训练(细粒度块缩放)、MTP | 128K [1] |
| DeepSeek-V3.2 | 2025-09 / 12 | 671B / 37B | MLA + DSA 稀疏注意力 | 同 V3 | Indexer 走 FP8 | 128K [3][4] |
| DeepSeek-V4 Pro / Flash | 2026-06 | 1.6T / 49B 284B / 13B | CSA + HCA 混合(压缩 + 稀疏) | DeepSeekMoE,与 V3 基本一致 | 路由专家 FP4 QAT、mHC、Muon、MTP | 1M [5] |
| Kimi K2 | 2025-07 | 1.04T / 32B | MLA(64 头) | 384 路由 + 1 共享,激活 8 | MuonClip 优化器 | 128K [8] |
| Kimi Linear | 2025-10 | 48B / 3B | KDA : MLA = 3 : 1(MLA 层不用位置编码) | MoE | — | 1M [9] |
| Qwen3-Next | 2025-09 | 80B / 3B | Gated DeltaNet : 门控注意力 = 3 : 1 | 高稀疏 MoE | MTP | 262K [10][11] |
| Qwen3.5(旗舰) | 2026-02 | 397B / 17B | Gated DeltaNet : 门控注意力 = 3 : 1;全注意力层 GQA 32/2 | 512 路由,激活 10 + 1 共享 | 原生多模态 | 262K [12] |
| GLM-5 | 2026-02 | 744B / 40B | MLA + DSA | 256 路由 + 1 共享,激活 8(sigmoid 打分) | 提供 FP8 权重 | 200K [13][14] |
| MiniMax-M2 | 2025-10 | 230B / 10B | 全注意力(放弃了上一代的线性混合) | MoE | — | — [16] |
| gpt-oss-120b | 2025-08 | 117B / 5.1B | GQA 64/8;128 窗口滑窗与全注意力 1 : 1 交替;注意力 sink | 128 专家,激活 4 | 专家权重原生 MXFP4 | 128K [18][19] |
| Llama 4 Maverick / Scout | 2025-04 | 400B / 17B 109B / 17B | iRoPE:3 层 8K 分块注意力 + 1 层 NoPE 全局 | 128 / 16 专家 | — | Scout 10M [20] |
| Gemma 3 27B | 2025-03 | 27B(稠密) | 1024 滑窗 : 全局 = 5 : 1;GQA | 稠密 | — | 128K [21] |
表 2-1 主流模型架构要点。GLM-5 的层数在技术报告(80)与 config(78)之间不一致,激活参数按官方 40B 计。DeepSeek-V4 总参数部分第三方来源写作 1.65T,此处按技术报告。
图 2-1 MoE 模型的激活参数比例
除 Llama 4 Scout(16 专家)外,所有 MoE 模型的激活比例都落在 3%–6.5% 之间。万亿级模型(Kimi K2、DeepSeek-V4-Pro)最稀疏,约 3%。
2.1 六个共性观察
① MoE 全面普及且更稀疏
除 Gemma 3 外全部是 MoE。专家数从 128(gpt-oss、Llama 4 Maverick)到 256(DeepSeek-V3、GLM-5)、384(Kimi K2)、512(Qwen3.5),每 token 激活 4–10 个专家。
② 注意力不再有统一答案
KV 压缩(MLA)、稀疏选择(DSA、CSA)、线性混合(Gated DeltaNet、KDA)、局部窗口(滑窗、分块)四条路线并存,并经常混用:如 MLA + DSA、KDA + MLA、滑窗 + 全局。
③ 低精度从推理前移到训练
DeepSeek-V3 用 FP8 训练;DeepSeek-V4 对路由专家做 FP4 量化感知训练;gpt-oss 直接以 MXFP4 发布专家权重。训练格式与部署格式开始统一。
④ 长上下文成为标配
DeepSeek-V4 和 Kimi Linear 支持 1M,Llama 4 Scout 宣称 10M。注意力和 KV cache 取代 FFN,成为推理成本的主要来源,这也是②的根本驱动力。
⑤ 训练侧出现新的"非标"组件
Muon / MuonClip 优化器(Kimi K2、DeepSeek-V4)、mHC 超连接(DeepSeek-V4)、QK-Clip 等,都需要训练框架提供新的算子或分布式实现。
⑥ 闭源与开源的信息差
闭源旗舰不公开架构,但其服务面对的是同类问题。开源模型的技术报告是目前了解算子需求最可靠的窗口。
03硬件基础:显卡如何决定算子
算子的形态一半由模型架构决定,另一半由硬件决定。本章先列出主流 AI 加速卡的关键参数,再用屋顶线模型(roofline)说明:为什么同一个模型在训练、prefill、decode 中的瓶颈完全不同,以及硬件代际、互联、数值格式如何直接改变算子实现。
3.1 主流加速卡关键参数
| 型号 | 架构 | BF16 | FP8 | FP4 | 显存 | 带宽 | 互联(单卡) | FP8 脊点 |
|---|---|---|---|---|---|---|---|---|
| A100 SXM | Ampere(sm_80) | 312 | — | — | 80 GB | 2.0 TB/s | NVLink3 600 GB/s | — |
| H100 SXM | Hopper(sm_90) | 989 | 1,979 | — | 80 GB | 3.35 TB/s | NVLink4 900 GB/s | 591 |
| H800 SXM | Hopper(sm_90) | 989 | 1,979 | — | 80 GB | 3.35 TB/s | NVLink 400 GB/s,实测单向约 160 GB/s [2] | 591 |
| H200 | Hopper(sm_90) | 989 | 1,979 | — | 141 GB | 4.8 TB/s | NVLink4 900 GB/s | 412 |
| B200 | Blackwell(sm_100) | 2,250 | 4,500 | 9,000 | 180–192 GB | 7.7–8 TB/s | NVLink5 1.8 TB/s | ≈563 |
| B300 / GB300 | Blackwell Ultra(sm_103) | ≈2,250–2,500 | ≈4,500–5,000 | 13,500–15,000 | 288 GB | 8 TB/s | NVLink5 1.8 TB/s | ≈563–625 |
| Rubin | Rubin(224 SM) | — | 17,500 | 35,000(训练口径) | 288 GB HBM4 | 19.2–22 TB/s | NVLink6 3.6 TB/s | ≈800–910 |
| MI300X | CDNA3(gfx942) | 1,307 | 2,615 | — | 192 GB | 5.3 TB/s | Infinity Fabric 8 卡互联 | 493 |
| MI325X | CDNA3(gfx942) | 1,307 | 2,615 | — | 256 GB | 6.0 TB/s | Infinity Fabric 8 卡互联 | 436 |
| MI355X | CDNA4(gfx950) | 2,516 | 5,033 | 10,066 | 288 GB | 8 TB/s | Infinity Fabric 8 卡互联 | 629 |
表 3-1 主流 AI 加速卡参数。算力单位为 TFLOPS,均为稠密口径(不含 2:4 稀疏,厂商宣传值常为稀疏口径的 2 倍)。FP8 脊点 = FP8 稠密算力 ÷ HBM 带宽,单位 FLOP/Byte。B300 与 Rubin 的部分参数在不同来源间存在出入(Rubin 带宽 19.2 vs 22 TB/s、NVLink 3 vs 3.6 TB/s),此处给出区间 [29][30][31][33][41]。
② 精度每降一档,算力翻倍。BF16 → FP8 → FP4 依次 ×2。低精度格式不只是省显存,而是直接决定能用到多少算力,这是 FP8 训练、FP4 QAT 兴起的硬件动因。
3.2 屋顶线:为什么 prefill 吃算力、decode 吃带宽
结论:无论哪一代硬件、哪种精度,一个权重矩阵每次大约要同时处理 300 个 token 才能把算力用满。
- 训练与 prefill:一条 4K token 的序列就远超 300,天然是计算受限,优化重点是把矩阵单元跑满。
- Decode:每条请求每步只贡献 1 个 token(用 MTP 投机解码时是几个),要凑够约 300 个并发请求才能摆脱访存受限。优化重点变成减少读写字节数:权重量化、KV 压缩、算子融合。
3.3 MoE 把 decode 的问题放大了几十倍
MoE 中每个专家只收到 k/E 比例的 token。要让每个专家的 GEMM 也达到约 300 个 token,全局每步需要的 token 数就要乘以 E/k:
| 模型 | 路由专家数 E | 每 token 激活 k | 每个专家分到的比例 | 喂满所有专家所需的全局 batch(≈ 300 × E / k) |
|---|---|---|---|---|
| DeepSeek-V3 / GLM-5 | 256 | 8 | 1/32 | ≈ 9,600 token / 步 |
| gpt-oss-120b | 128 | 4 | 1/32 | ≈ 9,600 token / 步 |
| Kimi K2 | 384 | 8 | 1/48 | ≈ 14,400 token / 步 |
| Qwen3.5-397B | 512 | 10 | 1/51 | ≈ 15,400 token / 步 |
| Llama 4 Maverick | 128 | 1 | 1/128 | ≈ 38,400 token / 步 |
表 3-2 超稀疏 MoE 的 decode 批量需求(理想均匀路由下的估算,不含共享专家)。
单机 8 卡很难凑出上万的并发 decode token,所以超稀疏 MoE 的高效推理必须依赖大规模专家并行(EP):把专家分散到上百张卡,所有卡上的请求合在一起喂给专家。DeepSeek 公开的 V3/R1 线上部署正是如此 [27]:
Prefill 部署单元
- 4 节点 32 卡,路由专家 EP32,MLA 与共享专家 DP32
- 每卡 9 个路由专家 + 1 个共享专家
- 两个 micro-batch 交替执行,用一个的计算掩盖另一个的通信
Decode 部署单元
- 18 节点 144 卡,路由专家 EP144,MLA 与共享专家 DP144
- 每卡只放 2 个路由专家 + 1 个共享专家,权重占用小,显存留给 KV cache
- 注意力层拆成两步,配合 5 级流水线掩盖通信
- 额外部署 32 个冗余专家做负载均衡(256 + 32 = 288 = 144 × 2)
3.4 注意力 decode 的算术强度
Decode 时注意力要读完整的 KV cache。它的算术强度取决于一份缓存被多少个 query 头复用:
图 3-1 Decode 注意力的算术强度(FLOP/Byte,BF16 KV)
普通 GQA 的 decode 注意力远低于脊点,只能拼带宽;MLA 因为 128 个头共享一份缓存,算术强度接近脊点,配合 MTP 后可以进入计算受限区。
- 这解释了 FlashMLA 公布的两个数字:在 H800 上,访存受限配置可达 3000 GB/s(约为 3.35 TB/s 峰值的 90%),计算受限配置可达 580 TFLOPS [28]。MLA decode 是少数可能计算受限的 decode 算子。
- 分析:如果用张量并行把 128 个头切到 8 张卡,每卡只剩 16 个头,算术强度降到约 30,又回到访存受限。这从硬件角度解释了为什么 DeepSeek 推理时 MLA 采用数据并行(DP32 / DP144)而不是张量并行 [27]。
3.5 KV cache 与显存容量
长上下文下,限制并发的往往不是权重,而是 KV cache。并发上不去,3.2 节说的 batch 就凑不够。下图是各模型在长上下文中每多 1 个 token 新增的缓存量:
图 3-2 长上下文下每 token 新增 KV cache(KB,BF16)
| 模型 | 随长度增长的部分 | 每条序列的固定开销 |
|---|---|---|
| Llama 3.1 70B(参照) | 80 层 × 2 × 8 KV 头 × 128 × 2 B = 320 KB / token | 无 |
| GLM-5 | 78 层 × 576 × 2 B ≈ 87.8 KB / token | 另有 DSA indexer key 缓存(FP8,较小) |
| DeepSeek-V3 / Kimi K2 | 61 层 × 576 × 2 B ≈ 68.6 KB / token | V3.2 另有 indexer 缓存 |
| Llama 4 Maverick | 12 个全局层 × 4 KB = 48 KB / token [39] | 36 个分块层最多缓存 8192 token:约 1.2 GB |
| gpt-oss-120b | 18 个全注意力层 × 2 × 8 × 64 × 2 B = 36 KB / token | 18 个滑窗层 × 128 token:约 4.7 MB |
| Qwen3.5-397B | 15 个全注意力层 × 2 × 2 KV 头 × 256 × 2 B = 30 KB / token [38] | 45 个 GDN 层的状态:64 头 × 128 × 128 × 4 B(FP32)≈ 180 MB,相当于约 6,100 token 的 KV |
表 3-3 KV cache 计算明细。DeepSeek-V4 未列出:其报告称 1M 上下文下 KV 仅为 V3.2 的 10%(Pro)/ 7%(Flash)[5]。
- 8 × H100(640 GB):权重都放不下,必须多机部署。
- 8 × H200(1,128 GB):剩约 430 GB,可存约 610 万 token 的 BF16 KV,相当于约 47 条 128K 序列。
- 8 × B200(约 1,440 GB):剩约 740 GB,可存约 1,050 万 token,相当于约 80 条 128K 序列。
3.6 GPU 代际:每一代都要重写核心 kernel
| 架构 | 矩阵指令与关键特性 | 对算子的影响 | 代表 kernel |
|---|---|---|---|
| Ampere(sm_80) | warp 级 mma.sync、cp.async | 通用基线 | FlashAttention-2 |
| Hopper(sm_90) | warpgroup 异步 wgmma、TMA 张量搬运、线程块集群、FP8 | 需要 warp 专用化、生产者-消费者流水线;FP8 累加精度受限(见 5.5 节) | FlashAttention-3、FlashMLA、DeepGEMM |
| Blackwell 数据中心(sm_100 / sm_103) | tcgen05 MMA、Tensor Memory(每 SM 256 KB)、2-CTA MMA、原生块缩放 MX / NVFP4 | 累加器放在 TMEM,softmax 要在 TMEM 和寄存器间来回搬运;Hopper 的 wgmma kernel 必须重写 | FlashAttention-4(CuTe DSL) |
| Blackwell 消费级 / 工作站(sm_120 / sm_121) | 扩展的 mma.sync;没有 TMEM、tcgen05、wgmma;每 block 共享内存 99 KB | 同叫"Blackwell",却不能运行 sm_100 的 kernel,写法实际回到 Ampere 风格 | 走 FA2 路径 |
| AMD CDNA3(gfx942) | MFMA 矩阵指令,FP8 为 FNUZ 方言 | 独立的 kernel 栈(ROCm、AITER);FP8 语义与 NVIDIA 不同 | — |
| AMD CDNA4(gfx950) | MFMA,OCP FP8,原生 MXFP8 / MXFP6 / MXFP4 | 格式与 OCP 标准对齐 | — |
表 3-4 GPU 架构代际与 kernel 兼容性。sm_90 用 wgmma、sm_100 用 tcgen05、sm_120 用 mma.sync,三者之间没有 kernel 兼容性;FlashAttention-4 只在 sm_100 / sm_103 上启用 [37]。
训练集群通常是单一代际的最新硬件;推理集群出于成本考虑,往往混合多代硬件(包括退役的训练卡)。因此推理侧的 kernel 矩阵还要再乘以硬件代际数,这是 7.4 节将讨论的又一层"倒挂"。
3.7 互联:scale-up 与 scale-out
| 配置 | Scale-up(节点内 / 超节点) | Scale-out(跨节点) | 对并行策略的含义 |
|---|---|---|---|
| H800 集群(DeepSeek-V3 训练) | NVLink 实测约 160 GB/s | 400 Gbps IB,约 50 GB/s,有效约 40 GB/s | 节点内外带宽差约 4 倍 [2] |
| HGX H100 / H200 | 8 卡,NVLink 900 GB/s | 通常每卡 400 Gbps 网卡 | TP / EP 一般限制在 8 卡内 |
| GB200 / GB300 NVL72 | 72 卡单一 NVLink 域,每卡 1.8 TB/s,全域 130 TB/s | 机柜间网络 | 可在一个 NVLink 域内做 72 卡宽 EP [30] |
| Rubin NVL72 | 每卡 3.6 TB/s,全域 260 TB/s | 机柜间网络 | 单域带宽再翻倍 [29] |
表 3-5 典型互联配置。
硬件约束如何塑造了 DeepSeek-V3 的训练方案 [1][2]
- 不用张量并行:NVLink 带宽有限,改用 DualPipe 流水线并行 + 专家并行 + ZeRO-1 数据并行。
- 限制路由跨节点:每个 token 最多发往 4 个节点,减少跨节点 IB 流量,再在节点内用 NVLink 转发。
- 用 SM 做通信:H800 的 132 个 SM 中拿出 20 个专门做通信(10 个通信通道,warp 专用化处理 IB 发送、IB→NVLink 转发、NVLink 接收),这些 SM 无法参与计算。
- 向硬件提出的需求:通信协处理器、原生细粒度量化、FP8 转换与 TMA 访存融合、更高的张量核心累加精度。
硬件约束如何塑造了推理通信算子
DeepEP 提供两套 kernel [40]:
高吞吐模式
节点内走 NVLink、节点间走 RDMA,并做 NVLink 与 RDMA 之间的转发。用于训练和 prefill 这类大批量场景。
低延迟模式
纯 RDMA,基于 hook 的通信计算重叠,不占用 SM。用于 decode 这类小批量、延迟敏感的场景。
同样一个"专家并行 All-to-All",训练和推理需要两套完全不同的实现。NVL72 这类大 NVLink 域出现后,EP 可以全部走 NVLink,最优的通信 kernel 又会变一次。
3.8 数值格式与硬件支持
| 硬件 | FP8 方言 | 块缩放(MX 等)原生支持 | FP4 |
|---|---|---|---|
| NVIDIA Hopper | OCP E4M3FN / E5M2 | 否,需在 CUDA core 上软件处理 scale 和 FP32 提升 | 否 |
| NVIDIA Blackwell(数据中心) | OCP | MXFP8 / MXFP6 / MXFP4、NVFP4 | MXFP4、NVFP4 |
| AMD MI300X / MI325X(gfx942) | FNUZ:指数偏置 8、最大值 ±240、无 inf、无 −0 | 否 | 否 |
| AMD MI350X / MI355X(gfx950) | OCP:指数偏置 7、最大值 ±448 | MXFP8 / MXFP6 / MXFP4 | MXFP4 |
表 3-6 硬件的低精度格式支持 [32]。FNUZ 与 OCP 的 E4M3 位布局相同,但指数偏置差 1,同一个字节按错误的方言解读,数值正好差 2 倍 [34]。
- FP8 方言:vLLM 的很多 FP8 路径只区分 E4M3 / E5M2,不区分 FNUZ / OCP。V4 的 KV 压缩器、量化写缓存、滑窗 K 缓存、Lightning Indexer 缓存写入都必须改用平台对应的 FP8 类型,否则 scale 和缓存字节对不上。
- 缺少注意力快路径:没有调优 kernel 的形状会回退到通用 Triton 实现,速度慢数倍。
- MoE 路由错误:MXFP4 在该硬件上回退到模拟后端时,专家 mask 形状判断错误,token 被送到了错误的专家。
- 训练侧引入的算子:mHC 的 TileLang 实现依赖 PDL(programmatic dependent launch),在 MI350X 上不受支持;vLLM 官方 recipe 一度把各 AMD 型号都标为不支持 V4。
- 结果:经过一系列修复和 kernel 调优,单卡 MI300X 单流 decode 约 168 tok/s。
04架构趋势与算子需求映射
每一项架构选择都会落到具体算子上。本章把第 2 章的趋势逐项展开为训练侧和推理侧的算子需求。
4.1 超稀疏 MoE
- 路由打分与 Top-k(softmax 或 sigmoid,含无辅助损失的负载均衡偏置)
- Token 重排(permute / unpermute)
- Grouped GEMM
- 专家并行 All-to-All(dispatch / combine)
- 大 batch 下的 Grouped GEMM 前向 + 反向
- All-to-All 与计算重叠(DeepSeek-V3 的 DualPipe)[1]
- FP8 分发激活以节省通信
- Decode 时每个专家只分到少量 token,GEMM 变成访存受限
- 低延迟 All-to-All(区别于训练的高吞吐模式)
- 专家权重 FP8 / FP4 存储与反量化
- DeepSeek-V4 把计算、通信、访存融合进单个 MoE kernel [5]
4.2 KV 压缩注意力(MLA 与少 KV 头)
- 低秩 KV 投影与 latent cache
- 非对称 head 维度注意力(如 qk 192 / v 128)
- 解耦 RoPE
- 展开为多头形式做前向 + 反向
- 需要注意力 kernel 支持 qk 与 v 维度不同
- Prefill 通常仍用展开形式(计算密集)
- Decode 用权重吸收,等价为对 latent cache 的 MQA,需要专门 kernel(如 FlashMLA)
- Paged latent cache、FP8 KV
- Kimi K2 把注意力头从 128 降到 64,主要就是为了推理成本 [8]
4.3 稀疏注意力(DSA / CSA / HCA)
4.4 线性 / 混合注意力
4.5 局部注意力与注意力 sink
4.6 原生低精度(FP8 / FP4)
- 块缩放 GEMM(激活 1×128、权重 128×128)
- 在线量化 / 反量化
- FP4 × FP8 混合精度 GEMM
4.7 多 token 预测(MTP)与新训练组件
- MTP 模块(训练目标 / 推理草稿头)
- Muon 的 Newton–Schulz 正交化迭代
- QK-Clip、mHC 等结构性操作
- Muon 需要对完整矩阵做运算,与 ZeRO / FSDP 的参数分片存在张力
- MuonClip 解决了 attention logit 爆炸问题 [8]
- MTP 作为投机解码的草稿来源,需要验证 kernel 和树形注意力
- 与稀疏 / 线性注意力组合时的状态管理更复杂
- mHC 增加的残差流小算子需要融合
05关键算子拆解
本章用公式和流程,把五个最关键的算子拆开来讲,说明它们在训练和推理中具体怎么算、为什么需要不同的 kernel。
5.1 MLA:训练和 decode 是两种计算
- 训练 kernel:FlashAttention 类,需支持 qk 192 维、v 128 维的非对称 head,以及完整的反向。
- Decode kernel:完全不同的 MQA 形态,head 维度 576 / 512 不是常见规格,需要专用实现(FlashMLA),并支持 paged latent cache(block size 64)和 FP8 缓存 [28]。
- 数值差异:两种形式数学上等价,但乘法顺序不同,浮点结果不会逐 bit 一致。这是训推偏差的一个结构性来源(第 8 章)。
- 硬件含义:吸收后 128 个头复用同一份缓存,算术强度约 242,接近 Hopper 脊点(3.4 节);按头切分的张量并行会把这个优势切掉。
5.2 DSA:indexer + top-k + 稀疏注意力
| 步骤 | 训练 | 推理 | 对应 kernel |
|---|---|---|---|
| Indexer 打分 | 预热阶段只训练 indexer,主注意力保持稠密 [3] | Prefill 与 decode 分开处理;decode 读 paged indexer 缓存 | DeepGEMM fp8_mqa_logits(含 paged 版本)[6] |
| Top-k | 稀疏阶段开启 | 每个 query 在最长 128K 个分数中选 2048 个 | 专用 top-k kernel |
| 稀疏注意力 | 前向 + 反向 | 按索引 gather latent,block size 固定为 64 | FlashMLA 稀疏 kernel [4] |
| 缓存 | 无 | 额外的 indexer key + scale 缓存 [7] | 推理引擎内存池 |
表 5-1 DSA 各步骤在训练与推理中的实现。DeepSeek-V4 在此基础上增加了 KV 压缩(每 m 个 token 压成一条)和滑窗,并与重度压缩的 HCA 层交替 [5]。
5.3 Gated DeltaNet / KDA:并行训练、递推推理
- 训练:chunkwise 并行形式,前向和反向都以矩阵乘为主,社区实现集中在 flash-linear-attention(Triton)。Kimi Linear 用特化的 DPLR 结构减少了计算量 [9]。
- Decode:每步读写整个状态,是访存受限操作。Qwen3.5-397B 的状态用 FP32 存储(
mamba_ssm_dtype: float32),每层每条序列 64 头 × 128 × 128 × 4 B = 4 MB [38];此外还有卷积核为 4 的短卷积状态。 - 前缀缓存:KV cache 可以按 token 截取复用,但递推状态只能在保存过快照的位置恢复,需要在固定间隔存状态快照。
- 投机解码:草稿 token 被拒绝时,KV cache 只需丢弃尾部,递推状态却必须回滚到之前的快照。
- 低精度:状态在长序列上不断累积,对低精度存储更敏感。MiniMax 把这几点列为放弃线性注意力的 Infra 原因 [16]。
5.4 MoE 的一次前向
| 环节 | 训练 | 推理 Prefill | 推理 Decode |
|---|---|---|---|
| ④⑥ 通信 | 与另一 micro-batch 的计算重叠(DualPipe);反向时 dispatch / combine 互换 | DeepEP 高吞吐模式 + 双 micro-batch 重叠 | DeepEP 低延迟模式 + 5 级流水线 [27] |
| ⑤ GEMM | 每专家数千 token,计算受限,需反向 | 每专家 token 多,与训练相近 | 每专家 token 少,访存受限;专家权重常用 FP8 / FP4 |
| 负载均衡 | 无辅助损失的偏置调整 | 冗余专家 + prefill 专用均衡器 | 冗余专家 + decode 专用均衡器 |
表 5-2 MoE 各环节在三个场景中的差异。
看似微小的结构改动也会产生新的 kernel 需求。例如 gpt-oss 的 SwiGLU 带有截断(limit = 7.0)和残差项 [18],标准的融合 SwiGLU kernel 不能直接用。
5.5 FP8 细粒度 GEMM(DeepSeek-V3 方案)
- 为什么要提升到 FP32:Hopper FP8 张量核心在累加时只保留约 14 位有效精度(结果累加在 13 位尾数的寄存器中),K 维很长时误差会累积 [1]。
- 效果:DeepSeek 在 16B 和 230B 模型上验证,相对 BF16 的精度损失低于 0.25% [1]。实现开源在 DeepGEMM。
- 保持高精度的部分:embedding、输出头、MoE 门控、归一化、注意力 [1]。
- 换到 Blackwell:张量核心原生支持块缩放(MX 格式为每 32 个元素一个 E8M0 scale),scale 可以在硬件内处理。但块大小(32 vs 128)和 scale 类型都不同,数值结果不会与 Hopper 方案逐 bit 一致。
06同一模型,两套算子
把第 4 章按"训练 / 推理 prefill / 推理 decode"三个场景重新排列,可以看到:大部分算子族在 decode 阶段都有训练中不存在的专属实现路径。
| 算子族 | 训练 | 推理 Prefill | 推理 Decode | 差异程度 |
|---|---|---|---|---|
| MLA | 展开多头,前向 + 反向 | 展开多头 | 权重吸收后的 MQA,读 latent cache | 新路径 |
| 稀疏注意力 | 先稠密预热,再稀疏训练 | Indexer 打分 + Top-k + 稀疏注意力 | Paged indexer cache + 稀疏 gather | 新路径 |
| 线性注意力 | Chunkwise 并行 | Chunkwise 并行 | 逐步递推 + 状态缓存 | 新路径 |
| MoE | 大 batch Grouped GEMM + 高吞吐 All-to-All | 大 batch,与训练相近 | 小 batch、访存受限 GEMM + 低延迟 All-to-All | 形状不同 |
| 低精度 GEMM | FP8 块缩放(含反向转置量化) | W8A8 / FP8 / FP4 | Weight-only 或 FP4 反量化 GEMM | 格式可能不同 |
| 局部注意力 / sink | 带 mask 的注意力 | 带 mask 的注意力 | 分层不同长度 KV cache + sink | 缓存不同 |
| MTP | 额外损失项 | — | 投机解码:草稿 + 验证 | 新路径 |
| KV / 状态缓存 | 不存在 | 写入 | Paged 读写、量化、前缀复用 | 推理独有 |
| 采样 | 不存在(RL rollout 除外) | 首 token 采样 | Top-p / Top-k、约束解码 | 推理独有 |
| Muon / mHC | 优化器与残差结构 | mHC 前向 | mHC 前向 | 训练为主 |
表 6-1 主要算子族在三个场景下的实现形态。"新路径"指该场景需要训练中不存在的独立 kernel。
07训推算子的"倒挂"
本报告所说的"倒挂",指训练侧与推理侧在算子上的投入、时序和决定权,与它们的实际复杂度和成本占比方向相反。具体有三个层面。
7.1 数量倒挂:推理侧的变体组合爆炸
训练中一个算子通常只需要"前向 + 反向"两个实现,形状也相对固定。推理侧同一个算子要乘上多个维度:
图 7-1 推理算子的变体维度(示意)。实际组合会被裁剪,但量级远超训练侧。
7.2 时序倒挂:训练先行,推理定生死
头部团队的做法是在发布时同步开源推理 kernel,把第三步提前到发布当天:
| 模型 | 同步提供的推理算子 | 引擎支持 |
|---|---|---|
| DeepSeek-V3.2 | DeepGEMM(indexer logits,含 paged 版本)、FlashMLA(稀疏注意力)、TileLang 参考实现 [4] | vLLM、SGLang 发布当天支持 [6][7] |
| Qwen3-Next | 依托社区 flash-linear-attention 的 Triton kernel | vLLM 发布当天支持,并新增混合缓存管理 [11] |
| Kimi Linear | 开源 KDA kernel 与 vLLM 实现 [9] | vLLM |
| gpt-oss | FlashInfer 的 MXFP4 MoE kernel;vLLM 改造 FlashAttention 3 支持 sink [18][19] | vLLM、Transformers;不支持 MXFP4 的硬件回退 BF16 |
表 7-1 Day-0 推理支持的典型做法。
7.3 决定权倒挂:推理 Infra 反向约束架构
过去是"架构定了,Infra 去适配"。现在越来越多的案例显示,推理 Infra 的成熟度在反过来决定架构:
MiniMax-M2 回到全注意力
MiniMax 在小规模实验中看到线性混合注意力与全注意力相当,但大规模下多跳推理等能力明显下降。他们同时指出线性 / 稀疏注意力的 Infra 不如全注意力成熟:训练访存受限、对低精度存储敏感、缺少原生前缀缓存、与投机解码的集成不明确 [16][17]。
Kimi K2 减少注意力头
在 DeepSeek-V3 架构基础上,K2 把注意力头从 128 降到 64,以降低推理开销 [8]。
7.4 硬件倒挂:训练用一代卡,推理要跑很多代卡
训练集群追求最新硬件,且通常是同构的;推理集群出于成本考虑,会混合多代甚至多厂商的硬件。由于各代架构之间 kernel 不兼容(表 3-4),同一个新算子在推理侧要为每种硬件各实现一遍:
- 注意力:FlashAttention-2 / 3 / 4 分别对应 Ampere / Hopper / Blackwell 数据中心卡,消费级 Blackwell 又回到 FA2 路径 [37]。
- MLA:FlashMLA 发布时只支持 Hopper [28]。
- DeepSeek-V4:在 AMD 硬件上的支持晚于 NVIDIA,社区移植时需要修复 FP8 方言、MoE 路由、mHC 等多处问题(3.8 节)[34][36]。
08训推数值一致性
当训练和推理使用不同的算子实现时,数值偏差不可避免。在离线评测中这通常只是噪声,但在以下场景中会变成实质问题:
RL 后训练
Rollout 由推理引擎生成,训练框架重算 logprob。即使在同一硬件上,两者也有差异,会让 on-policy 训练悄悄变成 off-policy;MoE 和量化 rollout 下更严重 [23][24]。
在线蒸馏
教师模型由推理引擎服务、学生在训练栈中学习,同样依赖两侧概率分布的一致。
可复现性
Batch 大小随负载变化,kernel 的归约策略随之改变,导致相同输入得到不同输出 [22]。
8.1 偏差来源与对策
| 来源 | 说明 | 对策 |
|---|---|---|
| Batch 不变性 | 不同 batch 大小下 kernel 选择不同的并行与归约策略(如 split-K) | Batch-invariant kernel [22] |
| 实现路径不同 | 训练用展开 MLA、推理 decode 用吸收 MLA;线性注意力 chunkwise vs 递推 | 训推共用 kernel 源码,或在训练中复用推理路径 |
| 精度格式 | 训练 BF16 / FP8,部署 FP4 / INT4;KV cache 量化 | QAT,让训练与部署使用同一格式(DeepSeek-V4、gpt-oss) |
| MoE 路由跳变 | 微小偏差让 token 选中不同专家 | Routing replay:训练复用 rollout 的路由结果 [24] |
| 残余偏差 | 系统层面无法完全消除 | 截断 / 掩码重要性采样(TIS / MIS)等算法修正 [23] |
表 8-1 训推数值偏差的主要来源与对策。
09开源算子生态地图
| 项目 | 主要维护方 | 覆盖算子 | 训练 | 推理 |
|---|---|---|---|---|
| FlashAttention | Dao-AILab | 稠密 / 变长 / 滑窗注意力 | ✓ | ✓ |
| FlashMLA | DeepSeek | MLA decode、DSA 稀疏注意力 | — | ✓ |
| DeepGEMM | DeepSeek | FP8 块缩放 GEMM、Grouped GEMM、indexer logits | ✓ | ✓ |
| DeepEP | DeepSeek | 专家并行 All-to-All(高吞吐 / 低延迟两种模式) | ✓ | ✓ |
| flash-linear-attention | 社区 | Gated DeltaNet、KDA 等线性注意力(Triton) | ✓ | ✓ |
| FlashInfer | 社区 | 推理注意力、采样、MoE(含 MXFP4) | — | ✓ |
| Triton | OpenAI 与社区 | Kernel DSL,多硬件后端 | ✓ | ✓ |
| TileLang | 社区 | Kernel DSL;DeepSeek-V3.2 参考实现与 V4 使用 [4][5] | ✓ | ✓ |
| batch-invariant-ops | Thinking Machines | Batch 不变的 matmul、归一化、注意力 [22] | — | ✓ |
表 9-1 主要开源算子项目。"✓"表示该项目被用于相应场景。
两个趋势值得关注:
- 模型厂商成为算子供给方。MLA、DSA、KDA 这类新算子最好的实现,来自提出该架构的团队,而不是通用算子库。
- DSL 成为训推共享的载体。Triton 和 TileLang 让同一份 kernel 源码可以同时服务训练和推理,并有机会跨硬件复用。但对于复杂 kernel,只靠编译器优化往往达不到目标性能,仍需针对硬件改写 [26]。
10算子成熟度评估
综合以上资料,对主要算子族在各场景的成熟度做定性评估。本表为作者基于公开资料的判断,不是测量结果。
| 算子族 | 训练 | 推理 Prefill | 推理 Decode | 跨硬件可移植性 | 主要短板 |
|---|---|---|---|---|---|
| 稠密 / GQA 注意力 | 成熟 | 成熟 | 成熟 | 可用 | 长上下文成本高 |
| 滑窗 / 分块 / sink | 成熟 | 成熟 | 可用 | 可用 | 分层缓存管理、sink 需改 kernel |
| MLA | 成熟 | 成熟 | 成熟 | 早期 | Decode kernel 高度依赖特定硬件 |
| DSA / CSA 稀疏注意力 | 可用 | 可用 | 可用 | 早期 | Block size 等约束多,实现集中在少数团队 |
| 线性 / 混合注意力 | 可用 | 可用 | 可用 | 可用 | 前缀缓存、投机解码、低精度状态 |
| MoE GEMM + EP 通信 | 成熟 | 成熟 | 可用 | 早期 | 低延迟 All-to-All 依赖特定互联 |
| FP8 块缩放 GEMM | 成熟 | 成熟 | 成熟 | 可用 | 格式语义与累加精度各家不同 |
| FP4(MXFP4 等) | 早期 | 可用 | 可用 | 早期 | 硬件原生支持面窄,私有格式不互通 |
| MTP 投机解码 | 成熟 | — | 可用 | 可用 | 与稀疏 / 线性注意力组合复杂 |
表 10-1 算子成熟度定性评估。成熟:有多个生产级实现;可用:有可用实现但有明显约束;早期:实现稀少或性能差距大。
11跨平台部署的附加挑战
当训练和推理(或推理的不同阶段)运行在不同的硬件和软件栈上时,上述问题会进一步放大:
- 算子覆盖:表 10-1 中"跨硬件可移植性"为"早期"的算子族(MLA decode、稀疏注意力、低延迟 EP 通信、FP4),在新平台上通常需要从零实现。
- 数值一致性:batch-invariant 方案只在同一栈内有效,跨平台无法做到逐 bit 一致,只能依赖算法侧修正和严格的精度验收。
- 低精度格式:块大小、scale 类型、溢出语义的差异会导致重新量化和二次舍入 [25]。
- 性能可移植性:Triton 等 DSL 解决了"能跑",但复杂 kernel 的性能仍需针对硬件调优 [26]。
- 真实案例:DeepSeek-V4-Flash 移植到 MI300X 的过程(3.8 节)几乎覆盖了以上所有问题。
这部分的详细分析(包括逐层栈对比、量化格式对比表、PD 分离部署和 KV 传输估算)见配套文档 《训推分离的异构栈》。
12结论与建议
12.1 结论
主流模型的架构创新几乎都集中在注意力、MoE 和低精度这三块,而它们恰好是推理成本的主体。新架构带来的算子需求在推理侧被成倍放大,且大部分 decode 路径在训练中不存在。算子与 Infra 能力正在从"支撑模型"变成"决定模型"。
12.2 建议
面向模型研发
- 在架构评审中加入"推理算子成本"一项:新算子是否需要 decode 专属路径、是否兼容 paged cache、前缀缓存和投机解码
- 架构选型时参考 MiniMax-M2 的经验:小规模实验之外,还要评估 Infra 成熟度
- 优先选择能复用现有高性能 kernel 的设计
面向训练 Infra
- 用 Triton / TileLang 等 DSL 编写新算子,使同一源码可服务推理
- 训练阶段采用 QAT,让训练格式等于部署格式
- 为 Muon 等新优化器准备分布式实现方案
面向推理 Infra
- 与模型团队同步开发 decode 路径,目标是发布即支持
- 建立 kernel 变体预算,控制阶段 × 精度 × 缓存 × 并行的组合数
- 为混合注意力模型提前设计统一的状态 / KV 缓存管理
面向硬件选型
- 按"每百万 token 成本"而不是单卡价格比较,同时考虑算力、带宽、显存容量和 kernel 成熟度
- 超稀疏 MoE 推理优先看 scale-up 域大小和跨节点带宽,它决定能否做大规模 EP
- 长上下文服务优先看 HBM 容量,KV cache 决定并发上限
- 引入新硬件前,核对 FP8 方言、块缩放格式支持,以及目标模型关键算子(MLA、稀疏 / 线性注意力、mHC 等)在该架构上的实现状态
面向推理部署
- MLA 类模型的注意力优先用数据并行,避免张量并行切分头数导致算术强度下降
- 根据表 3-2 估算 decode 所需的全局 batch,据此规划 EP 规模
- 为混合注意力模型预留状态快照空间,以支持前缀缓存和投机解码
面向一致性与质量
- 把训推 logprob 差异、MoE 路由一致率纳入 CI 指标
- RL 场景默认启用 TIS / MIS 等修正,并监控训推 KL
- 评估 batch-invariant kernel 的性能代价,在 RL rollout 等关键链路优先采用
附录术语表与参考文献
A. 术语表
- MoE
- Mixture of Experts,混合专家;每个 token 只激活部分专家
- MLA
- Multi-head Latent Attention;把 KV 压缩为低秩潜向量以减少缓存
- DSA
- DeepSeek Sparse Attention;用 lightning indexer 为每个 query 选出 top-k 个 token 参与注意力
- CSA / HCA
- DeepSeek-V4 的压缩稀疏注意力 / 重度压缩注意力
- Gated DeltaNet / KDA
- 基于 delta rule 的门控线性注意力;KDA 是 Kimi 提出的通道级门控变体
- GQA / MQA
- 分组查询注意力 / 多查询注意力,多个 query 头共享 KV 头
- MTP
- Multi-Token Prediction;训练时额外预测后续 token,推理时可用作投机解码草稿
- QAT
- 量化感知训练,在训练中模拟低精度行为
- EP / TP
- 专家并行 / 张量并行
- Prefill / Decode
- 推理的两个阶段:一次性处理 prompt / 逐 token 生成
- Batch-invariant
- 算子输出不随 batch 大小变化的性质,是推理可复现的前提
- TIS / MIS
- 截断 / 掩码重要性采样,用于修正 RL 中的训推偏差
- 算术强度
- 每读写 1 字节数据所做的浮点运算次数(FLOP/Byte)
- 屋顶线 / 脊点
- Roofline 模型;脊点 = 峰值算力 ÷ 带宽,算术强度低于脊点的算子受带宽限制
- Scale-up / Scale-out
- 节点内或超节点内的高速互联(NVLink 等)/ 跨节点网络(InfiniBand、RoCE 等)
- WGMMA / TMA
- Hopper 的 warpgroup 异步矩阵乘指令 / 张量内存搬运单元
- tcgen05 / TMEM
- Blackwell 数据中心卡的张量核心指令 / 存放累加器的 Tensor Memory
- FNUZ
- AMD MI300 系列的 FP8 变体:无 inf、无负零,指数偏置比 OCP 标准大 1
- PDL
- Programmatic Dependent Launch,NVIDIA 让相邻 kernel 提前启动、重叠执行的机制
- DP 注意力
- 注意力层按请求做数据并行,而不是按头做张量并行
B. 参考文献
- [1]DeepSeek-AI. DeepSeek-V3 Technical Report. arXiv:2412.19437
- [2]DeepSeek-AI. Insights into DeepSeek-V3: Scaling Challenges and Reflections on Hardware for AI Architectures. arXiv:2505.09343
- [3]DeepSeek-AI. DeepSeek-V3.2: Pushing the Frontier of Open Large Language Models. arXiv:2512.02556
- [4]deepseek-ai/DeepSeek-V3.2-Exp. GitHub
- [5]DeepSeek-AI. DeepSeek-V4: Towards Highly Efficient Million-Token Context Intelligence. arXiv:2606.19348
- [6]vLLM. DeepSeek-V3.2-Exp in vLLM: Fine-Grained Sparse Attention in Action
- [7]LMSYS. SGLang Day 0 Support for DeepSeek-V3.2 with Sparse Attention
- [8]Kimi Team. Kimi K2: Open Agentic Intelligence. arXiv:2507.20534
- [9]Kimi Team. Kimi Linear: An Expressive, Efficient Attention Architecture. arXiv:2510.26692
- [10]Qwen Team. Qwen3-Next: Towards Ultimate Training & Inference Efficiency
- [11]vLLM. vLLM Now Supports Qwen3-Next: Hybrid Architecture with Extreme Efficiency
- [12]Hugging Face. Qwen3.5 — Transformers documentation
- [13]GLM-5 Team. GLM-5: from Vibe Coding to Agentic Engineering. arXiv:2602.15763
- [14]SemiAnalysis. GLM-5 / GLM-5.1 — Architecture, Evals & Inference Performance
- [15]Hugging Face. GLM-5 (GlmMoeDsa) — Transformers documentation
- [16]MiniMax. The MiniMax-M2 Series: Mini Activations Unleashing Max Real-World Intelligence. arXiv:2605.26494
- [17]LMSYS. "No Free Lunch": Deconstruct Efficient Attention with MiniMax M2;另见 VentureBeat 关于 MiniMax M3 稀疏注意力的报道
- [18]Hugging Face. Welcome GPT OSS, the new open-source model family from OpenAI
- [19]vLLM. vLLM Now Supports gpt-oss
- [20]Hugging Face. Welcome Llama 4 Maverick & Scout on Hugging Face
- [21]Gemma Team. Gemma 3 Technical Report. arXiv:2503.19786
- [22]Thinking Machines Lab. Defeating Nondeterminism in LLM Inference
- [23]Yao et al. On the Rollout-Training Mismatch in Modern RL Systems. NeurIPS 2025
- [24]slime: Training-Inference Mismatch. Awesome-ML-SYS-Tutorial
- [25]Open Compute Project. OCP Microscaling Formats (MX) v1.0 Specification
- [26]Triton for MTIA: Bridging the Programming Model Gaps for Custom AI Accelerators. arXiv:2608.00325
- [27]DeepSeek. Day 6: DeepSeek-V3/R1 Inference System Overview. open-infra-index
- [28]deepseek-ai/FlashMLA. GitHub
- [29]NVIDIA. Inside the NVIDIA Vera Rubin Platform;规格口径差异见 InsideDeepTech
- [30]Verda. NVIDIA GB300 NVL72: GPU specs, architecture & performance
- [31]Spheron. NVIDIA B200: Specs, Benchmarks, vs H100
- [32]AMD. AMD Instinct MI300 / MI350 Series workload optimization. ROCm 文档
- [33]SemiAnalysis. AMD Instinct MI355X Specs
- [34]Fergus Finn. Bringing up DeepSeek-V4-Flash on AMD MI300X
- [35]ryanzhou/deepseek-v4-flash-mi300x. GitHub
- [36]vLLM Issue #42876: DeepSeek-V4-Flash on MI350X
- [37]Blackwell GPU Wiki: SM100 vs SM120
- [38]Qwen3.5-397B-A17B config.json. Hugging Face
- [39]Llama-4-Maverick-17B-128E-Instruct config.json. Hugging Face
- [40]deepseek-ai/DeepEP. GitHub
- [41]Spheron. H100 vs H200: Specs, FP8 Throughput