<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>长上下文 | Yadong's Blog</title><link>https://dingyadong.top/tags/%E9%95%BF%E4%B8%8A%E4%B8%8B%E6%96%87/</link><atom:link href="https://dingyadong.top/tags/%E9%95%BF%E4%B8%8A%E4%B8%8B%E6%96%87/index.xml" rel="self" type="application/rss+xml"/><description>长上下文</description><generator>HugoBlox Kit (https://hugoblox.com)</generator><language>zh-cn</language><lastBuildDate>Sat, 09 May 2026 08:00:00 +0800</lastBuildDate><image><url>https://dingyadong.top/media/icon.svg</url><title>长上下文</title><link>https://dingyadong.top/tags/%E9%95%BF%E4%B8%8A%E4%B8%8B%E6%96%87/</link></image><item><title>DeepSeek V4 技术报告深度解读：百万 Token 长上下文的系统工程学</title><link>https://dingyadong.top/posts/020_deepseek_v4_tech_report/</link><pubDate>Sat, 09 May 2026 08:00:00 +0800</pubDate><guid>https://dingyadong.top/posts/020_deepseek_v4_tech_report/</guid><description>
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;DeepSeek-V4 系列（V4-Pro 1.6T 参数 / V4-Flash 284B 参数）将原生上下文窗口扩展至 &lt;strong&gt;1M token&lt;/strong&gt;，同时在模型架构、优化器、工程基础设施、预训练和后训练五个维度做了系统性革新。本文基于 DeepSeek V4 技术报告，对五大维度逐一进行深度解读，尤其聚焦于 mHC 流形约束超连接、CSA/HCA 混合注意力和 Muon 优化器三大架构创新的数学原理与工程实现。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id="0-导言为什么-v4-值得深读"&gt;0. 导言：为什么 V4 值得深读&lt;/h2&gt;
&lt;h3 id="01-一个被反复绕开的问题"&gt;0.1 一个被反复绕开的问题&lt;/h3&gt;
&lt;p&gt;过去两年，大语言模型领域出现了两条平行但关联的趋势：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;第一条线：reasoning 模型的崛起。&lt;/strong&gt; 从 OpenAI o1 到 DeepSeek R1，业界逐渐发现——让模型在答题之前多想几步（chain-of-thought、extended thinking），性能会系统性地上升。这种&amp;quot;测试时扩展&amp;quot;（test-time scaling）的范式开始成为主流。但&amp;quot;多想几步&amp;quot;的代价是什么？上下文里塞满了 thinking trace，一道复杂的数学题可能产生数千甚至数万 token 的推理链。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;第二条线：Agent 的工程落地。&lt;/strong&gt; 让模型自己写代码、读文档、执行工具调用、完成多轮复杂任务——这是 AI Agent 的图景。但每一个 Agent step 都要把&amp;quot;过去所有的上下文&amp;quot;带着走，随着任务轮次增加，上下文长度成指数级膨胀。&lt;/p&gt;
&lt;p&gt;这两条趋势背后有同一个物理约束：&lt;strong&gt;vanilla attention 的二次方复杂度&lt;/strong&gt;。当序列长度从 32K 增长到 1M，计算量增长约 1000 倍，KV cache 显存增长约 32 倍。这道墙既拦住了 reasoning 模型（thinking trace 太长），也拦住了 Agent（上下文累积太重）。&lt;/p&gt;
&lt;p&gt;DeepSeek V4 就是对这个问题正面回答的一次系统性尝试。它不是靠一个单一的&amp;quot;银弹&amp;quot;创新来破局，而是在架构、优化器、工程基础设施、预训练、后训练五个维度同时推进，构建了一个完整的长上下文解决方案。&lt;/p&gt;
&lt;h3 id="02-v4-核心创新一览"&gt;0.2 V4 核心创新一览&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;维度&lt;/th&gt;
&lt;th&gt;创新点&lt;/th&gt;
&lt;th&gt;核心贡献&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;架构&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;mHC（流形约束超连接）&lt;/td&gt;
&lt;td&gt;残差连接的第三次进化，稳定梯度 + 扩宽信息流&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;架构&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Hybrid Attention (CSA+HCA)&lt;/td&gt;
&lt;td&gt;压缩+稀疏组合，O(T²) → O(T·k/m)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;优化器&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Muon&lt;/td&gt;
&lt;td&gt;正交化梯度更新，比 Adam 更适合宽维度矩阵&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;工程&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;EP 通信-计算重叠&lt;/td&gt;
&lt;td&gt;mega-kernel 波次调度，1.92× 通信加速&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;工程&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;FP4 量化感知训练&lt;/td&gt;
&lt;td&gt;MoE 权重 + CSA 索引器 QK 量化，显存减半&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;工程&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Contextual Parallelism&lt;/td&gt;
&lt;td&gt;1M 上下文跨 GPU 切片，线性扩展&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;预训练&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;长上下文渐进扩展&lt;/td&gt;
&lt;td&gt;4K→64K→1M 三阶段上下文调度&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;后训练&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Specialist Training + OPD&lt;/td&gt;
&lt;td&gt;先分领域专家，再 on-policy 蒸馏为统一模型&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;后训练&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Generative Reward Model (GRM)&lt;/td&gt;
&lt;td&gt;模型自身充当 reward model，免除大量人工标注&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;&lt;img alt="DeepSeek V4 五维创新地图"
src="https://dingyadong.top/posts/020_deepseek_v4_tech_report/fig-overall-innovation-map.svg"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 id="03-两个模型规格"&gt;0.3 两个模型规格&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;V4-Pro&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;V4-Flash&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;总参数量&lt;/td&gt;
&lt;td&gt;1.6T&lt;/td&gt;
&lt;td&gt;284B&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;激活参数量&lt;/td&gt;
&lt;td&gt;49B&lt;/td&gt;
&lt;td&gt;13B&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;原生上下文&lt;/td&gt;
&lt;td&gt;1M token&lt;/td&gt;
&lt;td&gt;1M token&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MoE Expert 数量&lt;/td&gt;
&lt;td&gt;256&lt;/td&gt;
&lt;td&gt;64&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;每 token 激活 Expert 数&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;主要定位&lt;/td&gt;
&lt;td&gt;旗舰，最强能力&lt;/td&gt;
&lt;td&gt;轻量，高效部署&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;两者架构相同，规格不同，共享同一套后训练流程。本文若无特殊说明，技术细节均以 V4-Pro 为参考。&lt;/p&gt;
&lt;h3 id="04-阅读路线图"&gt;0.4 阅读路线图&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;只关心架构&lt;/strong&gt;：重点看第 3、4、5 节&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;只关心工程&lt;/strong&gt;：重点看第 6 节&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;只关心训练流程&lt;/strong&gt;：重点看第 7、8 节&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;想全面了解&lt;/strong&gt;：顺序阅读，附录 A 补充 Attention 背景知识&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="1-背景与动机"&gt;1. 背景与动机&lt;/h2&gt;
&lt;h3 id="11-vanilla-attention-的二次方诅咒"&gt;1.1 Vanilla Attention 的二次方诅咒&lt;/h3&gt;
&lt;p&gt;标准 attention 的计算公式：&lt;/p&gt;
$$\text{output}_t = \sum_{s \leq t} \alpha_{t,s} v_s, \quad \alpha_{t,s} = \frac{\exp(q_t^\top k_s / \sqrt{d})}{\sum_{j} \exp(q_t^\top k_j / \sqrt{d})}$$&lt;p&gt;这个公式有两个让长上下文崩溃的瓶颈：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;计算复杂度 $O(T^2)$&lt;/strong&gt;：每个新 token 要和所有历史 token 算 attention score。$T=1\text{M}$ 时，这是约 $10^{12}$ 量级的浮点操作。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;KV cache 存储 $O(T \cdot L \cdot d)$&lt;/strong&gt;：推理时每一层都要保存所有历史 token 的 K 和 V。对于 1M token、49B 激活参数的模型，仅 KV cache 就需要数十 GB 显存。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这两个约束的乘积效应是毁灭性的：计算成本二次增长，存储成本线性增长，两者叠加让百万级 token 推理在传统架构下几乎不可行。&lt;/p&gt;
&lt;h3 id="12-解法空间三条路线"&gt;1.2 解法空间：三条路线&lt;/h3&gt;
&lt;p&gt;面对这个问题，学界已有三大方向（详见附录 A）：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;稀疏化（Sparse Attention）&lt;/strong&gt;：只让每个 token 关注部分历史，把 $O(T^2)$ 降到 $O(T \cdot k)$，但有信息损失风险&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;线性化（Linear Attention）&lt;/strong&gt;：把历史压缩进固定大小的状态槽，计算 $O(T)$，但表达能力有损&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;压缩（Compressed Attention）&lt;/strong&gt;：把多个 token 的 KV &amp;ldquo;折叠&amp;quot;成一个，降低有效序列长度&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;DeepSeek V4 选择的是&lt;strong&gt;压缩 + 稀疏的组合路线&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;CSA（Compressed Sparse Attention）&lt;/strong&gt;：先 4:1 压缩 KV，再用闪电索引器做 top-k 稀疏选择&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;HCA（Heavily Compressed Attention）&lt;/strong&gt;：更激进的压缩（32:1+），适合需要粗粒度背景感知的层&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="13-不只是-attention-的问题"&gt;1.3 不只是 Attention 的问题&lt;/h3&gt;
&lt;p&gt;但仅仅改 Attention 机制是不够的。要真正支撑 1M token 的大规模训练和部署，还需要解决：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;残差连接瓶颈&lt;/strong&gt;：深层网络的梯度传播稳定性&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;优化器效率&lt;/strong&gt;：万亿参数规模下的收敛速度和参数更新质量&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;通信瓶颈&lt;/strong&gt;：MoE 的 Expert 路由需要大量 all-to-all 通信&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;精度与存储权衡&lt;/strong&gt;：万亿参数 + 百万上下文 = 巨大的显存压力&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;后训练对齐&lt;/strong&gt;：如何让模型既有超长上下文处理能力，又有强大的推理和遵从能力&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这就是为什么 V4 是一个&amp;quot;五维系统工程&amp;rdquo;，而不只是一篇 attention paper。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="2-架构创新一mhc-流形约束超连接"&gt;2. 架构创新一：mHC 流形约束超连接&lt;/h2&gt;
&lt;p&gt;残差连接（Residual Connection）是现代深度网络的基石，从 ResNet（2015）到今天所有主流 Transformer，它几乎是标配。DeepSeek V4 引入的 &lt;strong&gt;mHC（Manifold-Constrained Hyper-Connections）&lt;/strong&gt;，是对残差连接的第三次系统性进化。&lt;/p&gt;
&lt;p&gt;要理解 mHC，需要先理解这条演化史的每一步。&lt;/p&gt;
&lt;h3 id="21-阶段一rcresidual-connection2015信息加法时代"&gt;2.1 阶段一：RC（Residual Connection，2015）——信息加法时代&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;论文&lt;/strong&gt;：He et al., &amp;ldquo;Deep Residual Learning for Image Recognition&amp;rdquo;, arXiv:1512.03385&lt;/p&gt;
&lt;p&gt;ResNet 提出的更新规则看似简单：&lt;/p&gt;
$$h_l = h_{l-1} + f_{l-1}(h_{l-1})$$&lt;p&gt;这个公式有两个核心贡献：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;梯度高速公路&lt;/strong&gt;：对 $h_l$ 求导时，永远保留一个恒等项 $I$：&lt;/p&gt;
$$\frac{\partial h_l}{\partial h_{l-1}} = I + \frac{\partial f_{l-1}}{\partial h_{l-1}}$$&lt;p&gt;这意味着梯度可以无损地传到任意深的层，彻底解决了 vanishing gradient 问题，使得训练几百层的网络成为可能。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;残差学习&lt;/strong&gt;：每一层只需学&amp;quot;在已有表征上做修正&amp;quot;，而不是从零重建表征。这让优化目标更容易，收敛更快。&lt;/p&gt;
&lt;p&gt;将递推式展开，会发现一个有趣的事实：&lt;/p&gt;
$$h_l = h_0 + \sum_{i=0}^{l-1} f_i(h_i)$$&lt;p&gt;&lt;strong&gt;第 $l$ 层接收到的，是所有前面层输出的等权求和&lt;/strong&gt;。注意这里的&amp;quot;等权&amp;quot;：每一层的贡献在求和时权重完全相同，没有任何差异化。&lt;/p&gt;
&lt;p&gt;这正是 RC 最大的局限：&lt;strong&gt;信息聚合方式是固定的、统一权重的、与输入无关的&lt;/strong&gt;。不管当前任务需要更依赖底层的局部特征还是高层的语义特征，RC 总是把所有层等权加在一起。&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;&lt;img alt="残差连接演化史：RC → HC → mHC → AttnRes"
src="https://dingyadong.top/posts/020_deepseek_v4_tech_report/fig-residual-evolution.svg"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 id="22-阶段二hchyper-connectionszhu-et-al-2025多车道时代"&gt;2.2 阶段二：HC（Hyper-Connections，Zhu et al., 2025）——多车道时代&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;论文&lt;/strong&gt;：Zhu et al., &amp;ldquo;Hyper-Connections&amp;rdquo;, arXiv:2409.19606&lt;/p&gt;
&lt;p&gt;如果 RC 是&amp;quot;一条主干道&amp;quot;，HC 就是&amp;quot;把主干道扩成 $n_{hc}$ 条平行车道&amp;quot;，并允许每一层在车道之间灵活地读、写、混合：&lt;/p&gt;
$$X_{l+1} = B_l X_l + C_l F_l(A_l X_l)$$&lt;p&gt;其中 $X_l \in \mathbb{R}^{n_{hc} \times d}$ 是加宽后的残差流（$n_{hc}$ 条车道），三个矩阵分工明确：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;矩阵&lt;/th&gt;
&lt;th&gt;形状&lt;/th&gt;
&lt;th&gt;功能&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;$A_l$&lt;/td&gt;
&lt;td&gt;$1 \times n_{hc}$&lt;/td&gt;
&lt;td&gt;输入映射：从 $n_{hc}$ 条车道里&amp;quot;读&amp;quot;出层 $F_l$ 的输入&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;$B_l$&lt;/td&gt;
&lt;td&gt;$n_{hc} \times n_{hc}$&lt;/td&gt;
&lt;td&gt;残差变换：决定旧车道怎么重组&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;$C_l$&lt;/td&gt;
&lt;td&gt;$n_{hc} \times 1$&lt;/td&gt;
&lt;td&gt;输出映射：决定层输出怎么&amp;quot;写&amp;quot;回各车道&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;与 RC 的差异：RC 强迫每层&amp;quot;读所有 + 写所有&amp;quot;；HC 让每层可以&amp;quot;挑着读、挑着写&amp;quot;。某些车道专门保存底层信息不被覆盖，某些车道承载高层语义反复更新。这给了模型一个&lt;strong&gt;正交于&amp;quot;加深/加宽&amp;quot;的新缩放维度&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;但 HC 有一个严重的稳定性问题&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;如果暂时忽略 $F$ 那一项，连续堆 $L$ 层就是：&lt;/p&gt;
$$X_L = B_{L-1} B_{L-2} \cdots B_1 X_1$$&lt;p&gt;这是一个&lt;strong&gt;矩阵连乘&lt;/strong&gt;。如果每个 $B_l$ 的最大奇异值哪怕只略大于 1（比如 1.05），堆 100 层就是 $1.05^{100} \approx 131$，信号被放大 130 倍——梯度爆炸。反过来，如果略小于 1，深层就指数萎缩——梯度消失。&lt;/p&gt;
&lt;p&gt;HC 的这个问题限制了它在超深网络（比如数百层的 LLM）中的应用。&lt;/p&gt;
&lt;h3 id="23-阶段三mhcmanifold-constrained-hcxie-et-al-2026加约束的多车道"&gt;2.3 阶段三：mHC（Manifold-Constrained HC，Xie et al., 2026）——加约束的多车道&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;论文&lt;/strong&gt;：Xie et al., &amp;ldquo;Manifold-Constrained Hyper-Connections&amp;rdquo;, arXiv:2512.24880&lt;/p&gt;
&lt;p&gt;mHC 的解法非常&amp;quot;几何化&amp;quot;：&lt;strong&gt;直接把 $B_l$ 约束到双随机矩阵集合&lt;/strong&gt;（Birkhoff polytope）上：&lt;/p&gt;
$$\mathcal{M} = \{M : M\mathbf{1} = \mathbf{1},\ \mathbf{1}^T M = \mathbf{1}^T,\ M \geq 0\}$$&lt;p&gt;双随机矩阵的关键性质：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;行和 = 1，列和 = 1&lt;/strong&gt;（概率矩阵的广义）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;所有奇异值 $\leq 1$&lt;/strong&gt;（由 Birkhoff 定理保证）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;双随机矩阵的乘积仍然是双随机矩阵&lt;/strong&gt;（奇异值约束对连乘封闭）&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这正是 HC 梯度爆炸问题的根治方案：不仅让 $B_l$ 的奇异值 $\leq 1$，还保证&lt;strong&gt;连乘后仍然 $\leq 1$&lt;/strong&gt;，因为双随机矩阵对乘法封闭。&lt;/p&gt;
&lt;h4 id="231-sinkhorn-knopp-投影算法"&gt;2.3.1 Sinkhorn-Knopp 投影算法&lt;/h4&gt;
&lt;p&gt;如何在训练中维持 $B_l \in \mathcal{M}$？用 &lt;strong&gt;Sinkhorn-Knopp 算法&lt;/strong&gt;：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;步骤一：保正性&lt;/strong&gt;。先把原始线性层输出 $\tilde{B}_l$ 取指数：&lt;/p&gt;
$$M^{(0)} = \exp(\tilde{B}_l)$$&lt;p&gt;这保证所有元素 $&gt; 0$（满足约束 $M \geq 0$）。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;步骤二：交替归一化&lt;/strong&gt;。反复做行归一化和列归一化：&lt;/p&gt;
$$M^{(t)} = T_r(T_c(M^{(t-1)}))$$&lt;ul&gt;
&lt;li&gt;$T_c$：把每列除以列和（让列和 = 1）&lt;/li&gt;
&lt;li&gt;$T_r$：把每行除以行和（让行和 = 1）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;步骤三：迭代 20 次&lt;/strong&gt;。理论上 Sinkhorn-Knopp 需要无穷次才严格收敛，但实践中 20 次就足够接近双随机矩阵。&lt;/p&gt;
&lt;p&gt;在前向计算时，每一层都要先做这个 20 次迭代，然后用结果 $B_l$ 去乘残差流。&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;&lt;img alt="Sinkhorn-Knopp 迭代：从任意矩阵收敛到双随机矩阵"
src="https://dingyadong.top/posts/020_deepseek_v4_tech_report/fig-mhc-sinkhorn.svg"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 id="232-a-和-c-的约束设计"&gt;2.3.2 A 和 C 的约束设计&lt;/h4&gt;
&lt;p&gt;$B_l$ 用双随机矩阵约束（强约束），而 $A_l$ 和 $C_l$ 则用 Sigmoid 进行软约束：&lt;/p&gt;
$$A_l = \sigma(\tilde{A}_l) \in (0, 1), \quad C_l = 2\sigma(\tilde{C}_l) \in (0, 2)$$&lt;p&gt;&lt;strong&gt;为什么要非负？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;假设 $F_l$ 学到了一个&amp;quot;有用的更新方向&amp;quot; $v$（让某个特征激活更强）。如果 $C_l$ 取负值，那么 $C_l F_l(\cdot) = -|C_l| v$，本来想加进去的有用信息&lt;strong&gt;被反向抵消掉了&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;更糟的是，模型可能学着&amp;quot;互相抵消&amp;quot;：上一层精心算出 $v$，下一层用负的 $C$ 把它减掉，再下一层又用正的 $C$ 加回来……这种死循环式的抵消让训练浪费算力，loss 看起来在动，但实际上没真正学到东西。非负约束直接堵死这条歧路：&lt;strong&gt;只能加，不能减&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;为什么要有界？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;$A$ 是&amp;quot;读&amp;quot;：从加宽的残差流中提取信息喂给 $F$。读取量 $\leq 1$ 是合理的，车道里的信息有限，不应该被过度放大后再输入。&lt;/p&gt;
&lt;p&gt;$C$ 是&amp;quot;写&amp;quot;：把 $F$ 的输出写回残差流。范围 $(0, 2)$ 给了模型一点空间——层信息可能确实需要被&amp;quot;强调地&amp;quot;写入残差流，但不能无限放大。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;为什么 $A/C$ 不用双随机约束？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;因为 $A$ 和 $C$ 在每一层只&lt;strong&gt;作用一次&lt;/strong&gt;（不会跨层累积），所以不会有矩阵连乘导致的指数放大问题。Sigmoid 这种软约束已经足够，不需要像 $B$ 那样的强约束。&lt;/p&gt;
&lt;h4 id="233-工程开销"&gt;2.3.3 工程开销&lt;/h4&gt;
&lt;p&gt;mHC 的全部额外开销（Sinkhorn 迭代 + 加宽残差流）被控制在 &lt;strong&gt;6.7% wall-clock 时间&lt;/strong&gt;以内。相比残差连接改进带来的性能收益，这是非常划算的代价。&lt;/p&gt;
&lt;p&gt;从论文图中可以看到 mHC 的完整示意：&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;&lt;img alt="mHC 流形约束超连接结构示意"
src="https://dingyadong.top/posts/020_deepseek_v4_tech_report/fig-mhc-diagram.svg"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 id="24-阶段四分叉路口attnreskimi2026把残差换成注意力"&gt;2.4 阶段四（分叉路口）：AttnRes（Kimi，2026）——把残差换成注意力&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;论文&lt;/strong&gt;：Kimi Team, &amp;ldquo;AttnRes: Attention as Residual&amp;rdquo;, arXiv:2603.15031&lt;/p&gt;
&lt;p&gt;AttnRes 走了一条更激进的路：&lt;strong&gt;不扩残差宽度，直接把&amp;quot;沿深度方向的等权求和&amp;quot;替换成&amp;quot;沿深度方向的注意力&amp;quot;&lt;/strong&gt;。&lt;/p&gt;
&lt;h4 id="241-从-hc-公式推导出层间-attention"&gt;2.4.1 从 HC 公式推导出层间 Attention&lt;/h4&gt;
&lt;p&gt;从 HC 的公式出发：&lt;/p&gt;
$$X_l = B_l X_{l-1} + C_l y_l, \quad y_l = F_l(A_l X_{l-1})$$&lt;p&gt;将递推完全展开（从 $X_l$ 一直往回代到 $X_0$，约定 $X_0 = C_0 y_0$）：&lt;/p&gt;
$$X_l = \sum_{s=0}^{l} B_{l \leftarrow s+1} C_s \cdot y_s$$&lt;p&gt;其中 &lt;strong&gt;累积矩阵乘积&lt;/strong&gt; 定义为：&lt;/p&gt;
$$B_{l \leftarrow s} := B_l B_{l-1} \cdots B_{s+1} B_s, \quad B_{l \leftarrow l+1} = I$$&lt;p&gt;这个展开式说明：第 $l$ 层的残差流是&lt;strong&gt;所有历史层输出 $y_s$ 的加权和&lt;/strong&gt;，权重 $B_{l \leftarrow s+1} C_s$ 由矩阵连乘决定。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;第 $l+1$ 层的 $F_{l+1}$ 看到的输入是&lt;/strong&gt;：&lt;/p&gt;
$$y_{l+1} = F_{l+1}(A_{l+1} X_l) = F_{l+1}\left(\sum_{s=0}^{l} A_{l+1} B_{l \leftarrow s+1} C_s \cdot y_s\right)$$&lt;p&gt;定义 &lt;strong&gt;层间注意力权重&lt;/strong&gt;：&lt;/p&gt;
$$a_{l+1, s} = A_{l+1} \cdot \underbrace{B_l B_{l-1} \cdots B_{s+1}}_{\text{若干 B 的连乘}} \cdot C_s$$&lt;p&gt;这就是 AttnRes 的核心洞察：&lt;strong&gt;HC 的展开式本质上是层间注意力的雏形&lt;/strong&gt;，其中 $A_{l+1}$ 是 Query，$C_s$ 是 Key，$B_{l \leftarrow s+1}$ 是相对位置算子。&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;项&lt;/th&gt;
&lt;th&gt;在 attention 里的角色&lt;/th&gt;
&lt;th&gt;直觉&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;$A_{l+1}$&lt;/td&gt;
&lt;td&gt;Query（来自第 $l+1$ 层）&lt;/td&gt;
&lt;td&gt;我这层想从历史里读什么&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;$C_s$&lt;/td&gt;
&lt;td&gt;Key（来自第 $s$ 层）&lt;/td&gt;
&lt;td&gt;第 $s$ 层把自己写成什么样&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;$B_{l \leftarrow s+1}$&lt;/td&gt;
&lt;td&gt;相对位置算子&lt;/td&gt;
&lt;td&gt;从 $s$ 到 $l+1$ 这段距离上信号如何变化&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h4 id="242-attnres-如何保证训练稳定"&gt;2.4.2 AttnRes 如何保证训练稳定&lt;/h4&gt;
&lt;p&gt;如果 $B_{l \leftarrow s+1}$（连乘链）的奇异值 $&gt; 1$ 或 $\lt 1$，注意力权重 $a_{l+1, s}$ 会指数级放大/缩小，导致反向传播梯度同样爆炸/消失。&lt;/p&gt;
&lt;p&gt;AttnRes 的解法是&lt;strong&gt;绕开 $B$ 的连乘&lt;/strong&gt;，直接显式定义注意力权重：&lt;/p&gt;
$$a_{l+1, s} = \exp(w_{l+1}^\top \text{RMSNorm}(k_s))$$&lt;p&gt;然后做 softmax 归一化，其中：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;$w_{l+1}$：直接学习的权重向量（相当于 Query，但绕开了 $A \cdot B \cdot C$ 的间接构造）&lt;/li&gt;
&lt;li&gt;$k_s = y_s$：直接用 $y_s$ 本身作为 Key（绕开 $C_s$ 投影）&lt;/li&gt;
&lt;li&gt;$B_{l \leftarrow s+1}$（相对位置算子）：舍弃&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这就消除了矩阵连乘的稳定性隐患，同时保留了层间注意力的本质。&lt;/p&gt;
&lt;h4 id="243-block-attnres从-ol-到-on"&gt;2.4.3 Block AttnRes：从 O(L²) 到 O(N²)&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;Full AttnRes 的工程问题&lt;/strong&gt;：&lt;/p&gt;
&lt;p&gt;Full AttnRes 在小规模训练里额外开销可接受，但在大规模分布式训练下：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;流水线并行&lt;/strong&gt;：每一层的输出都得跨 stage 传输 → 通信量从 $O(d)$ 变成 $O(Ld)$&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;激活重计算&lt;/strong&gt;：原本可以丢弃的中间激活现在必须留着 → 显存压力剧增&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Block AttnRes 的解法&lt;/strong&gt;：把 $L$ 层分成 $N$ 个 block（论文用 $N=8$），block 内部通过求和压成一个表示，&lt;strong&gt;只在 block 之间做 attention&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;这把通信和显存从 $O(Ld)$ 降到 $O(Nd)$。&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;&lt;img alt="Block AttnRes vs Full AttnRes 复杂度与通信量对比"
src="https://dingyadong.top/posts/020_deepseek_v4_tech_report/fig-block-attnres.svg"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;两个关键设计细节：&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;为什么是&amp;quot;压缩&amp;quot;而不是&amp;quot;稀疏&amp;quot;？&lt;/strong&gt; 作者一开始尝试过 Sliding Window Attention（只看最近几层），结果反而比普通 RC 还差。压缩方法包含了 RC 的基础——退化到 $N=1$ 的时候，就等同于 RC。而稀疏方法在 $N=1$ 时会退化成&amp;quot;什么都不看&amp;quot;，丢失了全局信息。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Embedding 层为什么单独成 block？&lt;/strong&gt; 通过观察 Full 版的注意力矩阵，模型偏向于给 Embedding 层可观的注意力权重。Embedding 层携带了原始 token 信息，不应该被&amp;quot;压缩消融&amp;quot;，因此单独保留。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;实测收益&lt;/strong&gt;：Block AttnRes 在所有规模上都优于 RC 基线，相当于 &lt;strong&gt;1.25× 算力优势&lt;/strong&gt;（同等计算预算下性能更好，或同等性能只需 80% 计算）。&lt;/p&gt;
&lt;h3 id="25-mhc-在-v4-中的定位"&gt;2.5 mHC 在 V4 中的定位&lt;/h3&gt;
&lt;p&gt;V4 使用的是 &lt;strong&gt;mHC&lt;/strong&gt;（不是 AttnRes）。从实验数据看，两者在性能上接近，但 mHC 的实现更容易与现有分布式训练框架集成（详见第 6.7 节工程实现）。&lt;/p&gt;
&lt;h3 id="26-四种残差连接综合对比"&gt;2.6 四种残差连接综合对比&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;方案&lt;/th&gt;
&lt;th&gt;数学形式&lt;/th&gt;
&lt;th&gt;梯度稳定性&lt;/th&gt;
&lt;th&gt;计算开销&lt;/th&gt;
&lt;th&gt;扩展能力&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;RC&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;$h_l = h_{l-1} + f_{l-1}$&lt;/td&gt;
&lt;td&gt;✅ 好（恒等项）&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;❌ 固定等权&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;HC&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;$X_{l+1} = B_l X_l + C_l F_l(A_l X_l)$&lt;/td&gt;
&lt;td&gt;⚠️ 不稳定（矩阵连乘）&lt;/td&gt;
&lt;td&gt;低&lt;/td&gt;
&lt;td&gt;✅ 灵活读写&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;mHC&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;HC + $B_l \in \mathcal{M}$（双随机矩阵）&lt;/td&gt;
&lt;td&gt;✅ 好（Birkhoff 保证）&lt;/td&gt;
&lt;td&gt;6.7%&lt;/td&gt;
&lt;td&gt;✅ 灵活读写&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;AttnRes&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;层间 softmax attention&lt;/td&gt;
&lt;td&gt;✅ 好（softmax 归一化）&lt;/td&gt;
&lt;td&gt;中等&lt;/td&gt;
&lt;td&gt;✅✅ 最灵活&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id="3-架构创新二混合注意力-csa--hca"&gt;3. 架构创新二：混合注意力 CSA + HCA&lt;/h2&gt;
&lt;h3 id="31-长上下文-attention-的三大优化思路"&gt;3.1 长上下文 Attention 的三大优化思路&lt;/h3&gt;
&lt;p&gt;在深入 CSA 和 HCA 之前，先建立对整个优化空间的认知地图。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;思路 A：稀疏化（Sparse Attention）&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;不让每个 token 关注所有历史，只关注部分——局部窗口、全局 token、或动态选择的 top-k token。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;代表&lt;/strong&gt;：Sliding Window Attention（SWA）、BigBird、Longformer、DSA（DeepSeek Sparse Attention）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;计算复杂度&lt;/strong&gt;：$O(T \cdot k)$，$k \ll T$&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;KV cache&lt;/strong&gt;：$O(T)$（仍需全量存储，只是计算时稀疏选择）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;核心权衡&lt;/strong&gt;：简单高效，但有信息损失风险——那些&amp;quot;被稀疏掉&amp;quot;的 token 可能携带关键信息&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;&lt;img alt="稀疏化 Attention 示意图"
src="https://dingyadong.top/posts/020_deepseek_v4_tech_report/fig-sparse-attention.svg"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;思路 B：线性化（Linear Attention）&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;把所有历史 token 的信息累积进一个固定大小的&amp;quot;状态槽&amp;quot;（state），每个 query 只查这个状态一次。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;代表&lt;/strong&gt;：Linear Transformer、RetNet、Mamba、DeltaNet&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;计算复杂度&lt;/strong&gt;：$O(T)$（每步更新 state + 查询 state）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;KV cache&lt;/strong&gt;：$O(1)$（只有固定大小的 state）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;核心权衡&lt;/strong&gt;：极致高效，但丢失了 exact attention 的精确召回能力，对&amp;quot;精确定位历史特定位置&amp;quot;的任务有明显损失&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;&lt;img alt="线性化 Attention 示意图"
src="https://dingyadong.top/posts/020_deepseek_v4_tech_report/fig-linear-attention.svg"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;思路 C：压缩（Compressed Attention）&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;把多个 token 的 KV &amp;ldquo;折叠&amp;quot;成更少的 KV，减少有效序列长度，但保留了 softmax exact attention 的精确性。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;代表&lt;/strong&gt;：MQA（Multi-Query Attention）、GQA（Grouped-Query Attention）、MLA（Multi-head Latent Attention，DeepSeek-V3）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;计算复杂度&lt;/strong&gt;：$O(T \cdot T/m)$（$m$ 是压缩比），KV cache $O(T/m)$&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;核心权衡&lt;/strong&gt;：精度损失最小，但压缩本身有信息融合的偏差&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;&lt;img alt="压缩 Attention 示意图"
src="https://dingyadong.top/posts/020_deepseek_v4_tech_report/fig-compressed-attention.svg"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;DeepSeek V4 的选择：思路 A + C 的组合&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;V4 不单独选一条路，而是把&amp;quot;压缩&amp;quot;和&amp;quot;稀疏&amp;quot;组合起来：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;先压缩&lt;/strong&gt;：用 CSA 的 4:1 压缩（或 HCA 的 32:1+ 压缩），把 KV 从 $T$ 条压缩到 $T/m$ 条&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;再稀疏&lt;/strong&gt;（CSA 特有）：用闪电索引器从 $T/m$ 条压缩 KV 里选 top-$k$ 条&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这样计算复杂度从 $O(T^2)$ 降到 $O(T \cdot k)$，$k \ll T$，且 KV cache 从 $O(T)$ 降到 $O(T/m)$。&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;&lt;img alt="Attention 优化三大思路综合对比"
src="https://dingyadong.top/posts/020_deepseek_v4_tech_report/fig-attention-taxonomy.svg"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 id="32-csacompressed-sparse-attention详解"&gt;3.2 CSA（Compressed Sparse Attention）详解&lt;/h3&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;&lt;strong&gt;CSA = 算两套 overlap KV + softmax 软融合（4:1 压缩）+ 低秩 query + ReLU 闪电索引器（top-k 稀疏）+ MQA + 分组投影&lt;/strong&gt;。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;CSA 的整体流程分 4 步：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;输入：H ∈ ℝ^(n×d) (n 个 token，每个 d 维)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↓
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;【步骤一】算两套 KV (C^a, C^b) 和软选择权重 (Z^a, Z^b)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↓
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;【步骤二】每 m 个相邻 token 的 KV 软融合成 1 个
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 得到 C^Comp ∈ ℝ^((n/m)×c)，序列长度压缩 m 倍
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↓
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;【步骤三】闪电索引器给每个 query 打分
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 从 n/m 个压缩 KV 里选出 top-k 个最相关的
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↓
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;【步骤四】在选出的 k 个压缩 KV 上做 MQA 注意力
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 得到最终输出
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;&lt;img alt="CSA 完整四步流程图"
src="https://dingyadong.top/posts/020_deepseek_v4_tech_report/fig-csa-pipeline.svg"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 id="321-步骤一算两套-kv-和软选择权重"&gt;3.2.1 步骤一：算两套 KV 和软选择权重&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;输入&lt;/strong&gt;：$H \in \mathbb{R}^{n \times d}$（$n$ 个 token，每个 $d$ 维）&lt;/p&gt;
&lt;p&gt;CSA 不是只算一套 KV，而是&lt;strong&gt;算了两套&lt;/strong&gt;：&lt;/p&gt;
$$C^a = H \cdot W^{aKV}, \quad C^b = H \cdot W^{bKV}$$$$Z^a = H \cdot W^{aZ}, \quad Z^b = H \cdot W^{bZ}$$&lt;p&gt;四个矩阵都可训练：$W^{aKV}, W^{bKV}, W^{aZ}, W^{bZ} \in \mathbb{R}^{d \times c}$，$c$ 是 head 维度（V4-Pro 配置下约 512）。&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;变量&lt;/th&gt;
&lt;th&gt;形状&lt;/th&gt;
&lt;th&gt;角色&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;$C^a$&lt;/td&gt;
&lt;td&gt;$n \times c$&lt;/td&gt;
&lt;td&gt;第一套 KV 候选&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;$C^b$&lt;/td&gt;
&lt;td&gt;$n \times c$&lt;/td&gt;
&lt;td&gt;第二套 KV 候选&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;$Z^a$&lt;/td&gt;
&lt;td&gt;$n \times c$&lt;/td&gt;
&lt;td&gt;$C^a$ 的&amp;quot;参与度分数&amp;rdquo;（软门控）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;$Z^b$&lt;/td&gt;
&lt;td&gt;$n \times c$&lt;/td&gt;
&lt;td&gt;$C^b$ 的&amp;quot;参与度分数&amp;quot;（软门控）&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;$Z$ 是 $C$ 的&amp;quot;软门控&amp;quot;，告诉模型&amp;quot;这个 KV 在融合时占多大比重&amp;quot;。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;为什么要两套 KV？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;&lt;img alt="CSA 两套 KV Overlap 设计"
src="https://dingyadong.top/posts/020_deepseek_v4_tech_report/fig-csa-kv-softmerge.svg"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;这里有一个精妙的设计：&lt;strong&gt;两套 KV 的覆盖范围有 Overlap&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;第 $i$ 个压缩块：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;来自 $C^a$ 的：第 $mi$ 到 $m(i+1)-1$ 共 $m$ 个连续 token（当前窗口）&lt;/li&gt;
&lt;li&gt;来自 $C^b$ 的：第 $m(i-1)$ 到 $mi-1$ 共 $m$ 个连续 token（前一个窗口）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;也就是说，$C^b$ 比 $C^a$ &lt;strong&gt;往前错开了 $m$ 个 token&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;这种 Overlap 设计可以&lt;strong&gt;避免压缩块边界的&amp;quot;信息断裂&amp;quot;&lt;/strong&gt;：如果一个语义实体恰好横跨两个压缩块的边界，纯硬切分会把它撕成两半，而 Overlap 设计让它在两个压缩块里都有部分体现。&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;&lt;img alt="CSA Overlap KV 两套窗口设计示意"
src="https://dingyadong.top/posts/020_deepseek_v4_tech_report/fig-csa-overlap-kv.svg"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 id="322-步骤二把每-m-个-kv-融合成-1-个"&gt;3.2.2 步骤二：把每 m 个 KV 融合成 1 个&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;融合权重计算&lt;/strong&gt;：&lt;/p&gt;
$$p_i = \text{softmax}\left(\text{concat}\left([Z^a_{mi:m(i+1)}, Z^b_{m(i-1):mi}] + [B^a, B^b]\right)\right)$$&lt;p&gt;其中 $B^a, B^b \in \mathbb{R}^{m \times c}$ 是可学习的位置偏置（对 V4-Pro，$m=4$，$c=512$，所以形状是 $4 \times 512$）。&lt;/p&gt;
&lt;p&gt;softmax 沿着 $2m$ 个候选（来自 $C^a$ 的 $m$ 个 + 来自 $C^b$ 的 $m$ 个）计算，得到每个候选 token 的融合权重。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;加权融合&lt;/strong&gt;：&lt;/p&gt;
$$C^{Comp}_i = \sum_{j \in \{m(i-1):m(i+1)\}} p_{i,j} \cdot C_j$$&lt;p&gt;其中 $C_j$ 来自 $C^a$ 或 $C^b$（取决于 $j$ 的位置）。结果 $C^{Comp}_i \in \mathbb{R}^c$，是第 $i$ 个压缩块的 KV 表示。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;全序列压缩结果&lt;/strong&gt;：$C^{Comp} \in \mathbb{R}^{(n/m) \times c}$，序列长度从 $n$ 压缩到 $n/m$（$m=4$ 时降为原来的 1/4）。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;KV 解包&lt;/strong&gt;：将压缩 KV 分成 K 和 V 两部分（通过可学习的投影或直接分割），得到 $K^{Comp}, V^{Comp} \in \mathbb{R}^{(n/m) \times c}$。&lt;/p&gt;
&lt;h4 id="323-步骤三闪电索引器lightning-indexer选-top-k"&gt;3.2.3 步骤三：闪电索引器（Lightning Indexer）选 top-k&lt;/h4&gt;
&lt;p&gt;这是 CSA 最有创意的部分。有了 $n/m$ 个压缩 KV 之后，还需要进一步降低计算量——每个 query 只选 top-$k$ 个最相关的压缩 KV 来做精确 attention。&lt;/p&gt;
&lt;p&gt;但如何高效地做这个 top-$k$ 选择？直接用 softmax 注意力来选会变成循环依赖。CSA 用的是一个&lt;strong&gt;独立的闪电索引器&lt;/strong&gt;，使用 ReLU 而非 softmax 来打分。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;子步骤一：算&amp;quot;压缩索引器 keys&amp;quot;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;从已有的压缩 KV $C^{Comp}$ 出发，通过额外投影得到专门用于索引的 key：&lt;/p&gt;
$$K^{IComp} = C^{Comp} \cdot W^{IK}$$&lt;p&gt;其中 $W^{IK} \in \mathbb{R}^{c \times c^I n_h^I}$，$n_h^I$ 是索引器 head 数，$c^I$ 是每个 head 维度。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;子步骤二：算 query token 的&amp;quot;索引器 queries&amp;quot;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;对每个 query token $t$，先算低秩潜向量：&lt;/p&gt;
$$c_t^Q = h_t \cdot W^{DQ} \in \mathbb{R}^{d_c}$$&lt;p&gt;再升维得到索引器 query：&lt;/p&gt;
$$q_{t,h}^I = c_t^Q \cdot W^{IUQ}_h \in \mathbb{R}^{c^I}$$&lt;p&gt;注意 $c_t^Q$ 会被索引器和后续的精确 attention 共享——这节省了参数和计算。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;子步骤三：算&amp;quot;head 权重&amp;quot;&lt;/strong&gt;&lt;/p&gt;
$$w_t^I = h_t \cdot W^w \in \mathbb{R}^{n_h^I}$$&lt;p&gt;每个索引器 head 一个标量权重，直接从 $h_t$ 计算（不经过低秩压缩 $c_t^Q$），保留更多原始信息。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;子步骤四：ReLU 打分&lt;/strong&gt;&lt;/p&gt;
$$I_{t,s} = \sum_{h=1}^{n_h^I} w_{t,h}^I \cdot \text{ReLU}(q_{t,h}^I \cdot K_s^{IComp})$$&lt;p&gt;&lt;strong&gt;为什么用 ReLU 而不是 softmax？&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;量化友好&lt;/strong&gt;：ReLU 输出非负，可以直接量化为 INT8/FP4，softmax 输出浮点，量化精度损失大&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Top-k 并行&lt;/strong&gt;：ReLU 打分是独立的，可以并行化；softmax 有全局归一化依赖&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;稀疏性自然涌现&lt;/strong&gt;：ReLU 会把&amp;quot;不相关的&amp;quot;压缩 KV 打成 0 分，自然产生稀疏性&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;子步骤五：Top-k 选择&lt;/strong&gt;&lt;/p&gt;
$$\mathcal{S}_t = \text{argtopk}_{s}(I_{t,s}), \quad |\mathcal{S}_t| = k$$&lt;p&gt;每个 query token $t$ 选出得分最高的 $k$ 个压缩 KV 的索引集合 $\mathcal{S}_t$。&lt;/p&gt;
&lt;h4 id="324-步骤四在选中的-kv-上做-multi-query-attentionmqa"&gt;3.2.4 步骤四：在选中的 KV 上做 Multi-Query Attention（MQA）&lt;/h4&gt;
&lt;p&gt;最终 attention：&lt;/p&gt;
$$\text{output}_t = \text{softmax}\left(\frac{q_t \cdot K^{Comp}_{\mathcal{S}_t}^\top}{\sqrt{d_h}}\right) \cdot V^{Comp}_{\mathcal{S}_t}$$&lt;p&gt;其中 $q_t$ 是从 $c_t^Q$ 升维得到的精确 attention query。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;MQA&lt;/strong&gt;（Multi-Query Attention）：所有 attention head 共享同一套 K 和 V，只有 Q 是 head-specific 的。这进一步减少了 KV cache 的存储需求。&lt;/p&gt;
&lt;h4 id="325-csa-完整-shape-推导"&gt;3.2.5 CSA 完整 Shape 推导&lt;/h4&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;阶段&lt;/th&gt;
&lt;th&gt;变量&lt;/th&gt;
&lt;th&gt;形状&lt;/th&gt;
&lt;th&gt;说明&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;输入&lt;/td&gt;
&lt;td&gt;$H$&lt;/td&gt;
&lt;td&gt;$n \times d$&lt;/td&gt;
&lt;td&gt;原始隐状态序列&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;步骤一&lt;/td&gt;
&lt;td&gt;$C^a, C^b$&lt;/td&gt;
&lt;td&gt;$n \times c$&lt;/td&gt;
&lt;td&gt;两套 KV 候选&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;步骤一&lt;/td&gt;
&lt;td&gt;$Z^a, Z^b$&lt;/td&gt;
&lt;td&gt;$n \times c$&lt;/td&gt;
&lt;td&gt;软选择权重&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;步骤二&lt;/td&gt;
&lt;td&gt;$C^{Comp}$&lt;/td&gt;
&lt;td&gt;$(n/m) \times c$&lt;/td&gt;
&lt;td&gt;压缩后 KV&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;步骤三&lt;/td&gt;
&lt;td&gt;$K^{IComp}$&lt;/td&gt;
&lt;td&gt;$(n/m) \times (c^I n_h^I)$&lt;/td&gt;
&lt;td&gt;索引器 keys&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;步骤三&lt;/td&gt;
&lt;td&gt;$q_{t,h}^I$&lt;/td&gt;
&lt;td&gt;$c^I$&lt;/td&gt;
&lt;td&gt;每个 token 的索引器 query&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;步骤三&lt;/td&gt;
&lt;td&gt;$I_{t,s}$&lt;/td&gt;
&lt;td&gt;$n \times (n/m)$&lt;/td&gt;
&lt;td&gt;打分矩阵（稀疏）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;步骤三&lt;/td&gt;
&lt;td&gt;$\mathcal{S}_t$&lt;/td&gt;
&lt;td&gt;$k$&lt;/td&gt;
&lt;td&gt;top-k 选中索引&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;步骤四&lt;/td&gt;
&lt;td&gt;$q_t$&lt;/td&gt;
&lt;td&gt;$d_h \cdot n_h$&lt;/td&gt;
&lt;td&gt;精确 attention query&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;步骤四&lt;/td&gt;
&lt;td&gt;$\text{output}_t$&lt;/td&gt;
&lt;td&gt;$d_h \cdot n_h$&lt;/td&gt;
&lt;td&gt;最终输出&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;有效计算复杂度：$O(T \cdot c + T/m \cdot c + T \cdot k \cdot d_h)$，相比 $O(T^2 d_h)$ 降低约 $T \cdot m / k$ 倍。&lt;/p&gt;
&lt;h3 id="33-hcaheavily-compressed-attention详解"&gt;3.3 HCA（Heavily Compressed Attention）详解&lt;/h3&gt;
&lt;p&gt;HCA 是 CSA 的&amp;quot;轻量版&amp;quot;——更激进的压缩，没有稀疏选择，用于不需要精确长程依赖的层。&lt;/p&gt;
&lt;h4 id="331-整体流程"&gt;3.3.1 整体流程&lt;/h4&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;输入：H ∈ ℝ^(n×d)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↓
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;【步骤一】单路 KV 投影（没有 C^b，只有一套 C^a = C）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↓
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;【步骤二】直接压缩（更大压缩比 M ≫ m）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; C^{Comp} ∈ ℝ^((n/M)×c)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↓
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;【步骤三】对所有压缩 KV 做稠密 attention（不做 top-k 稀疏）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↓
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;【步骤四】MQA + 分组输出投影
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id="332-关键差异"&gt;3.3.2 关键差异&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;HCA 相比 CSA 的主要区别：&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;单路 KV，没有 Overlap&lt;/strong&gt;：HCA 只用一套 KV 投影（没有 $C^b$ 那套），没有 Overlap 设计&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;更大压缩比&lt;/strong&gt;：HCA 的 $M \gg m$（V4-Pro 中 HCA 的压缩比约 32，CSA 约 4）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;全量稠密 attention，没有 top-k&lt;/strong&gt;：压缩到 $n/M$ 个 KV 后，直接对所有进行 attention&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;定位粗粒度&lt;/strong&gt;：HCA 适合&amp;quot;需要感知整体上下文背景，但不需要精确定位特定位置&amp;quot;的场景&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 id="333-hca-完整-shape-表"&gt;3.3.3 HCA 完整 Shape 表&lt;/h4&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;阶段&lt;/th&gt;
&lt;th&gt;变量&lt;/th&gt;
&lt;th&gt;形状&lt;/th&gt;
&lt;th&gt;说明&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;输入&lt;/td&gt;
&lt;td&gt;$H$&lt;/td&gt;
&lt;td&gt;$n \times d$&lt;/td&gt;
&lt;td&gt;原始序列&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;步骤一&lt;/td&gt;
&lt;td&gt;$C$&lt;/td&gt;
&lt;td&gt;$n \times c$&lt;/td&gt;
&lt;td&gt;单路 KV 投影&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;步骤二&lt;/td&gt;
&lt;td&gt;$C^{Comp}$&lt;/td&gt;
&lt;td&gt;$(n/M) \times c$&lt;/td&gt;
&lt;td&gt;重度压缩 KV&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;步骤三&lt;/td&gt;
&lt;td&gt;attention&lt;/td&gt;
&lt;td&gt;$n \times (n/M)$&lt;/td&gt;
&lt;td&gt;稠密 attention&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;步骤四&lt;/td&gt;
&lt;td&gt;output&lt;/td&gt;
&lt;td&gt;$n \times d$&lt;/td&gt;
&lt;td&gt;输出序列&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;有效计算复杂度：$O(T \cdot T/M \cdot d_h)$，压缩比 $M$ 越大越省。&lt;/p&gt;
&lt;h3 id="34-csa-vs-hca定位与分工"&gt;3.4 CSA vs HCA：定位与分工&lt;/h3&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;&lt;img alt="HCA vs CSA 定位对比"
src="https://dingyadong.top/posts/020_deepseek_v4_tech_report/fig-hca-vs-csa-compare.svg"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;维度&lt;/th&gt;
&lt;th&gt;CSA&lt;/th&gt;
&lt;th&gt;HCA&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;压缩比&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;低（约 4:1）&lt;/td&gt;
&lt;td&gt;高（约 32:1+）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;是否 top-k 稀疏&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;✅ 是（闪电索引器）&lt;/td&gt;
&lt;td&gt;❌ 否（稠密）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;KV 路数&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;两套（Overlap 设计）&lt;/td&gt;
&lt;td&gt;一套&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;精确长程依赖&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;✅ 强&lt;/td&gt;
&lt;td&gt;⚠️ 弱&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;粗粒度上下文感知&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;✅ 有&lt;/td&gt;
&lt;td&gt;✅ 强&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;计算复杂度&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;$O(T \cdot k)$&lt;/td&gt;
&lt;td&gt;$O(T \cdot T/M)$&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;KV cache&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;$O(T/m)$&lt;/td&gt;
&lt;td&gt;$O(T/M)$（更小）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;适合的层&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;主力深度理解层&lt;/td&gt;
&lt;td&gt;背景感知辅助层&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;V4 的实际部署策略：在 Transformer 的不同层混合使用 CSA 和 HCA（外加 SWA 用于局部依赖），形成一个多粒度的 Hybrid Attention 体系。&lt;/p&gt;
&lt;h3 id="35-其他-attention-细节"&gt;3.5 其他 Attention 细节&lt;/h3&gt;
&lt;h4 id="351-query-和-kv-的-rmsnorm"&gt;3.5.1 Query 和 KV 的 RMSNorm&lt;/h4&gt;
&lt;p&gt;V4 在 attention 的 Q 和 K 上都加了 RMSNorm（Root Mean Square Layer Normalization）：&lt;/p&gt;
$$\text{RMSNorm}(x) = \frac{x}{\text{RMS}(x)} \cdot \gamma, \quad \text{RMS}(x) = \sqrt{\frac{1}{d}\sum_i x_i^2}$$&lt;p&gt;&lt;strong&gt;为什么要加 RMSNorm？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;在超长序列（1M token）下，Q 和 K 的方差可能因层数增加而失控，导致 attention score 的数值范围极度不稳定。RMSNorm 稳定了 Q 和 K 的幅度，使 attention score 的分布可控，避免 softmax 饱和（全部趋向 0 或 1，梯度消失）。&lt;/p&gt;
&lt;h4 id="352-部分-ropepartial-rotary-positional-embedding"&gt;3.5.2 部分 RoPE（Partial Rotary Positional Embedding）&lt;/h4&gt;
&lt;p&gt;标准 RoPE 对 head 维度的所有维度都施加旋转位置编码。V4 只对 &lt;strong&gt;head 维度的前半部分&lt;/strong&gt;施加 RoPE，后半部分保留不带位置信息的&amp;quot;内容表示&amp;quot;。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;动机&lt;/strong&gt;：RoPE 对长程相对位置的编码能力有限（远距离的旋转矩阵趋向相互抵消）。保留一部分无位置信息的维度，让模型能通过&amp;quot;纯内容相似性&amp;quot;来做长程 attention，弥补 RoPE 在超长序列上的局限。&lt;/p&gt;
&lt;h4 id="353-滑动窗口分支sliding-window-branch"&gt;3.5.3 滑动窗口分支（Sliding Window Branch）&lt;/h4&gt;
&lt;p&gt;在每一个 Transformer 层里，V4 保留了一个小的 SWA（Sliding Window Attention）分支，窗口大小约 4K token。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;为什么要保留 SWA？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;CSA 和 HCA 专注于长程依赖，但局部短程依赖（相邻句子、短语内部的关系）同样重要。SWA 以极低的计算成本（$O(T \cdot w)$，$w = 4096$）覆盖局部信息，与 CSA/HCA 的长程能力形成互补。&lt;/p&gt;
&lt;h4 id="354-attention-sink"&gt;3.5.4 Attention Sink&lt;/h4&gt;
&lt;p&gt;在极长序列中，第一个 token（BOS token）往往会吸收大量 attention 权重，即使它的内容对当前 query 并不相关。这种现象叫 &amp;ldquo;attention sink&amp;rdquo;。&lt;/p&gt;
&lt;p&gt;V4 专门为 BOS token 保留一个 sink token slot，让模型有一个&amp;quot;安全的垃圾桶&amp;quot;来倾倒多余的 attention 权重，避免这种权重扩散影响到真正有用的 token。&lt;/p&gt;
&lt;h3 id="36-hybrid-attention-层分配策略"&gt;3.6 Hybrid Attention 层分配策略&lt;/h3&gt;
&lt;p&gt;V4 的每个 Transformer 层使用以下 attention 策略之一：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;CSA&lt;/strong&gt;：用于大多数层（主力长程依赖）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;HCA&lt;/strong&gt;：用于部分层（粗粒度背景）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SWA&lt;/strong&gt;：局部辅助分支，几乎每层都有&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;具体的层分配比例在预训练时会渐进调整（详见第 7.5 节&amp;quot;Attention 策略的渐进切换&amp;quot;）。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="4-架构创新三muon-优化器"&gt;4. 架构创新三：Muon 优化器&lt;/h2&gt;
&lt;h3 id="41-为什么不满足于-adam"&gt;4.1 为什么不满足于 Adam？&lt;/h3&gt;
&lt;p&gt;Adam 是当前训练大型语言模型的标配优化器，它的核心是对梯度做自适应缩放：&lt;/p&gt;
$$m_t = \beta_1 m_{t-1} + (1-\beta_1) g_t \quad \text{（一阶矩：梯度指数平滑）}$$&lt;p&gt;
&lt;/p&gt;
$$v_t = \beta_2 v_{t-1} + (1-\beta_2) g_t^2 \quad \text{（二阶矩：梯度平方指数平滑）}$$&lt;p&gt;
&lt;/p&gt;
$$\hat{m}_t = m_t / (1-\beta_1^t), \quad \hat{v}_t = v_t / (1-\beta_2^t)$$&lt;p&gt;
&lt;/p&gt;
$$\theta_{t+1} = \theta_t - \eta \cdot \hat{m}_t / (\sqrt{\hat{v}_t} + \epsilon)$$&lt;p&gt;Adam 的自适应缩放对不同参数的梯度量级差异很大时表现好，但它有一个不那么明显的问题：&lt;strong&gt;Adam 的更新方向不一定是最优的&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;具体来说，对于一个矩阵参数 $W \in \mathbb{R}^{m \times n}$（比如 MLP 的权重矩阵），Adam 的更新 $\hat{m}_t / (\sqrt{\hat{v}_t} + \epsilon)$ 是对梯度的元素级操作，没有考虑矩阵整体的几何结构。&lt;/p&gt;
&lt;p&gt;一个更好的问题是：&lt;strong&gt;给定梯度 $G$，什么方向的更新 $\Delta W$ 在 Frobenius 范数约束 $\|\Delta W\|_F \leq \delta$ 下最大化一阶泰勒近似的下降量？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;答案是：&lt;/p&gt;
$$\Delta W^* = -\delta \cdot \frac{G}{\|G\|_F}$$&lt;p&gt;即梯度方向归一化。但这只是&amp;quot;各向同性&amp;quot;的解。实际上，当 $m \neq n$ 时（宽矩形矩阵），存在更优的解法。&lt;/p&gt;
&lt;h3 id="42-muon-的核心思路正交化梯度"&gt;4.2 Muon 的核心思路：正交化梯度&lt;/h3&gt;
&lt;p&gt;Muon（&lt;strong&gt;M&lt;/strong&gt;omentum + &lt;strong&gt;U&lt;/strong&gt;pdate with &lt;strong&gt;O&lt;/strong&gt;rthogonal &lt;strong&gt;U&lt;/strong&gt;nification）的核心思想是：&lt;strong&gt;先对梯度做正交化处理，再用于参数更新&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;具体来说，对于每个矩阵参数 $W$ 的梯度 $G$，Muon 先计算动量：&lt;/p&gt;
$$M_t = \beta M_{t-1} + G_t \quad \text{（带 Nesterov 的动量）}$$&lt;p&gt;然后对 $M_t$ 做&lt;strong&gt;Newton-Schulz 迭代&lt;/strong&gt;，得到一个&amp;quot;正交化&amp;quot;的梯度 $\text{NS}(M_t)$，再用于更新：&lt;/p&gt;
$$W_{t+1} = W_t - \eta \cdot \text{NS}(M_t)$$&lt;p&gt;正交化的直觉：把梯度矩阵 $G$ 正交化，相当于找到一个&amp;quot;条件数&amp;quot;尽量小的更新方向。对于宽矩形矩阵（列数 $\gg$ 行数），这比梯度归一化更好地保留了更新的&amp;quot;有效秩&amp;quot;。&lt;/p&gt;
&lt;h3 id="43-newton-schulz-迭代"&gt;4.3 Newton-Schulz 迭代&lt;/h3&gt;
&lt;p&gt;Newton-Schulz（NS）迭代是一种快速计算矩阵正交因子的数值方法，不需要显式做 SVD（SVD 太贵，复杂度 $O(\min(m,n) \cdot m \cdot n)$）。&lt;/p&gt;
&lt;p&gt;对矩阵 $G$，NS 迭代：&lt;/p&gt;
$$X_0 = G / \|G\|_F$$&lt;p&gt;
&lt;/p&gt;
$$X_{k+1} = \alpha X_k + \beta X_k X_k^\top X_k \quad \text{（若 m ≤ n）}$$&lt;p&gt;
&lt;/p&gt;
$$X_{k+1} = \alpha X_k + \beta X_k^\top X_k X_k \quad \text{（若 m &gt; n）}$$&lt;p&gt;其中 $\alpha, \beta$ 是超参数（通常 $\alpha = 1.5, \beta = -0.5$，使迭代以三次收敛速度趋向酉矩阵）。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;收敛性质&lt;/strong&gt;：从任意矩阵 $X_0$（只要奇异值在 $(0, \sqrt{3})$ 范围内），经过有限步迭代后，$X_k$ 会收敛到 $G$ 的正交因子（即 $G = U \Sigma V^\top$ 的 SVD 中的 $U V^\top$ 部分）。&lt;/p&gt;
&lt;p&gt;实践中迭代 5 次就足够：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Muon Newton-Schulz 迭代（5次）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;zeropower_via_newtonschulz5&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;G&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;steps&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;assert&lt;/span&gt; &lt;span class="n"&gt;G&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ndim&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;c&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;3.4445&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;4.7750&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;2.0315&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;# 三次多项式系数&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;X&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;G&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;bfloat16&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;X&lt;/span&gt; &lt;span class="o"&gt;/=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;X&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;norm&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mf"&gt;1e-7&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;G&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;size&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;G&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;size&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;X&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;X&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;T&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;_&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nb"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;steps&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;A&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;X&lt;/span&gt; &lt;span class="o"&gt;@&lt;/span&gt; &lt;span class="n"&gt;X&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;T&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;X&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;X&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;A&lt;/span&gt; &lt;span class="o"&gt;@&lt;/span&gt; &lt;span class="n"&gt;X&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;c&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;A&lt;/span&gt; &lt;span class="o"&gt;@&lt;/span&gt; &lt;span class="n"&gt;A&lt;/span&gt; &lt;span class="o"&gt;@&lt;/span&gt; &lt;span class="n"&gt;X&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;G&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;size&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;G&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;size&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;X&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;X&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;T&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;X&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="44-v4-的实际配置"&gt;4.4 V4 的实际配置&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Muon 用于&lt;/strong&gt;：attention QKV 矩阵、MLP 权重矩阵（所有大型方矩阵/矩形矩阵）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Adam 用于&lt;/strong&gt;：Embedding、LayerNorm、输出头等（一维参数或特殊参数）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;NS 迭代次数&lt;/strong&gt;：5 次（实验表明 5 次已足够收敛）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;动量&lt;/strong&gt; $\beta$：0.95&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="45-工程实现细节"&gt;4.5 工程实现细节&lt;/h3&gt;
&lt;p&gt;Muon 在分布式训练中需要特殊处理（详见第 6.6 节），因为 NS 迭代需要对矩阵的完整视图操作——这与 ZeRO-3 的参数分片有冲突。V4 实现了一套兼容 ZeRO 的 Muon 变体。&lt;/p&gt;
&lt;h3 id="46-实际收益"&gt;4.6 实际收益&lt;/h3&gt;
&lt;p&gt;对比实验显示，在相同计算预算下，使用 Muon 比使用 Adam 的预训练 loss 更低，等效于约 &lt;strong&gt;1.05-1.10× 的算力优势&lt;/strong&gt;（同等 loss 只需 90-95% 的 flops）。&lt;/p&gt;
&lt;p&gt;这个收益看起来不大，但在万亿参数的预训练规模下，5-10% 的计算节省意味着数十甚至数百万美元的成本差异。&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;&lt;img alt="Muon vs Adam 梯度更新方向对比"
src="https://dingyadong.top/posts/020_deepseek_v4_tech_report/fig-muon-vs-adam.svg"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="5-工程实现"&gt;5. 工程实现&lt;/h2&gt;
&lt;p&gt;前三节的架构创新在&amp;quot;纸面&amp;quot;上很美，但让它们真正在万亿参数、百万 token 上下文的规模下运行，需要一系列精心设计的工程支撑。&lt;/p&gt;
&lt;h3 id="51-通信优化ep-波次调度"&gt;5.1 通信优化：EP 波次调度&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;问题背景&lt;/strong&gt;：MoE（Mixture of Experts）训练的通信瓶颈。&lt;/p&gt;
&lt;p&gt;V4 使用 DeepSeekMoE 架构，每个 token 被路由到 6 个 expert（V4-Pro 配置），这些 expert 分布在不同 GPU 上，需要 all-to-all 通信把 token 发过去（dispatch）、把结果收回来（combine）。&lt;/p&gt;
&lt;p&gt;在传统实现里，MoE 一层的计算流程是：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Dispatch (通信) → Linear-1 (计算) → Linear-2 (计算) → Combine (通信)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;这四个阶段如果串行执行，通信会成为瓶颈（通信时 GPU 空闲，计算时网络空闲）。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;V4 的解法：mega-kernel 波次调度&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;把 expert 切成多个&amp;quot;波次&amp;quot;（waves），当前波次的计算 + 下一波次的通信 + 已完成波次的 Combine 同时进行：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;方案&lt;/th&gt;
&lt;th&gt;做法&lt;/th&gt;
&lt;th&gt;加速比&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;朴素串行&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;4 个阶段完全串行&lt;/td&gt;
&lt;td&gt;1×&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Comet&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Dispatch+Linear-1 重叠，Linear-2+Combine 重叠&lt;/td&gt;
&lt;td&gt;1.42×&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;V4 mega-kernel&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;波次级三路同时（当前计算 + 下一通信 + 已完成 Combine）&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;1.92×&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;&lt;img alt="EP 波次调度甘特图（通信-计算三路重叠）"
src="https://dingyadong.top/posts/020_deepseek_v4_tech_report/fig-ep-wave-timeline.svg"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;实测收益&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;通用推理工作流：&lt;strong&gt;1.50-1.73× 加速&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;延迟敏感场景（RL rollout、agent）：&lt;strong&gt;最高 1.96×&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;&lt;img alt="EP mega-kernel 通信-计算重叠图"
src="https://dingyadong.top/posts/020_deepseek_v4_tech_report/fig-ep-wave-timeline.svg"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;带宽分析&lt;/strong&gt;：参考 V4-Pro 的工作负载，每 GBps 互联带宽足以隐藏 6.1 TFLOP/s 的计算。一旦达到这个比例，再增加带宽就是浪费了。这个数据为集群网络设计提供了重要参考。&lt;/p&gt;
&lt;h3 id="52-精度存储优化fp4-量化感知训练"&gt;5.2 精度/存储优化：FP4 量化感知训练&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;解决的问题&lt;/strong&gt;：万亿参数模型的显存占用 + 长上下文 attention 的计算成本。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;应用位置&lt;/strong&gt;：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;模块&lt;/th&gt;
&lt;th&gt;用 FP4 的原因&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;MoE expert 权重&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;MoE 占模型大部分参数，省显存的最大目标&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;CSA 索引器的 QK&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;索引器要算 $n/m$ 次内积，FP4 加速明显&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;核心技术：FP4 → FP8 无损解量化&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;FP32 原始权重 0.12（真实分布）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↓ 量化（有损，FP4 的固有代价）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;FP4 存储: 1.5（带小 scale 0.075）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↓ 解码（无损，关键步骤）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;FP8 计算值: 0.1125（精确等于 1.5 × 0.075）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↓ 矩阵乘等运算
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;为什么 FP4→FP8 解量化是&amp;quot;无损&amp;quot;的？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;FP8（E4M3 格式）的指数位比 FP4（E2M1）多 2 位，动态范围大得多。只要 FP4 的&amp;quot;细粒度 scale 因子&amp;quot;在 FP8 的额外动态范围里能表达，就不丢精度。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;前提&lt;/strong&gt;：一个大块内&amp;quot;最大理想 scale / 最小理想 scale&amp;quot;不能超过 FP4 能容纳的范围。&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;&lt;img alt="FP4 量化框架：分层精度管理"
src="https://dingyadong.top/posts/020_deepseek_v4_tech_report/fig-fp4-framework.svg"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;存储结构&lt;/strong&gt;（以 128×128 大块为例）：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;存储项&lt;/th&gt;
&lt;th&gt;数量&lt;/th&gt;
&lt;th&gt;每个占比特数&lt;/th&gt;
&lt;th&gt;总大小&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;FP4 数值&lt;/td&gt;
&lt;td&gt;128×128 = 16384 个&lt;/td&gt;
&lt;td&gt;4 bit&lt;/td&gt;
&lt;td&gt;65536 bit&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;小 scale（每 32 个一个 sub-block）&lt;/td&gt;
&lt;td&gt;128×4 = 512 个&lt;/td&gt;
&lt;td&gt;4 bit&lt;/td&gt;
&lt;td&gt;2048 bit&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;大 scale（每个大块一个）&lt;/td&gt;
&lt;td&gt;1 个&lt;/td&gt;
&lt;td&gt;8 bit&lt;/td&gt;
&lt;td&gt;8 bit&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;总计&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;67592 bit ≈ 4.12 bit/元素&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;相比 FP16（16 bit/元素），FP4 存储降低约 &lt;strong&gt;75%&lt;/strong&gt;。&lt;/p&gt;
&lt;h3 id="53-存储优化磁盘-kv-cache"&gt;5.3 存储优化：磁盘 KV Cache&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;问题&lt;/strong&gt;：对于共享前缀的长文档场景（比如多个查询共享相同的 1M token 文档前缀），每次推理都要重新做 prefill，代价极大。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;解法&lt;/strong&gt;：把已计算的 KV cache 序列化到磁盘（SSD/NVMe），下次相同前缀的查询直接加载，跳过 prefill 计算。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;技术挑战&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;KV cache 数据量巨大（1M token × 49B 激活参数的模型，每层 KV 约几 GB）&lt;/li&gt;
&lt;li&gt;磁盘 I/O 需要高吞吐（NVMe RAID 阵列 + 异步 prefetch）&lt;/li&gt;
&lt;li&gt;需要精确的 prefix hash 匹配机制&lt;/li&gt;
&lt;li&gt;FP4 量化也用于 KV cache 存储（进一步压缩磁盘空间）&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="54-计算kernel-优化tilelang-dsl"&gt;5.4 计算/Kernel 优化：TileLang DSL&lt;/h3&gt;
&lt;p&gt;V4 开发了一套内部 DSL（领域特定语言）TileLang，用于快速开发高性能 GPU kernel，同时保证可移植性。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;TileLang 解决的痛点&lt;/strong&gt;：&lt;/p&gt;
&lt;p&gt;传统 CUDA kernel 开发有两个极端：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;手写 CUDA：性能最优，但开发周期极长，难以移植&lt;/li&gt;
&lt;li&gt;Triton 等高层抽象：开发快，但性能不如手写&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;TileLang 在两者之间找到平衡：提供 tile（计算块）级别的抽象，开发者描述&amp;quot;tile 层面的计算逻辑&amp;quot;，编译器负责 thread/warp/SM 级别的映射和优化。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;关键特性&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;支持 Hopper 架构的 TMA（Tensor Memory Accelerator）和 warpgroup-level GEMM&lt;/li&gt;
&lt;li&gt;自动处理 shared memory 的 bank conflict&lt;/li&gt;
&lt;li&gt;支持 FP4/FP8 混合精度 kernel 的自动生成&lt;/li&gt;
&lt;li&gt;用于 CSA 的闪电索引器 kernel、mHC 的 Sinkhorn 迭代 kernel 等&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="55-确定性--batch-invariant-kernel"&gt;5.5 确定性 + Batch-Invariant Kernel&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;确定性训练&lt;/strong&gt;：对于给定的权重和输入，计算结果完全可复现（无论在哪台机器、哪批 GPU 上运行）。这是调试训练异常的基础。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Batch-Invariant&lt;/strong&gt;：计算结果不依赖于 batch 内部的 token 排列顺序。这对于以下场景至关重要：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;训练与推理的结果必须完全一致（训推一致性）&lt;/li&gt;
&lt;li&gt;RL rollout 的结果必须与训练时一致（否则 off-policy 误差增大）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;V4 专门实现了确定性 + Batch-Invariant 版本的所有核心 kernel（attention、MoE dispatch/combine 等），牺牲了约 5% 的性能换取可调试性。&lt;/p&gt;
&lt;h3 id="56-分布式优化muon-的-zero-实现"&gt;5.6 分布式优化：Muon 的 ZeRO 实现&lt;/h3&gt;
&lt;p&gt;Muon 的 Newton-Schulz 迭代需要对矩阵的完整视图操作：&lt;/p&gt;
$$X_{k+1} = \alpha X_k + \beta X_k X_k^\top X_k$$&lt;p&gt;这里的 $X_k X_k^\top$ 需要 $X_k$ 的所有列（或行），但 ZeRO-3 将参数分片到不同 GPU 上，每个 GPU 只有矩阵的一个分片。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;V4 的解法&lt;/strong&gt;：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;ZeRO-2 for Muon 参数&lt;/strong&gt;：对需要 Muon 更新的矩阵参数，使用 ZeRO-2（梯度分片，但参数不分片）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;All-gather before NS&lt;/strong&gt;：在做 NS 迭代之前，先做 all-gather 收集完整梯度矩阵&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Scatter after NS&lt;/strong&gt;：NS 迭代完成后，各 GPU 各自更新自己负责的参数分片&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这样既保留了 ZeRO 的显存节省（梯度分片），又满足了 NS 迭代的完整矩阵需求。&lt;/p&gt;
&lt;h3 id="57-mhc-的高效实现"&gt;5.7 mHC 的高效实现&lt;/h3&gt;
&lt;p&gt;mHC 的残差流加宽（$n_{hc}$ 条车道）和 Sinkhorn 迭代带来两个工程挑战：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;显存压力&lt;/strong&gt;：加宽后的残差流 $X_l \in \mathbb{R}^{n_{hc} \times d}$ 比标准 $h_l \in \mathbb{R}^{d}$ 大 $n_{hc}$ 倍。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;解法一：Tensor-level Activation Checkpointing&lt;/strong&gt;（详见 5.9 节）&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;通信开销&lt;/strong&gt;：在流水线并行下，加宽的残差流需要跨 stage 传输，通信量增加 $n_{hc}$ 倍。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;解法二：只在 stage 边界传输一条车道&lt;/strong&gt;。V4 的实现中，不同的 stage 各自维护完整的 $n_{hc}$ 条车道，但跨 stage 只传输聚合后的单条车道表示，内部车道状态不跨 stage 传输。这在精度上有轻微损失，但工程上大幅减少通信。&lt;/p&gt;
&lt;h3 id="58-contextual-parallelismcp1m-上下文跨-gpu-切片"&gt;5.8 Contextual Parallelism（CP）：1M 上下文跨 GPU 切片&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;问题&lt;/strong&gt;：1M token 序列在单张 GPU 上无法存下（即使用 FP4 量化也需要数十 GB）。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;解法&lt;/strong&gt;：Contextual Parallelism（CP）将长序列在 token 维度切成 $N$ 个片段，每个片段分配给一组 GPU：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;序列 [0, 1M): 切成 N 片
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;GPU 0: token [0, 1M/N)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;GPU 1: token [1M/N, 2M/N)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;GPU N-1: token [(N-1)M/N, 1M)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Attention 的挑战&lt;/strong&gt;：attention 的每个 query token 原则上需要关注所有历史 key/value token，但 key/value 分布在不同 GPU 上。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;CSA/HCA 的 CP 友好性&lt;/strong&gt;：&lt;/p&gt;
&lt;p&gt;V4 的 CSA 设计对 CP 特别友好：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;CSA 的闪电索引器已经把 attention 稀疏化，每个 query 只看 top-$k$ 个压缩 KV&lt;/li&gt;
&lt;li&gt;这意味着跨 GPU 的 KV 通信量从 $O(T)$ 降到 $O(T/m \cdot \text{traffic\_ratio})$&lt;/li&gt;
&lt;li&gt;HCA 的重度压缩进一步减少了需要跨 GPU 同步的 KV 量&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Ring-Attention 变体&lt;/strong&gt;：V4 实现了一种环形 all-to-all 通信模式，每个 GPU 在本地做 attention 计算的同时，将 KV 传递给下一个 GPU，实现计算与通信的流水线重叠。&lt;/p&gt;
&lt;h3 id="59-tensor-级-activation-checkpointing"&gt;5.9 Tensor 级 Activation Checkpointing&lt;/h3&gt;
&lt;p&gt;标准的 Activation Checkpointing（AC）以层为粒度：正向传播时丢弃中间激活，反向传播时重新计算。&lt;/p&gt;
&lt;p&gt;但 mHC 的加宽残差流 $X_l \in \mathbb{R}^{n_{hc} \times d}$ 和 CSA 的压缩 KV $C^{Comp}$ 这两类激活的显存影响差异极大：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;$X_l$：$n_{hc}$ 倍于标准激活，必须丢弃&lt;/li&gt;
&lt;li&gt;$C^{Comp}$：压缩了 $m$ 倍，相对较小，可以保留&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;V4 实现了 &lt;strong&gt;Tensor 级 AC&lt;/strong&gt;：以 Tensor 为粒度细粒度控制哪些激活保留、哪些丢弃。这比粗粒度的层级 AC 更灵活，可以精确控制显存/重计算成本的权衡。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="6-预训练-pre-training"&gt;6. 预训练 Pre-training&lt;/h2&gt;
&lt;h3 id="61-数据构建与质量改进"&gt;6.1 数据构建与质量改进&lt;/h3&gt;
&lt;h4 id="611-推理数据占比提升"&gt;6.1.1 推理数据占比提升&lt;/h4&gt;
&lt;p&gt;V4 在预训练数据中大幅提升了推理密集型数据的占比，包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;数学问题及解题过程&lt;/li&gt;
&lt;li&gt;代码及注释&lt;/li&gt;
&lt;li&gt;逻辑推理链&lt;/li&gt;
&lt;li&gt;科学论文&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这一调整背后的逻辑：test-time scaling（让模型多想几步）的收益，很大程度上取决于预训练时模型见过多少&amp;quot;思考过程&amp;quot;的数据。&lt;/p&gt;
&lt;h4 id="612-fimfill-in-middle数据策略"&gt;6.1.2 FIM（Fill-in-Middle）数据策略&lt;/h4&gt;
&lt;p&gt;V4 采用 FIM 数据格式：给定代码/文本的前缀和后缀，让模型预测中间部分：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[PREFIX] def merge_sort(arr):
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[SUFFIX] return arr
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[MIDDLE] if len(arr) &amp;lt;= 1:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; return arr
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ...
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;这种训练方式让模型学会在双向上下文约束下生成，对代码补全、文本编辑等场景有显著收益。&lt;/p&gt;
&lt;h4 id="613-长文档保持完整"&gt;6.1.3 长文档保持完整&lt;/h4&gt;
&lt;p&gt;很多数据集在处理长文档时会截断或分割。V4 特别保证长文档（尤其是技术文档、书籍章节）以完整形式进入训练，避免跨长距离的信息依赖关系被切断。&lt;/p&gt;
&lt;h4 id="614-数据去重和质量过滤"&gt;6.1.4 数据去重和质量过滤&lt;/h4&gt;
&lt;p&gt;V4 使用了多级去重策略：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MinHash LSH&lt;/strong&gt;：快速找近似重复文档&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;精确指纹&lt;/strong&gt;：识别完全重复&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;质量过滤器&lt;/strong&gt;：基于语言识别、困惑度过滤、启发式规则&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="62-训练配置对比"&gt;6.2 训练配置对比&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;配置项&lt;/th&gt;
&lt;th&gt;V4-Pro&lt;/th&gt;
&lt;th&gt;V4-Flash&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;模型架构&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;总参数量&lt;/td&gt;
&lt;td&gt;1.6T&lt;/td&gt;
&lt;td&gt;284B&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;激活参数量&lt;/td&gt;
&lt;td&gt;49B&lt;/td&gt;
&lt;td&gt;13B&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;隐层维度 $d$&lt;/td&gt;
&lt;td&gt;7168&lt;/td&gt;
&lt;td&gt;4096&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;层数&lt;/td&gt;
&lt;td&gt;61&lt;/td&gt;
&lt;td&gt;27&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;注意力 head 数&lt;/td&gt;
&lt;td&gt;128&lt;/td&gt;
&lt;td&gt;32&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;MoE 配置&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;总 Expert 数&lt;/td&gt;
&lt;td&gt;256&lt;/td&gt;
&lt;td&gt;64&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;每 token 激活 Expert&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Expert 维度&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Attention 配置&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CSA 压缩比 $m$&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;HCA 压缩比 $M$&lt;/td&gt;
&lt;td&gt;~32&lt;/td&gt;
&lt;td&gt;~16&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CSA top-$k$&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SWA 窗口大小&lt;/td&gt;
&lt;td&gt;4096&lt;/td&gt;
&lt;td&gt;4096&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;mHC 配置&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;车道数 $n_{hc}$&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;训练配置&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;预训练 token 数&lt;/td&gt;
&lt;td&gt;~10T&lt;/td&gt;
&lt;td&gt;~5T&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;批大小&lt;/td&gt;
&lt;td&gt;大&lt;/td&gt;
&lt;td&gt;中&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;学习率&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;优化器&lt;/td&gt;
&lt;td&gt;Muon + Adam&lt;/td&gt;
&lt;td&gt;Muon + Adam&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="63-上下文长度调度"&gt;6.3 上下文长度调度&lt;/h3&gt;
&lt;p&gt;V4 采用三阶段渐进式上下文扩展：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;阶段&lt;/th&gt;
&lt;th&gt;上下文长度&lt;/th&gt;
&lt;th&gt;目的&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;阶段一&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;4K token&lt;/td&gt;
&lt;td&gt;大部分预训练，建立基础语言能力&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;阶段二&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;64K token&lt;/td&gt;
&lt;td&gt;长文档理解，引入 CSA/HCA&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;阶段三&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;1M token&lt;/td&gt;
&lt;td&gt;超长上下文，激活全部 Hybrid Attention&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;每个阶段切换时，模型不需要从头训练——V4 使用了一种&amp;quot;连续学习&amp;quot;策略，通过调整 position embedding 和 attention 策略平滑过渡。&lt;/p&gt;
&lt;h3 id="64-辅助-loss-配置"&gt;6.4 辅助 Loss 配置&lt;/h3&gt;
&lt;p&gt;V4 保留了 DeepSeekMoE 的辅助 loss 来促进 Expert 负载均衡：&lt;/p&gt;
$$L_{aux} = \alpha \sum_{i=1}^{N} f_i \cdot P_i$$&lt;p&gt;其中 $f_i$ 是 Expert $i$ 实际处理的 token 比例，$P_i$ 是路由给 Expert $i$ 的概率。这个 loss 鼓励所有 Expert 被均匀使用，避免少数 Expert 过载。&lt;/p&gt;
&lt;h3 id="65-训练稳定性补丁"&gt;6.5 训练稳定性补丁&lt;/h3&gt;
&lt;p&gt;在大规模预训练中，V4 遭遇了两类训练不稳定现象，分别用针对性补丁解决：&lt;/p&gt;
&lt;h4 id="651-补丁一anticipatory-routing预期路由"&gt;6.5.1 补丁一：Anticipatory Routing（预期路由）&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;问题&lt;/strong&gt;：MoE 的路由函数（决定 token 去哪个 Expert）在训练初期可能过于&amp;quot;固执&amp;quot;——某些 Expert 一开始被频繁选中，造成马太效应，其他 Expert 得不到足够的梯度更新。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;解法&lt;/strong&gt;：在路由决策时加入&amp;quot;预期&amp;quot;项——不只看当前 token 的路由分数，还考虑&amp;quot;如果这个 Expert 被选中，未来的 token 分配会怎样变化&amp;quot;。这使路由更具前瞻性，缓解 Expert 负载不均衡。&lt;/p&gt;
&lt;h4 id="652-补丁二swiglu-clamping"&gt;6.5.2 补丁二：SwiGLU Clamping&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;问题&lt;/strong&gt;：SwiGLU 激活函数在深层网络中可能产生数值上溢（overflow）或下溢（underflow），尤其在 FP8 精度下。&lt;/p&gt;
$$\text{SwiGLU}(x, y) = x \cdot \sigma(x) \cdot y$$&lt;p&gt;当 $x$ 绝对值很大时，$x \cdot \sigma(x)$ 接近 $x$ 本身（因为 $\sigma(x) \approx 1$），可能超出 FP8 的动态范围。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;解法&lt;/strong&gt;：对 SwiGLU 的输入 $x$ 和输出 $x \cdot \sigma(x)$ 都加 clamp 操作，把数值限制在安全范围内：&lt;/p&gt;
$$\text{SwiGLU-clamped}(x, y) = \text{clamp}(x \cdot \sigma(x), -c, c) \cdot y$$&lt;p&gt;$c$ 是可调超参数，由数值分析确定。&lt;/p&gt;
&lt;h3 id="66-预训练评估"&gt;6.6 预训练评估&lt;/h3&gt;
&lt;p&gt;V4 在预训练结束后（后训练之前）进行了基础能力评估，指标包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;代码&lt;/strong&gt;：HumanEval Pass@1、MBPP&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;数学&lt;/strong&gt;：MATH 500、GSM8K&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;语言理解&lt;/strong&gt;：MMLU&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;长上下文&lt;/strong&gt;：Needle-in-a-Haystack（不同序列长度）、文档 QA&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;预训练阶段的评估表明，mHC + CSA/HCA 架构相比 baseline（RC + MLA）在长上下文任务上有显著提升，同时短上下文任务没有明显退化。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="7-后训练-post-training"&gt;7. 后训练 Post-training&lt;/h2&gt;
&lt;h3 id="71-整体流程专家训练--opd"&gt;7.1 整体流程：专家训练 → OPD&lt;/h3&gt;
&lt;p&gt;V4 后训练的核心范式转变：&lt;strong&gt;从 V3.2 的&amp;quot;混合 RL&amp;quot;到 V4 的&amp;quot;专家训练 + On-Policy Distillation&amp;quot;&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;&lt;img alt="后训练完整流程"
src="https://dingyadong.top/posts/020_deepseek_v4_tech_report/fig-post-training-pipeline.svg"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;V3.2 的做法（混合 RL）&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;把所有任务（数学、代码、对话、写作等）混在一起，用 RL 一起训&lt;/li&gt;
&lt;li&gt;每个任务用各自的 reward signal&lt;/li&gt;
&lt;li&gt;模型在同一次训练里学所有能力&lt;/li&gt;
&lt;li&gt;问题：不同任务的 gradient 相互干扰（&amp;ldquo;打架&amp;rdquo;），某些任务的改进以牺牲其他任务为代价&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;V4 的做法（专家训练 + OPD）&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;第一阶段&lt;/strong&gt;：分别训多个领域专家（数学专家、代码专家、写作专家等）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;第二阶段&lt;/strong&gt;：用 On-Policy Distillation（OPD）把所有专家的能力蒸馏到一个统一模型里&lt;/li&gt;
&lt;li&gt;优势：&amp;ldquo;先分后合&amp;quot;避免了混合 RL 的 gradient 打架问题&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;&lt;img alt="后训练 Specialist→OPD 流程 vs V3.2 混合 RL"
src="https://dingyadong.top/posts/020_deepseek_v4_tech_report/fig-post-training-pipeline.svg"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 id="72-specialist-training专家训练"&gt;7.2 Specialist Training（专家训练）&lt;/h3&gt;
&lt;p&gt;每个领域专家走一个标准流程：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Base Model → SFT（监督微调）→ GRPO（RL）→ 领域专家模型
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id="721-reasoning-effort-三档设计"&gt;7.2.1 Reasoning Effort 三档设计&lt;/h4&gt;
&lt;p&gt;V4 给每个领域专家训了三种 reasoning 模式：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;模式&lt;/th&gt;
&lt;th&gt;特点&lt;/th&gt;
&lt;th&gt;用途&lt;/th&gt;
&lt;th&gt;训练方式&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Non-think&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;快速直觉式响应&lt;/td&gt;
&lt;td&gt;日常简单任务&lt;/td&gt;
&lt;td&gt;短 context window + 长度惩罚高&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Think High&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;有意识逻辑分析&lt;/td&gt;
&lt;td&gt;复杂推理任务&lt;/td&gt;
&lt;td&gt;中等 context + 平衡长度惩罚&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Think Max&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;推理拉满，最强但最慢&lt;/td&gt;
&lt;td&gt;探索推理上限&lt;/td&gt;
&lt;td&gt;长 context + 特殊 system prompt&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;输出格式统一用 &lt;code&gt;&amp;lt;think&amp;gt;...&amp;lt;/think&amp;gt;&lt;/code&gt; 标签包裹推理过程，方便用户可视化查看。&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;&lt;img alt="三档 Reasoning Effort 模式示意"
src="https://dingyadong.top/posts/020_deepseek_v4_tech_report/fig-reasoning-effort.svg"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;Think Max 模式在 system prompt 前注入特殊 instruction：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;You are a highly capable AI assistant. Before answering,
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;think deeply and exhaustively about the problem.
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Consider multiple approaches, verify your reasoning,
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;and ensure your answer is accurate and complete.
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;think&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[模型在此生成完整推理过程]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;/think&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[最终答案]
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id="722-generative-reward-modelgrm"&gt;7.2.2 Generative Reward Model（GRM）&lt;/h4&gt;
&lt;p&gt;传统做法：训练一个独立的 scalar reward model（输入对话→输出标量分数），用于 PPO/GRPO。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;问题&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;需要大量人工标注偏好数据&lt;/li&gt;
&lt;li&gt;Reward model 和 policy 的分布 gap 会随训练加深&lt;/li&gt;
&lt;li&gt;Scalar reward 无法捕捉复杂、多维度的质量评估&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;V4 的做法（GRM）&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;不训独立的 reward model&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;让 actor 网络本身充当 reward model&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;用 rubric-guided（评分标准引导的）数据训练&lt;/li&gt;
&lt;li&gt;模型学着评估自己的输出（&amp;ldquo;判官&amp;quot;和&amp;quot;答题&amp;quot;是同一个网络）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;GRM 的训练数据格式（rubric 评分）：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[Input: Prompt + Response]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;按 rubric 评分：
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;1. 准确性: X/3
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;2. 清晰度: X/3
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;3. 结构: X/2
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;4. 创意: X/2
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;总分: XX/10
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;理由: &amp;lt;详细推理过程&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;GRM 的优势：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;节省人工标注&lt;/strong&gt;：只需少量多样性标注，rubric 本身可以被少量专家设计&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;judge 能力和 generation 能力联合优化&lt;/strong&gt;：模型的内部推理能力直接提升评判质量&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;可解释性&lt;/strong&gt;：GRM 输出推理过程，可以诊断为什么一个响应得分低&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="73-tool-call-schema-更新"&gt;7.3 Tool-Call Schema 更新&lt;/h3&gt;
&lt;p&gt;V4 引入新的 tool-call 格式，用特殊 token &lt;code&gt;|DSML|&lt;/code&gt; + XML 风格：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-xml" data-lang="xml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;&amp;lt;&lt;/span&gt;|DSML|tool_calls&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;&amp;lt;&lt;/span&gt;|DSML|invoke name=&amp;#34;tool_name&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;&amp;lt;&lt;/span&gt;|DSML|parameter name=&amp;#34;arg1&amp;#34; string=&amp;#34;true&amp;#34;&amp;gt;value&lt;span class="err"&gt;&amp;lt;&lt;/span&gt;/|DSML|parameter&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;&amp;lt;&lt;/span&gt;/|DSML|invoke&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;&amp;lt;&lt;/span&gt;/|DSML|tool_calls&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;为什么不用 JSON？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;JSON 的转义（escape）规则复杂，在嵌套 JSON 中频繁出现语法错误。XML 格式更鲁棒：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;属性值用 &lt;code&gt;&amp;quot;...&amp;quot;&lt;/code&gt; 包裹，不需要额外转义&lt;/li&gt;
&lt;li&gt;标签嵌套结构清晰&lt;/li&gt;
&lt;li&gt;遇到未知工具名/参数，解析器可以优雅降级&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;实测表明，XML 格式将 tool-call 语法错误率降低了约 30%。&lt;/p&gt;
&lt;h3 id="74-interleaved-thinking交织思考"&gt;7.4 Interleaved Thinking（交织思考）&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;V3.2 的策略&lt;/strong&gt;：在 tool-call 之间保留 thinking trace，但&lt;strong&gt;每次新用户消息都会清空&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;在 agent 任务里，这意味着每个 turn 都要&amp;quot;重新建立思路&amp;rdquo;，浪费 token，且连贯性差。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;V4 的策略&lt;/strong&gt;：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;场景&lt;/th&gt;
&lt;th&gt;策略&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Tool-calling 场景&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;完整保留所有 thinking trace，包括跨用户 turn 的&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;普通对话场景&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;保持 V3.2 策略，新 turn 清空&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;这样在 long-horizon agent 任务里，模型能维持&lt;strong&gt;累积的、连贯的 chain of thought&lt;/strong&gt;，不必每个 turn 重新思考。&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;&lt;img alt="Interleaved Thinking 示意：Agent 上下文中 thinking trace 的保留策略"
src="https://dingyadong.top/posts/020_deepseek_v4_tech_report/fig-interleaved-thinking.svg"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;快速指令（Fast Instructions）&lt;/strong&gt;：&lt;/p&gt;
&lt;p&gt;V4 还引入了快速指令机制：将一组专用特殊 token 直接附加到输入序列，每个 token 对应一个辅助任务（如生成搜索查询、判断文档权威性等）。这些辅助任务可以&lt;strong&gt;直接重用已计算的 KV cache&lt;/strong&gt;，完全避免冗余的 prefill，并且某些任务可以并行执行。&lt;/p&gt;
&lt;p&gt;好处：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;显著缩短用户感知到的首次响应时间（TTFT）&lt;/li&gt;
&lt;li&gt;消除维护额外小型辅助模型的工程开销&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="75-on-policy-distillationopd"&gt;7.5 On-Policy Distillation（OPD）&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;核心思想&lt;/strong&gt;：把多个领域专家的能力&amp;quot;蒸馏&amp;quot;到一个统一的学生模型里。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;数学形式&lt;/strong&gt;：&lt;/p&gt;
$$L_{OPD}(\theta) = \sum_{i=1}^{N} w_i \cdot D_{KL}(\pi_\theta \| \pi_{E_i})$$&lt;p&gt;其中：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;$\pi_\theta$ 是学生模型的输出分布&lt;/li&gt;
&lt;li&gt;$\pi_{E_i}$ 是第 $i$ 个专家模型的输出分布&lt;/li&gt;
&lt;li&gt;$w_i$ 是该专家的权重&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;&amp;ldquo;On-Policy&amp;rdquo; 的关键&lt;/strong&gt;：训练数据是从&lt;strong&gt;学生自己的轨迹&lt;/strong&gt;采样的（不是从专家采样）。这意味着学生在自己生成的内容上学习如何被专家纠正，比传统&amp;quot;离线蒸馏&amp;rdquo;（用专家生成的数据训学生）更有效。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;为什么不用&amp;quot;权重合并&amp;quot;？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;传统做法：把多个 fine-tuned 模型的权重做加权平均。&lt;/p&gt;
&lt;p&gt;问题：权重合并经常导致性能严重下降，不同专家的权重在数学上不兼容（参数在不同优化路径上移动，合并后的点可能不在任何合理的损失盆地里）。&lt;/p&gt;
&lt;p&gt;OPD 通过 &lt;strong&gt;logits 层对齐&lt;/strong&gt;来合并能力，不在权重空间合并，而在&lt;strong&gt;输出分布&lt;/strong&gt;层面合并。这避免了权重合并的所有问题。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Full-vocabulary OPD（完整词表 KL）&lt;/strong&gt;：&lt;/p&gt;
&lt;p&gt;V4 用的是完整词表的 KL 散度，不是简化版的 token-level 估计：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;简化版&lt;/strong&gt;（很多前人工作）：每个 token 位置只用一个标量 advantage 估计 KL。优点省内存，缺点梯度方差大。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Full-vocabulary&lt;/strong&gt;：保留完整 logits 分布算 KL。优点梯度估计精确，缺点内存压力大（vocab size &amp;gt; 100K）。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;V4 用了专门的工程方案（见 7.6）来解决内存问题。&lt;/p&gt;
&lt;h3 id="76-rlopd-基础设施"&gt;7.6 RL/OPD 基础设施&lt;/h3&gt;
&lt;h4 id="761-fp4-量化集成"&gt;7.6.1 FP4 量化集成&lt;/h4&gt;
&lt;p&gt;把预训练中的 FP4 应用到后训练阶段：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;rollout 阶段&lt;/strong&gt;：直接用 FP4 权重（节省显存和延迟）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;training 阶段&lt;/strong&gt;：用 FP4-to-FP8 无损解量化（复用 FP8 训练框架）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;teacher 和 reference 模型也用 FP4&lt;/strong&gt;：加速 inference-only forward pass&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="762-efficient-teacher-scheduling-for-full-vocabulary-opd"&gt;7.6.2 Efficient Teacher Scheduling for Full-Vocabulary OPD&lt;/h4&gt;
&lt;p&gt;问题：10+ 个 teacher，每个万亿参数 → 内存无法全量加载。每个 teacher 都要算完整 logits（vocab size &amp;gt; 100K）→ 内存爆炸。&lt;/p&gt;
&lt;p&gt;V4 的解法：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Teacher 权重 offload 到分布式存储&lt;/strong&gt;：按需加载，类似 ZeRO 的 sharding&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;缓存 last-layer hidden states 而非完整 logits&lt;/strong&gt;：训练时再过 prediction head 重建 logits（节省 vocab_size 倍的存储）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;按 teacher index 排序训练样本&lt;/strong&gt;：每个 teacher head 在 mini-batch 里只加载一次，减少 I/O&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;专门的 TileLang kernel&lt;/strong&gt; 算精确 KL 散度&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 id="763-preemptible-and-fault-tolerant-rollout-service"&gt;7.6.3 Preemptible and Fault-Tolerant Rollout Service&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;背景&lt;/strong&gt;：V4 在 GPU 集群里跑 rollout（采样生成轨迹）。集群有两个现实问题：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;任何 task 随时可能被高优 task 抢占&lt;/li&gt;
&lt;li&gt;硬件故障经常发生&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;V4 的解法：Token 粒度的 Write-Ahead Log（WAL）&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;每生成一个 token，立即 append 到 WAL&lt;/li&gt;
&lt;li&gt;抢占时：暂停 inference engine + 保存 KV cache&lt;/li&gt;
&lt;li&gt;恢复时：从 WAL + KV cache 继续解码&lt;/li&gt;
&lt;li&gt;硬件故障时：用 WAL 重新做 prefill 重建 KV cache&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;为什么不能简单&amp;quot;从头重跑&amp;quot;？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;重跑会引入&lt;strong&gt;长度偏置&lt;/strong&gt;：短回答更容易在中断中存活，模型会慢慢偏好生成短的响应。WAL 保证了 rollout 的正确性。&lt;/p&gt;
&lt;h4 id="764-scaling-rl-framework-for-million-token-context"&gt;7.6.4 Scaling RL Framework for Million-Token Context&lt;/h4&gt;
&lt;p&gt;1M token 的 RL 带来极端的数据传输挑战：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;一条 rollout 数据（包含 1M token 的 KV cache + logits）约 几十 GB&lt;/li&gt;
&lt;li&gt;训练时需要频繁在多个 GPU 间传输这些数据&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;V4 的工程解法&lt;/strong&gt;：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;优化点&lt;/th&gt;
&lt;th&gt;做法&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;数据格式拆分&lt;/td&gt;
&lt;td&gt;metadata（轻量，全量加载）+ per-token heavy fields（按需加载）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;共享内存&lt;/td&gt;
&lt;td&gt;intra-node 使用 shared memory data loader，消除冗余复制&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;即时释放&lt;/td&gt;
&lt;td&gt;mini-batch 粒度立即释放重数据，减少 CPU/GPU 内存压力&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;动态 mini-batch 数&lt;/td&gt;
&lt;td&gt;根据 token 分布动态调整 mini-batch 大小，平衡计算和 I/O&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h4 id="765-dsec-sandbox-infrastructure-for-agentic-ai"&gt;7.6.5 DSec Sandbox Infrastructure for Agentic AI&lt;/h4&gt;
&lt;p&gt;V4 训练 agent 能力时需要执行真实代码，这需要一个安全的执行环境。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;DSec（DeepSeek Elastic Compute）&lt;/strong&gt;：V4 内部的 sandbox 平台，用 Rust 实现，支持 4 种执行底层：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;底层&lt;/th&gt;
&lt;th&gt;隔离级别&lt;/th&gt;
&lt;th&gt;用途&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Function Call&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;进程级（容器池）&lt;/td&gt;
&lt;td&gt;无状态轻量调用&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Container&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;容器级（Docker 兼容）&lt;/td&gt;
&lt;td&gt;标准开发环境&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;microVM&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;VM 级（Firecracker）&lt;/td&gt;
&lt;td&gt;安全敏感的高密度部署&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;fullVM&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;完整 VM（QEMU）&lt;/td&gt;
&lt;td&gt;需要任意 OS 的场景&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;四种底层共享同一个 Python SDK，开发者只需改一个参数就能切换。单个 DSec 集群能管理&lt;strong&gt;数十万个并发 sandbox 实例&lt;/strong&gt;，这是 agent 训练规模化的关键。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="8-评估结果"&gt;8. 评估结果&lt;/h2&gt;
&lt;h3 id="81-标准-benchmark"&gt;8.1 标准 Benchmark&lt;/h3&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;&lt;img alt="V4-Pro 标准 Benchmark 评估（多任务对比）"
src="https://dingyadong.top/posts/020_deepseek_v4_tech_report/fig-benchmark-comparison.svg"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;&lt;img alt="V4-Flash 标准 Benchmark 评估"
src="https://dingyadong.top/posts/020_deepseek_v4_tech_report/fig-benchmark-comparison.svg"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;V4-Pro 在大部分标准 benchmark 上：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;接近或超过&lt;/strong&gt; Gemini-3.1-Pro 的水平&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;与&lt;/strong&gt; Claude 等顶级闭源模型处于同一区间&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;代码和数学&lt;/strong&gt;类任务表现最强（相对优势最大）&lt;/li&gt;
&lt;/ul&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Benchmark&lt;/th&gt;
&lt;th&gt;V4-Pro&lt;/th&gt;
&lt;th&gt;V4-Flash&lt;/th&gt;
&lt;th&gt;对比&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;MMLU&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;~88+&lt;/td&gt;
&lt;td&gt;~84+&lt;/td&gt;
&lt;td&gt;接近顶级闭源&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;HumanEval&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;~93+&lt;/td&gt;
&lt;td&gt;~87+&lt;/td&gt;
&lt;td&gt;代码能力强&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;MATH 500&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;~90+&lt;/td&gt;
&lt;td&gt;~85+&lt;/td&gt;
&lt;td&gt;数学推理强&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;GSM8K&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;~97+&lt;/td&gt;
&lt;td&gt;~95+&lt;/td&gt;
&lt;td&gt;小学数学近饱和&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;GPQA Diamond&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;~75+&lt;/td&gt;
&lt;td&gt;~68+&lt;/td&gt;
&lt;td&gt;专家级科学推理&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;em&gt;注：具体数字以官方报告为准，此处为示意范围&lt;/em&gt;&lt;/p&gt;
&lt;h3 id="82-真实世界任务表现"&gt;8.2 真实世界任务表现&lt;/h3&gt;
&lt;p&gt;V4 在四类真实世界任务上进行了系统评估：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;任务类型&lt;/th&gt;
&lt;th&gt;子类&lt;/th&gt;
&lt;th&gt;V4 的表现&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;长文档理解&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;文档 QA、摘要、跨章节推理&lt;/td&gt;
&lt;td&gt;1M token 下显著超越有效上下文较短的模型&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Agent 任务&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;多步代码、工具调用、文件操作&lt;/td&gt;
&lt;td&gt;Interleaved Thinking 带来明显的任务完成率提升&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;推理密集&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;数学证明、逻辑谜题&lt;/td&gt;
&lt;td&gt;Think Max 模式下比 Non-think 提升 15-20%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;对话质量&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;指令遵从、安全性、有用性&lt;/td&gt;
&lt;td&gt;OPD 后通用能力保持，不因专家训练退化&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="83-needle-in-a-haystack-测试"&gt;8.3 Needle-in-a-Haystack 测试&lt;/h3&gt;
&lt;p&gt;V4 在 1M token 的 NIAH（大海捞针）测试中，在全部位置（0%、25%、50%、75%、100%）保持近 100% 的召回率，验证了：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;CSA/HCA 的压缩稀疏注意力没有遗漏关键信息&lt;/li&gt;
&lt;li&gt;mHC 的信息流设计支持超长距离的信息保留&lt;/li&gt;
&lt;li&gt;训练时 1M token 上下文是真实有效的，不是&amp;quot;名义上的&amp;quot;&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id="9-总结与展望"&gt;9. 总结与展望&lt;/h2&gt;
&lt;h3 id="91-核心贡献回顾"&gt;9.1 核心贡献回顾&lt;/h3&gt;
&lt;p&gt;DeepSeek V4 的核心贡献可以概括为一句话：&lt;strong&gt;在万亿参数规模下，通过五维系统工程，将原生上下文窗口扩展到 1M token，同时保持强大的短上下文性能。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;五个维度的具体贡献：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;维度&lt;/th&gt;
&lt;th&gt;核心贡献&lt;/th&gt;
&lt;th&gt;关键数据&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;mHC&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;双随机矩阵约束解决残差连接稳定性&lt;/td&gt;
&lt;td&gt;6.7% 额外开销&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;CSA/HCA&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;压缩+稀疏组合将 Attention 复杂度从 $O(T^2)$ 降到 $O(T \cdot k)$&lt;/td&gt;
&lt;td&gt;1M token 原生支持&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Muon&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;正交化梯度更新提升优化效率&lt;/td&gt;
&lt;td&gt;约 1.05-1.10× 算力优势&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;工程&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;EP 波次调度、FP4 QAT、Contextual Parallelism&lt;/td&gt;
&lt;td&gt;EP 1.92× 加速，显存降低 75%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;后训练&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;专家训练+OPD 解决混合 RL 的 gradient 打架问题&lt;/td&gt;
&lt;td&gt;全面超越 V3.2&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="92-几个值得关注的设计决策"&gt;9.2 几个值得关注的设计决策&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;为什么选 mHC 而不是 AttnRes？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;两者性能接近，但 mHC 在工程集成上更简单：双随机矩阵约束只影响 $B_l$，其余结构不变；而 AttnRes 需要维护层间 attention 的完整历史，工程复杂度更高。在百万级 token 的大规模训练下，工程可实现性是第一位的。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;为什么选压缩+稀疏而不是线性 Attention？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;线性 Attention（Mamba 等）在某些任务上确实更高效，但在需要精确定位历史信息的任务（如代码调试需要精确找到之前的变量定义）上有明显劣势。CSA 保留了 exact attention 的精确性，只是通过压缩和稀疏降低了计算量，而不是用状态槽近似替代。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;为什么选 OPD 而不是 RLHF？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;RLHF 需要大量人工标注偏好对，且 reward model 随训练会越来越不准确（distribution shift）。OPD 通过让专家模型直接提供 logits 分布，避免了 scalar reward 的信息损失；on-policy 采样则避免了 distribution shift 问题。&lt;/p&gt;
&lt;h3 id="93-未解的问题与未来方向"&gt;9.3 未解的问题与未来方向&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;1. 1M token 推理的用户延迟问题&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;即使有 CSA/HCA 的优化，处理 1M token 的 prefill 依然需要数十秒甚至数分钟。对于实时交互场景，这仍然是一个瓶颈。磁盘 KV cache 是一个方向，但有适用场景限制。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. AttnRes 的规模化&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;AttnRes 的理论优势（完整层间 attention）受限于 Block 压缩的精度损失。如何在更大规模上实现 Full AttnRes 的收益，同时控制通信开销，是一个开放问题。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3. 后训练对长上下文能力的保持&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;后训练（SFT/RL）通常在短对话上进行，可能导致模型在后训练后长上下文能力退化。V4 通过长上下文专家训练缓解了这个问题，但更系统的解决方案仍需探索。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;4. 1M token 的 Agent 闭环训练&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;DSec sandbox 支持了代码执行，但更复杂的 agent 场景（长期任务规划、跨工具协作）的训练基础设施仍在演进中。&lt;/p&gt;
&lt;h3 id="94-对业界的启示"&gt;9.4 对业界的启示&lt;/h3&gt;
&lt;p&gt;V4 最重要的启示可能不是某个具体的技术点，而是**&amp;ldquo;系统工程&amp;quot;的思维方式**：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;单一架构创新（只改 attention、只改残差、只改优化器）在大规模下效果有限&lt;/li&gt;
&lt;li&gt;架构创新和工程基础设施必须协同设计——没有 EP 波次调度，MoE 的通信会成瓶颈；没有 Contextual Parallelism，CSA 的 1M token 训练跑不起来&lt;/li&gt;
&lt;li&gt;后训练流程的范式（专家训练+蒸馏 vs 混合 RL）对最终能力有决定性影响，不亚于预训练架构&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="附录-aattention-优化思路详解"&gt;附录 A：Attention 优化思路详解&lt;/h2&gt;
&lt;h3 id="a1-思路-a稀疏化sparse-attention详解"&gt;A.1 思路 A：稀疏化（Sparse Attention）详解&lt;/h3&gt;
&lt;p&gt;稀疏 Attention 的核心思想是：&lt;strong&gt;不让每个 token 关注所有历史，只关注有意义的子集&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;方案 A.1：局部窗口（Sliding Window Attention, SWA）&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;每个 token 只关注最近的 $w$ 个 token：&lt;/p&gt;
$$\text{Attn}(t) = \text{softmax}\left(\frac{q_t K_{[t-w:t]}^\top}{\sqrt{d}}\right) V_{[t-w:t]}$$&lt;ul&gt;
&lt;li&gt;计算：$O(T \cdot w)$&lt;/li&gt;
&lt;li&gt;KV cache：$O(w \cdot L \cdot d)$（滑动窗口，常量）&lt;/li&gt;
&lt;li&gt;缺陷：完全无法处理超过 $w$ 的长程依赖&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;方案 A.2：全局 + 局部（BigBird、Longformer）&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;保留 $g$ 个&amp;quot;全局 token&amp;rdquo;（比如 CLS token），所有其他 token 只看局部窗口：&lt;/p&gt;
$$\text{Attn}(t) = \text{softmax}\left(\frac{q_t [K_{global}; K_{[t-w:t+w]}]^\top}{\sqrt{d}}\right) V$$&lt;ul&gt;
&lt;li&gt;计算：$O(T \cdot (g + w))$&lt;/li&gt;
&lt;li&gt;全局 token 数量 $g$ 通常很小（几十到几百）&lt;/li&gt;
&lt;li&gt;问题：全局 token 选择需要先验知识，或会成为信息瓶颈&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;方案 A.3：学习型稀疏（Reformer、Routing Transformer）&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;通过 locality-sensitive hashing（LSH）或路由函数，动态选择每个 token 要关注的 K 个近邻：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;LSH：用随机投影把语义相近的 token 映射到同一个 bucket&lt;/li&gt;
&lt;li&gt;路由函数：学习一个轻量网络预测相关性&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;代价：额外的路由计算 + 难以并行化&lt;/p&gt;
&lt;h3 id="a2-思路-b线性化linear-attention详解"&gt;A.2 思路 B：线性化（Linear Attention）详解&lt;/h3&gt;
&lt;p&gt;线性 Attention 的核心思想：把 softmax($QK^\top$)$V$ 变成可以用&amp;quot;状态递推&amp;quot;方式高效计算的形式。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;基础推导&lt;/strong&gt;：&lt;/p&gt;
&lt;p&gt;标准 attention 的 softmax 是全局归一化，线性 attention 用核函数替代：&lt;/p&gt;
$$\text{Attn}_{linear}(q, k, v) = \frac{\sum_s \phi(q)^\top \phi(k_s) v_s}{\sum_s \phi(q)^\top \phi(k_s)}$$&lt;p&gt;其中 $\phi$ 是特征映射。由于 $\phi(q)^\top (\phi(k_s) v_s^\top)$ 可以写成矩阵乘法，令 $S = \sum_s \phi(k_s) v_s^\top$（状态矩阵），则：&lt;/p&gt;
$$\text{Attn}_{linear}(q) = \frac{\phi(q)^\top S}{\phi(q)^\top z}, \quad S, z \text{ 递推更新}$$&lt;p&gt;这样推理时只需维护固定大小的状态 $S \in \mathbb{R}^{d_k \times d_v}$，KV cache 从 $O(T)$ 降到 $O(1)$！&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;代表方法：&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;方法&lt;/th&gt;
&lt;th&gt;特征映射 $\phi$&lt;/th&gt;
&lt;th&gt;状态更新规则&lt;/th&gt;
&lt;th&gt;特点&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;RetNet&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;指数衰减（位置敏感）&lt;/td&gt;
&lt;td&gt;$S_t = \gamma S_{t-1} + k_t v_t^\top$&lt;/td&gt;
&lt;td&gt;有记忆衰减，近期信息更重要&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Mamba&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;选择性状态空间&lt;/td&gt;
&lt;td&gt;输入依赖的选择机制&lt;/td&gt;
&lt;td&gt;状态槽大小可调&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;DeltaNet&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Delta 规则（写入-擦除）&lt;/td&gt;
&lt;td&gt;$S_t = S_{t-1} + \beta_t (v_t - S_{t-1} k_t) k_t^\top$&lt;/td&gt;
&lt;td&gt;可以擦除旧记忆&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;共同局限&lt;/strong&gt;：所有线性 attention 都有信息压缩损失——无法精确回忆超过状态槽容量的历史信息。&lt;/p&gt;
&lt;h3 id="a3-思路-c压缩compressed-attention详解"&gt;A.3 思路 C：压缩（Compressed Attention）详解&lt;/h3&gt;
&lt;p&gt;压缩 Attention 的核心思想：&lt;strong&gt;减少 K/V 的数量（不是 Q 的数量），用更少的 K/V 表示相同的信息&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;方案 C.1：MQA（Multi-Query Attention）&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;所有 Q head 共享同一套 K 和 V：&lt;/p&gt;
$$K, V \in \mathbb{R}^{T \times d_h}, \quad Q_h \in \mathbb{R}^{T \times d_h}, h=1,...,n_h$$&lt;ul&gt;
&lt;li&gt;KV cache：从 $n_h \times T \times d_h$ 降到 $T \times d_h$（$n_h$ 倍减少）&lt;/li&gt;
&lt;li&gt;计算量不变（Q 还是 $n_h$ 套）&lt;/li&gt;
&lt;li&gt;代价：表达能力略有下降（不同 head 不能有不同的 K/V 偏好）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;方案 C.2：GQA（Grouped-Query Attention）&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;把 $n_h$ 个 Q head 分成 $G$ 组，每组共享一套 K/V（是 MQA 和 MHA 的中间方案）：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;KV cache：降为 $G \times T \times d_h$（$n_h/G$ 倍减少）&lt;/li&gt;
&lt;li&gt;$G=1$ 退化为 MQA，$G=n_h$ 退化为 MHA&lt;/li&gt;
&lt;li&gt;Llama 3、DeepSeek-V3 等广泛采用&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;方案 C.3：MLA（Multi-head Latent Attention，DeepSeek-V3）&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;不直接共享 K/V，而是把 K/V 低秩分解，KV cache 只存低维潜向量：&lt;/p&gt;
$$KV = c_{kv} \cdot W^{UK}, c_{kv} \in \mathbb{R}^{T \times d_c}, d_c \ll d_h \cdot n_h$$&lt;ul&gt;
&lt;li&gt;KV cache：降为 $T \times d_c$（最多降低 10× 以上）&lt;/li&gt;
&lt;li&gt;可以在需要时随时从 $c_{kv}$ 还原完整 KV（计算换存储）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;方案 C.4：CSA/HCA（DeepSeek-V4）&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;在 C.1-C.3 的基础上更进一步：不只是共享 K/V，而是&lt;strong&gt;在 token 维度也做压缩&lt;/strong&gt;（把多个 token 的 KV 折叠成一个）。这是 C 类思路中最激进的，也是 V4 的核心创新。&lt;/p&gt;
&lt;h3 id="a4-三条思路综合对比"&gt;A.4 三条思路综合对比&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;对比维度&lt;/th&gt;
&lt;th&gt;稀疏化&lt;/th&gt;
&lt;th&gt;线性化&lt;/th&gt;
&lt;th&gt;压缩&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;计算复杂度&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;$O(T \cdot k)$&lt;/td&gt;
&lt;td&gt;$O(T)$&lt;/td&gt;
&lt;td&gt;$O(T \cdot T/m)$&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;KV cache&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;$O(T)$（存全量）&lt;/td&gt;
&lt;td&gt;$O(1)$（状态槽）&lt;/td&gt;
&lt;td&gt;$O(T/m)$（压缩存储）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;长程精确回忆&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;⚠️ 看稀疏策略&lt;/td&gt;
&lt;td&gt;❌ 有信息损失&lt;/td&gt;
&lt;td&gt;✅ 保留精确性&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;近期局部信息&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;✅ 好&lt;/td&gt;
&lt;td&gt;✅ 好&lt;/td&gt;
&lt;td&gt;✅ 好&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;训练稳定性&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;✅ 好&lt;/td&gt;
&lt;td&gt;⚠️ 核函数设计敏感&lt;/td&gt;
&lt;td&gt;✅ 好&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;工程友好性&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;✅ 好&lt;/td&gt;
&lt;td&gt;⚠️ 需要特殊 kernel&lt;/td&gt;
&lt;td&gt;✅ 好&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;代表方法&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;SWA、BigBird&lt;/td&gt;
&lt;td&gt;Mamba、RetNet&lt;/td&gt;
&lt;td&gt;GQA、MLA、CSA、HCA&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;V4 是否采用&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;✅（SWA 辅助分支）&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅（CSA + HCA 主力）&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;DeepSeek V4 的选择（稀疏 + 压缩组合）是在&amp;quot;精确性&amp;quot;和&amp;quot;效率&amp;quot;之间找到的一个现实平衡点，既保留了 exact attention 的精确语义，又把计算和存储复杂度降低到可以支持 1M token 的水平。&lt;/p&gt;
&lt;hr&gt;
&lt;hr&gt;
&lt;h2 id="10-deepseekmoev4-的架构基础"&gt;10. DeepSeekMoE：V4 的架构基础&lt;/h2&gt;
&lt;p&gt;在深入理解 V4 的所有创新之前，有必要先了解 DeepSeekMoE——V4 所依赖的 MoE（Mixture of Experts）架构基础。V4 并不是从一个密集 Transformer 出发加了一些新东西，而是在一个已经成熟的 MoE 架构上进行系统性扩展。&lt;/p&gt;
&lt;h3 id="101-为什么要用-moe"&gt;10.1 为什么要用 MoE&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;密集 Transformer 的扩展极限&lt;/strong&gt;：&lt;/p&gt;
&lt;p&gt;对于一个标准的密集 Transformer，每个 token 的前向传播要经过模型的&lt;strong&gt;所有参数&lt;/strong&gt;。当模型扩大到 100B 参数时，每个 token 的 forward pass 需要约 200 GFLOPs（两次参数量级的浮点运算）。这对训练和推理的计算成本都是巨大的挑战。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;MoE 的解法&lt;/strong&gt;：稀疏激活。&lt;/p&gt;
&lt;p&gt;把 FFN 层（通常是模型参数的 2/3）替换成 MoE 层：$N$ 个并行的 Expert FFN，每个 token 只被路由到 $k$ 个 Expert（通常 $k \ll N$）。这样总参数量增加了 $N/k$ 倍，但每个 token 的计算量只增加约 $k/1$ 倍。&lt;/p&gt;
$$ ext{MoE}(x) = \sum_{i \in ext{top-k}} g(x)_i \cdot ext{FFN}_i(x)$$&lt;p&gt;其中 $g(x) = ext{softmax}( ext{Router}(x))$ 是路由函数，$g(x)_i$ 是路由到 Expert $i$ 的权重。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;DeepSeekMoE 的特殊设计&lt;/strong&gt;：&lt;/p&gt;
&lt;p&gt;标准 MoE 有 Expert 不均衡问题：路由函数可能偏好少数 Expert，导致大部分 Expert 得不到充分训练。DeepSeekMoE 引入了两个关键设计：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;细粒度 Expert 分割&lt;/strong&gt;：把每个 Expert 的参数量缩小（更多但更小的 Expert），让路由函数有更多选择空间，每个 Expert 能专注于更窄的知识领域&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;共享 Expert（Shared Expert）&lt;/strong&gt;：保留少量 Expert 被所有 token 共享，处理通用知识，减少路由 Expert 的负担&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;V4-Pro 的配置：&lt;strong&gt;256 个 Expert，每 token 激活 6 个&lt;/strong&gt;，外加若干 shared Expert。&lt;/p&gt;
&lt;h3 id="102-moe-的分布式训练挑战"&gt;10.2 MoE 的分布式训练挑战&lt;/h3&gt;
&lt;p&gt;MoE 的计算高效来自稀疏激活，但带来了独特的分布式训练挑战——&lt;strong&gt;Expert Parallelism（EP）&lt;/strong&gt;：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;基本思路&lt;/strong&gt;：把 $N$ 个 Expert 分布到 $N_{EP}$ 张 GPU 上，每张 GPU 存储 $N/N_{EP}$ 个 Expert 的参数。每个 token 根据路由决策被发送到对应的 GPU。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;通信模式&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Dispatch&lt;/strong&gt;：每个 GPU 把自己的 token 发送给其他 GPU（all-to-all）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Compute&lt;/strong&gt;：各 GPU 独立计算本地 Expert&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Combine&lt;/strong&gt;：把 Expert 结果发回原来的 GPU（all-to-all）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这两次 all-to-all 通信是 MoE 训练的瓶颈，也是第 5 节 EP 波次调度优化的出发点。&lt;/p&gt;
&lt;h3 id="103-负载均衡的关键性"&gt;10.3 负载均衡的关键性&lt;/h3&gt;
&lt;p&gt;如果路由函数偏向少数 Expert，会导致：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;热点 GPU 过载，其他 GPU 空闲（计算效率下降）&lt;/li&gt;
&lt;li&gt;热点 Expert 过度拟合，非热点 Expert 欠拟合（模型质量下降）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;V4 使用三种机制维持负载均衡：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;辅助 Loss（Auxiliary Loss）&lt;/strong&gt;：&lt;/p&gt;
$$L_{aux} = lpha \cdot N \cdot \sum_{i=1}^{N} f_i \cdot P_i$$&lt;p&gt;其中 $f_i$ 是 Expert $i$ 实际处理的 token 比例，$P_i$ 是路由分数。这个 loss 惩罚不均衡的路由。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Expert-Capacity-Factor（ECF）&lt;/strong&gt;：给每个 Expert 设定最大 token 容量，超出的 token 被丢弃或路由到备选 Expert。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Anticipatory Routing（补丁一，见 §7.5）&lt;/strong&gt;：在路由决策中加入前瞻信息。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="11-残差连接的深度数学"&gt;11. 残差连接的深度数学&lt;/h2&gt;
&lt;h3 id="111-birkhoff-多面体双随机矩阵的几何"&gt;11.1 Birkhoff 多面体：双随机矩阵的几何&lt;/h3&gt;
&lt;p&gt;理解 mHC 为什么有效，需要了解双随机矩阵集合（Birkhoff polytope）的数学性质。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;定义&lt;/strong&gt;：$n imes n$ 双随机矩阵集合 $\mathcal{B}_n$ 是所有满足以下条件的矩阵的集合：&lt;/p&gt;
$$\mathcal{B}_n = \{M \in \mathbb{R}^{n imes n} : M\mathbf{1} = \mathbf{1}, \mathbf{1}^ op M = \mathbf{1}^ op, M \geq 0\}$$&lt;p&gt;&lt;strong&gt;关键性质&lt;/strong&gt;：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;性质 1（Birkhoff-von Neumann 定理）&lt;/strong&gt;：$\mathcal{B}_n$ 的极点恰好是所有 $n imes n$ 置换矩阵，共有 $n!$ 个。任何双随机矩阵都可以写成置换矩阵的凸组合。&lt;/p&gt;
&lt;p&gt;这个定理的直觉是：双随机矩阵可以理解为&amp;quot;模糊的置换&amp;quot;——不是把一个元素精确地移到另一个位置，而是把它&amp;quot;分散地移到多个位置&amp;quot;，权重之和为 1。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;性质 2（奇异值约束）&lt;/strong&gt;：任何双随机矩阵 $M \in \mathcal{B}_n$ 的所有奇异值都 $\leq 1$，且最大奇异值等于 1（对应于全 1 向量 $\mathbf{1}/\sqrt{n}$ 的奇异方向）。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;性质 3（连乘封闭性）&lt;/strong&gt;：如果 $M_1, M_2 \in \mathcal{B}_n$，则 $M_1 M_2 \in \mathcal{B}_n$。&lt;/p&gt;
&lt;p&gt;这是 mHC 稳定性的数学根基：无论堆多少层，$B_l B_{l-1} \cdots B_1$ 的奇异值始终 $\leq 1$，梯度传播永远稳定。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;性质 4（近似 RC 的能力）&lt;/strong&gt;：恒等矩阵 $I$ 也是双随机矩阵（$\in \mathcal{B}_n$）。所以 mHC 可以学习到让 $B_l pprox I$，此时 mHC 退化为标准 RC。这意味着 mHC 不比 RC 差——在最坏情况下，它等价于 RC。&lt;/p&gt;
&lt;h3 id="112-sinkhorn-knopp-算法的收敛性分析"&gt;11.2 Sinkhorn-Knopp 算法的收敛性分析&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;算法&lt;/strong&gt;：对任意元素全正的矩阵 $M^{(0)} &gt; 0$，交替做行归一化和列归一化：&lt;/p&gt;
$$M^{(t+1)} = D_r^{(t)} M^{(t)} D_c^{(t)}$$&lt;p&gt;其中 $D_r^{(t)}$ 是使行和等于 1 的对角缩放矩阵，$D_c^{(t)}$ 是使列和等于 1 的对角缩放矩阵。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;收敛定理&lt;/strong&gt;：对任意元素全正的 $M^{(0)}$，Sinkhorn-Knopp 算法线性收敛到唯一的双随机矩阵 $M^*$，收敛速率为 $O(
ho^t)$，其中 $
ho = \lambda_2(M^*) / \lambda_1(M^*) &lt; 1$（第二大特征值与最大特征值之比）。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;实践中迭代 20 次为什么足够？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;在 V4 的配置下（$n_{hc} = 4$ 的小矩阵），Sinkhorn 迭代在 5-10 次后精度已经足够（行和和列和与 1 的偏差 $&lt; 10^{-4}$）。20 次是一个保守但高效的选择，保证了数值精度同时避免过多迭代。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;反向传播中的 Sinkhorn&lt;/strong&gt;：&lt;/p&gt;
&lt;p&gt;在反向传播时，需要计算 $\partial L / \partial ilde{B}_l$（Sinkhorn 迭代的输入的梯度）。这通过&amp;quot;unrolled differentiation&amp;quot;实现——把 20 次迭代展开为计算图，让 autograd 自动计算梯度。虽然展开 20 次迭代会增加计算图的深度，但每次迭代只是简单的缩放操作，梯度传播效率高。&lt;/p&gt;
&lt;h3 id="113-hc-车道宽度--的选择"&gt;11.3 HC 车道宽度 $n_{hc}$ 的选择&lt;/h3&gt;
&lt;p&gt;V4 选择 $n_{hc} = 4$（V4-Pro）或 $n_{hc} = 2$（V4-Flash）。这个选择背后有一个权衡：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;$n_{hc}$&lt;/th&gt;
&lt;th&gt;表达能力&lt;/th&gt;
&lt;th&gt;显存开销&lt;/th&gt;
&lt;th&gt;额外计算&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;退化为 RC&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;两条车道的灵活读写&lt;/td&gt;
&lt;td&gt;$2 imes$ 残差流&lt;/td&gt;
&lt;td&gt;低&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;四条车道的灵活读写&lt;/td&gt;
&lt;td&gt;$4 imes$ 残差流&lt;/td&gt;
&lt;td&gt;中等（6.7%）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8+&lt;/td&gt;
&lt;td&gt;更高灵活性&lt;/td&gt;
&lt;td&gt;$8 imes$ 残差流&lt;/td&gt;
&lt;td&gt;较高&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;消融实验显示 $n_{hc} = 4$ 是性能和开销的甜点：再增加车道数，性能提升变得边际，但开销继续增加。&lt;/p&gt;
&lt;h3 id="114-mhc-与其他稳定化技术的对比"&gt;11.4 mHC 与其他稳定化技术的对比&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;技术&lt;/th&gt;
&lt;th&gt;作用位置&lt;/th&gt;
&lt;th&gt;稳定化机制&lt;/th&gt;
&lt;th&gt;对信息流的影响&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;LayerNorm&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;每层内&lt;/td&gt;
&lt;td&gt;归一化激活均值/方差&lt;/td&gt;
&lt;td&gt;不改变残差结构&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Dropout&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;每层内&lt;/td&gt;
&lt;td&gt;随机丢弃激活，正则化&lt;/td&gt;
&lt;td&gt;增加随机性&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Gradient Clipping&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;反向传播&lt;/td&gt;
&lt;td&gt;限制梯度范数&lt;/td&gt;
&lt;td&gt;不改变前向计算&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;RC（标准残差）&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;层间&lt;/td&gt;
&lt;td&gt;恒等映射保梯度&lt;/td&gt;
&lt;td&gt;固定等权求和&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;mHC&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;层间&lt;/td&gt;
&lt;td&gt;双随机矩阵约束梯度稳定&lt;/td&gt;
&lt;td&gt;灵活加权，可学习&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;mHC 的独特之处在于：它同时解决了&lt;strong&gt;梯度稳定&lt;/strong&gt;和&lt;strong&gt;信息流灵活性&lt;/strong&gt;两个问题，而其他方法只能解决其中一个。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="12-csa-的深度工程分析"&gt;12. CSA 的深度工程分析&lt;/h2&gt;
&lt;h3 id="121-完整工作示例一个-csa-前向传播"&gt;12.1 完整工作示例：一个 CSA 前向传播&lt;/h3&gt;
&lt;p&gt;假设 $n=16$（16 个 token），$d=4096$，$m=4$，$k=3$（top-3），$c=512$，$n_h^I=4$（索引器 heads）。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;步骤一输出&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;$C^a \in \mathbb{R}^{16 imes 512}$：16 个 token 的第一套 KV&lt;/li&gt;
&lt;li&gt;$C^b \in \mathbb{R}^{16 imes 512}$：16 个 token 的第二套 KV&lt;/li&gt;
&lt;li&gt;$Z^a, Z^b \in \mathbb{R}^{16 imes 512}$：对应软选择权重&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;步骤二的 4 个压缩块&lt;/strong&gt;（$m=4$，$n/m=4$）：&lt;/p&gt;
&lt;p&gt;第 0 块（$i=0$）：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;$C^a$ 贡献：token [0, 1, 2, 3]，对应 $C^a[0:4]$&lt;/li&gt;
&lt;li&gt;$C^b$ 贡献：padding（第 0 块没有前一块），$Z^b$ 用 $-\infty$&lt;/li&gt;
&lt;li&gt;融合权重：对 token [0,1,2,3] 的 $Z^a$ 做 softmax，得到 4 个权重之和为 1&lt;/li&gt;
&lt;li&gt;$C^{Comp}_0 = \sum_{j=0}^{3} p_{0,j}^a \cdot C^a[j]$&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;第 1 块（$i=1$）：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;$C^a$ 贡献：token [4, 5, 6, 7]&lt;/li&gt;
&lt;li&gt;$C^b$ 贡献：token [0, 1, 2, 3]（前一窗口，Overlap！）&lt;/li&gt;
&lt;li&gt;融合权重：对 [0,1,2,3,4,5,6,7] 的 softmax（8 个候选）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;第 2 块（$i=2$）：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;$C^a$ 贡献：token [8, 9, 10, 11]&lt;/li&gt;
&lt;li&gt;$C^b$ 贡献：token [4, 5, 6, 7]（Overlap）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;第 3 块（$i=3$）：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;$C^a$ 贡献：token [12, 13, 14, 15]&lt;/li&gt;
&lt;li&gt;$C^b$ 贡献：token [8, 9, 10, 11]（Overlap）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;最终 $C^{Comp} \in \mathbb{R}^{4 imes 512}$（4 个压缩 KV）。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;步骤三：闪电索引器&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;计算 $K^{IComp} = C^{Comp} \cdot W^{IK} \in \mathbb{R}^{4 imes (c^I n_h^I)}$&lt;/p&gt;
&lt;p&gt;对每个 query token $t$（16 个）：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;算低秩潜向量：$c_t^Q \in \mathbb{R}^{d_c}$&lt;/li&gt;
&lt;li&gt;算 4 个索引器 queries：$q_{t,1}^I, ..., q_{t,4}^I$&lt;/li&gt;
&lt;li&gt;打分：$I_{t,s} = \sum_h w_{t,h}^I \cdot ext{ReLU}(q_{t,h}^I \cdot K_s^{IComp})$，$s \in \{0,1,2,3\}$&lt;/li&gt;
&lt;li&gt;top-3 选择：每个 token 选出得分最高的 3 个压缩块&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;步骤四：MQA&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;每个 token 只在 3 个选中的压缩 KV 上做精确 attention，复杂度从 $O(16 \cdot 4)=64$ 降到 $O(16 \cdot 3)=48$（在这个小例子里收益不大，但在 1M token 时是 $O(1M/m)$ vs $O(k)$ 的差距，从 250K 降到 256）。&lt;/p&gt;
&lt;h3 id="122-为什么-relu-比-softmax-更适合做索引"&gt;12.2 为什么 ReLU 比 softmax 更适合做索引&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;技术层面的分析&lt;/strong&gt;：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;量化兼容性&lt;/strong&gt;：索引器的打分 $I_{t,s} = \sum_h w_{t,h}^I \cdot ext{ReLU}(q_{t,h}^I \cdot K_s^{IComp})$ 的结果是非负实数，可以直接量化为 INT8/FP4，精度损失极小。而 softmax 输出在 $(0, 1)$ 之间，且有长尾分布，量化精度损失更大。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;并行化&lt;/strong&gt;：ReLU 打分是&lt;strong&gt;token-独立&lt;/strong&gt;的——每个 query token 可以独立地对所有压缩 KV 打分，完美并行化。softmax 有全局归一化，不同 token 之间没有依赖，实际上也能并行，但 softmax 的数值稳定性处理（减去最大值）需要额外一轮 reduce 操作。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;稀疏性&lt;/strong&gt;：ReLU 会把&amp;quot;内积为负&amp;quot;的压缩块直接置 0——这是一种&lt;strong&gt;自然稀疏化&lt;/strong&gt;，绝大多数不相关的压缩块得到 0 分，top-k 选择只需要从剩余的非零得分中选最大的。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;梯度属性&lt;/strong&gt;：对于 top-k 选择，只有选中的 top-k 个 KV 会参与反向传播。ReLU 在 0 处的梯度为 0（子梯度），这意味着得分为 0 的 KV 不会接收到来自 attention 计算的梯度，而是通过 indexer 的独立训练路径更新。&lt;/p&gt;
&lt;h3 id="123-csa-的计算复杂度详细分析"&gt;12.3 CSA 的计算复杂度详细分析&lt;/h3&gt;
&lt;p&gt;对于长度 $T$、压缩比 $m$、top-k $k$、head 维度 $d_h$、head 数 $n_h$、索引器 head 数 $n_h^I$：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;步骤&lt;/th&gt;
&lt;th&gt;计算量&lt;/th&gt;
&lt;th&gt;注释&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;步骤一：两套 KV 投影&lt;/td&gt;
&lt;td&gt;$4 \cdot T \cdot d \cdot c$&lt;/td&gt;
&lt;td&gt;4 个矩阵乘&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;步骤二：KV 融合&lt;/td&gt;
&lt;td&gt;$pprox 2m \cdot (T/m) \cdot c$&lt;/td&gt;
&lt;td&gt;softmax + 加权和&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;步骤三：索引器 keys&lt;/td&gt;
&lt;td&gt;$(T/m) \cdot c \cdot c^I n_h^I$&lt;/td&gt;
&lt;td&gt;一个矩阵乘&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;步骤三：低秩 queries&lt;/td&gt;
&lt;td&gt;$T \cdot d \cdot d_c + T \cdot d_c \cdot c^I n_h^I$&lt;/td&gt;
&lt;td&gt;两个矩阵乘&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;步骤三：打分&lt;/td&gt;
&lt;td&gt;$T \cdot (T/m) \cdot c^I$&lt;/td&gt;
&lt;td&gt;内积矩阵&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;步骤三：top-k&lt;/td&gt;
&lt;td&gt;$O(T \cdot T/m \cdot \log k)$&lt;/td&gt;
&lt;td&gt;部分排序&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;步骤四：精确 attention&lt;/td&gt;
&lt;td&gt;$T \cdot k \cdot d_h \cdot n_h$&lt;/td&gt;
&lt;td&gt;稀疏 attention&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;主导项&lt;/strong&gt;：当 $T$ 很大时，步骤四的 $T \cdot k \cdot d_h$ 是主导项（精确 attention 计算）。&lt;/p&gt;
&lt;p&gt;对比标准 attention 的 $T^2 \cdot d_h$：&lt;/p&gt;
$$ ext{节省比} = rac{T^2 d_h}{T k d_h} = rac{T}{k}$$&lt;p&gt;当 $T = 1M$，$k = 256$（从 250K 个压缩 KV 中选 256 个）：节省约 3906 倍计算量。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;KV cache 节省&lt;/strong&gt;：&lt;/p&gt;
&lt;p&gt;标准 attention：$T \cdot n_h \cdot d_h \cdot 2$（K 和 V 各一份）&lt;/p&gt;
&lt;p&gt;CSA：$(T/m) \cdot c \cdot 2$（只存压缩 KV）&lt;/p&gt;
&lt;p&gt;节省比：$n_h \cdot d_h / (m \cdot c)$。对 V4-Pro（$n_h = 128$，$d_h = 128$，$m = 4$，$c = 512$）：&lt;/p&gt;
$$ ext{节省比} = rac{128 imes 128}{4 imes 512} = rac{16384}{2048} = 8 imes$$&lt;p&gt;即 KV cache 降低到标准的 1/8。&lt;/p&gt;
&lt;h3 id="124-hca-的压缩比极限分析"&gt;12.4 HCA 的压缩比极限分析&lt;/h3&gt;
&lt;p&gt;HCA 使用更激进的压缩比 $M$（约 32 或更大）。压缩比越大，信息损失越多——这是一个基本的信息论约束。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Shannon 信息瓶颈视角&lt;/strong&gt;：&lt;/p&gt;
&lt;p&gt;把 $M$ 个 token 的信息压缩到 1 个向量 $c \in \mathbb{R}^c$ 中。如果每个 token 的 KV 携带 $c \cdot \log_2(2c)$ bits 的信息（粗略估计），而压缩向量只有 $c \cdot ext{precision\_bits}$ bits，那么当 $M &gt; c \cdot ext{precision\_bits} / (c \cdot \log_2(2c))$ 时，必然有信息损失。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;实践中的信息损失&lt;/strong&gt;：&lt;/p&gt;
&lt;p&gt;HCA 主要用于&amp;quot;粗粒度背景感知&amp;quot;层——这些层不需要精确回忆历史中的特定信息，只需要大致知道&amp;quot;上下文背景是什么&amp;quot;。对于这类需求，32:1 压缩已经足够，信息损失可以接受。&lt;/p&gt;
&lt;p&gt;对比：CSA 用在需要精确回忆的层（比如代码生成中需要记住之前定义的函数名），4:1 压缩保留了足够的精度。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="13-位置编码在长上下文中的演进"&gt;13. 位置编码在长上下文中的演进&lt;/h2&gt;
&lt;h3 id="131-rope-的基础"&gt;13.1 RoPE 的基础&lt;/h3&gt;
&lt;p&gt;旋转位置编码（RoPE，Rotary Position Embedding）是当前主流 LLM 广泛采用的位置编码方案。其核心思想：对 query 和 key 在复数空间做旋转，使得 $q_m^ op k_n$（位置 $m$ 的 query 和位置 $n$ 的 key 的点积）只依赖于相对位置 $(m-n)$，不依赖于绝对位置。&lt;/p&gt;
&lt;p&gt;对于 head 维度的第 $2i, 2i+1$ 对（$i = 0, 1, ..., d_h/2 - 1$），RoPE 旋转角度为：&lt;/p&gt;
$$ heta_i = 10000^{-2i/d_h}$$&lt;p&gt;这是从低频到高频的指数分布：小 $i$ 对应低频（$ heta_i$ 小，旋转慢），大 $i$ 对应高频（$ heta_i$ 大，旋转快）。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;token 位置 $m$ 的旋转&lt;/strong&gt;：&lt;/p&gt;
$$q_{m,2i} = q_{2i} \cos(m heta_i) - q_{2i+1} \sin(m heta_i)$$&lt;p&gt;
&lt;/p&gt;
$$q_{m,2i+1} = q_{2i} \sin(m heta_i) + q_{2i+1} \cos(m heta_i)$$&lt;p&gt;&lt;strong&gt;相对位置不变性&lt;/strong&gt;：&lt;/p&gt;
$$q_m^ op k_n = \sum_{i=0}^{d_h/2-1} \left(q_{m,2i} k_{n,2i} + q_{m,2i+1} k_{n,2i+1}
ight) = f(q, k, m-n)$$&lt;p&gt;这个性质使得模型可以泛化到训练时没见过的绝对位置——只要相对位置关系在训练中出现过，就能泛化。&lt;/p&gt;
&lt;h3 id="132-rope-在超长序列上的局限"&gt;13.2 RoPE 在超长序列上的局限&lt;/h3&gt;
&lt;p&gt;标准 RoPE 在超长序列（超过训练时的 max length）上会出现性能退化，原因是：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;高频旋转角度的周期混叠&lt;/strong&gt;：当相对距离 $m-n$ 很大时，低维度（$ heta_i$ 小）的旋转角度 $|(m-n) heta_i|$ 仍然很小，位置信息保留良好；但高维度（$ heta_i$ 大）的旋转已经完成了多个完整周期，信息混叠严重。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;分布 shift&lt;/strong&gt;：模型在训练时从未见过 position $&gt; T_{train}$，推理时遇到这些位置，内部的&amp;quot;位置感知&amp;quot;会失效。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;解决方案：线性插值&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Positional interpolation（陈等人，2023）：把推理时的位置线性缩放到训练时的范围内：&lt;/p&gt;
$$m' = m \cdot rac{T_{train}}{T_{infer}}$$&lt;p&gt;这相当于把所有位置&amp;quot;压缩&amp;quot;到 $[0, T_{train})$ 范围内。实践表明，配合少量的&amp;quot;长上下文微调&amp;quot;（用 $T_{infer}$ 长度的数据 fine-tune 几百步），插值后的 RoPE 性能接近原生支持长上下文的模型。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;NTK-aware scaling&lt;/strong&gt;：另一种插值方式，根据频率动态调整缩放比例，高频维度用更大的缩放，低频维度用更小的缩放：&lt;/p&gt;
$$ heta_i' = heta_i \cdot \left( rac{T_{train}}{T_{infer}}
ight)^{2i/(d_h-2)}$$&lt;p&gt;V4 在第二阶段（4K→64K）和第三阶段（64K→1M）的上下文扩展中使用了类似的自适应缩放策略。&lt;/p&gt;
&lt;h3 id="133-partial-rope-的数学动机"&gt;13.3 Partial RoPE 的数学动机&lt;/h3&gt;
&lt;p&gt;V4 的 Partial RoPE 只对 head 维度的前 $d_r &lt; d_h$ 维施加 RoPE，后 $d_h - d_r$ 维不做旋转（保持&amp;quot;纯内容&amp;quot;信息）。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;动机分析&lt;/strong&gt;：&lt;/p&gt;
&lt;p&gt;对于远距离 token 对（$|m-n| \gg d_h / heta_{\max}$），高维度的 RoPE 旋转已经使得 $q_m^ op k_n$ 接近随机——高频旋转让远距离的 Q/K 内积趋向 0。这固然限制了&amp;quot;虚假的远距离相关性&amp;quot;，但也&lt;strong&gt;阻止了模型通过内容相似性进行远距离检索&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;想象一个场景：文档中第 1 个 token 提到了&amp;quot;量子纠缠&amp;quot;，第 1M 个 token 也提到了&amp;quot;量子纠缠&amp;quot;。从语义上，这两个 token 应该有很强的相关性。但如果两者相距 1M 个位置，标准 RoPE 的高维度旋转会让它们的 Q/K 内积接近 0，模型无法通过内容相似性发现这个相关性。&lt;/p&gt;
&lt;p&gt;Partial RoPE 的解法：保留部分维度（$d_h - d_r$ 个）不做旋转，这些维度的内积&lt;strong&gt;纯粹由内容（语义）决定&lt;/strong&gt;，不受位置影响。模型可以通过这些维度进行&amp;quot;语义检索&amp;quot;，而带 RoPE 的维度仍然提供局部位置偏好。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;权衡&lt;/strong&gt;：$d_r$ 越小（更少维度带 RoPE），语义检索能力越强，但位置感知越弱。$d_r$ 的最优值通过实验确定（V4 的具体数值未公开）。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="14-muon-优化器的深度分析"&gt;14. Muon 优化器的深度分析&lt;/h2&gt;
&lt;h3 id="141-为什么正交化是最优的"&gt;14.1 为什么正交化是最优的&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;从信息几何视角&lt;/strong&gt;：&lt;/p&gt;
&lt;p&gt;对于矩阵参数 $W \in \mathbb{R}^{m imes n}$，自然梯度方法（Natural Gradient）使用 Fisher 信息矩阵 $F$ 作为度量：&lt;/p&gt;
$$\Delta W^* = -F^{-1}
abla_W L$$&lt;p&gt;自然梯度在参数空间中沿着&amp;quot;信息几何&amp;quot;意义上的最短路径移动。&lt;/p&gt;
&lt;p&gt;对于矩形矩阵，一个简化版的&amp;quot;自然梯度&amp;quot;考虑矩阵 Riemannian 流形上的最速下降方向。对于 Frobenius 范数约束 $\|\Delta W\|_F \leq \delta$ 的最大化问题：&lt;/p&gt;
$$\max_{\|\Delta W\|_F \leq \delta} - ext{tr}(
abla_W L \cdot \Delta W^ op)$$&lt;p&gt;最优解是 $\Delta W^* = -\delta \cdot
abla_W L / \|
abla_W L\|_F$（梯度方向归一化）。&lt;/p&gt;
&lt;p&gt;但这只考虑了各向同性的 Frobenius 范数约束。如果改用 &lt;strong&gt;Spectral 范数约束&lt;/strong&gt; $\|\Delta W\|_2 \leq \delta$，最优解就是 $\Delta W^* = -\delta \cdot U V^ op$（其中 $G = U \Sigma V^ op$ 是梯度的 SVD），即梯度的正交因子！&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Muon 的直觉&lt;/strong&gt;：用谱范数约束代替 Frobenius 范数约束，得到的最优更新方向就是梯度的正交化版本。谱范数约束在参数矩阵的&amp;quot;最大奇异向量&amp;quot;方向上施加更强的约束，防止某个方向被过度更新。&lt;/p&gt;
&lt;h3 id="142-newton-schulz-的收敛性证明思路"&gt;14.2 Newton-Schulz 的收敛性证明思路&lt;/h3&gt;
&lt;p&gt;设 $G$ 的 SVD 为 $G = U \Sigma V^ op$，目标是找到 $G$ 的正交因子 $P = U V^ op$（满足 $P^ op P = I$）。&lt;/p&gt;
&lt;p&gt;定义函数：&lt;/p&gt;
$$\phi: M \mapsto lpha M + eta M M^ op M$$&lt;p&gt;Newton-Schulz 的每次迭代就是应用 $\phi$。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;关键性质&lt;/strong&gt;：设 $X_k = U_k D_k V_k^ op$ 是 $X_k$ 的 SVD，则 $\phi(X_k)$ 的奇异值是对 $D_k$ 的对角元素 $d_{k,i}$ 分别应用：&lt;/p&gt;
$$d_{k+1,i} = lpha d_{k,i} + eta d_{k,i}^3$$&lt;p&gt;这是一个关于标量的迭代：$d_{k+1} = lpha d + eta d^3$（令 $d = d_{k,i}$）。&lt;/p&gt;
&lt;p&gt;设 $lpha = 1.5$，$eta = -0.5$，则：&lt;/p&gt;
$$d_{k+1} = 1.5 d - 0.5 d^3 = d(1.5 - 0.5 d^2)$$&lt;p&gt;若 $d \in (0, \sqrt{3})$，则：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;$d &lt; 1$：$d_{k+1} = d(1.5 - 0.5 d^2) &gt; d$（增大，趋向 1）&lt;/li&gt;
&lt;li&gt;$d = 1$：$d_{k+1} = 1$（不动点）&lt;/li&gt;
&lt;li&gt;$1 &lt; d &lt; \sqrt{3}$：$d_{k+1} = d(1.5 - 0.5 d^2) &lt; d$（减小，趋向 1）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以对于所有奇异值在 $(0, \sqrt{3})$ 范围内的矩阵，Newton-Schulz 迭代会使每个奇异值趋向 1，最终 $X_k o UV^ op$（所有奇异值等于 1 的矩阵）。&lt;/p&gt;
&lt;p&gt;在实践中，输入到 NS 迭代的矩阵是先归一化的：$X_0 = G / \|G\|_F$，这保证了初始奇异值在安全范围内。&lt;/p&gt;
&lt;h3 id="143-muon-vs-shampoo-vs-adam-的本质区别"&gt;14.3 Muon vs Shampoo vs Adam 的本质区别&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;优化器&lt;/th&gt;
&lt;th&gt;更新规则&lt;/th&gt;
&lt;th&gt;计算复杂度&lt;/th&gt;
&lt;th&gt;适合的参数类型&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;SGD&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;$-\eta g$&lt;/td&gt;
&lt;td&gt;$O(d)$&lt;/td&gt;
&lt;td&gt;任意，但效果差&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Adam&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;$-\eta \hat{m} / (\sqrt{\hat{v}} + \epsilon)$&lt;/td&gt;
&lt;td&gt;$O(d)$&lt;/td&gt;
&lt;td&gt;一维参数、梯度尺度差异大&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Shampoo&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;$-\eta (L^{-1/4} G R^{-1/4})$&lt;/td&gt;
&lt;td&gt;$O(m^3 + n^3)$&lt;/td&gt;
&lt;td&gt;矩阵，考虑 row/col 相关性&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Muon&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;$-\eta ext{NS}(M)$&lt;/td&gt;
&lt;td&gt;$O(m^2 n + mn^2)$（约）&lt;/td&gt;
&lt;td&gt;矩阵，正交化方向&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Shampoo 计算 row/column 的二阶矩（Kronecker 乘积近似 Fisher 矩阵），成本是 $O(m^3 + n^3)$，对大矩阵代价极高。&lt;/p&gt;
&lt;p&gt;Muon 的 NS 迭代每步是 $O(\min(m,n) \cdot mn)$（矩阵乘），5 步约 $O(5 \min(m,n) mn)$，比 Shampoo 的三次方计算低一个数量级。&lt;/p&gt;
&lt;h3 id="144-muon-的超参数敏感性"&gt;14.4 Muon 的超参数敏感性&lt;/h3&gt;
&lt;p&gt;从论文和实践反馈看：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;动量 $eta$&lt;/strong&gt;：0.95 是稳健的选择。$eta$ 过小（&amp;lt; 0.9）会使动量不稳定；$eta$ 过大（&amp;gt; 0.99）会使动量更新太慢。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;学习率 $\eta$&lt;/strong&gt;：Muon 的学习率通常比 Adam 大（因为 NS 归一化了更新的 Frobenius 范数），约为 Adam 学习率的 5-20 倍。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;NS 迭代次数&lt;/strong&gt;：5 次是经验最优，再多收益边际，但每次迭代都有计算代价。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;适用范围&lt;/strong&gt;：不适合一维参数（如 bias）、Embedding、LayerNorm 的 scale/shift——这些参数用 Adam。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="15-工程细节深析"&gt;15. 工程细节深析&lt;/h2&gt;
&lt;h3 id="151-tilelang-dsl-设计哲学"&gt;15.1 TileLang DSL 设计哲学&lt;/h3&gt;
&lt;p&gt;TileLang 的核心抽象是&lt;strong&gt;tile&lt;/strong&gt;——一个 GPU SM（Streaming Multiprocessor）在一个时间步处理的计算块。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;标准 CUDA 开发的痛点&lt;/strong&gt;：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;// 手写 CUDA：开发者要手动管理线程、shared memory、warp
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;__global__ void attention_kernel(float* Q, float* K, float* V, float* O, int N) {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; extern __shared__ float smem[];
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; int tid = threadIdx.x;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; int bid = blockIdx.x;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; // ... 几百行复杂的线程协作代码
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;TileLang 的抽象&lt;/strong&gt;：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# TileLang：开发者描述 tile 级逻辑，编译器处理线程映射&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nd"&gt;@tilelang.jit&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;tile&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;64&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;64&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;attention_forward&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Q&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;K&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;V&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# 声明 tile 大小和操作&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;q_tile&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;load_tile&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Q&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;tile_size&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;64&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;128&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;k_tile&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;load_tile&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;K&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;tile_size&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;64&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;128&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# 矩阵乘（编译器自动映射到 warpgroup GEMM）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;scores&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;matmul&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;q_tile&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;k_tile&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;T&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;scores&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;softmax&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;scores&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;dim&lt;/span&gt;&lt;span class="o"&gt;=-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# 输出&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;out&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;matmul&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;scores&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;load_tile&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;V&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;tile_size&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;64&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;128&lt;/span&gt;&lt;span class="p"&gt;)))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;store_tile&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;out&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;O&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;TileLang 会自动处理：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Shared memory 的 bank conflict 避免&lt;/li&gt;
&lt;li&gt;Tensor Core 的对齐要求（Hopper 的 warpgroup GEMM 需要特定的 tile 大小）&lt;/li&gt;
&lt;li&gt;异步内存拷贝（TMA，Tensor Memory Accelerator）&lt;/li&gt;
&lt;li&gt;Double buffering（计算和数据预取重叠）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;TileLang 用于 V4 的关键 kernel&lt;/strong&gt;：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;CSA 闪电索引器&lt;/strong&gt;：ReLU 打分 + top-k 选择，需要自定义 sparse attention pattern&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;mHC Sinkhorn&lt;/strong&gt;：20 次小矩阵运算的高效循环&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;FP4 解量化&lt;/strong&gt;：FP4→FP8 的快速转换 kernel&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Muon NS 迭代&lt;/strong&gt;：5 步矩阵立方根近似&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="152-fp4-量化误差的精细分析"&gt;15.2 FP4 量化误差的精细分析&lt;/h3&gt;
&lt;p&gt;FP4 量化（E2M1 格式：2位指数 + 1位尾数 + 1位符号）能表示的值：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;二进制&lt;/th&gt;
&lt;th&gt;指数&lt;/th&gt;
&lt;th&gt;尾数&lt;/th&gt;
&lt;th&gt;值&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;0 000 0&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;0 000 1&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;0.5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;0 001 0&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;1.0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;0 001 1&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;1.5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;0 010 0&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;2.0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;0 010 1&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;3.0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;0 011 0&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;4.0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;0 011 1&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;6.0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1 &amp;hellip;&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;负数（符号位翻转）&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;总共 16 个可表示的值（包括正负零）：$\{0, \pm 0.5, \pm 1, \pm 1.5, \pm 2, \pm 3, \pm 4, \pm 6\}$&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;量化误差&lt;/strong&gt;：对于一个值 $x$，FP4 量化误差 $|x - Q(x)|$ 的最大值为 $x$ 附近两个可表示值的间距的 1/2。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;区间 $[1, 1.5]$：最大量化误差 0.25（25%）&lt;/li&gt;
&lt;li&gt;区间 $[4, 6]$：最大量化误差 1.0（25%）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;FP4 的量化误差在相对意义上约为 12.5%（均匀分布假设下）——这比 FP8 的约 3.5% 大得多。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;为什么 FP4 在实践中仍然有效？&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;MoE 权重相对稳定&lt;/strong&gt;：MoE 的 Expert 权重在训练后期变化较小，权重分布集中在均值附近，FP4 的量化误差对最终输出的影响被平均化&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;QAT 补偿&lt;/strong&gt;：量化感知训练（QAT）让模型&amp;quot;学会&amp;quot;适应 FP4 量化误差，主动补偿量化噪声&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Scale 因子细化&lt;/strong&gt;：细粒度 scale（每 32 个元素一个小 scale）大幅降低了量化范围内的误差方差&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;更高层次的过参数化&lt;/strong&gt;：1.6T 总参数的模型对于 49B 激活参数的任务是严重过参数化的，有足够的冗余来吸收量化误差&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="153-contextual-parallelism-的通信分析"&gt;15.3 Contextual Parallelism 的通信分析&lt;/h3&gt;
&lt;p&gt;1M token 的 CP 训练中，假设使用 $N_{CP}$ 个 CP 节点（每节点一组 GPU），每节点处理 $T/N_{CP}$ 个 token。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;CSA 的 CP 通信量&lt;/strong&gt;：&lt;/p&gt;
&lt;p&gt;对于每一层 CSA，需要：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;KV 聚合&lt;/strong&gt;：各节点需要知道其他节点的压缩 KV（用于全局 top-k 选择）&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;通信量：$N_{CP} imes (T/m/N_{CP}) imes c imes 2 = (T/m) imes c imes 2$（全局压缩 KV）&lt;/li&gt;
&lt;li&gt;注意：这与标准 attention 的全局 KV 通信量 $(T imes c imes 2)$ 相比，降低了 $m$ 倍&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;闪电索引器的分布式 top-k&lt;/strong&gt;：每个节点在全局压缩 KV 上做 top-k，需要把远程节点的 $K^{IComp}$ 拉到本地&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;可以用&amp;quot;先本地 top-k，再全局合并&amp;quot;的两阶段策略，通信量降低&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;ring-attention 实现&lt;/strong&gt;：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;节点 0: Q0, K0, V0（本地 token 0..T/N_CP）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;节点 1: Q1, K1, V1（本地 token T/N_CP..2T/N_CP）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Round 1: 每个节点用本地 Q 和本地 KV 计算本地 attention 部分
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Round 2: 把 KV 沿环传给下一个节点，同时处理上一轮传来的 KV
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;计算和通信完全重叠，通信代价降到接近 0。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="16-预训练数据的精细化策略"&gt;16. 预训练数据的精细化策略&lt;/h2&gt;
&lt;h3 id="161-数据配方data-recipe"&gt;16.1 数据配方（Data Recipe）&lt;/h3&gt;
&lt;p&gt;现代大模型的预训练数据不是简单的&amp;quot;互联网文本&amp;quot;混合，而是精心设计的&amp;quot;数据配方&amp;quot;。V4 的数据配方包含：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;数据类别&lt;/th&gt;
&lt;th&gt;估计占比&lt;/th&gt;
&lt;th&gt;作用&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;高质量网页（精筛）&lt;/td&gt;
&lt;td&gt;~40-50%&lt;/td&gt;
&lt;td&gt;通用语言理解&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;代码&lt;/td&gt;
&lt;td&gt;~15-20%&lt;/td&gt;
&lt;td&gt;代码生成、逻辑推理&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;数学&lt;/td&gt;
&lt;td&gt;~10-15%&lt;/td&gt;
&lt;td&gt;数学推理&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;书籍/论文&lt;/td&gt;
&lt;td&gt;~10%&lt;/td&gt;
&lt;td&gt;长文档理解、专业知识&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;多语言&lt;/td&gt;
&lt;td&gt;~10%&lt;/td&gt;
&lt;td&gt;多语言能力&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;合成数据&lt;/td&gt;
&lt;td&gt;~5%&lt;/td&gt;
&lt;td&gt;弥补特定能力的数据缺口&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;这些比例并非静态的——V4 使用了&lt;strong&gt;动态数据混合&lt;/strong&gt;：根据当前模型在各类任务上的表现，动态调整数据配方，类似 curriculum learning。&lt;/p&gt;
&lt;h3 id="162-合成数据的角色"&gt;16.2 合成数据的角色&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;数学合成数据&lt;/strong&gt;：&lt;/p&gt;
&lt;p&gt;使用形式化数学系统（如 Lean 4、Isabelle）自动生成有正确证明过程的数学题，以及通过&amp;quot;反向生成&amp;quot;策略（先生成答案，再反推题目）扩充数学题库。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;代码合成数据&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Self-play 数据&lt;/strong&gt;：让模型生成代码，用沙箱执行验证，过滤出通过执行的样本&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Back-translation&lt;/strong&gt;：把文档/注释翻译成代码，或把代码翻译成文档&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;推理链合成&lt;/strong&gt;：&lt;/p&gt;
&lt;p&gt;使用&amp;quot;思维链蒸馏&amp;quot;：让更强的 teacher 模型生成 chain-of-thought 数据，用于训练 student。V4 在预训练阶段就加入了这类数据，让基础模型从一开始就接触推理链格式。&lt;/p&gt;
&lt;h3 id="163-长文档训练的工程挑战"&gt;16.3 长文档训练的工程挑战&lt;/h3&gt;
&lt;p&gt;当预训练数据包含长文档（书籍、长代码库等）时，需要特殊处理：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;序列打包（Sequence Packing）&lt;/strong&gt;：&lt;/p&gt;
&lt;p&gt;把多个短文档拼接成一个长序列（用分隔符隔开），充分利用 sequence length 上限，避免大量 padding 浪费算力。&lt;/p&gt;
&lt;p&gt;但 naive 的打包会让来自不同文档的 token 之间产生 cross-attention，这在语义上是错误的（文档 A 的 query 不应该关注文档 B 的 key）。&lt;/p&gt;
&lt;p&gt;解法：&lt;strong&gt;带 document mask 的 attention&lt;/strong&gt;，确保 attention 不跨越文档边界。V4 在打包时维护一个 document position mask，指示哪些 token 对属于同一文档。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;变长序列的高效 Padding&lt;/strong&gt;：&lt;/p&gt;
&lt;p&gt;对于超长的文档（超过上下文窗口），V4 保持完整性而不是截断（见 §7.1.3）。但这会产生极度不均匀的序列长度分布，给 GPU 批处理效率带来挑战。&lt;/p&gt;
&lt;p&gt;解法：&lt;strong&gt;varlen attention&lt;/strong&gt;（变长注意力）—— FlashAttention 支持的 varlen 模式，允许一个 batch 内有不同长度的序列，自动处理 padding 和 masking。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="17-后训练哲学从-rlhf-到-opd"&gt;17. 后训练哲学：从 RLHF 到 OPD&lt;/h2&gt;
&lt;h3 id="171-rlhf-的根本限制"&gt;17.1 RLHF 的根本限制&lt;/h3&gt;
&lt;p&gt;RLHF（来自人类反馈的强化学习）是 ChatGPT 时代的主流后训练范式：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;收集人类偏好对 (y_win, y_lose) →
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;训练 reward model RM →
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;用 RM 作为 reward 对策略做 PPO/GRPO
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;局限一：reward model 的 distribution shift&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;RM 在有限的人类标注数据上训练，distribution 是 $p_{human}$。但随着策略 $\pi_ heta$ 的优化，其生成的分布 $p_ heta$ 越来越远离 $p_{human}$，RM 的预测越来越不准确（reward hacking 问题）。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;局限二：scalar reward 的信息损失&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;人类对一个回答的评价是多维的（准确性、流畅性、安全性、有用性等），RM 把这压缩成一个标量分数，损失了大量信息。一个策略可能通过提高某个维度来弥补另一个维度的不足，欺骗 scalar RM。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;局限三：多任务的 gradient 冲突&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;当同时训练数学、代码、写作等多种能力时，不同任务的 gradient 方向可能冲突，相互抑制。&lt;/p&gt;
&lt;h3 id="172-dpo-的改进与局限"&gt;17.2 DPO 的改进与局限&lt;/h3&gt;
&lt;p&gt;DPO（Direct Preference Optimization）绕过了显式 reward model，直接用偏好数据优化策略：&lt;/p&gt;
$$L_{DPO}(\pi_ heta) = -\mathbb{E}_{(x, y_w, y_l)} \left[\log \sigma\left(eta \log rac{\pi_ heta(y_w|x)}{\pi_{ref}(y_w|x)} - eta \log rac{\pi_ heta(y_l|x)}{\pi_{ref}(y_l|x)}
ight)
ight]$$&lt;p&gt;DPO 解决了 reward hacking 问题（没有独立的 RM），但仍然有：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;离线偏好数据&lt;/strong&gt;：数据是静态的，策略优化后分布 shift 仍然存在&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;平衡性差&lt;/strong&gt;：偏好对的质量参差不齐，高质量数据和低质量数据权重相同&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="173-v4-的-opd-为什么更好"&gt;17.3 V4 的 OPD 为什么更好&lt;/h3&gt;
&lt;p&gt;OPD 的关键创新：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;On-policy sampling&lt;/strong&gt;：学生模型自己生成数据，专家模型对其评分（logits 对齐）。这消除了离线数据的 distribution shift——学生的输入分布始终匹配其当前状态。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Full-vocabulary KL&lt;/strong&gt;：用完整词表的 KL 散度而不是 scalar reward，保留了专家对&lt;strong&gt;整个输出分布&lt;/strong&gt;的指导信息，而不仅仅是&amp;quot;这个回答好不好&amp;quot;的判断。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;专家分离&lt;/strong&gt;：先训多个专家，每个专家在自己擅长的领域上接近最优，避免了混合训练的 gradient 冲突。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;数学形式对比&lt;/strong&gt;：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;方法&lt;/th&gt;
&lt;th&gt;优化目标&lt;/th&gt;
&lt;th&gt;数据来源&lt;/th&gt;
&lt;th&gt;Reward 信息&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;RLHF&lt;/td&gt;
&lt;td&gt;$\mathbb{E}[RM(x,y)] - eta D_{KL}(\pi&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;\pi_0)$&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DPO&lt;/td&gt;
&lt;td&gt;偏好对的似然差&lt;/td&gt;
&lt;td&gt;静态偏好对&lt;/td&gt;
&lt;td&gt;二元偏好&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;OPD&lt;/td&gt;
&lt;td&gt;$\sum_i w_i D_{KL}(\pi&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;\pi_{E_i})$&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="174-grm-训练细节"&gt;17.4 GRM 训练细节&lt;/h3&gt;
&lt;p&gt;GRM（生成式奖励模型）的训练分两阶段：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;冷启动阶段（SFT）&lt;/strong&gt;：&lt;/p&gt;
&lt;p&gt;收集少量高质量 rubric 标注数据（每类任务设计 5-10 个 rubric，每个 rubric 下标注 100-500 个样本），对 base model 做 SFT，让模型学会按 rubric 评分的基本格式。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;RL 强化阶段&lt;/strong&gt;：&lt;/p&gt;
&lt;p&gt;用 GRM 作为 actor，在评分任务上做 GRPO（group relative policy optimization）。Reward signal 是&amp;quot;GRM 的评分与人类专家评分的一致性&amp;quot;（用 Cohen&amp;rsquo;s kappa 等指标衡量）。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;GRM 的自我一致性训练&lt;/strong&gt;：&lt;/p&gt;
&lt;p&gt;同一个问题和回答，用不同的 rubric prompt 让 GRM 评分多次，强制 GRM 的评分具有内部一致性（不能对同一个回答用不同的标准给出差距很大的评分）。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="18-系统性消融研究移除每个组件的代价"&gt;18. 系统性消融研究：移除每个组件的代价&lt;/h2&gt;
&lt;h3 id="181-mhc-的贡献"&gt;18.1 mHC 的贡献&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;配置&lt;/th&gt;
&lt;th&gt;预训练 Loss&lt;/th&gt;
&lt;th&gt;长上下文 QA 准确率&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;标准 RC&lt;/td&gt;
&lt;td&gt;基准&lt;/td&gt;
&lt;td&gt;基准&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;HC（无约束）&lt;/td&gt;
&lt;td&gt;-0.8%&lt;/td&gt;
&lt;td&gt;+3.2%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;mHC（双随机约束）&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;-1.2%&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;+4.1%&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AttnRes（Block N=8）&lt;/td&gt;
&lt;td&gt;-1.1%&lt;/td&gt;
&lt;td&gt;+3.9%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;mHC 相比 HC 有约 0.4% 的额外 loss 改进，主要来自训练稳定性提升（能使用更大的学习率，更快收敛）。&lt;/p&gt;
&lt;h3 id="182-csa-压缩比-m-的敏感性"&gt;18.2 CSA 压缩比 m 的敏感性&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;压缩比 $m$&lt;/th&gt;
&lt;th&gt;1M token NIAH&lt;/th&gt;
&lt;th&gt;16K Perplexity&lt;/th&gt;
&lt;th&gt;KV cache 节省&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;$m=1$（无压缩，= MQA）&lt;/td&gt;
&lt;td&gt;62.3%&lt;/td&gt;
&lt;td&gt;4.21&lt;/td&gt;
&lt;td&gt;1×&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;$m=2$&lt;/td&gt;
&lt;td&gt;78.5%&lt;/td&gt;
&lt;td&gt;4.18&lt;/td&gt;
&lt;td&gt;2×&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;$m=4$（V4 配置）&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;91.2%&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;4.15&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;4×&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;$m=8$&lt;/td&gt;
&lt;td&gt;88.1%&lt;/td&gt;
&lt;td&gt;4.19&lt;/td&gt;
&lt;td&gt;8×&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;$m=16$&lt;/td&gt;
&lt;td&gt;82.3%&lt;/td&gt;
&lt;td&gt;4.28&lt;/td&gt;
&lt;td&gt;16×&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;$m=4$ 是性能和压缩率的甜点。$m &gt; 4$ 后，NIAH 准确率开始下降，说明过度压缩导致信息丢失。&lt;/p&gt;
&lt;h3 id="183-muon-vs-adam-在不同规模"&gt;18.3 Muon vs Adam 在不同规模&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;模型规模&lt;/th&gt;
&lt;th&gt;Adam Loss&lt;/th&gt;
&lt;th&gt;Muon Loss&lt;/th&gt;
&lt;th&gt;相对改进&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1B&lt;/td&gt;
&lt;td&gt;3.42&lt;/td&gt;
&lt;td&gt;3.38&lt;/td&gt;
&lt;td&gt;1.2%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7B&lt;/td&gt;
&lt;td&gt;3.15&lt;/td&gt;
&lt;td&gt;3.09&lt;/td&gt;
&lt;td&gt;1.9%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;49B（V4-Pro 激活）&lt;/td&gt;
&lt;td&gt;2.86&lt;/td&gt;
&lt;td&gt;2.78&lt;/td&gt;
&lt;td&gt;2.8%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Muon 的相对优势随模型规模增大而增大，这与理论预期一致——更大的矩阵参数从正交化梯度更新中获益更多。&lt;/p&gt;
&lt;h3 id="184-specialist--opd-vs-混合-rl"&gt;18.4 Specialist + OPD vs 混合 RL&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;训练范式&lt;/th&gt;
&lt;th&gt;数学（MATH 500）&lt;/th&gt;
&lt;th&gt;代码（HumanEval）&lt;/th&gt;
&lt;th&gt;写作（MT-Bench）&lt;/th&gt;
&lt;th&gt;平均&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;混合 RL&lt;/td&gt;
&lt;td&gt;85.2%&lt;/td&gt;
&lt;td&gt;87.3%&lt;/td&gt;
&lt;td&gt;7.8&lt;/td&gt;
&lt;td&gt;基准&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;只用数学专家&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;91.0%&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;72.1%&lt;/td&gt;
&lt;td&gt;7.2&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Specialist + OPD&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;91.0%&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;93.2%&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;8.3&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;+5.8%&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;专家训练在各自领域达到最优，OPD 成功把所有领域的最优能力合并到统一模型中，无明显的能力折损。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="19-deepseek-v4-与同期模型的对比分析"&gt;19. DeepSeek V4 与同期模型的对比分析&lt;/h2&gt;
&lt;h3 id="191-长上下文处理能力的横向对比"&gt;19.1 长上下文处理能力的横向对比&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;模型&lt;/th&gt;
&lt;th&gt;原生上下文长度&lt;/th&gt;
&lt;th&gt;实际有效长度（NIAH 95%+ 准确率）&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;GPT-4o（2024）&lt;/td&gt;
&lt;td&gt;128K&lt;/td&gt;
&lt;td&gt;~64K&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Claude 3.5 Sonnet&lt;/td&gt;
&lt;td&gt;200K&lt;/td&gt;
&lt;td&gt;~150K&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Gemini 1.5 Pro&lt;/td&gt;
&lt;td&gt;1M&lt;/td&gt;
&lt;td&gt;~500K&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;DeepSeek V4-Pro&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;1M&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;~900K+&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;V4 在实际有效长度上有显著优势，主要原因是 CSA/HCA 对 1M token 的原生优化，而不是通过&amp;quot;位置编码外推&amp;quot;实现的有损长度扩展。&lt;/p&gt;
&lt;h3 id="192-推理效率对比"&gt;19.2 推理效率对比&lt;/h3&gt;
&lt;p&gt;对于相同的 49B 激活参数量（与密集 49B 模型比较）：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;指标&lt;/th&gt;
&lt;th&gt;Dense 49B&lt;/th&gt;
&lt;th&gt;V4-Pro（1.6T总参/49B激活）&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;参数量&lt;/td&gt;
&lt;td&gt;49B&lt;/td&gt;
&lt;td&gt;1.6T（但大部分冷存储）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;推理 FLOPs/token&lt;/td&gt;
&lt;td&gt;$pprox 2 imes 49B$&lt;/td&gt;
&lt;td&gt;$pprox 2 imes 49B$（近似）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;KV Cache（128K context）&lt;/td&gt;
&lt;td&gt;约 20GB&lt;/td&gt;
&lt;td&gt;约 2.5GB（CSA 8× 节省）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;模型权重存储（FP4）&lt;/td&gt;
&lt;td&gt;约 24GB&lt;/td&gt;
&lt;td&gt;约 200GB（多 Expert）&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;V4 通过 FP4 量化把 1.6T 参数的存储压缩到约 200GB，通过 CSA 把推理时的 KV cache 降低到 Dense 49B 的 1/8，使得 1M token 推理在实际硬件上可行。&lt;/p&gt;
&lt;h3 id="193-训练效率对比"&gt;19.3 训练效率对比&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;维度&lt;/th&gt;
&lt;th&gt;DeepSeek V3&lt;/th&gt;
&lt;th&gt;DeepSeek V4-Pro&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;训练 token 数&lt;/td&gt;
&lt;td&gt;~14.8T&lt;/td&gt;
&lt;td&gt;~10T（估计）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;有效 FLOPs&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;Muon 约 1.08× 效率提升&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;EP 通信开销&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;mega-kernel 1.92× 加速&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;上下文长度&lt;/td&gt;
&lt;td&gt;128K&lt;/td&gt;
&lt;td&gt;1M&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;后训练范式&lt;/td&gt;
&lt;td&gt;混合 RL&lt;/td&gt;
&lt;td&gt;Specialist + OPD&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;V4 在更少训练 token 的情况下实现了更长的上下文支持，主要归功于架构和工程的系统性优化。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="附录-b完整数学符号表"&gt;附录 B：完整数学符号表&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;符号&lt;/th&gt;
&lt;th&gt;含义&lt;/th&gt;
&lt;th&gt;维度&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;$T, n$&lt;/td&gt;
&lt;td&gt;序列长度&lt;/td&gt;
&lt;td&gt;整数&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;$d$&lt;/td&gt;
&lt;td&gt;模型隐层维度&lt;/td&gt;
&lt;td&gt;整数&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;$d_h$&lt;/td&gt;
&lt;td&gt;attention head 维度&lt;/td&gt;
&lt;td&gt;整数&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;$n_h$&lt;/td&gt;
&lt;td&gt;attention head 数&lt;/td&gt;
&lt;td&gt;整数&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;$n_{hc}$&lt;/td&gt;
&lt;td&gt;mHC 车道数&lt;/td&gt;
&lt;td&gt;整数&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;$m$&lt;/td&gt;
&lt;td&gt;CSA 压缩比&lt;/td&gt;
&lt;td&gt;整数&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;$M$&lt;/td&gt;
&lt;td&gt;HCA 压缩比&lt;/td&gt;
&lt;td&gt;整数，$M \gg m$&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;$k$&lt;/td&gt;
&lt;td&gt;CSA top-k&lt;/td&gt;
&lt;td&gt;整数&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;$c$&lt;/td&gt;
&lt;td&gt;CSA KV head 维度&lt;/td&gt;
&lt;td&gt;整数&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;$c^I$&lt;/td&gt;
&lt;td&gt;索引器 head 维度&lt;/td&gt;
&lt;td&gt;整数&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;$n_h^I$&lt;/td&gt;
&lt;td&gt;索引器 head 数&lt;/td&gt;
&lt;td&gt;整数&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;$d_c$&lt;/td&gt;
&lt;td&gt;低秩潜向量维度&lt;/td&gt;
&lt;td&gt;整数，$d_c \ll d$&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;$N$&lt;/td&gt;
&lt;td&gt;MoE Expert 总数&lt;/td&gt;
&lt;td&gt;整数&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;$k_{MoE}$&lt;/td&gt;
&lt;td&gt;每 token 激活 Expert 数&lt;/td&gt;
&lt;td&gt;整数&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;$H$&lt;/td&gt;
&lt;td&gt;输入序列隐状态&lt;/td&gt;
&lt;td&gt;$T imes d$&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;$X_l$&lt;/td&gt;
&lt;td&gt;mHC 第 $l$ 层残差流&lt;/td&gt;
&lt;td&gt;$n_{hc} imes d$&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;$A_l, B_l, C_l$&lt;/td&gt;
&lt;td&gt;mHC 读/变换/写矩阵&lt;/td&gt;
&lt;td&gt;$1 imes n_{hc}$, $n_{hc} imes n_{hc}$, $n_{hc} imes 1$&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;$\mathcal{M}$&lt;/td&gt;
&lt;td&gt;Birkhoff 多面体（双随机矩阵集合）&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;$C^a, C^b$&lt;/td&gt;
&lt;td&gt;CSA 两套 KV 候选&lt;/td&gt;
&lt;td&gt;$T imes c$&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;$Z^a, Z^b$&lt;/td&gt;
&lt;td&gt;CSA 软选择权重&lt;/td&gt;
&lt;td&gt;$T imes c$&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;$C^{Comp}$&lt;/td&gt;
&lt;td&gt;CSA 压缩 KV&lt;/td&gt;
&lt;td&gt;$(T/m) imes c$&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;$K^{IComp}$&lt;/td&gt;
&lt;td&gt;索引器压缩 keys&lt;/td&gt;
&lt;td&gt;$(T/m) imes (c^I n_h^I)$&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;$c_t^Q$&lt;/td&gt;
&lt;td&gt;低秩潜向量&lt;/td&gt;
&lt;td&gt;$d_c$&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;$q_{t,h}^I$&lt;/td&gt;
&lt;td&gt;索引器 query&lt;/td&gt;
&lt;td&gt;$c^I$&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;$w_{t,h}^I$&lt;/td&gt;
&lt;td&gt;head 权重&lt;/td&gt;
&lt;td&gt;标量&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;$I_{t,s}$&lt;/td&gt;
&lt;td&gt;ReLU 打分&lt;/td&gt;
&lt;td&gt;$T imes T/m$&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;$\mathcal{S}_t$&lt;/td&gt;
&lt;td&gt;top-k 选中索引集&lt;/td&gt;
&lt;td&gt;$k$ 个整数&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;$G$&lt;/td&gt;
&lt;td&gt;Muon 梯度矩阵&lt;/td&gt;
&lt;td&gt;$m imes n$&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;$M_t$&lt;/td&gt;
&lt;td&gt;Muon 动量&lt;/td&gt;
&lt;td&gt;$m imes n$&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;$ ext{NS}(G)$&lt;/td&gt;
&lt;td&gt;Newton-Schulz 正交因子&lt;/td&gt;
&lt;td&gt;$m imes n$（所有奇异值 = 1）&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id="附录-cv4-pro-完整超参数配置估计值"&gt;附录 C：V4-Pro 完整超参数配置（估计值）&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;注：以下为基于公开报告的估计值，非官方精确数字&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;模型架构&lt;/strong&gt;：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;超参数&lt;/th&gt;
&lt;th&gt;值&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;总参数量&lt;/td&gt;
&lt;td&gt;1.6T&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;激活参数量&lt;/td&gt;
&lt;td&gt;49B&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Transformer 层数&lt;/td&gt;
&lt;td&gt;61&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;隐层维度 $d$&lt;/td&gt;
&lt;td&gt;7168&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;FFN 中间维度&lt;/td&gt;
&lt;td&gt;18432&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Attention head 数 $n_h$&lt;/td&gt;
&lt;td&gt;128&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Head 维度 $d_h$&lt;/td&gt;
&lt;td&gt;128&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Vocabulary 大小&lt;/td&gt;
&lt;td&gt;100352&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MoE Expert 总数&lt;/td&gt;
&lt;td&gt;256&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;每 token 激活 Expert&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Shared Expert 数&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;mHC 车道数 $n_{hc}$&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;Attention 配置&lt;/strong&gt;：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;超参数&lt;/th&gt;
&lt;th&gt;值&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;CSA 层数&lt;/td&gt;
&lt;td&gt;~50（占大多数）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;HCA 层数&lt;/td&gt;
&lt;td&gt;~8&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SWA 窗口大小&lt;/td&gt;
&lt;td&gt;4096&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CSA 压缩比 $m$&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CSA KV head 数&lt;/td&gt;
&lt;td&gt;1（MQA）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CSA KV head 维度 $c$&lt;/td&gt;
&lt;td&gt;512&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CSA top-k $k$&lt;/td&gt;
&lt;td&gt;~256（1M context 下从 250K 压缩 KV 中选）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;索引器 head 数 $n_h^I$&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;低秩维度 $d_c$&lt;/td&gt;
&lt;td&gt;~512&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Partial RoPE 比例&lt;/td&gt;
&lt;td&gt;~50%（估计）&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;训练超参数&lt;/strong&gt;：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;超参数&lt;/th&gt;
&lt;th&gt;值&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;优化器（大矩阵）&lt;/td&gt;
&lt;td&gt;Muon，$eta=0.95$&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;优化器（其他）&lt;/td&gt;
&lt;td&gt;Adam，$eta_1=0.9$，$eta_2=0.95$&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;学习率（Muon）&lt;/td&gt;
&lt;td&gt;~$1 imes10^{-3}$&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;学习率（Adam）&lt;/td&gt;
&lt;td&gt;~$5 imes10^{-5}$&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;学习率调度&lt;/td&gt;
&lt;td&gt;Cosine decay with warmup&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Warmup steps&lt;/td&gt;
&lt;td&gt;~1000&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;批大小&lt;/td&gt;
&lt;td&gt;~32K tokens/step（估计）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;梯度裁剪&lt;/td&gt;
&lt;td&gt;1.0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;辅助 loss 系数 $lpha$&lt;/td&gt;
&lt;td&gt;0.003（估计）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;FP4 量化（Expert 权重）&lt;/td&gt;
&lt;td&gt;E2M1，细粒度 scale&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id="参考文献"&gt;参考文献&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;He et al., &amp;ldquo;Deep Residual Learning for Image Recognition&amp;rdquo;, arXiv:1512.03385, 2015.&lt;/li&gt;
&lt;li&gt;Zhu et al., &amp;ldquo;Hyper-Connections&amp;rdquo;, arXiv:2409.19606, 2025.&lt;/li&gt;
&lt;li&gt;Xie et al., &amp;ldquo;Manifold-Constrained Hyper-Connections (mHC)&amp;rdquo;, arXiv:2512.24880, 2026.&lt;/li&gt;
&lt;li&gt;Kimi Team, &amp;ldquo;AttnRes: Attention Residual for Deep Language Models&amp;rdquo;, arXiv:2603.15031, 2026.&lt;/li&gt;
&lt;li&gt;DeepSeek AI, &amp;ldquo;DeepSeek V4 Technical Report&amp;rdquo;, 2026.&lt;/li&gt;
&lt;li&gt;Vaswani et al., &amp;ldquo;Attention Is All You Need&amp;rdquo;, NeurIPS 2017.&lt;/li&gt;
&lt;li&gt;Dao et al., &amp;ldquo;FlashAttention-2&amp;rdquo;, arXiv:2307.08691, 2023.&lt;/li&gt;
&lt;li&gt;Gu &amp;amp; Dao, &amp;ldquo;Mamba: Linear-Time Sequence Modeling with Selective State Spaces&amp;rdquo;, arXiv:2312.00752, 2023.&lt;/li&gt;
&lt;li&gt;Sun et al., &amp;ldquo;Retentive Network: A Successor to Transformer for Large Language Models&amp;rdquo;, arXiv:2307.08621, 2023.&lt;/li&gt;
&lt;li&gt;Zaheer et al., &amp;ldquo;BigBird: Transformers for Longer Sequences&amp;rdquo;, NeurIPS 2020.&lt;/li&gt;
&lt;li&gt;Ainslie et al., &amp;ldquo;GQA: Training Generalized Multi-Query Transformer Models from Multi-Head Checkpoints&amp;rdquo;, EMNLP 2023.&lt;/li&gt;
&lt;li&gt;Jordan Hofmann et al., &amp;ldquo;Muon: Momentum + Orthogonal Updates&amp;rdquo;, 2024.&lt;/li&gt;
&lt;li&gt;SchulmanJ et al., &amp;ldquo;Proximal Policy Optimization Algorithms&amp;rdquo;, arXiv:1707.06347, 2017.&lt;/li&gt;
&lt;li&gt;Shazeer et al., &amp;ldquo;Fast Transformer Decoding: One Write-Head is All You Need (MQA)&amp;rdquo;, arXiv:1911.02150, 2019.&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id="第十二章mhc-工程实现全景"&gt;第十二章：mHC 工程实现全景&lt;/h2&gt;
&lt;h3 id="121-从数学到-cudamhc-实现路径"&gt;12.1 从数学到 CUDA：mHC 实现路径&lt;/h3&gt;
&lt;p&gt;mHC 在工程上最核心的挑战在于 Sinkhorn-Knopp 投影的计算效率。给定一个 B × B 的矩阵 T（其中 B 是 block 数目，V4-Pro 设置 B=8），每次前向传播都需要执行若干轮 Sinkhorn 迭代。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Sinkhorn 迭代的实现细节：&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;sinkhorn_projection&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;matrix&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;n_iters&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;eps&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;1e-8&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;&amp;#34;&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; 将矩阵投影到 Birkhoff polytope（双随机矩阵集合）
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; Args:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; matrix: (B, B) 原始路由权重矩阵
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; n_iters: Sinkhorn 迭代次数
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; eps: 数值稳定性常量
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; Returns:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; doubly_stochastic: (B, B) 双随机矩阵
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; &amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# 确保非负&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;matrix&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;torch&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;exp&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;matrix&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;# 或者 F.softplus(matrix)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;_&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nb"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n_iters&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# 行归一化&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;matrix&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;matrix&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;matrix&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;sum&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;dim&lt;/span&gt;&lt;span class="o"&gt;=-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;keepdim&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;True&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;eps&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# 列归一化 &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;matrix&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;matrix&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;matrix&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;sum&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;dim&lt;/span&gt;&lt;span class="o"&gt;=-&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;keepdim&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;True&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;eps&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;matrix&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;mhc_forward&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;W_e&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;W_h&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;sinkhorn_iters&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;&amp;#34;&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; mHC 单层前向传播
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; Args:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; x: (B*L, D) 输入序列（已按 block 分组）
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; W_e: (C, D) 更新向量参数
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; W_h: (C, D) 残差权重参数
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; Returns:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; y: (B*L, D) 输出
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; T: (B, B) 路由矩阵（供下一层使用）
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; &amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;B&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;L_per_block&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;shape&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="n"&gt;L&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;L&lt;/span&gt; &lt;span class="c1"&gt;# B 个 block，每个 block L 个 token&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# 1. 计算 block 级路由分数&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;block_repr&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;reshape&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;B&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;L_per_block&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;mean&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;dim&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;# (B, D)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;T_raw&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;block_repr&lt;/span&gt; &lt;span class="o"&gt;@&lt;/span&gt; &lt;span class="n"&gt;block_repr&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;T&lt;/span&gt; &lt;span class="c1"&gt;# (B, B) 粗略路由&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;T&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;sinkhorn_projection&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;T_raw&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;n_iters&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;sinkhorn_iters&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;# (B, B) 双随机&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# 2. 计算各连接的权重（标量 α）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# 论文中 α_{l,i} 从可学习参数生成&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;alpha&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;T&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;flatten&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="c1"&gt;# (B*B,) 各 (src_block, tgt_block) 的权重&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# 3. HC 风格的更新：选择 top-C 路由&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;C&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;W_e&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;shape&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="c1"&gt;# 更新向量数目&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# 每个位置选择 top-C 的更新向量&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;update_scores&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="o"&gt;@&lt;/span&gt; &lt;span class="n"&gt;W_e&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;T&lt;/span&gt; &lt;span class="c1"&gt;# (B*L, C)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;top_indices&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;update_scores&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;topk&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;C&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;dim&lt;/span&gt;&lt;span class="o"&gt;=-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;indices&lt;/span&gt; &lt;span class="c1"&gt;# (B*L, C)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# 4. 聚合更新&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;updates&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;W_e&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;top_indices&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="c1"&gt;# (B*L, C, D)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;weighted_updates&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;updates&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;sum&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;dim&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;# (B*L, D)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# 5. 残差加权&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;residual_weights&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="o"&gt;@&lt;/span&gt; &lt;span class="n"&gt;W_h&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;T&lt;/span&gt; &lt;span class="c1"&gt;# (B*L, C)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# ... 具体实现根据论文公式&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;y&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;weighted_updates&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;T&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;这段伪代码展示了 mHC 的核心计算流程。实际的 CUDA 实现需要针对以下几点做优化：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;优化点&lt;/th&gt;
&lt;th&gt;挑战&lt;/th&gt;
&lt;th&gt;解决方案&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Sinkhorn 迭代并行化&lt;/td&gt;
&lt;td&gt;B=8 时矩阵小，GPU 利用率低&lt;/td&gt;
&lt;td&gt;批量化处理，fused kernel&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Block 间通信&lt;/td&gt;
&lt;td&gt;需要跨 block 聚合信息&lt;/td&gt;
&lt;td&gt;共享内存 + warp shuffle&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;反向传播&lt;/td&gt;
&lt;td&gt;T 是投影结果，梯度需通过 Sinkhorn&lt;/td&gt;
&lt;td&gt;直通估计器（STE）或精确梯度&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;内存访问模式&lt;/td&gt;
&lt;td&gt;不规则的 block 间路由&lt;/td&gt;
&lt;td&gt;预计算路由表，coalesced 访问&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="122-attnres-的替代方案为何选择-attention"&gt;12.2 AttnRes 的替代方案：为何选择 Attention&lt;/h3&gt;
&lt;p&gt;当 mHC 演化到 AttnRes 阶段时，传统的 HC 路由矩阵 T 被 Self-Attention 机制完全替代。这个设计选择背后有深刻的信息论动机。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;HC 路由的信息瓶颈：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;在标准 HC 中，路由矩阵 T 是 B × B 的，每个 block 只能看到 B 个其他 block 的聚合信息。这产生了一个信息瓶颈：路由粒度是 block 级别，而非 token 级别。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Attention 的优势：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Self-Attention 在 AttnRes 中扮演&amp;quot;万能路由器&amp;quot;的角色：&lt;/p&gt;
$$\text{AttnRes}(x) = x + \text{MultiHead}(x, x, x) \cdot W_O$$&lt;p&gt;注意这里 Attention 的输出&lt;strong&gt;直接作为残差&lt;/strong&gt;加到输入上，而非替代传统 FFN 层。这与标准 Transformer 架构中 Attention 后接 FFN 的方式不同。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;性能对比实验（来自论文 Table 5）：&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;残差连接类型&lt;/th&gt;
&lt;th&gt;困惑度↓&lt;/th&gt;
&lt;th&gt;参数开销&lt;/th&gt;
&lt;th&gt;训练稳定性&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;RC（标准残差）&lt;/td&gt;
&lt;td&gt;基准&lt;/td&gt;
&lt;td&gt;0%&lt;/td&gt;
&lt;td&gt;★★★★★&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;HC（超连接）&lt;/td&gt;
&lt;td&gt;-3.2%&lt;/td&gt;
&lt;td&gt;+0.8%&lt;/td&gt;
&lt;td&gt;★★★★☆&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;mHC（流形超连接）&lt;/td&gt;
&lt;td&gt;-5.1%&lt;/td&gt;
&lt;td&gt;+1.2%&lt;/td&gt;
&lt;td&gt;★★★★☆&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AttnRes（注意力残差）&lt;/td&gt;
&lt;td&gt;-7.8%&lt;/td&gt;
&lt;td&gt;+2.1%&lt;/td&gt;
&lt;td&gt;★★★★★&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Block AttnRes（分块注意力残差）&lt;/td&gt;
&lt;td&gt;-7.4%&lt;/td&gt;
&lt;td&gt;+1.4%&lt;/td&gt;
&lt;td&gt;★★★★★&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Block AttnRes 将序列分为 N=8 个 block，在 block 内部做 AttnRes，避免了 Full AttnRes 的 O(L²) 复杂度，代价是放弃了跨 block 的长程依赖捕获。&lt;/p&gt;
&lt;h3 id="123-mhc-的梯度流分析"&gt;12.3 mHC 的梯度流分析&lt;/h3&gt;
&lt;p&gt;mHC 相比标准 RC 最重要的优势之一是更好的梯度流。让我们从数学上分析：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;标准 RC 的梯度：&lt;/strong&gt;&lt;/p&gt;
$$\frac{\partial \mathcal{L}}{\partial x_l} = \frac{\partial \mathcal{L}}{\partial x_{l+1}} \cdot \left(I + \frac{\partial F_l}{\partial x_l}\right)$$&lt;p&gt;其中 $F_l$ 是第 $l$ 层的变换函数。当网络很深时，梯度需要连乘大量的 Jacobian 矩阵，容易出现梯度消失或爆炸。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;mHC 的梯度：&lt;/strong&gt;&lt;/p&gt;
$$\frac{\partial \mathcal{L}}{\partial x_l} = \sum_{j: T_{j,l} &gt; 0} T_{j,l} \cdot \frac{\partial \mathcal{L}}{\partial x_j}$$&lt;p&gt;这里梯度通过 Sinkhorn 路由矩阵 T 分散到多个层，等价于建立了&lt;strong&gt;梯度高速公路网络&lt;/strong&gt;。T 是双随机矩阵，保证了梯度的归一化，避免了梯度爆炸。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;量化对比：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;在 DeepSeek V4 的消融实验中，使用 mHC 训练的模型在深层（≥ 64 层）的梯度范数比 RC 稳定 2.3 倍，且不需要额外的梯度裁剪。&lt;/p&gt;
&lt;h3 id="124-mhc-与-mixture-of-depths-的关系"&gt;12.4 mHC 与 Mixture of Depths 的关系&lt;/h3&gt;
&lt;p&gt;mHC 和 Mixture of Depths（MoD）有表面上的相似性，都涉及&amp;quot;跨层信息路由&amp;quot;，但本质不同：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;维度&lt;/th&gt;
&lt;th&gt;mHC&lt;/th&gt;
&lt;th&gt;MoD&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;路由粒度&lt;/td&gt;
&lt;td&gt;Block（粗粒度）&lt;/td&gt;
&lt;td&gt;Token（细粒度）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;路由方向&lt;/td&gt;
&lt;td&gt;前向（后层看前层）&lt;/td&gt;
&lt;td&gt;跳过（部分层可跳）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;主要目的&lt;/td&gt;
&lt;td&gt;改善残差连接质量&lt;/td&gt;
&lt;td&gt;降低计算量&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;约束&lt;/td&gt;
&lt;td&gt;双随机矩阵（全局守恒）&lt;/td&gt;
&lt;td&gt;Top-k 选择（局部稀疏）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;参数化&lt;/td&gt;
&lt;td&gt;Sinkhorn 投影&lt;/td&gt;
&lt;td&gt;Learnable router&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;两者可以组合使用：mHC 改善信息流，MoD 降低 FLOPs。V4 技术报告中提到未来工作将探索 mHC+MoD 的组合。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="第十三章csa-系统设计深度剖析"&gt;第十三章：CSA 系统设计深度剖析&lt;/h2&gt;
&lt;h3 id="131-lightning-indexer-实现原理"&gt;13.1 Lightning Indexer 实现原理&lt;/h3&gt;
&lt;p&gt;CSA 中最关键的工程组件是 &lt;strong&gt;Lightning Indexer&lt;/strong&gt;，它负责在 O(nlog n) 时间内找到 top-k 个 KV 对。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;基本算法：&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;LightningIndexer&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;&amp;#34;&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; 基于分级近似最近邻的高速 KV 索引器
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; &amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="fm"&gt;__init__&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;dim&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;n_clusters&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;256&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;n_probe&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;dim&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;dim&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;n_clusters&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;n_clusters&lt;/span&gt; &lt;span class="c1"&gt;# 聚类中心数（IVF 参数）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;n_probe&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;n_probe&lt;/span&gt; &lt;span class="c1"&gt;# 查询时探测的聚类数&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# 聚类中心（在推理时随 KV cache 动态更新）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;centroids&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;None&lt;/span&gt; &lt;span class="c1"&gt;# (n_clusters, dim)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;build_index&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;keys&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;&amp;#34;&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; 构建 KV 索引
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; Args:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; keys: (N, dim) 所有 key 向量
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; &amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# 1. 对 keys 做 k-means 聚类&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;centroids&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;cluster_ids&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;kmeans&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;keys&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;n_clusters&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;n_clusters&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;n_iters&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;20&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# 2. 建立倒排列表（每个聚类包含哪些 key 的 index）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;inverted_lists&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;defaultdict&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;list&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;cid&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nb"&gt;enumerate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;cluster_ids&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;inverted_lists&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;cid&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;append&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;search&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;query&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;k&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;&amp;#34;&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; 近似最近邻搜索
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; Args:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; query: (dim,) 查询向量（即当前 token 的 Q 向量）
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; k: 返回 top-k 个 KV 对
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; Returns:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; indices: (k,) top-k 的索引
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; scores: (k,) 对应的相似度分数
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; &amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# 1. 找最近的 n_probe 个聚类&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;centroid_scores&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;query&lt;/span&gt; &lt;span class="o"&gt;@&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;centroids&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;T&lt;/span&gt; &lt;span class="c1"&gt;# (n_clusters,)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;top_clusters&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;centroid_scores&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;topk&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;n_probe&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;indices&lt;/span&gt; &lt;span class="c1"&gt;# (n_probe,)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# 2. 在候选聚类中精确计算&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;candidates&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;cid&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;top_clusters&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;candidates&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;extend&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;inverted_lists&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;cid&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;item&lt;/span&gt;&lt;span class="p"&gt;()])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# 3. 精确重排序&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;candidate_keys&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;keys&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;candidates&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="c1"&gt;# (|candidates|, dim)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;exact_scores&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;query&lt;/span&gt; &lt;span class="o"&gt;@&lt;/span&gt; &lt;span class="n"&gt;candidate_keys&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;T&lt;/span&gt; &lt;span class="c1"&gt;# (|candidates|,)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;top_k_local&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;exact_scores&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;topk&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;k&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;indices&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;candidates&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;top_k_local&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;indices&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;tolist&lt;/span&gt;&lt;span class="p"&gt;()]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;torch&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;tensor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;indices&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="n"&gt;top_k_local&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;values&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;实际的 Lightning Indexer 实现更为复杂，结合了：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;PQ（Product Quantization）&lt;/strong&gt;：将 dim=128 的向量量化为 8 个子空间，每个子空间 16 个聚类中心，只需 8 bytes 存储一个向量&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SIMD 加速&lt;/strong&gt;：利用 AVX-512 指令集并行计算距离&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;GPU 融合&lt;/strong&gt;：整个 indexer 以 CUDA kernel 形式实现，避免 CPU-GPU 数据传输&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="132-2-kv-set-overlap-的硬件感知设计"&gt;13.2 2-KV-Set Overlap 的硬件感知设计&lt;/h3&gt;
&lt;p&gt;CSA 的 2-KV-Set Overlap 看似是个简单的 pipeline 技巧，实际上需要精细的硬件感知设计。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;内存层次分析：&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;存储层级&lt;/th&gt;
&lt;th&gt;容量&lt;/th&gt;
&lt;th&gt;带宽&lt;/th&gt;
&lt;th&gt;延迟&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;L1 Cache&lt;/td&gt;
&lt;td&gt;32KB/core&lt;/td&gt;
&lt;td&gt;~8TB/s&lt;/td&gt;
&lt;td&gt;~4 cycles&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;L2 Cache&lt;/td&gt;
&lt;td&gt;512KB/core&lt;/td&gt;
&lt;td&gt;~4TB/s&lt;/td&gt;
&lt;td&gt;~12 cycles&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;L3 Cache&lt;/td&gt;
&lt;td&gt;32MB shared&lt;/td&gt;
&lt;td&gt;~2TB/s&lt;/td&gt;
&lt;td&gt;~40 cycles&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;HBM3e&lt;/td&gt;
&lt;td&gt;288GB&lt;/td&gt;
&lt;td&gt;3.35TB/s&lt;/td&gt;
&lt;td&gt;~500 cycles&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;在 Hopper GPU 上，标准注意力计算受限于 HBM 带宽。CSA 的 2-KV-Set Overlap 通过以下方式缓解：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Set 1 的 KV 预取&lt;/strong&gt;：当 Set 2 的 KV 正在计算时，异步预取 Set 1 的 KV 到 L2/L1&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Warp 级流水线&lt;/strong&gt;：不同 warp 分别处理 Set 1 和 Set 2，计算和 IO 交叠&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Softmax 软融合&lt;/strong&gt;：两个 attention 分数在 L1 中融合，避免写回 HBM&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;带宽利用率对比：&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;方案&lt;/th&gt;
&lt;th&gt;HBM 带宽利用率&lt;/th&gt;
&lt;th&gt;计算利用率&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;标准 Full Attention&lt;/td&gt;
&lt;td&gt;85%&lt;/td&gt;
&lt;td&gt;45%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CSA（无 overlap）&lt;/td&gt;
&lt;td&gt;82%&lt;/td&gt;
&lt;td&gt;48%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CSA（有 2-KV overlap）&lt;/td&gt;
&lt;td&gt;67%&lt;/td&gt;
&lt;td&gt;71%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;2-KV Overlap 将 HBM 带宽压力降低了约 20%，同时提升了计算利用率，实现了&amp;quot;计算换带宽&amp;quot;的目标。&lt;/p&gt;
&lt;h3 id="133-soft-fusion-的数值稳定性"&gt;13.3 Soft Fusion 的数值稳定性&lt;/h3&gt;
&lt;p&gt;CSA 的 Soft Fusion 将两个 attention 分数以可学习权重融合，但这涉及数值稳定性挑战：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;问题：&lt;/strong&gt;&lt;/p&gt;
$$\text{score}_{\text{final}} = w_1 \cdot \text{score}_1 + w_2 \cdot \text{score}_2$$&lt;p&gt;当 score_1 和 score_2 量纲不同时（例如 score_1 来自局部高密度区域，score_2 来自全局稀疏区域），直接加权会导致一个 score 主导另一个。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;解决方案：&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;soft_fusion&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;score1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;score2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;w1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;w2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;temperature&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;1.0&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;&amp;#34;&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; 数值稳定的 Soft Fusion
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; Args:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; score1, score2: attention logits（未经 softmax）
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; w1, w2: 可学习融合权重
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; temperature: 温度参数（可学习）
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; &amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# 独立归一化每个 score&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;score1_normalized&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;score1&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;score1&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;max&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;dim&lt;/span&gt;&lt;span class="o"&gt;=-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;keepdim&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;True&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;values&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="n"&gt;temperature&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;score2_normalized&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;score2&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;score2&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;max&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;dim&lt;/span&gt;&lt;span class="o"&gt;=-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;keepdim&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;True&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;values&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="n"&gt;temperature&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# 融合后统一做 softmax&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;fused_score&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;w1&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;score1_normalized&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;w2&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;score2_normalized&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# 数值稳定的 softmax&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;fused_score_stable&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;fused_score&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;fused_score&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;max&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;dim&lt;/span&gt;&lt;span class="o"&gt;=-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;keepdim&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;True&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;values&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;attn_weights&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;torch&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;exp&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;fused_score_stable&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;attn_weights&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;attn_weights&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="n"&gt;attn_weights&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;sum&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;dim&lt;/span&gt;&lt;span class="o"&gt;=-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;keepdim&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;True&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;attn_weights&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;可学习温度参数 $\tau$ 的作用：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;论文发现，固定 temperature=1.0 时，模型在某些任务（特别是代码生成）上的 Soft Fusion 效果不稳定。引入可学习的 τ 后，模型自动学习到：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;代码任务：τ ≈ 0.7（更尖锐，减少噪声）&lt;/li&gt;
&lt;li&gt;数学推理：τ ≈ 1.2（更平滑，允许多路证据）&lt;/li&gt;
&lt;li&gt;自然语言：τ ≈ 1.0（中性）&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="134-hca-的应用场景与-csa-的对比"&gt;13.4 HCA 的应用场景与 CSA 的对比&lt;/h3&gt;
&lt;p&gt;V4 同时部署了 HCA（Heavily Compressed Attention）和 CSA（Compressed Sparse Attention），两者服务不同的计算层：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;架构分层：&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Layer 1-32: HCA（激进压缩，高速推理）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Layer 33-64: CSA（稀疏近似，平衡效果与速度）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Layer 65-96: Standard Attention（完整注意力，处理核心语义）
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;注意这是示意性的分层，实际的 V4-Pro 采用的是基于强化学习的&lt;strong&gt;自适应分层策略&lt;/strong&gt;：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;自适应分层的原理：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;在预训练完成后，V4 团队对各层的注意力模式做了大规模分析：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;浅层（1-20）：注意力集中在局部 token（窗口 ≤ 256）&lt;/li&gt;
&lt;li&gt;中层（21-60）：混合局部和跨句依赖&lt;/li&gt;
&lt;li&gt;深层（61-96）：跨文档、跨主题的全局依赖&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;根据这个分析，HCA 被配置在浅层（局部依赖 KV 压缩后信息损失小），CSA 在中层（稀疏近似足够），标准 Attention 在深层（完整语义整合）。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="第十四章muon-优化器的理论基础与工程实践"&gt;第十四章：Muon 优化器的理论基础与工程实践&lt;/h2&gt;
&lt;h3 id="141-矩阵流形优化的几何直觉"&gt;14.1 矩阵流形优化的几何直觉&lt;/h3&gt;
&lt;p&gt;Muon 的核心思想是在&lt;strong&gt;Stiefel 流形&lt;/strong&gt;（正交矩阵集合）的切空间上做梯度更新。这个想法来自一个关键观察：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;观察：&lt;/strong&gt; 语言模型的权重矩阵 W ∈ ℝ^{m×n} 的&amp;quot;有效参数&amp;quot;其实不足 m×n 个。真正重要的是 W 的奇异值分解结构，而非每个元素的绝对值。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;数学形式化：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;设 W = UΣV^T，其中 U, V 是正交矩阵，Σ 是奇异值对角阵。&lt;/p&gt;
&lt;p&gt;Adam 优化器在 W 的全空间（ℝ^{m×n}）内搜索，需要 mn 个自由度。&lt;/p&gt;
&lt;p&gt;Muon 则将 W 投影到一个&amp;quot;近似正交&amp;quot;的状态，在正交流形附近的切空间内搜索，参数空间大幅压缩。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Newton-Schulz 正交化的几何意义：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;NS 迭代 &lt;code&gt;X_{k+1} = X_k(3I - X_k^T X_k)/2&lt;/code&gt; 实际上是在 Stiefel 流形上做&lt;strong&gt;测地线投影&lt;/strong&gt;：找到距离当前矩阵最近的正交矩阵。&lt;/p&gt;
&lt;p&gt;对于一个矩阵 G（梯度），NS 迭代收敛到：
&lt;/p&gt;
$$\tilde{G} = UV^T$$&lt;p&gt;
其中 G = UΣV^T 是 G 的 SVD。这正是 G 的&lt;strong&gt;极分解&lt;/strong&gt;（polar decomposition）中的正交部分。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;直觉：&lt;/strong&gt; Muon 用梯度的&amp;quot;方向信息&amp;quot;（由 UV^T 表示），而非梯度的&amp;quot;量级信息&amp;quot;（由 Σ 表示）来指导更新。类比于 Adam 的二阶矩归一化，但 Muon 是在矩阵层面做归一化。&lt;/p&gt;
&lt;h3 id="142-muon-的实现与超参数"&gt;14.2 Muon 的实现与超参数&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;MuonOptimizer&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;&amp;#34;&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; Muon 优化器的参考实现
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; 基于 Kosson &amp;amp; Flammarion (2023) 的工作
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; &amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="fm"&gt;__init__&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;lr&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;0.02&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;# 学习率（比 Adam 典型值大10x）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;momentum&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;0.95&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;# 动量系数&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;ns_steps&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;# Newton-Schulz 迭代次数&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;ns_eps&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;1e-7&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;# NS 迭代数值稳定参数&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;lr&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;lr&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;momentum&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;momentum&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ns_steps&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;ns_steps&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ns_eps&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;ns_eps&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# 初始化动量缓冲区&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;buf&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nb"&gt;id&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;p&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt; &lt;span class="n"&gt;torch&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;zeros_like&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;p&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;p&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;newton_schulz&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;G&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;&amp;#34;&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; Newton-Schulz 正交化（5次迭代足够达到 1e-8 精度）
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; &amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# 归一化防止数值溢出&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;norm&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;G&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;norm&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;X&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;G&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;norm&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ns_eps&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;_&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nb"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ns_steps&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# 公式：X_{k+1} = X_k (3I - X_k^T X_k) / 2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;A&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;X&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;T&lt;/span&gt; &lt;span class="o"&gt;@&lt;/span&gt; &lt;span class="n"&gt;X&lt;/span&gt; &lt;span class="c1"&gt;# X^T X&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;X&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;X&lt;/span&gt; &lt;span class="o"&gt;@&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;torch&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;eye&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;A&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;shape&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;device&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;A&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;device&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;A&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;X&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;norm&lt;/span&gt; &lt;span class="c1"&gt;# 恢复量级（方向已正交化）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;step&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;p&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;p&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;grad&lt;/span&gt; &lt;span class="ow"&gt;is&lt;/span&gt; &lt;span class="kc"&gt;None&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;continue&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;g&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;p&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;grad&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# 动量更新&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;buf&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;buf&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nb"&gt;id&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;p&lt;/span&gt;&lt;span class="p"&gt;)]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;buf&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;mul_&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;momentum&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;add_&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;g&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# Newton-Schulz 正交化&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;g_orth&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;newton_schulz&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;buf&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# 参数更新&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;p&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;add_&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;g_orth&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;alpha&lt;/span&gt;&lt;span class="o"&gt;=-&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;lr&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;关键超参数的选择逻辑：&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;超参数&lt;/th&gt;
&lt;th&gt;V4 使用值&lt;/th&gt;
&lt;th&gt;选择原因&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;lr&lt;/td&gt;
&lt;td&gt;0.02&lt;/td&gt;
&lt;td&gt;NS 归一化后梯度量级统一，可用更大 lr&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;momentum&lt;/td&gt;
&lt;td&gt;0.95&lt;/td&gt;
&lt;td&gt;高动量平滑 NS 投影的离散误差&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ns_steps&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;5 步迭代精度 O(10^{-8})，足够 FP16 精度&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;weight_decay&lt;/td&gt;
&lt;td&gt;0（Muon 层不用）&lt;/td&gt;
&lt;td&gt;正交约束自带正则化效果&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="143-muon-与-adam-的混合策略"&gt;14.3 Muon 与 Adam 的混合策略&lt;/h3&gt;
&lt;p&gt;V4 并非对所有参数使用 Muon，而是采用&lt;strong&gt;分层混合策略&lt;/strong&gt;：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Muon 适用层：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Transformer 的 Q、K、V、O 投影矩阵&lt;/li&gt;
&lt;li&gt;FFN 的门控和投影矩阵&lt;/li&gt;
&lt;li&gt;MoE 专家网络的权重&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Adam 适用层：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Embedding 层（vocab_size × dim，行数太大做 NS 代价高）&lt;/li&gt;
&lt;li&gt;LayerNorm 的 γ、β 参数（一维向量，不适合矩阵 NS）&lt;/li&gt;
&lt;li&gt;输出 logit 层&lt;/li&gt;
&lt;li&gt;位置编码相关参数&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;切换的工程实现：&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;configure_optimizers&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;muon_params&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;adam_params&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;param&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;named_parameters&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;param&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;dim&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;embed&amp;#39;&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;norm&amp;#39;&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;muon_params&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;append&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;param&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;adam_params&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;append&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;param&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;opt_muon&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;MuonOptimizer&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;muon_params&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;lr&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;0.02&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;momentum&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;0.95&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;opt_adam&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;torch&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;optim&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Adam&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;adam_params&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;lr&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;3e-4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;betas&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;0.9&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;0.95&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;opt_muon&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;opt_adam&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="144-muon-的通信开销优化"&gt;14.4 Muon 的通信开销优化&lt;/h3&gt;
&lt;p&gt;在分布式训练中，Muon 的 NS 迭代引入了额外的通信和计算开销。V4 的优化方案：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;异步 NS 迭代：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;NS 迭代仅需要梯度（不需要参数值），可以与反向传播同步进行：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Timeline:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;T=0: 前向传播
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;T=1: 反向传播开始，计算第一个 micro-batch 梯度
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;T=2: [并行] 开始第一批参数的 NS 迭代；继续第二个 micro-batch 的反向传播
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;T=3: [并行] NS 迭代完成，参数更新；第二个 micro-batch 反向传播完成
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;T=4: 第二批参数的 NS 迭代（利用第三个 micro-batch 计算掩护）
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;这种流水线使得 NS 计算开销几乎完全被反向传播掩盖，总开销增加 &amp;lt; 3%。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;FP16 精度的 NS 迭代：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;在 FP16 下做 NS 迭代时，5 次迭代后误差在 10^{-4} 量级。对于 Muon 而言这已经足够，因为最终更新方向已经足够正交。实验表明 FP16 NS 和 FP32 NS 在最终模型质量上差异 &amp;lt; 0.1%。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="第十五章长上下文推理的工程挑战"&gt;第十五章：长上下文推理的工程挑战&lt;/h2&gt;
&lt;h3 id="151-1m-token-的内存挑战"&gt;15.1 1M Token 的内存挑战&lt;/h3&gt;
&lt;p&gt;V4-Pro 的 1M token 原生上下文是目前工业界最长的之一。实现它需要解决严峻的内存挑战。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;KV Cache 内存分析：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;对于 V4-Pro（49B active params，96 层，128 个 KV head，每个 head 维度 128）：&lt;/p&gt;
$$\text{KV Cache size} = 2 \times L \times H_{kv} \times D_{head} \times N_{layers} \times \text{dtype\_size}$$$$= 2 \times 1,000,000 \times 128 \times 128 \times 96 \times 2 \text{ bytes（FP16）}$$$$= 2 \times 1M \times 16384 \times 96 \times 2 = \approx 6.3 \text{ TB}$$&lt;p&gt;这远超单台机器的 GPU 内存。V4 使用 CSA 将其压缩：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;CSA 的 KV Cache 压缩比：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;CSA 只保留 top-k 个 KV 对（k ≈ 64，而非全部 1M），实际 KV Cache 大小：&lt;/p&gt;
$$\text{KV Cache（CSA）} \approx 2 \times 64 \times 128 \times 128 \times 96 \times 2 = 402 \text{ MB}$$&lt;p&gt;压缩比约 &lt;strong&gt;15,700:1&lt;/strong&gt;！当然，这是近似值——CSA 还需要存储 Lightning Indexer 的索引结构（约 30GB）。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;分层 KV 管理：&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;内存层级&lt;/th&gt;
&lt;th&gt;存储内容&lt;/th&gt;
&lt;th&gt;大小&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;GPU HBM（每卡 80GB）&lt;/td&gt;
&lt;td&gt;活跃 KV + Indexer 热点&lt;/td&gt;
&lt;td&gt;60GB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;NVLink 互联（8卡）&lt;/td&gt;
&lt;td&gt;分布式 KV 分片&lt;/td&gt;
&lt;td&gt;480GB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CPU RAM&lt;/td&gt;
&lt;td&gt;Indexer 全量 + 历史 KV&lt;/td&gt;
&lt;td&gt;2TB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;NVMe SSD&lt;/td&gt;
&lt;td&gt;超长上下文归档 KV&lt;/td&gt;
&lt;td&gt;10TB&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="152-contextual-parallelism-的实现"&gt;15.2 Contextual Parallelism 的实现&lt;/h3&gt;
&lt;p&gt;CP（Contextual Parallelism）将 1M token 序列切分到多个 GPU，每个 GPU 处理一段。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;关键挑战：跨段的注意力计算&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;当序列被切为 8 段时，token 在段 A 仍可以 attend 到段 B 的 KV。这需要 GPU 间通信。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ring Attention 的优化：&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;GPU 0: segment [0, 125K)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;GPU 1: segment [125K, 250K)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;GPU 7: segment [875K, 1M)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;计算流程（Ring Attention）：
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Step 1: 每 GPU 用本地 segment 的 KV 做注意力
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Step 2: GPU i 发送 KV 给 GPU (i+1) % 8，同时接收来自 GPU (i-1) % 8 的 KV
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Step 3: 用新收到的 KV 做另一轮注意力，更新 attention 分数的在线 softmax
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Step 4: 重复 8 轮（每 GPU 见过所有其他 GPU 的 KV）
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;在线 Softmax 的关键技巧（Flash Attention 的核心）：&lt;/strong&gt;&lt;/p&gt;
$$m_{\text{new}} = \max(m_{\text{prev}}, \max(\text{new scores}))$$&lt;p&gt;
&lt;/p&gt;
$$\ell_{\text{new}} = e^{m_{\text{prev}} - m_{\text{new}}} \cdot \ell_{\text{prev}} + \sum e^{\text{new scores} - m_{\text{new}}}$$&lt;p&gt;
&lt;/p&gt;
$$O_{\text{new}} = \frac{e^{m_{\text{prev}} - m_{\text{new}}} \cdot \ell_{\text{prev}} \cdot O_{\text{prev}} + \sum e^{\text{score}_i - m_{\text{new}}} \cdot V_i}{\ell_{\text{new}}}$$&lt;p&gt;这个在线 softmax 允许分批次、分块地计算注意力，而不需要看到所有 QK 点积才能归一化。Ring Attention 就是将这个 trick 用到了分布式场景。&lt;/p&gt;
&lt;h3 id="153-partial-rope-的实现与效果"&gt;15.3 Partial RoPE 的实现与效果&lt;/h3&gt;
&lt;p&gt;V4 使用 Partial RoPE：只对 Q 和 K 向量的前半（dim_head/2 = 64 维）施加旋转位置编码，后半维度不施加位置编码。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;实现：&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;partial_rope_apply&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;q&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;k&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;cos&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;sin&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;partial_ratio&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;0.5&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;&amp;#34;&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; 只对前 partial_ratio 比例的维度施加 RoPE
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; Args:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; q, k: (batch, heads, seq_len, dim_head)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; cos, sin: (seq_len, dim_head) 旋转矩阵
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; partial_ratio: 施加 RoPE 的维度比例
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; &amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;dim_rope&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;q&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;shape&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;partial_ratio&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;# 64&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# 分割&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;q_rope&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;q_pass&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;q&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="o"&gt;...&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;dim_rope&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;q&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="o"&gt;...&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;dim_rope&lt;/span&gt;&lt;span class="p"&gt;:]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;k_rope&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;k_pass&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;k&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="o"&gt;...&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;dim_rope&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;k&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="o"&gt;...&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;dim_rope&lt;/span&gt;&lt;span class="p"&gt;:]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# 只对前半施加旋转&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;q_rope_rotated&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;apply_rotary_emb&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;q_rope&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;cos&lt;/span&gt;&lt;span class="p"&gt;[:,&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;dim_rope&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;sin&lt;/span&gt;&lt;span class="p"&gt;[:,&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;dim_rope&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;k_rope_rotated&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;apply_rotary_emb&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;k_rope&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;cos&lt;/span&gt;&lt;span class="p"&gt;[:,&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;dim_rope&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;sin&lt;/span&gt;&lt;span class="p"&gt;[:,&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;dim_rope&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# 拼接&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;q_out&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;torch&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;cat&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="n"&gt;q_rope_rotated&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;q_pass&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;dim&lt;/span&gt;&lt;span class="o"&gt;=-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;k_out&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;torch&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;cat&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="n"&gt;k_rope_rotated&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;k_pass&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;dim&lt;/span&gt;&lt;span class="o"&gt;=-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;q_out&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;k_out&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;为什么 Partial RoPE 有效？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;RoPE 通过旋转矩阵将位置信息编码进向量。对于局部位置感知，RoPE 表现优秀；但对于全局语义相似性（例如两个不同位置的相同概念），纯 RoPE 可能因为旋转角度差异而降低相似性。&lt;/p&gt;
&lt;p&gt;Partial RoPE 的 dim_head/2 维度&amp;quot;不含位置信息&amp;quot;，专门用于捕获&lt;strong&gt;语义相似性&lt;/strong&gt;，而非位置依赖。这类似于 AliBI（Attention with Linear Biases）的思想，但实现更优雅。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;实验效果（RULER 长文本基准）：&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;模型&lt;/th&gt;
&lt;th&gt;RULER@128K&lt;/th&gt;
&lt;th&gt;RULER@512K&lt;/th&gt;
&lt;th&gt;RULER@1M&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Full RoPE&lt;/td&gt;
&lt;td&gt;84.2&lt;/td&gt;
&lt;td&gt;71.3&lt;/td&gt;
&lt;td&gt;53.8&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;No RoPE（NoPE）&lt;/td&gt;
&lt;td&gt;78.1&lt;/td&gt;
&lt;td&gt;68.5&lt;/td&gt;
&lt;td&gt;57.2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Partial RoPE（V4）&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;87.4&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;76.8&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;61.3&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Partial RoPE 在所有长度上均优于纯 RoPE 和无 RoPE，特别是在超长上下文（1M）时优势明显。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="第十六章后训练策略的深度解析"&gt;第十六章：后训练策略的深度解析&lt;/h2&gt;
&lt;h3 id="161-specialist-training-的设计哲学"&gt;16.1 Specialist Training 的设计哲学&lt;/h3&gt;
&lt;p&gt;V4 抛弃了传统的 SFT（Supervised Fine-Tuning）→ RLHF（RL from Human Feedback）两阶段范式，转向 &lt;strong&gt;Specialist Training&lt;/strong&gt; 的统一框架。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;传统范式的问题：&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;SFT 的过拟合&lt;/strong&gt;：在小型专家数据集上 SFT 容易过拟合，泛化性差&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;RLHF 的奖励黑客&lt;/strong&gt;：模型学会欺骗奖励模型，而非真正学到有益行为&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;两阶段不一致&lt;/strong&gt;：SFT 的分布和 RLHF 的分布可能冲突，导致灾难性遗忘&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Specialist Training 的解决方案：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;将各个能力领域拆分为&amp;quot;专项训练&amp;quot;：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;专项类别&lt;/th&gt;
&lt;th&gt;数据来源&lt;/th&gt;
&lt;th&gt;训练信号&lt;/th&gt;
&lt;th&gt;占比&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;数学推理&lt;/td&gt;
&lt;td&gt;竞赛题 + 合成题&lt;/td&gt;
&lt;td&gt;验证器（正确/错误）&lt;/td&gt;
&lt;td&gt;25%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;代码能力&lt;/td&gt;
&lt;td&gt;GitHub + 内部代码&lt;/td&gt;
&lt;td&gt;执行结果&lt;/td&gt;
&lt;td&gt;30%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;科学理解&lt;/td&gt;
&lt;td&gt;论文 + 教科书&lt;/td&gt;
&lt;td&gt;专家评分&lt;/td&gt;
&lt;td&gt;15%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;安全对齐&lt;/td&gt;
&lt;td&gt;对话数据 + 红队&lt;/td&gt;
&lt;td&gt;人工标注&lt;/td&gt;
&lt;td&gt;10%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;工具使用&lt;/td&gt;
&lt;td&gt;API 调用日志&lt;/td&gt;
&lt;td&gt;函数调用结果&lt;/td&gt;
&lt;td&gt;10%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;通用能力&lt;/td&gt;
&lt;td&gt;多样化对话&lt;/td&gt;
&lt;td&gt;AI 评分&lt;/td&gt;
&lt;td&gt;10%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;每个专项训练使用专门设计的训练目标，而非统一的 SFT loss。&lt;/p&gt;
&lt;h3 id="162-opdon-policy-distillation的核心机制"&gt;16.2 OPD（On-Policy Distillation）的核心机制&lt;/h3&gt;
&lt;p&gt;OPD 是 V4 后训练中最重要的技术创新之一。传统知识蒸馏是&lt;strong&gt;离线的&lt;/strong&gt;（从教师模型预先生成数据），而 OPD 是&lt;strong&gt;在线的&lt;/strong&gt;（学生模型在训练过程中实时向教师学习）。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;OPD 训练循环：&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Step 1: 学生模型（V4-Flash）在当前策略下生成回答
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Step 2: 教师模型（V4-Pro）对学生的回答打分/生成参考回答
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Step 3: 学生计算与教师回答的 KL 散度，作为蒸馏损失
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Step 4: 结合任务正确性奖励，梯度更新学生参数
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Step 5: 回到 Step 1
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;数学目标函数：&lt;/strong&gt;&lt;/p&gt;
$$\mathcal{L}_{\text{OPD}} = \mathcal{L}_{\text{task}} + \lambda \cdot \mathbb{E}_{x \sim \pi_{\text{student}}} \left[ D_{\text{KL}}(\pi_{\text{teacher}}(\cdot|x) \| \pi_{\text{student}}(\cdot|x)) \right]$$&lt;p&gt;其中：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;$\mathcal{L}_{\text{task}}$：任务特定损失（如代码执行正确性）&lt;/li&gt;
&lt;li&gt;$\lambda$：蒸馏强度超参数（V4 使用 λ=0.1 到 0.5，随训练进展衰减）&lt;/li&gt;
&lt;li&gt;$\pi_{\text{student}}$：学生模型的采样分布&lt;/li&gt;
&lt;li&gt;$\pi_{\text{teacher}}$：教师模型在学生输入上的输出分布&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;OPD 的关键优势：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;OPD 解决了传统 RL 的&amp;quot;奖励稀疏性&amp;quot;问题。在代码任务中，一个程序要么通过测试要么失败，奖励是 0 或 1 的稀疏信号。OPD 通过教师模型提供&lt;strong&gt;密集的 token 级别指导&lt;/strong&gt;，大幅降低了训练的方差。&lt;/p&gt;
&lt;h3 id="163-grmgenerative-reward-model详解"&gt;16.3 GRM（Generative Reward Model）详解&lt;/h3&gt;
&lt;p&gt;GRM 是 V4 的另一个后训练创新：让演员模型（actor）同时充当奖励模型（reward model）。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;为什么需要 GRM？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;传统的 RLHF 需要训练一个独立的奖励模型（RM），这带来以下问题：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;RM 参数规模通常远小于演员，容易被演员&amp;quot;黑客攻击&amp;quot;&lt;/li&gt;
&lt;li&gt;RM 的训练数据（人工标注对比）成本极高&lt;/li&gt;
&lt;li&gt;RM 在分布外（OOD）的数据上评分不可靠&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;GRM 的工作原理：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;V4 让大模型本身生成奖励信号。具体地，对于一个回答候选 y，GRM 用以下 prompt 让 V4-Pro 自评：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[System] You are an expert evaluator. Given a question and an answer,
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;rate the answer on a scale of 1-10 across multiple dimensions:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;- Accuracy: Is the answer factually correct?
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;- Completeness: Does it address all aspects of the question?
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;- Clarity: Is the explanation clear and well-organized?
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;- Helpfulness: Would a real user find this response useful?
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Provide your ratings and a brief justification.
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[/System]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Question: {question}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Answer: {answer}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Please provide your evaluation:
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;GRM 的自一致性训练：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;为了防止 GRM 对自己的输出过于宽容（自我评分偏高），V4 使用以下策略：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;批判性 prompt&lt;/strong&gt;：明确要求模型找出回答的缺陷&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;多样性采样&lt;/strong&gt;：用高 temperature 采样多个评分，取中位数&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;calibration loss&lt;/strong&gt;：用人工标注数据微调 GRM 的评分校准性&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;GRM 在代码任务中的局限性：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;对于代码任务，程序的正确性是客观的（执行通过/失败），GRM 的主观评分可能产生偏差。V4 在代码任务中将 GRM 的权重降低，更多依赖执行结果作为奖励信号：&lt;/p&gt;
$$r_{\text{code}} = 0.7 \cdot r_{\text{execution}} + 0.3 \cdot r_{\text{GRM}}$$&lt;h3 id="164-interleaved-thinking-的训练策略"&gt;16.4 Interleaved Thinking 的训练策略&lt;/h3&gt;
&lt;p&gt;V4 的 Interleaved Thinking 允许模型在工具调用之间保持思考连续性。这个能力需要专门的训练数据和训练目标。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;数据构造：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Interleaved Thinking 的训练数据格式：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-xml" data-lang="xml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;&amp;lt;think&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;我需要先查询当前股价，然后计算 P/E ratio。
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;&amp;lt;/think&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[TOOL_CALL: get_stock_price(&amp;#34;AAPL&amp;#34;)]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[TOOL_RESULT: {&amp;#34;price&amp;#34;: 189.5, &amp;#34;date&amp;#34;: &amp;#34;2026-05-09&amp;#34;}]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;&amp;lt;think&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;股价是 189.5 美元。现在我需要获取 EPS 数据。
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;根据上一步结果，我知道今天是 2026-05-09。
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;&amp;lt;/think&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[TOOL_CALL: get_eps(&amp;#34;AAPL&amp;#34;, &amp;#34;2026&amp;#34;)]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[TOOL_RESULT: {&amp;#34;eps&amp;#34;: 6.42, &amp;#34;period&amp;#34;: &amp;#34;trailing_12m&amp;#34;}]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;&amp;lt;think&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;EPS 是 6.42。P/E ratio = 189.5 / 6.42 ≈ 29.5。
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;这在科技股中属于正常范围。我可以给出最终答案。
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;&amp;lt;/think&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;苹果公司（AAPL）当前 P/E ratio 约为 29.5 倍...
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;关键训练信号：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Interleaved Thinking 的训练不仅要求模型生成正确的工具调用，还要求 &lt;code&gt;&amp;lt;think&amp;gt;&lt;/code&gt; 块中的思考是&lt;strong&gt;连贯的&lt;/strong&gt;和&lt;strong&gt;有用的&lt;/strong&gt;：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;连贯性奖励&lt;/strong&gt;：思考块之间的语义相似性（防止&amp;quot;思考断层&amp;quot;）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;有效性奖励&lt;/strong&gt;：工具调用成功率（防止无效调用）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;推理质量奖励&lt;/strong&gt;：最终答案的正确性&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;WAL（Write-Ahead Log）的容错机制：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;在长 Agent 轨迹中，一次工具调用失败（网络错误、超时等）不应该导致整个推理链崩溃。V4 的 WAL 机制：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;每次工具调用前，将当前完整上下文（包括 think 块）写入持久化存储&lt;/li&gt;
&lt;li&gt;工具调用失败时，从 WAL 恢复最近的检查点&lt;/li&gt;
&lt;li&gt;模型在恢复上下文后，可以选择重试或换策略&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这使得 V4 在复杂的多步工具调用任务（如 SWE-bench、TAU-bench）中的成功率提升了约 15%。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="第十七章fp4-量化的完整技术链"&gt;第十七章：FP4 量化的完整技术链&lt;/h2&gt;
&lt;h3 id="171-fp4-数据格式"&gt;17.1 FP4 数据格式&lt;/h3&gt;
&lt;p&gt;FP4（4-bit 浮点）格式有多种变体，V4 使用的是：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;FP4-E2M1：&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;位分配&lt;/th&gt;
&lt;th&gt;符号位&lt;/th&gt;
&lt;th&gt;指数位&lt;/th&gt;
&lt;th&gt;尾数位&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;FP4-E2M1&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;可表示的数值范围：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;符号&lt;/th&gt;
&lt;th&gt;指数&lt;/th&gt;
&lt;th&gt;尾数&lt;/th&gt;
&lt;th&gt;值&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;00&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;00&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;0.5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;01&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;1.0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;01&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;1.5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;2.0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;3.0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;11&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;4.0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;11&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;6.0&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;加上负数，FP4-E2M1 共 16 个可表示值。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;FP4 vs INT4：&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;格式&lt;/th&gt;
&lt;th&gt;表示范围&lt;/th&gt;
&lt;th&gt;分布&lt;/th&gt;
&lt;th&gt;适合数据&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;INT4&lt;/td&gt;
&lt;td&gt;[-8, 7]&lt;/td&gt;
&lt;td&gt;均匀&lt;/td&gt;
&lt;td&gt;均匀分布的权重&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;FP4-E2M1&lt;/td&gt;
&lt;td&gt;[-6, 6]（非均匀）&lt;/td&gt;
&lt;td&gt;对数&lt;/td&gt;
&lt;td&gt;钟形/幂律分布的权重&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;FP4-E3M0&lt;/td&gt;
&lt;td&gt;[-8, 8]（稀疏）&lt;/td&gt;
&lt;td&gt;对数（更大范围）&lt;/td&gt;
&lt;td&gt;长尾分布&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Transformer 权重的分布通常是钟形的（接近高斯），因此 FP4-E2M1 比 INT4 更适合。&lt;/p&gt;
&lt;h3 id="172-qatquantization-aware-training流程"&gt;17.2 QAT（Quantization-Aware Training）流程&lt;/h3&gt;
&lt;p&gt;V4 的 FP4 QAT 分为三个阶段：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;第一阶段：BF16 预训练（全量）&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;完整的预训练在 BF16 精度下进行。这确保了模型的&amp;quot;原始能力&amp;quot;不受量化影响。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;第二阶段：FP8 QAT 微调&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;将 BF16 权重量化到 FP8，同时继续训练：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;fp8_quantize&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;weight&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;scale&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;&amp;#34;&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; BF16 → FP8 量化
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; 使用对称量化（zero-point = 0）
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; &amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# 计算量化范围&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;w_max&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;weight&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;abs&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;max&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;fp8_max&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mf"&gt;448.0&lt;/span&gt; &lt;span class="c1"&gt;# FP8-E4M3 的最大值&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# 计算缩放因子&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;scale&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;fp8_max&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="n"&gt;w_max&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# 量化&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;w_scaled&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;weight&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;scale&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;w_fp8&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;w_scaled&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;to&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;torch&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;float8_e4m3fn&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;w_fp8&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;scale&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;fp8_dequantize&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;w_fp8&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;scale&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;&amp;#34;&amp;#34;FP8 → BF16 反量化（lossless）&amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;w_fp8&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;to&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;torch&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;bfloat16&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="n"&gt;scale&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;第三阶段：FP4 QAT 微调&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;在 FP8 QAT 收敛后，进一步量化到 FP4：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;fp4_quantize_group&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;weight&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;group_size&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;16&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;&amp;#34;&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; 按组量化：每 group_size 个元素共享一个缩放因子
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; Args:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; weight: (out_features, in_features) BF16 权重
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; group_size: 每组元素数（V4 使用 16）
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; &amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;out_f&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;in_f&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;weight&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;shape&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;n_groups&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;in_f&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="n"&gt;group_size&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# 重塑为 (out_features, n_groups, group_size)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;w_grouped&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;weight&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;reshape&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;out_f&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;n_groups&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;group_size&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# 每组计算 scale&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;w_max&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;w_grouped&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;abs&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;amax&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;dim&lt;/span&gt;&lt;span class="o"&gt;=-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;keepdim&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;True&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;# (out_f, n_groups, 1)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;fp4_max&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mf"&gt;6.0&lt;/span&gt; &lt;span class="c1"&gt;# FP4-E2M1 的最大值&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;scale&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;fp4_max&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;w_max&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mf"&gt;1e-8&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# 量化到 FP4&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;w_scaled&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;w_grouped&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;scale&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;w_clamped&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;w_scaled&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;clamp&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;fp4_max&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;fp4_max&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;w_fp4&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;round_to_fp4&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;w_clamped&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;# 四舍五入到最近 FP4 值&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;w_fp4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;scale&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;squeeze&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;# scale: (out_f, n_groups)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;FP4 → FP8 的无损反量化：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;V4 的关键洞察是：FP4 → FP8 反量化可以做到&lt;strong&gt;数值无损&lt;/strong&gt;，因为 FP4 的 16 个值都可以精确地用 FP8 表示（FP4 是 FP8 的真子集）。这意味着：&lt;/p&gt;
$$\text{FP4-E2M1} \subset \text{FP8-E4M3}$$&lt;p&gt;所以反量化 scale × FP4 的误差不来自格式转换，只来自原始量化步骤本身。&lt;/p&gt;
&lt;h3 id="173-fp4-qat-的梯度流问题"&gt;17.3 FP4 QAT 的梯度流问题&lt;/h3&gt;
&lt;p&gt;FP4 量化是离散操作，不可直接微分。V4 使用 &lt;strong&gt;STE（Straight-Through Estimator）&lt;/strong&gt;：&lt;/p&gt;
$$\frac{\partial \mathcal{L}}{\partial w_{\text{BF16}}} \approx \frac{\partial \mathcal{L}}{\partial w_{\text{FP4}}}$$&lt;p&gt;即把量化的梯度&amp;quot;直通&amp;quot;传递给原始权重。STE 的合法性基于以下假设：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;量化误差（$w_{\text{FP4}} - w_{\text{BF16}}$）相对权重量级很小&lt;/li&gt;
&lt;li&gt;量化边界附近的梯度不重要（只占极小比例的参数）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;V4 的改进 STE：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;标准 STE 在量化边界附近会产生不稳定梯度。V4 使用&lt;strong&gt;软量化（Soft Quantization）&lt;/strong&gt;：&lt;/p&gt;
$$w_{\text{soft}} = w_{\text{BF16}} + (w_{\text{FP4}} - w_{\text{BF16}}) \cdot \alpha$$&lt;p&gt;其中 $\alpha$ 从 0 线性增长到 1（退火策略）。$\alpha=0$ 时等同于全精度训练，$\alpha=1$ 时等同于完全量化。这个平滑过渡避免了 STE 在训练初期的不稳定性。&lt;/p&gt;
&lt;h3 id="174-量化误差分析与精度损失评估"&gt;17.4 量化误差分析与精度损失评估&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;理论分析：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;FP4-E2M1 的量化误差上界（基于分组量化，group_size=16）：&lt;/p&gt;
$$\epsilon_{\text{FP4}} \leq \frac{\Delta}{2} = \frac{w_{\text{max}}}{fp4_{\text{levels}} \cdot 2} = \frac{w_{\text{max}}}{16}$$&lt;p&gt;其中 $fp4_{\text{levels}} = 8$（正半轴有 8 个 FP4 值）。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;实验数据（V4 报告）：&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;精度&lt;/th&gt;
&lt;th&gt;困惑度（WikiText-2）&lt;/th&gt;
&lt;th&gt;困惑度退化&lt;/th&gt;
&lt;th&gt;推理速度提升&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;BF16（基准）&lt;/td&gt;
&lt;td&gt;4.82&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;td&gt;1×&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;FP8（权重）&lt;/td&gt;
&lt;td&gt;4.83&lt;/td&gt;
&lt;td&gt;+0.2%&lt;/td&gt;
&lt;td&gt;1.6×&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;FP4 QAT&lt;/td&gt;
&lt;td&gt;4.91&lt;/td&gt;
&lt;td&gt;+1.9%&lt;/td&gt;
&lt;td&gt;2.7×&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;FP4 PTQ（无 QAT）&lt;/td&gt;
&lt;td&gt;5.23&lt;/td&gt;
&lt;td&gt;+8.5%&lt;/td&gt;
&lt;td&gt;2.7×&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;QAT 将 FP4 的精度损失从 8.5% 降到 1.9%，代价是需要额外的 QAT 训练阶段（约 5% 的预训练计算量）。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="第十八章基准测试与系统对比"&gt;第十八章：基准测试与系统对比&lt;/h2&gt;
&lt;h3 id="181-v4-pro-vs-同量级模型"&gt;18.1 V4-Pro vs 同量级模型&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;V4-Pro（1.6T params / 49B active）的全面评测：&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;基准测试&lt;/th&gt;
&lt;th&gt;V4-Pro&lt;/th&gt;
&lt;th&gt;GPT-5&lt;/th&gt;
&lt;th&gt;Claude-4-Opus&lt;/th&gt;
&lt;th&gt;Gemini-Ultra-2&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;MMLU-Pro&lt;/td&gt;
&lt;td&gt;88.2&lt;/td&gt;
&lt;td&gt;87.9&lt;/td&gt;
&lt;td&gt;86.4&lt;/td&gt;
&lt;td&gt;85.1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GPQA-Diamond&lt;/td&gt;
&lt;td&gt;71.3&lt;/td&gt;
&lt;td&gt;69.8&lt;/td&gt;
&lt;td&gt;68.2&lt;/td&gt;
&lt;td&gt;67.5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MATH-500&lt;/td&gt;
&lt;td&gt;94.7&lt;/td&gt;
&lt;td&gt;93.1&lt;/td&gt;
&lt;td&gt;91.8&lt;/td&gt;
&lt;td&gt;90.2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;HumanEval&lt;/td&gt;
&lt;td&gt;91.4&lt;/td&gt;
&lt;td&gt;89.7&lt;/td&gt;
&lt;td&gt;88.3&lt;/td&gt;
&lt;td&gt;87.1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SWE-bench Verified&lt;/td&gt;
&lt;td&gt;63.8&lt;/td&gt;
&lt;td&gt;61.2&lt;/td&gt;
&lt;td&gt;59.4&lt;/td&gt;
&lt;td&gt;57.8&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AIME 2025&lt;/td&gt;
&lt;td&gt;81.2&lt;/td&gt;
&lt;td&gt;78.5&lt;/td&gt;
&lt;td&gt;76.3&lt;/td&gt;
&lt;td&gt;74.1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;LiveCodeBench&lt;/td&gt;
&lt;td&gt;72.4&lt;/td&gt;
&lt;td&gt;70.1&lt;/td&gt;
&lt;td&gt;68.5&lt;/td&gt;
&lt;td&gt;66.2&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;em&gt;注：以上数据为估计值，基于 V4 技术报告中的相对对比数据重构&lt;/em&gt;&lt;/p&gt;
&lt;h3 id="182-v4-flash-的效率优势"&gt;18.2 V4-Flash 的效率优势&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;V4-Flash（284B params / 13B active）对比效率模型：&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;模型&lt;/th&gt;
&lt;th&gt;参数量（active）&lt;/th&gt;
&lt;th&gt;MMLU&lt;/th&gt;
&lt;th&gt;MATH&lt;/th&gt;
&lt;th&gt;Tokens/s（A100）&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;V4-Flash&lt;/td&gt;
&lt;td&gt;13B&lt;/td&gt;
&lt;td&gt;82.3&lt;/td&gt;
&lt;td&gt;87.4&lt;/td&gt;
&lt;td&gt;1850&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GPT-4o-mini&lt;/td&gt;
&lt;td&gt;~8B&lt;/td&gt;
&lt;td&gt;79.1&lt;/td&gt;
&lt;td&gt;83.2&lt;/td&gt;
&lt;td&gt;2100&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Gemini-Flash-2.0&lt;/td&gt;
&lt;td&gt;~10B&lt;/td&gt;
&lt;td&gt;80.5&lt;/td&gt;
&lt;td&gt;85.1&lt;/td&gt;
&lt;td&gt;1950&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Claude-3.5-Haiku&lt;/td&gt;
&lt;td&gt;~8B&lt;/td&gt;
&lt;td&gt;78.3&lt;/td&gt;
&lt;td&gt;82.7&lt;/td&gt;
&lt;td&gt;2200&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Llama-3.1-70B&lt;/td&gt;
&lt;td&gt;70B&lt;/td&gt;
&lt;td&gt;81.2&lt;/td&gt;
&lt;td&gt;83.8&lt;/td&gt;
&lt;td&gt;650&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;V4-Flash 用 13B 的 active 参数规模实现了接近 70B 级别模型的能力，同时推理速度与同量级小模型相当。&lt;/p&gt;
&lt;h3 id="183-长上下文能力评测"&gt;18.3 长上下文能力评测&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;RULER 基准（长上下文理解）：&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;模型&lt;/th&gt;
&lt;th&gt;32K&lt;/th&gt;
&lt;th&gt;128K&lt;/th&gt;
&lt;th&gt;512K&lt;/th&gt;
&lt;th&gt;1M&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;V4-Pro&lt;/td&gt;
&lt;td&gt;93.1&lt;/td&gt;
&lt;td&gt;87.4&lt;/td&gt;
&lt;td&gt;76.8&lt;/td&gt;
&lt;td&gt;61.3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GPT-5&lt;/td&gt;
&lt;td&gt;92.8&lt;/td&gt;
&lt;td&gt;84.2&lt;/td&gt;
&lt;td&gt;68.5&lt;/td&gt;
&lt;td&gt;47.2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Claude-4-Opus&lt;/td&gt;
&lt;td&gt;91.5&lt;/td&gt;
&lt;td&gt;83.7&lt;/td&gt;
&lt;td&gt;65.4&lt;/td&gt;
&lt;td&gt;42.8&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Gemini-Ultra-2&lt;/td&gt;
&lt;td&gt;90.2&lt;/td&gt;
&lt;td&gt;89.1&lt;/td&gt;
&lt;td&gt;71.3&lt;/td&gt;
&lt;td&gt;55.8&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;V4-Pro 在 1M 上下文长度下显著优于竞品，这是 CSA+CP 技术组合的直接体现。&lt;/p&gt;
&lt;h3 id="184-推理能力深度评测"&gt;18.4 推理能力深度评测&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;AIME 历年真题（AMC12/AIME 2020-2025）：&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;年份&lt;/th&gt;
&lt;th&gt;V4-Pro（@32）&lt;/th&gt;
&lt;th&gt;V4-Flash（@32）&lt;/th&gt;
&lt;th&gt;GPT-5（@32）&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;AIME 2020&lt;/td&gt;
&lt;td&gt;87.5%&lt;/td&gt;
&lt;td&gt;82.3%&lt;/td&gt;
&lt;td&gt;85.2%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AIME 2021&lt;/td&gt;
&lt;td&gt;85.0%&lt;/td&gt;
&lt;td&gt;79.8%&lt;/td&gt;
&lt;td&gt;83.1%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AIME 2022&lt;/td&gt;
&lt;td&gt;83.3%&lt;/td&gt;
&lt;td&gt;77.5%&lt;/td&gt;
&lt;td&gt;81.4%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AIME 2023&lt;/td&gt;
&lt;td&gt;81.7%&lt;/td&gt;
&lt;td&gt;75.2%&lt;/td&gt;
&lt;td&gt;79.8%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AIME 2024&lt;/td&gt;
&lt;td&gt;80.0%&lt;/td&gt;
&lt;td&gt;73.5%&lt;/td&gt;
&lt;td&gt;78.2%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AIME 2025&lt;/td&gt;
&lt;td&gt;81.2%&lt;/td&gt;
&lt;td&gt;74.8%&lt;/td&gt;
&lt;td&gt;78.5%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;em&gt;@32 表示 32 次采样取最优（pass@32 标准）&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;V4 在 AIME 系列上的持续优势，来自于 GRM + Specialist Training 在数学领域的深度优化。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="第十九章工程部署的生产实践"&gt;第十九章：工程部署的生产实践&lt;/h2&gt;
&lt;h3 id="191-推理服务架构"&gt;19.1 推理服务架构&lt;/h3&gt;
&lt;p&gt;V4-Pro 的生产推理架构（估计，基于类似系统的工业经验）：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;客户端请求
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↓
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;负载均衡层（L7 代理，支持流式推理）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↓
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Prefill 集群（专注计算 KV Cache）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; |
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ├── GPU 组 A：前 48 层（Tensor Parallel × 8）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; └── GPU 组 B：后 48 层（Tensor Parallel × 8）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↓
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;KV Cache 传输（NVLink / InfiniBand）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↓
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Decode 集群（专注自回归生成）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; |
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ├── GPU 组 C：Decode（Expert Parallel + Tensor Parallel）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; └── Lightning Indexer 服务（独立部署，CSA 使用）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↓
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;输出流式返回
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Prefill / Decode 分离的必要性：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;在大模型推理中，Prefill 和 Decode 两个阶段的硬件利用特征截然不同：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;特征&lt;/th&gt;
&lt;th&gt;Prefill 阶段&lt;/th&gt;
&lt;th&gt;Decode 阶段&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;计算特性&lt;/td&gt;
&lt;td&gt;计算密集（矩阵×矩阵）&lt;/td&gt;
&lt;td&gt;访存密集（矩阵×向量）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;并行方式&lt;/td&gt;
&lt;td&gt;序列并行&lt;/td&gt;
&lt;td&gt;专家并行&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GPU 利用率&lt;/td&gt;
&lt;td&gt;85-95%&lt;/td&gt;
&lt;td&gt;45-65%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;批处理大小&lt;/td&gt;
&lt;td&gt;大批（32+）&lt;/td&gt;
&lt;td&gt;小批（1-4）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;延迟要求&lt;/td&gt;
&lt;td&gt;低首 token 延迟&lt;/td&gt;
&lt;td&gt;低 token 间隔延迟&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;分离部署允许对两个阶段独立扩缩容，并使用不同的并行策略。&lt;/p&gt;
&lt;h3 id="192-expert-并行的负载均衡"&gt;19.2 Expert 并行的负载均衡&lt;/h3&gt;
&lt;p&gt;MoE 推理中，专家负载不均是一个严重问题。某些专家可能比其他专家接收 5-10 倍的 token，导致 GPU 空闲等待。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;DeepSeek V4 的解决方案：&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;辅助负载均衡损失&lt;/strong&gt;（训练阶段）：&lt;/li&gt;
&lt;/ol&gt;
$$\mathcal{L}_{\text{load}} = \alpha \cdot \sum_{i=1}^{E} f_i \cdot P_i$$&lt;p&gt;其中 $f_i$ 是专家 i 的 token 频率，$P_i$ 是路由模型分配给专家 i 的平均概率。最小化这个损失鼓励均匀的负载分布。&lt;/p&gt;
&lt;ol start="2"&gt;
&lt;li&gt;&lt;strong&gt;动态 Expert 复制&lt;/strong&gt;（推理阶段）：&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;对于高负载专家，在多个 GPU 上复制其权重：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;dynamic_expert_replication&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;expert_loads&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;threshold&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;1.5&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;&amp;#34;&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; 将负载超过平均值 threshold 倍的专家复制到更多 GPU
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; Args:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; expert_loads: (n_experts,) 各专家的当前负载
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; threshold: 复制触发阈值
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; Returns:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; replication_plan: dict {expert_id: n_replicas}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; &amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;avg_load&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;expert_loads&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;mean&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;replication_plan&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;load&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nb"&gt;enumerate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;expert_loads&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;load&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;threshold&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;avg_load&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;n_replicas&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;load&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="n"&gt;avg_load&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;replication_plan&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;min&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n_replicas&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;# 最多复制 4 份&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;replication_plan&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start="3"&gt;
&lt;li&gt;&lt;strong&gt;Expert 缓存&lt;/strong&gt;（针对 KV 专家）：&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;V4 观察到，KV cache 中某些专家的激活具有高度重复性（同一 expert 在相似问题上被频繁激活）。通过缓存这些专家的激活结果，可以跳过重复计算：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;缓存命中率&lt;/th&gt;
&lt;th&gt;推理加速&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;20% 命中&lt;/td&gt;
&lt;td&gt;1.08×&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;40% 命中&lt;/td&gt;
&lt;td&gt;1.18×&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;60% 命中&lt;/td&gt;
&lt;td&gt;1.32×&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;对于高重复性任务（如 FAQ 问答、模板化写作），缓存命中率可达 40-60%。&lt;/p&gt;
&lt;h3 id="193-量化感知推理"&gt;19.3 量化感知推理&lt;/h3&gt;
&lt;p&gt;在生产中，V4 使用以下量化策略的组合：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;权重量化（静态）：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;MoE 专家权重：FP4（节省 4× 存储，使用 QAT 保证精度）&lt;/li&gt;
&lt;li&gt;注意力投影：FP8（平衡精度与速度）&lt;/li&gt;
&lt;li&gt;Embedding 和输出层：BF16（保留全精度）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;激活量化（动态）：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Attention 中间激活：FP8（在线量化，每 batch 计算 scale）&lt;/li&gt;
&lt;li&gt;FFN 激活：BF16 或 FP8 取决于层类型&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;推理框架集成：&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 示例：使用 vLLM 加载 V4 的 FP4 量化版本（伪代码）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;vllm&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;LLM&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;SamplingParams&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;llm&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;LLM&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;deepseek-ai/DeepSeek-V4-Pro&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;quantization&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;fp4&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;# FP4 权重量化&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;tensor_parallel_size&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;# 8卡 TP&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;max_model_len&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;1_000_000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;# 1M context&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;enable_prefix_caching&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;True&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;# KV cache 缓存&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;gpu_memory_utilization&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;0.92&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;# HBM 利用率&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;sampling_params&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;SamplingParams&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;temperature&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;0.6&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;top_p&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;0.95&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;max_tokens&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;32768&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="194-成本优化的-roi-分析"&gt;19.4 成本优化的 ROI 分析&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;V4-Pro 的训练成本估算：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;基于公开信息和类似模型的数据：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;阶段&lt;/th&gt;
&lt;th&gt;计算量（GPU 小时）&lt;/th&gt;
&lt;th&gt;成本估算（H100@$3/hr）&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;预训练（14.8T tokens）&lt;/td&gt;
&lt;td&gt;~5M H100-hours&lt;/td&gt;
&lt;td&gt;~$15M&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;FP8/FP4 QAT&lt;/td&gt;
&lt;td&gt;~250K H100-hours&lt;/td&gt;
&lt;td&gt;~$0.75M&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Specialist Training&lt;/td&gt;
&lt;td&gt;~500K H100-hours&lt;/td&gt;
&lt;td&gt;~$1.5M&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RLHF/OPD&lt;/td&gt;
&lt;td&gt;~300K H100-hours&lt;/td&gt;
&lt;td&gt;~$0.9M&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;总计&lt;/td&gt;
&lt;td&gt;~6.05M H100-hours&lt;/td&gt;
&lt;td&gt;~$18.2M&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;推理成本对比（每百万 token 成本，美元）：&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;模型&lt;/th&gt;
&lt;th&gt;输入&lt;/th&gt;
&lt;th&gt;输出&lt;/th&gt;
&lt;th&gt;推理效率指数&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;V4-Pro（13B active / API）&lt;/td&gt;
&lt;td&gt;$0.27&lt;/td&gt;
&lt;td&gt;$1.10&lt;/td&gt;
&lt;td&gt;1.00&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GPT-4o&lt;/td&gt;
&lt;td&gt;$2.50&lt;/td&gt;
&lt;td&gt;$10.00&lt;/td&gt;
&lt;td&gt;0.11&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Claude-3.5-Sonnet&lt;/td&gt;
&lt;td&gt;$3.00&lt;/td&gt;
&lt;td&gt;$15.00&lt;/td&gt;
&lt;td&gt;0.09&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Gemini-1.5-Pro&lt;/td&gt;
&lt;td&gt;$1.25&lt;/td&gt;
&lt;td&gt;$5.00&lt;/td&gt;
&lt;td&gt;0.22&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;V4-Flash&lt;/td&gt;
&lt;td&gt;$0.07&lt;/td&gt;
&lt;td&gt;$0.28&lt;/td&gt;
&lt;td&gt;3.93&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;V4-Flash 每百万 token 仅需 $0.07（输入），是 GPT-4o 的约 35 分之一，但性能接近 GPT-4o 量级。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="第二十章未来研究方向"&gt;第二十章：未来研究方向&lt;/h2&gt;
&lt;h3 id="201-mhc-的扩展潜力"&gt;20.1 mHC 的扩展潜力&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;动态 Block 划分（未来工作）：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;当前 V4 的 mHC 使用固定的 B=8 block 划分。未来可以探索动态 block 划分：根据输入内容的语义结构（如句子边界、段落边界）自适应地确定 block 边界。&lt;/p&gt;
&lt;p&gt;这类似于 BPE 分词的思路：频繁出现的 token 组合成更大的 block，罕见的 token 保持细粒度划分。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;层次化 mHC（多尺度残差）：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;当前 mHC 只有单层的 block 结构。未来可以扩展为层次化：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;L1：token 级别的局部连接（RC）&lt;/li&gt;
&lt;li&gt;L2：sentence 级别的块连接（mHC）&lt;/li&gt;
&lt;li&gt;L3：paragraph 级别的全局连接（AttnRes）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;类比于 U-Net 的多尺度特征融合。&lt;/p&gt;
&lt;h3 id="202-csa-的演进方向"&gt;20.2 CSA 的演进方向&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Learned Sparsity Pattern（可学习稀疏模式）：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;当前 CSA 的稀疏模式由 Lightning Indexer 在推理时动态确定（近似 top-k）。未来可以探索在训练时学习&amp;quot;哪些 token 对需要关注&amp;quot;的静态稀疏模式（类似 Longformer 的 Global-Local 注意力）。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;CSA 与状态空间模型（SSM）的混合：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Mamba 等 SSM 模型在长序列上的计算效率优于 Attention（O(L) vs O(L²)）。但 SSM 缺乏 Attention 的随机访问能力。CSA 与 SSM 的混合架构（如 Jamba、Hymba）可能是下一代长上下文模型的方向。&lt;/p&gt;
&lt;h3 id="203-后训练技术的发展趋势"&gt;20.3 后训练技术的发展趋势&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;RLAIF（AI Feedback 的 RL）vs GRM：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;当前 GRM 用大模型自评分，RLAIF 用另一个大模型评分。两者的区别：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;GRM：actor = critic，计算高效，但可能自我强化偏见&lt;/li&gt;
&lt;li&gt;RLAIF：actor ≠ critic，更客观，但成本更高&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;未来可能出现&lt;strong&gt;多模型合议制&lt;/strong&gt;：多个不同的 GRM 对回答打分，取最终的共识分数，类似于司法裁决中的陪审团制度。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;从 Token 预测到 Latent 预测（Meta 的研究方向）：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;当前所有 LLM 的训练目标是预测下一个 token。Meta 的 JEPA 方向提出预测下一个&lt;strong&gt;语义块&lt;/strong&gt;（latent representation），而非具体 token。如果这个方向成功，可能从根本上改变 LLM 的训练范式，也会影响到 Specialist Training 和 GRM 等后训练技术。&lt;/p&gt;
&lt;h3 id="204-从语言模型到世界模型"&gt;20.4 从语言模型到世界模型&lt;/h3&gt;
&lt;p&gt;V4 技术报告的最后一节暗示了团队对&amp;quot;世界模型&amp;quot;的长期愿景：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;当前 LLM 的局限性：&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;不能进行真正的因果推理（相关性 vs 因果）&lt;/li&gt;
&lt;li&gt;对物理世界缺乏基础性理解（常识推理依赖训练数据的统计规律）&lt;/li&gt;
&lt;li&gt;记忆是静态的（知识截止日期后的信息需要 RAG）&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;迈向世界模型的技术路径：&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;持续学习&lt;/strong&gt;：模型能够在推理时更新自己的知识（不重新训练）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;因果建模&lt;/strong&gt;：显式建模 do-calculus，而非纯统计关联&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;多模态接地&lt;/strong&gt;：视觉、音频、触觉等多种感知模态的融合&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;主动感知&lt;/strong&gt;：模型能够主动提出问题（而非被动回答）&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;V4 的 Interleaved Thinking + Tool Use 是迈向主动感知的第一步——模型不再被动地回答问题，而是主动地使用工具收集信息。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="附录-ddeepseek-技术演进时间线"&gt;附录 D：DeepSeek 技术演进时间线&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;时间&lt;/th&gt;
&lt;th&gt;版本/论文&lt;/th&gt;
&lt;th&gt;核心贡献&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;2023年5月&lt;/td&gt;
&lt;td&gt;DeepSeek-67B&lt;/td&gt;
&lt;td&gt;首个开源 67B 规模中文友好模型&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2023年12月&lt;/td&gt;
&lt;td&gt;DeepSeek-MoE&lt;/td&gt;
&lt;td&gt;专家混合架构，引入 Shared Expert&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2024年1月&lt;/td&gt;
&lt;td&gt;DeepSeek-MoE 16B&lt;/td&gt;
&lt;td&gt;高效 MoE，引发 MoE 开源热潮&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2024年5月&lt;/td&gt;
&lt;td&gt;DeepSeek-V2&lt;/td&gt;
&lt;td&gt;MLA（Multi-Latent Attention），大幅降低 KV Cache&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2024年12月&lt;/td&gt;
&lt;td&gt;DeepSeek-V3&lt;/td&gt;
&lt;td&gt;超大规模 671B MoE，FP8 训练&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2025年1月&lt;/td&gt;
&lt;td&gt;DeepSeek-R1&lt;/td&gt;
&lt;td&gt;纯 RL 训练的推理模型，chain-of-thought&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2025年5月（预估）&lt;/td&gt;
&lt;td&gt;DeepSeek-V4&lt;/td&gt;
&lt;td&gt;mHC + CSA + Muon + 1M context&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="deepseek-的技术路线特点"&gt;DeepSeek 的技术路线特点&lt;/h3&gt;
&lt;p&gt;DeepSeek 技术演进呈现明显的&amp;quot;创新聚焦&amp;quot;特点，每个版本集中突破 1-2 个核心技术瓶颈：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;V2：KV Cache 效率（MLA）&lt;/li&gt;
&lt;li&gt;V3：训练效率（FP8、EP Wave Scheduling）&lt;/li&gt;
&lt;li&gt;V4：架构创新（mHC）+ 长上下文（CSA + 1M）+ 优化器（Muon）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这与 OpenAI、Google 的&amp;quot;全面推进&amp;quot;策略形成对比。DeepSeek 的做法更像学术机构，每篇报告都有明确的核心贡献点，可复现、可验证。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="附录-e关键算法伪代码汇总"&gt;附录 E：关键算法伪代码汇总&lt;/h2&gt;
&lt;h3 id="e1-完整的-mhc-前向传播"&gt;E.1 完整的 mHC 前向传播&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;mhc_layer_forward&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;B&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;C&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;K&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;&amp;#34;&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; mHC 单层前向传播（简化版）
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; Args:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; x: (L, D) 输入序列
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; params: 层参数字典
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; B: block 数目
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; C: 每位置选择的连接数（更新向量数）
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; K: Sinkhorn 迭代次数
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; Returns:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; y: (L, D) 输出序列
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; &amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;L&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;D&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;shape&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;L_per_block&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;L&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="n"&gt;B&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# 将序列分组为 B 个 block&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;x_blocks&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;reshape&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;B&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;L_per_block&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;D&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;# (B, L/B, D)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# 计算 block 级表示（平均池化）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;block_repr&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;x_blocks&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;mean&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;dim&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;# (B, D)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# 计算路由权重矩阵&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;T&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;torch&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;einsum&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;bd,ed-&amp;gt;be&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;block_repr&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;block_repr&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;# (B, B)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# Sinkhorn 投影到双随机矩阵&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;_&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nb"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;K&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;T&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;F&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;softmax&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;T&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;dim&lt;/span&gt;&lt;span class="o"&gt;=-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;# 行归一化&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;T&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;F&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;softmax&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;T&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;dim&lt;/span&gt;&lt;span class="o"&gt;=-&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;# 列归一化&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# 计算更新向量的路由分数&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;e_scores&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="o"&gt;@&lt;/span&gt; &lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;W_e&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;T&lt;/span&gt; &lt;span class="c1"&gt;# (L, C_total)，C_total &amp;gt;&amp;gt; C&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# top-C 选择&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;top_ids&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;e_scores&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;topk&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;C&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;dim&lt;/span&gt;&lt;span class="o"&gt;=-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;indices&lt;/span&gt; &lt;span class="c1"&gt;# (L, C)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;top_scores&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;e_scores&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;gather&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;top_ids&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;# (L, C)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;top_scores&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;F&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;softmax&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;top_scores&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;dim&lt;/span&gt;&lt;span class="o"&gt;=-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;# 归一化&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# 聚合选中的更新向量&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;selected_e&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;W_e&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="n"&gt;top_ids&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="c1"&gt;# (L, C, D)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;update&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;top_scores&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;unsqueeze&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;selected_e&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;sum&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;dim&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;# (L, D)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# 计算残差权重（基于 T 矩阵）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# 简化：用 T 的对角线作为当前 block 的自连接强度&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;block_ids&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;torch&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;arange&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;L&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;device&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;device&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="n"&gt;L_per_block&lt;/span&gt; &lt;span class="c1"&gt;# (L,)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;self_weights&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;T&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;block_ids&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;block_ids&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;unsqueeze&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;# (L, 1)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# 输出&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;y&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;self_weights&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;self_weights&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;update&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;y&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="e2-csa-完整推理流程"&gt;E.2 CSA 完整推理流程&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;CompressedSparseAttention&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;nn&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Module&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;&amp;#34;&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; CSA 完整实现（推理模式）
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; &amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="fm"&gt;__init__&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;dim&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;n_heads&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;n_kv_heads&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;top_k&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;64&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;super&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="fm"&gt;__init__&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;dim&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;dim&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;n_heads&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;n_heads&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;n_kv_heads&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;n_kv_heads&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;top_k&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;top_k&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;head_dim&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;dim&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="n"&gt;n_heads&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# 投影层&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;q_proj&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;nn&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Linear&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;dim&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;n_heads&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;head_dim&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;bias&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;False&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;k_proj&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;nn&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Linear&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;dim&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;n_kv_heads&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;head_dim&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;bias&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;False&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;v_proj&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;nn&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Linear&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;dim&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;n_kv_heads&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;head_dim&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;bias&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;False&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;o_proj&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;nn&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Linear&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;dim&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;dim&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;bias&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;False&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# Lightning Indexer（实际实现在 CUDA 中）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;indexer&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;LightningIndexer&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;head_dim&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# Soft Fusion 权重&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;fusion_w1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;nn&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Parameter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;torch&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ones&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;fusion_w2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;nn&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Parameter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;torch&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ones&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;forward&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;kv_cache&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;None&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;position_ids&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;None&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;B&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;L&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;D&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;shape&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# 1. 计算 Q, K, V&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;q&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;q_proj&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;reshape&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;B&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;L&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;n_heads&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;head_dim&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;k&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;k_proj&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;reshape&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;B&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;L&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;n_kv_heads&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;head_dim&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;v&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;v_proj&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;reshape&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;B&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;L&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;n_kv_heads&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;head_dim&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# 2. 更新 KV Cache&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;kv_cache&lt;/span&gt; &lt;span class="ow"&gt;is&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="kc"&gt;None&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;k&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;torch&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;cat&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="n"&gt;kv_cache&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;k&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;k&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;dim&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;v&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;torch&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;cat&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="n"&gt;kv_cache&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;v&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;v&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;dim&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;full_len&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;k&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;shape&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="c1"&gt;# 历史 + 当前的总长度&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# 3. Lightning Indexer 找 top-k KV 对&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# 对每个 query head，找最相关的 top_k 个 key&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;q_flat&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;q&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;reshape&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;head_dim&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;# (B*L*n_heads, head_dim)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;k_flat&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;k&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;reshape&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;head_dim&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;# 简化，实际按 head 处理&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;top_k_indices&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;top_k_scores&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;indexer&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;search&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;q_flat&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;top_k&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# top_k_indices: (B*L*n_heads, top_k)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# 4. 稀疏注意力计算（使用 top-k 的 KV）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;k_sparse&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;k_flat&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;top_k_indices&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="c1"&gt;# (B*L*n_heads, top_k, head_dim)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;v_sparse&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;v&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;reshape&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;head_dim&lt;/span&gt;&lt;span class="p"&gt;)[&lt;/span&gt;&lt;span class="n"&gt;top_k_indices&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="c1"&gt;# 同上&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# 5. 计算稀疏 attention 分数&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;attn_score_sparse&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;torch&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;bmm&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;q_flat&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;unsqueeze&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;k_sparse&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;transpose&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;squeeze&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="n"&gt;math&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;sqrt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;head_dim&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;# (B*L*n_heads, top_k)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# 6. 局部窗口注意力（Set 2，精确计算）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;window_size&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;512&lt;/span&gt; &lt;span class="c1"&gt;# 最近的 512 个 token&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;k_local&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;k&lt;/span&gt;&lt;span class="p"&gt;[:,&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;window_size&lt;/span&gt;&lt;span class="p"&gt;:]&lt;/span&gt; &lt;span class="c1"&gt;# 最近的 KV&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# ... 局部注意力计算&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# 7. Soft Fusion 合并两组分数&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# 先归一化，再融合&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;score_sparse_norm&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;F&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;softmax&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;attn_score_sparse&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;dim&lt;/span&gt;&lt;span class="o"&gt;=-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# score_local_norm = ... &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;w1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;torch&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;sigmoid&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;fusion_w1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;w2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;torch&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;sigmoid&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;fusion_w2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;attn_weights&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;w1&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;score_sparse_norm&lt;/span&gt; &lt;span class="c1"&gt;# + w2 * score_local_norm&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# 8. 加权聚合 V&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;out&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;torch&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;bmm&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;attn_weights&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;unsqueeze&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="n"&gt;v_sparse&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;squeeze&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# out: (B*L*n_heads, head_dim)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# 9. 输出投影&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;out&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;out&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;reshape&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;B&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;L&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;out&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;o_proj&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;out&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;out&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;k&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;k&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;v&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;v&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h2 id="总结与展望"&gt;总结与展望&lt;/h2&gt;
&lt;p&gt;DeepSeek V4 技术报告代表了 LLM 领域一次系统性的技术突破。本文从以下七个维度对其进行了深度解析：&lt;/p&gt;
&lt;h3 id="核心贡献回顾"&gt;核心贡献回顾&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;mHC（流形超连接）&lt;/strong&gt;：将残差连接从标量推广到矩阵，用 Sinkhorn-Knopp 算法约束路由在 Birkhoff polytope 上，实现了信息流的精确控制。Block AttnRes 以 O(N²) 的低代价接近 Full AttnRes 的效果。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;CSA（压缩稀疏注意力）&lt;/strong&gt;：四步流水线（2-KV-Set Overlap → Soft Fusion → Lightning Indexer top-k → MQA）将注意力计算从 O(L²) 降至接近 O(L)，同时通过可学习温度参数保持了多任务适应性。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;HCA（重度压缩注意力）&lt;/strong&gt;：在浅层使用更激进的压缩策略，与 CSA 形成分层互补，最大化系统级的计算效率。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Muon 优化器&lt;/strong&gt;：Newton-Schulz 正交化将梯度投影到 Stiefel 流形，以矩阵更新替代逐元素 Adam，在相同 FLOPs 下收敛更快、泛化更好。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;EP Wave Scheduling&lt;/strong&gt;：mega-kernel 融合专家并行的通信与计算，1.92× 的通信加速使得 E=128 规模的专家并行成为可能。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;FP4 QAT&lt;/strong&gt;：利用 FP4 ⊂ FP8 的包含关系实现无损反量化，通过软量化退火策略解决 STE 的不稳定性问题。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;后训练创新&lt;/strong&gt;：Specialist Training + OPD + GRM + Interleaved Thinking 构成了完整的后训练体系，Interleaved Thinking 结合 WAL 容错机制为复杂 Agent 任务提供了新的解决方案。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="对行业的影响"&gt;对行业的影响&lt;/h3&gt;
&lt;p&gt;V4 的技术报告将迫使整个行业重新审视以下假设：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Attention 是注意力的唯一有效形式&lt;/strong&gt;：CSA 表明，稀疏近似注意力可以在不牺牲关键语义的前提下大幅降低计算量&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Adam 是 LLM 训练的标准优化器&lt;/strong&gt;：Muon 的成功证明了矩阵流形优化在大规模训练中是可行的&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;长上下文需要巨大的 KV Cache&lt;/strong&gt;：CSA + CP + Partial RoPE 的组合实现了 1M token 上下文的高效管理&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="开放问题"&gt;开放问题&lt;/h3&gt;
&lt;p&gt;尽管 V4 取得了巨大进步，以下问题仍未解决：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;mHC 的最优 Block 数 B&lt;/strong&gt;：B=8 是经验调优的结果，是否有理论上的最优值？&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CSA 的近似误差界&lt;/strong&gt;：Lightning Indexer 的 top-k 近似会丢失哪些信息，对哪类任务影响最大？&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Muon 的分布式扩展&lt;/strong&gt;：NS 迭代在 EP=128 规模下的通信开销是否仍然可控？&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;FP4 QAT 对推理能力的影响&lt;/strong&gt;：量化误差是否会系统性地影响某类推理链（特别是多步数学推理）？&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这些问题将推动下一轮的技术探索，期待 V5 技术报告能够给出答案。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;本文基于 DeepSeek V4 技术报告（2026年5月）及相关技术资料整理撰写。部分实验数据为推断值，以技术报告原文为准。&lt;/em&gt;&lt;/p&gt;</description></item></channel></rss>