各模型注意力机制 + 层数汇总
| 模型 | 注意力机制 | 层数 | 层分配(混合模型的逐层安排) |
|---|---|---|---|
| DeepSeek R1 | MLA | 61 | 全层 MLA |
| DeepSeek V3 | MLA | 61 | 全层 MLA |
| DeepSeek V3.2 | DSA(稀疏) | 61 | 全层 DSA(MLA 上实例化 + indexer) |
| DeepSeek V4-Flash | SWA +CSA + HCA | 43 | 前 2 层纯 SWA,后 41 层 CSA/HCA 逐层交错 |
| DeepSeek V4-Pro | CSA + HCA | 61 | 前 2 层 HCA,后 59 层 CSA/HCA 逐层交错 |
| GLM 5.2 | MLA + DSA | 78 | 全层 MLA+DSA;IndexShare 让索引器每 4 层算一次、后 3 层复用 |
| Kimi K2 | MLA | 61 | 全层 MLA |
| Kimi K3 | KDA + MLA | 93 | 69 层 KDA + 24 层 MLA(约 3:1 交错) |
| Qwen2 / 2.5 / 3 | GQA | 依尺寸而异 | 全层 GQA |
| Qwen3.5 / 3.6 | Gated DeltaNet + 全注意力 | 依尺寸(如 35B-A3B=40 层) | 30 层 DeltaNet + 10 层全注意力(3:1 交错) |
主流注意力机制实现原理
一、传统/分组类
1. GQA
(Grouped Query Attention,分组查询注意力)
- 原理:多头注意力中,把 query head 分成 G 组,组内多个 query 共享同一套 K/V head。
- 效果:相比 MHA,KV cache 缩小为 1/G;比 MQA(全部共享一组)质量损失更小,是两者折中。
- 代表:Qwen2/2.5/3、Llama 3、GLM 4.x。
2. MQA(Multi-Query Attention)
- 原理:GQA 的极端情况(G=1),所有 query head 共享唯一的 K/V head。
- 效果:KV cache 最小,但质量损失最大,现已被 GQA/MLA 取代。
二、低秩压缩类
3. MLA
(Multi-head Latent Attention,多头潜在注意力)
- 原理:KV 先经下投影矩阵
W^DKV压到低维 latent 向量c_KV,只缓存这个 latent;计算时再经上投影W^UK / W^UV还原各头 K/V。- 位置信息用decoupled RoPE单独注入(不污染低秩压缩)。
- 吸收技巧:decode 时把
W^UK吸收进W^UQ、W^UV吸收进W^O,无需显式还原完整 K/V。
- 效果:KV cache 从每头一份变成每 token 一个 latent 向量,省 3~5 倍存储。
- 代表:DeepSeek V2/V3/R1、Kimi K2。
三、稀疏选择类(省计算/带宽,不省存储)
4. DSA
(DeepSeek Sparse Attention,稀疏注意力)
- 原理:两阶段"索引 + 精选"。
- 轻量闪电索引器(lightning indexer,MQA 结构、128 维、FP8)给所有历史 token 快速打分;
- 选出top-k(如 2048)个 token;
- 主 MLA 注意力只在这 k 个 token 上计算。
- index score:
I_{t,s} = Σ_j w^I_{t,j} · ReLU(q^I_{t,j} · k^I_s)
- 效果:复杂度 O(L²) → O(Lk)。省读取带宽,不省存储(因为 top-k 每次变,必须全量存)。
- 代表:DeepSeek V3.2、GLM 5.x。
5. NSA
(Native Sparse Attention,原生稀疏注意力)
- 原理:单层内三路并行 + 门控融合:
- 压缩分支:连续 token 压成块摘要(block summary);
- 选择分支:根据摘要粗选 top-n 块,只算选中块;
- 滑窗分支:最近 w 个 token 稠密注意力。
- 特点:原生稀疏训练(训练时就模拟稀疏,避免"训练稠密、推理剪枝"的性能损失)。
- 落地情况:未落地到任何发布模型(复杂度太高,是 DSA 的学术前身)。
四、压缩 + 稀疏类(真正省存储)
6. CSA
(Compressed Sparse Attention,压缩稀疏注意力)
- 原理:先沿序列维度压缩(每 m=4 个连续 token 压成 1 个 KV entry),再在压缩 entry 上做DSA 稀疏 top-k选择(k=512/1024)。
- 效果:压缩省存储(约 4 倍),稀疏省读取。
- 代表:DeepSeek V4。
7. HCA
(Heavily Compressed Attention,重度压缩注意力)
- 原理:更激进的压缩(每 m'=128 个 token 压成 1 个 entry),压缩后保持稠密注意力(对所有压缩块都算)。
- 效果:存储省最多(约 128 倍),块数极少故稠密也能接受。
- 代表:DeepSeek V4。
五、滑窗类
8. SWA
(Sliding Window Attention,滑动窗口注意力)
- 原理:每个 token 只关注最近 w 个 token的稠密注意力,窗口外的历史直接丢弃。
- 效果:KV cache 只保留最近 w 个,计算和存储都固定。
- 局限:丢失长程信息,需配合其他全局机制(如 V4 的 CSA/HCA)使用。
六、线性注意力类(DeltaNet 系)
9. KDA
(Kimi Delta Attention)
- 原理:基于DeltaNet的线性注意力,用delta 规则做递推状态更新:
S_t = S_{t-1} + k_t ⊗ (β_t · (v_t - S_{t-1}^T k_t))- 即"先用 K 查出旧值,只写新旧之差(delta)",类似数据库 UPSERT,精确覆盖不留残影。
- 改造点:Moonshot 加入门控 + per-channel decay(逐通道衰减),用分块并行 kernel实现高效训练。
- 效果:用固定大小的递推状态矩阵替代随序列增长的 KV cache。
- 代表:Kimi K3(69/93 层)。
10. Gated DeltaNet
(Qwen 的线性注意力)
- 原理:与 KDA 同属 DeltaNet 系,核心差异是加数据依赖的遗忘门 α_t(gating),话题切换时主动遗忘旧记忆。
- 混合方式:Qwen3.5/3.6 按3:1交错——3 层线性(承担粗粒度语义混合)+ 1 层全注意力(承担精确检索校正)。
- 代表:Qwen3.5 / Qwen3.6。
NSA的一点分析
混合注意力机制的模型,都是分层选择不同注意力。
同一层内采用不同注意力首先大概率是互斥的,比如MHA和MLA、DSA本身就互相冲突。
只有DeepSeek论文中的NSA在同一层采用SWA+DSA混合的方式,对于近2048个token采用稠密注意力,2048个token之前的token采用稀疏注意力,而这种机制由于实现复杂度最终没有工程化落地。
NSA 真正的落地难点(三块)
三套 KV 格式并存:压缩块摘要 + 全量原始 KV(选择分支要 gather 被选块)+ 滑窗原始 KV。每层要同时维护三种 cache,增删策略各不相同。
滑窗边界动态:最近 w 个 token 的窗口每个 decode 步都往后挪一位,需要环形 buffer 之类的高效增删机制(这就是你说的"实时更新")。
压缩是增量、异步的:每凑满 l 个 token 才生成一个新块摘要,末尾永远有个"没凑满的尾巴块",压缩和 attention 之间存在时间差。
再加上三路注意力 + 门控融合需要专门 kernel、gather 选中块的访存不规则——这些都是硬件对齐的硬骨头。