0
0

MLA、DSA 与 KDA:三种 Attention 优化如何改变缓存与推理

整理日期:2026-09-14(晚间增量)。依据当天新增问题、可见对话摘录与一手资料整理,不是完整逐字稿。教学推导与用户反馈分别注明,未执行服务器操作。

从今晚的问题开始

你先问 MLA 是什么,再问 KDA 是否让 DCP 不再必要,并提出需要补齐 DSA 等模型架构知识。这些概念对应不同优化维度:缓存表示、访问范围和历史状态。

MLA:压缩每个历史位置的表示

普通多头注意力为历史位置保存 K/V。MLA(Multi-head Latent Attention)通过低秩联合压缩保存较小的 latent;有效推理实现利用投影吸收等技巧,避免每步把完整多头 K/V 全部展开并长期保存。位置编码相关分量可能另存,不能只用一个 latent 维度估算所有模型。

概念式为 c_t=W_down h_t,再通过上投影得到相应 K/V 表示。这里仅说明压缩关系,不是完整 MLA 方程。

压缩之后,历史位置数量仍随上下文增长。对全局注意力层,单步读取历史的压力仍可能随长度增加。因此 MLA 与 DCP 可以互补。DeepSeek-V2 官方项目

DSA:选择访问哪些历史位置

DeepSeek Sparse Attention 引入稀疏访问机制,减少长上下文主要注意力计算处理的位置。它关注“本步读哪些位置”,不应直接理解为全部旧 KV 被删除。索引与选择也有成本,稀疏内核、索引缓存和数据搬运决定最终收益。DeepSeek-V3.2-Exp

KDA:把历史压进递归状态

KDA 是 Kimi Delta Attention,通过门控与 delta rule 更新有限大小的状态。概念上,每一步用新输入更新状态,再由 Query 读取状态;这个教学描述不能替代论文中的门控与更新公式。

对于纯 KDA 层的递归 decode,状态大小不随历史 token 数线性增长。代价是表达方式发生变化,不能把任意全注意力预训练模型直接换成 KDA 并宣称无损。

Kimi Linear 是混合结构,官方给出 KDA 与全局 MLA 约 3:1 的层比例;不能把该比例自动套到其他 Kimi 模型。Kimi Linear 官方项目

KDA 是否替代 DCP

对纯递归状态层,把“逐 token KV”沿序列切分的 DCP 思路不能原样照搬。对包含 MLA 的混合模型,剩余全局注意力层仍可能存在缓存和读取瓶颈,但整个模型是否支持 DCP,要看后端是否处理各类状态。

因此“缓存更少”能减轻需求,不等于证明 DCP 完全无用,也不等于证明当前实现支持。

学习时统一问四个问题

每层存什么?一次 decode 读多少?跨设备怎样分?P/D 切换时传什么?

用这四问阅读模型 config、Attention kernel 与 KV manager,比只背架构缩写更容易连接到实际推理。已有 DCP 专题:Decode Context Parallelism(DCP)详解:长上下文解码中的 KV Cache 分片、通信与 vLLM/昇腾实现。

延伸阅读:从 MLA / DSA 到 DeepSeek V4.1

DeepSeek V4.1 把“压缩每个历史位置”和“减少读取位置”继续推进到 跨层 cache ownership、共享索引、CED 非对称执行、bounded replay 与外部条件记忆。模型结构专题见 DeepSeek V4.1-Flash 架构拆解:CED、CSA2、Engram、mHC 与 DSpark;这些机制如何影响 PD、DCP、KV 管理与异构内存,见 DeepSeek V4.1 对推理 Infra 的挑战:从 KV 状态图到异构 Memory Runtime。

2026-09-16 补录:9 月 15 日凌晨的 DSA 与 KDA 追问

这两条问题发生在 9 月 15 日 00—01 点,属于昨天自然日,但不属于原 06:00 开始的统计窗口;本轮作为跨窗口补录,未将原窗口悄悄扩大。

DSA 减少计算,为何仍需保存历史缓存

你的判断抓住了关键:本步没有被选择的位置,未来仍可能被选择。DSA 的稀疏访问本身不是缓存淘汰策略;主注意力只访问选中位置,不代表未选中 KV 可以删除。还要计入索引器的键或其他状态。缓存表示压缩、历史窗口裁剪、CPU offload 是另外的机制。DeepSeek-V3.2-Exp 官方项目

教学估算:若每个位置表示占 c 字节,保存 S 个位置仍约需 S×c 字节;本步只读取 k 个位置,可以降低主注意力读入规模,但索引选择本身还有成本,不能把总耗时简单宣称为 k/S。

KDA 里的卷积做什么

FLA 的 KDA 实现分别对 Q、K、V 投影接入 ShortConvolution,并维护三组 conv_state。它让当前位置特征包含近邻历史的信息,再进入门控 delta 状态更新;这个短卷积不是把全部历史 token 两两计算注意力。KDA 实现

教学表达:y_t = Σ w_j ⊙ x_(t-j),j 只覆盖一个短的因果窗口。在线执行只需保留有限的卷积历史;更长历史由递归矩阵状态承载。卷积状态与递归状态是两类缓存,P/D 交接和 prefix cache 都要保持一致。

门控 delta 的直觉是先衰减旧记忆,再用“当前 value 与旧状态预测之间的残差”更新状态,而不是盲目累加所有信息。状态维度受模型配置决定;“固定大小”指不随序列长度线性增长,不是零内存。

NoPE Sparse MLA 与 DSA 的关系

GLM-5.3-Flash 的官方适配 RFC 将其稀疏 MLA 标为 rope_dim=0,并采用 KeyPool/KeyPoolIndexer;后者与 LightningIndexer 的状态布局和打分语义不同。NoPE 描述该路径不使用 RoPE 分量;MLA 描述表示方式;Sparse 描述访问选择,三个标签不能互相替代,也不能据此断言整个模型没有顺序信息。GLM 适配 RFC

因此,“都是稀疏 MLA”不足以复用同一索引算子契约。阅读源码时,应继续核对 key pool 如何构造、选中池如何映射到 token、因果边界如何处理。

2026-10-07 深化:线性Attention为何同时有递归与并行表达

来源:近期关于线性注意力/FA、训练并行和固定状态的可见问题与现有学习记录。本节公式是教学推导,选择普通核化线性Attention说明结合律;不是完整KDA方程。

标准causal softmax attention对每个Query计算历史Key分数并归一化。FlashAttention改变分块和IO,保持相应标准注意力语义;它不把二次关系变成另一种线性模型。线性Attention则改变核或状态更新结构,两条路线不要混为一谈。

令正特征映射φ(q),φ(k)∈R^r,v∈R^d,定义:

St=St−1+ϕ(kt)vtT,zt=zt−1+ϕ(kt) S_t=S_{t-1}+\phi(k_t)v_t^T,\qquad z_t=z_{t-1}+\phi(k_t)
ot=ϕ(qt)TStϕ(qt)Tzt o_t=\frac{\phi(q_t)^T S_t}{\phi(q_t)^T z_t}

只要分母按所选映射和数值条件妥善处理,decode可维护r×d矩阵和r向量;它们不随已读token数增长。该等式对于这里定义的核化attention成立,不是任意softmax attention的精确替换。Transformers are RNNs

训练并非必须逐token串行:S_t是因果前缀和,可用scan或chunk划分组织计算;块内使用矩阵计算,块间传递摘要。但材料化全部两两关系仍可能产生二次开销,必须读实际实现,不能从“存在并行表达”直接推出更快。

门控/delta结构有不同转移。概念式S_t=A_t S_(t-1)+B_t可由转移复合建立块间关系,但A_t的结构、状态布局和数值稳定性决定算法成本;不是任意递归都能免费变成高效GEMM。KDA的门控、delta及短卷积状态继续按前文实现核对。GLA原论文、Kimi Linear

固定状态意味着历史被压缩为特定表示,容量/检索能力的取舍需模型训练与任务实验检验。混合全局attention的模型仍有随上下文增长的KV;不能从部分线性层推断整模型固定内存。

实践验收:小张量写递归参考和chunk参考,比较每个位置输出;再对连续输入与分段携带状态输入做对照。分别检查因果mask、初始状态、chunk尾块、归一化/门控和缓存重置。本文未执行这些实验。

进一步连接:训练CP与状态恢复见从 CP 到预训练系统:并行切分、状态账本与可恢复训练;片上分块/数据复用见GEMM、Triton 与 TileLang:从分块代码到 Roofline 性能账本。