
MLAMulti-head Latent Attention多头潜在注意力概述传统 MHA 每个头都要独立缓存 K 和 VKV Cache 大小是O(L⋅h⋅dk)O(L \cdot h \cdot d_k)O(L⋅h⋅dk)。MLA 的核心思想是不直接缓存每个头的 K、V而是把所有头的 K、V 联合压缩到一个低维潜在向量ccc推理时只缓存ccc需要时再上投影还原。公式cWDKV⋅hc W_{DKV} \cdot hcWDKV⋅hKWUK⋅c,VWUV⋅cK W_{UK} \cdot c, \quad V W_{UV} \cdot cKWUK⋅c,VWUV⋅c其中hhh是输入隐藏状态WDKVW_{DKV}WDKV是下投影矩阵把高维hhh压到低维rrrWUK,WUVW_{UK}, W_{UV}WUK,WUV是上投影矩阵把ccc还原成 K、Vr≪h⋅dkr \ll h \cdot d_kr≪h⋅dk所以缓存大幅减少。缓存复杂度从O(L⋅h⋅dk)O(L \cdot h \cdot d_k)O(L⋅h⋅dk)降到O(L⋅r)O(L \cdot r)O(L⋅r)。数字例子设:输入维度 d 8 头数 h 2 每个头 d_k d_v 4 潜在维度 r 2 序列长度 L 3MHA 的 KV Cache每个头独立缓存 K、V共2×L×h×dk2×3×2×448 个数值 2 \times L \times h \times d_k 2 \times 3 \times 2 \times 4 48 \text{ 个数值}2×L×h×dk2×3×2×448个数值MLA 的 KV Cache只缓存潜在向量ccc共L×r3×26 个数值 L \times r 3 \times 2 6 \text{ 个数值}L×r3×26个数值缓存减少到原来的6/4812.5%6/48 12.5\%6/4812.5%即减少约87.5%87.5\%87.5%。具体计算假设输入h[1,0,1,0,1,0,1,0]h [1, 0, 1, 0, 1, 0, 1, 0]h[1,0,1,0,1,0,1,0]。下投影矩阵WDKVW_{DKV}WDKV形状8×28 \times 28×2设为W_DKV [[1, 0], [0, 1], [1, 0], [0, 1], [1, 0], [0, 1], [1, 0], [0, 1]]则cWDKVTh[1111,0000][4,0] c W_{DKV}^T h [1111, 0000] [4, 0]cWDKVTh[1111,0000][4,0]缓存c[4,0]c [4, 0]c[4,0]。上投影还原设WUKW_{UK}WUK形状2×42 \times 42×4还原到每个头的 K 维度W_UK [[1, 0, 0, 0], [0, 1, 0, 0]]则KWUK⋅c[4,0,0,0]K W_{UK} \cdot c [4, 0, 0, 0]KWUK⋅c[4,0,0,0]V 同理。这样每个头共享同一个ccc但通过不同的上投影矩阵得到不同的 K、V。权衡优点KV Cache 大幅减少显存节省 90%缺点每次注意力计算前要上投影解压缩计算量增加结论显存比计算时间更宝贵所以 MLA 值得。DSADeepSeek Sparse Attention稀疏注意力概述传统注意力每个 Query 都要和所有历史 token 计算注意力复杂度O(L2)O(L^2)O(L2)。DSA 的核心思想是先快速筛选出最重要的 Top-k 个历史 token只对这些 token 做注意力计算。两个核心组件Lightning Indexer闪电索引器轻量级网络用少量注意力头、FP8 低精度快速扫描所有历史 token计算每个 token 的重要性分数。细粒度 Top-k 选择根据分数为每个 Query 动态选出 Top-k 个 token通常 k2048只对这些 token 做注意力。复杂度从O(L2)O(L^2)O(L2)降到O(L⋅k)O(L \cdot k)O(L⋅k)与序列长度解耦。数值例子设序列长度L6L 6L6Top-k 中k3k 3k3。当前 Query 是位置 5 的 token。历史 token 是位置 0~5。Lightning Indexer 打分假设索引器给出每个历史 token 的重要性分数位置: 0 1 2 3 4 5 分数: 0.1 0.8 0.3 0.9 0.2 0.7Top-k 选择选分数最高的 3 个位置 3: 0.9 位置 1: 0.8 位置 5: 0.7核心注意力只对位置 3、1、5 的 K、V 做注意力计算其他位置忽略。假设 Q5 与这三个 K 的点积为Q5·K3 2 Q5·K1 1 Q5·K5 3缩放后 softmax 得到权重再对 V3、V1、V5 加权求和。对比全注意力全注意力Query 5 要与 6 个 token 计算复杂度 O(6)DSA只与 3 个 token 计算复杂度 O(3。序列越长节省越明显。当 L64kL64kk2048k2048 时计算量减少约 32 倍。特点DSA 是插件式的可以后训练加到已有模型上长上下文推理成本降低 60-70%质量几乎不损失。DeepSeek V4 中的 CSA 和 HCA 混合注意力架构DeepSeek V4 以 MQA 为基底用 CSA HCA 交替再加滑动窗口捕捉局部信息。CSACompressed Sparse Attention压缩稀疏注意力设计哲学先压缩再稀疏选择保留精细信息。第一步KV 缓存压缩每mmm个 token 的 KV 压缩成一个块级表征。不是简单平均而是可学习的加权压缩cj∑i∈blockjwi⋅KVi c_j \sum_{i \in \text{block}_j} w_i \cdot KV_icji∈blockj∑wi⋅KVi其中wiw_iwi是模型学习的压缩权重。相邻压缩块共享部分 token平滑边界。压缩后 KV 规模降为原来的1/m1/m1/m。V4 中m4m 4m4。数值例子设m4m 4m4原始 4 个 token 的 KV 值KV0 [1, 0] KV1 [0, 1] KV2 [1, 1] KV3 [0, 0]压缩权重:w0 0.4, w1 0.3, w2 0.2, w3 0.1压缩后:c0.4⋅[1,0]0.3⋅[0,1]0.2⋅[1,1]0.1⋅[0,0] c 0.4 \cdot [1, 0] 0.3 \cdot [0, 1] 0.2 \cdot [1, 1] 0.1 \cdot [0, 0]c0.4⋅[1,0]0.3⋅[0,1]0.2⋅[1,1]0.1⋅[0,0][0.40.2,0.30.2][0.6,0.5] [0.4 0.2, 0.3 0.2] [0.6, 0.5][0.40.2,0.30.2][0.6,0.5]原来 4 个 KV 对现在只剩 1 个压缩条目。第二步DSA 稀疏选择压缩后用 Lightning Indexer 快速计算当前 Query 与所有压缩块的相关性分数只保留 Top-k 个压缩块。V4 中 Flash 的k512k 512k512Pro 的k1024k 1024k1024。数值例子压缩后有 3 个块分数块0: 0.9 块1: 0.3 块2: 0.7Top-2 选择块0 和块2。核心注意力只在块0、块2 上计算计算量从O(L)O(L)O(L)降到O(k)O(k)O(k)。CSA 层执行流程KV缓存 → 可学习加权压缩 → Lightning Indexer 低精度打分 → Top-k 选择 → 核心注意力HCAHeavily Compressed Attention重度压缩注意力目标极低成本维护覆盖十万级 token 的全局背景。HCA 与 CSA 类似但只做压缩不做稀疏选择。压缩率mmm比 CSA 大得多比如m64m 64m64或更大压缩后序列极短可以在短序列上做密集注意力每个 token 都能无遗漏地看到整个全局背景因为序列短计算成本完全可控。数值例子设原始序列L64L 64L64压缩率m64m 64m64。压缩后只有 1 个全局条目c∑i063wi⋅KVi c \sum_{i0}^{63} w_i \cdot KV_ici0∑63wi⋅KVi所有 Query 都只与这 1 个全局条目做注意力计算量从O(642)O(64^2)O(642)降到O(64×1)O(64 \times 1)O(64×1)。与 CSA 的分工机制压缩率稀疏选择作用CSA小 (m4)有 Top-k保留精细信息HCA大 (m64)无极低成本全局背景滑动窗口--捕捉最临时的局部信息三者交替配合兼顾局部细节、精细全局和低成本全局。总结机制核心思想复杂度数值例子结论MLA所有头共享低维潜在向量 c只缓存 c缓存O(L⋅r)O(L \cdot r)O(L⋅r)缓存从 48 降到 6减少 87.5%DSALightning Indexer 打分 Top-k 选择O(L⋅k)O(L \cdot k)O(L⋅k)6 个 token 只算 3 个CSA可学习加权压缩 DSA 稀疏选择O(L/m⋅k)O(L/m \cdot k)O(L/m⋅k)4 个 KV 压成 1 个再选 Top-2HCA重度压缩密集注意力O(L/m)O(L/m)O(L/m)64 个 token 压成 1 个全局条目一句话MLA 用低秩压缩减少 KV CacheDSA 用闪电索引器和 Top-k 选择减少注意力计算CSA 先压缩再稀疏选择保留精细信息HCA 重度压缩极低成本维护全局背景。三者配合让 DeepSeek V4 在超长上下文下依然高效。