历史怎么存,
当前读哪里?
从两本账看懂长上下文注意力:压缩减少长期记忆的条目,稀疏减少每次读取的位置。CSA/HCA 与 QSA、DSA、MSA,真正分歧在这里。
存 · KV cache 有多大?
DSA/QSA/MSA 通常保留逐位置历史;V4 把长期 KV 汇聚成更少的表示。
读 · 这个 query 要看谁?
DSA 选 token,QSA 选微块,MSA 按组选大块;CSA 选摘要,HCA 通读摘要。
先建立共同坐标
少存,与少算,不是同一个优化。
存储账:所有历史留下什么
历史 token 的 Key / Value 被缓存下来。条目数量、每条特征宽度、KV 头数、精度与层数,共同决定显存开销。
× 每条 KV 字节数
读取账:当前 query 用到什么
注意力给可读位置分配权重,再汇总 Value。稀疏方案先挑位置,让昂贵的主计算只读取一个小集合。
稀疏后,K、V 只取所选子集
后续 query 可能重新选中历史位置。MLA/GQA 缩减每位置的特征存储或 KV 头数,和沿序列压缩、稀疏选位置是不同优化轴。
交互实验
同一段历史,五种读取方式。
切换机制,观察原始 token、索引候选与主注意力读入的表示。颜色表示“如何被使用”,不是模型实际预测的重要性。
教学缩比:DSA 选8 token;QSA 选2个4-token微块;MSA 选2个8-token块;CSA 每4 token产1摘要、选3个;HCA 每16 token产1摘要、全读。V4 局部窗口缩为8。MSA/HCA 的缩比块大小不等于论文配置,真实预算见后文。CSA 紫色展示重叠压缩覆盖,不表示原始 KV 被读取。
DeepSeek Sparse Attention
DSA:从历史里,逐 token 挑重点。
Lightning Indexer 给历史位置打分,Top-k 选择位置,主注意力在所选集合上计算。在 V3.2 中,DSA 与 MLA 组合。
S(t) = Top-kₛ I(t,s)
索引 query/key 是轻量检索表示。不同索引头的分数经权重汇总,得到统一的 token 排名。
读图路线:绿色分支负责索引与选择,主注意力路径读取所选KV,产生输出。
细粒度检索
能抓住远处孤立位置,不必连带整块邻居。MLA 管每条记忆存多宽,DSA 管本次读哪些位置。
仍然有索引账单
索引器要扫描历史;Top-k 与不规则访存也有成本。主注意力变稀疏,不代表总计算不再依赖历史长度。
索引器怎么学会“挑重点”?
先稠密预热:冻结主干,让索引分布通过 KL 损失模仿主注意力;再启用稀疏选择继续训练。Top-k 不可导,所以索引器需要独立的训练信号。2,048 是发布配置,不是方法本身的固定定义。
Qwen Sparse Attention
QSA:缩短检索目录,不替换原文。
QSA 将索引 key 每4个平均池化,再归一化并施加位置编码。索引器选择微块,主注意力展开读取块内原始 token KV。
读图路线:从左下AvgPool向上到Top-k,再看下方两种掩码:索引选择展开为微块内原始位置。
当前未完成微块的可见 token 直接加入读取,避免等待微块凑齐。完整块进入检索排名。
选择变粗,目录更短
索引候选数量约缩为1/4;命中一个 token 会带上同块邻居,平均池化也可能稀释孤立信号。
别把混合模型都算给 QSA
该模型用36层 GDN 与12层 QSA,按3∶1排列。GDN 的固定状态也贡献缓存节省;QSA 层仍保存可检索的逐位置主 KV。
尾部计数与 query 自身
本页预算以“已缓存历史 + 下一 query”为简化模型,尾部为0~3个历史位置,不另计 query 自身。实际代码的因果掩码、索引约定与当前位置可能影响边界计数。
MiniMax Sparse Attention
MSA:各个 GQA 组,各挑自己的块。
Index Branch 先算 token 分数,再以块内最大值得到块分数。每个 query、每个 GQA 组独立选择 Top-k 块,组内 query 头共享选择。
读图路线:左侧Index Branch筛选块,右侧不同Query Group读取不同色块。当前局部块始终保留。
不只是把 QSA 的块放大
QSA 先聚合索引 key 再评分;MSA 先评分再最大池化,并支持不同 GQA 组的独立选择。
把理论稀疏变成 GPU 加速
连续块让访存更规整。KV-outer kernel 围绕同一 KV 块聚集用到它的 query,增加数据复用与矩阵计算效率。
训练与性能数字要分清口径
KL 损失让索引分布对齐组内主注意力的平均分布;辅助损失梯度与主干分离,并使用索引器预热。论文109B实验模型在1M上下文报告注意力 FLOPs 降28.4×;H800上 prefill/decode 实现路径分别加速14.2×/7.6×。这些不是整个模型端到端的统一倍数,不能与其他论文直接排名。
DeepSeek-V4 Hybrid Attention
V4:这次,不只少读,还要少存。
V4 沿序列维度压缩长期 KV。CSA 轻压缩再检索,HCA 重压缩后全读。两者都搭配未压缩局部窗口。
CSA · 细摘要,挑着读
长期 KV 与索引 key 的条目数都约为 N/4。最多选1,024个压缩条目,加最近128个原始位置。
4倍是输出密度。相邻两块重叠汇聚,每个正常条目融合两路特征、覆盖8个 token,首块有边界填充。
HCA · 粗摘要,全部读
每128个 token汇聚1个条目,不重叠。主注意力读全部可见压缩条目,加最近128个原始位置。
没有 Top-k 和稀疏索引器。便宜是因为候选本身已经很少,不是筛掉大量候选。
读图路线:底部两套压缩器分别生成压缩KV与压缩索引key;索引结果选出摘要,与局部KV拼接进入主注意力。
+ 128 局部原始位置
读图路线:重度压缩KV与Sliding Window KV拼接。没有Lightning Indexer与Top-k Selector。
+ 128 局部原始位置
压缩可能丢细节;局部窗口保留近期精确信息。CSA 另有索引漏选风险;HCA 用更强压缩换全局覆盖。
为什么交错使用两种层?查看整体架构原图
CSA 保留较细压缩表示并选择性检索,HCA 读取更粗但全覆盖的历史。这是结构直觉,不是给层硬性分配“检索/概括”职责。发布配置存在首尾例外,不能简单画成整网严格1∶1交替。
读图路线:关注Transformer Block中的CSA/HCA;mHC负责残差流,是另一个设计维度。
V4 和 MLA、mHC 的关系
V4 主注意力采用共享 Key-Value MQA:压缩向量同时作为 key 和 value,并使用低秩 query 与分组输出投影。它不是原封不动的旧 MLA。mHC 则负责残差流,是另一个优化维度,不等于 HCA。
预算计算器
百万历史,不代表每次读百万条。
拖动历史长度,比较单层、单 query 的主分支输入条目。不是总 FLOPs 或显存计算:头数、特征宽度、精度、层数和索引开销未统一。
| 机制 | 主分支读取预算 | 长期缓存/候选条目 | 读什么 |
|---|---|---|---|
| DSA | 2,048 | N | 原始位置 |
| QSA | 2,048 + 尾部 | N;索引约N/4 | 原始 KV |
| MSA | 2,048 / 组 | N | 原始 KV |
| CSA | 1,024 + 128 | N/4 + 局部 | 压缩 + 局部 |
| HCA | 8,192 + 128(1M) | N/128 + 局部 | 压缩 + 局部 |
基于 V3.2、Qwen3.8-Flash-Next、MSA论文实验与V4-Pro配置。N是已缓存历史,不另计query自身。完整块按floor(N/B)计算;因果边界与未完成块可能使实际读取更少。V4压缩与局部表示可覆盖同一历史,表中不是互不重叠的原始token数。条形仅表示输入条目数/N,不等于计算量比例。
“只读2,048,所以只缓存2,048”——未来仍要检索历史。
“主分支 O(Nk),所以整个算法线性”——索引扫描仍有成本。
“HCA压128倍,所以整模型省128倍显存”——还要算局部、索引、层数、维度和精度。
复杂度:把索引分支单独列账
忽略维度与头数:DSA/MSA主分支约O(Nk),索引仍有O(N²)项;QSA索引候选缩至N/4,相关打分约O(N²/4);CSA的N/4索引候选同样保留二次项。HCA整段主注意力约O(N²/128)。固定压缩率降低常数,不自动改变渐近阶数。单步decode与整段prefill的计算口径也不同。
把五个缩写,还原成五个动作
别只问“稀不稀”,要问“选什么、读什么”。
| 机制 | 索引/选择单位 | 主分支读什么 | 缩短长期主 KV? | 关键取舍 |
|---|---|---|---|---|
| DSA | 单个 token | 所选原始位置表示 | 否;MLA另管特征 | 选择细,访存不规则 |
| QSA | 4-token微块;池化key | 展开后的原始 KV | 否;缩短索引 | 索引便宜,连带邻居 |
| MSA | 各组独立;128-token块 | 所选块原始 KV | 否 | 粒度粗,GPU块访问规整 |
| CSA | 压缩条目 | 所选摘要 + 局部 | 是,约N/4 | 压缩损失 + 检索漏选 |
| HCA | 不选择 | 全部摘要 + 局部 | 是,约N/128 | 更强压缩,换全局覆盖 |
带走一句话:DSA挑token;QSA压目录、读微块原文;MSA各组挑大块;CSA压记忆、再挑读;HCA重压缩、全读。
证据与延伸阅读
原图来自报告,示意不冒充实验。
非官方中文教学讲义。六张原图直接从已下载PDF裁取并内嵌,版权归原作者;仅裁去周围正文,不改绘图内内容。中文说明、交互色块和预算表是教学整理。
- DeepSeek-V4报告 · 本地PDF§2.3;Figure 2(第6页)、Figure 3(第9页)、Figure 4(第11页)。另核对V4-Pro配置。
- DeepSeek-V3.2报告 · 本地PDF§2.1,Figure 2(第4页)。另有最初引入DSA的V3.2-Exp报告。
- Qwen3.8-Flash-Next报告 · 本地PDF§2.1.2,Figure 3(第5页)。发布配置:indexer_compress_ratio=4,indexer_budget=2048。
- MiniMax Sparse Attention · 本地PDF本地PDF为v2,Figure 1(第1页);§3方法、§4 kernel。块大小128、每组16块为论文实验配置。
- answer-me-with-html借鉴“结论在前、按信息形状选图、一个面板回答一个问题、单文件可读”。本页为适配原图放大与交互模拟的定制实现,不是该项目CLI原始输出。
中文博客:继续深挖
V4逐层拆解 · Qwen架构学习笔记 · DSA公式讲解 · MSA与kernel解读。关键定义仍以报告和代码为准。
图片和交互无需网络;官方来源需联网,本地报告/讲解稿链接需保留同目录文件。支持浏览器打印为PDF。“讲解提示”显示各章提示,“宽屏讲解”隐藏侧栏。