# 长上下文与高效注意力:研究账本 最后核验:2026-07-28 ## 研究问题 “上下文窗口变长”至少包含五个彼此独立的问题: 1. **二次计算**:标准 softmax attention 的配对计算随序列长度平方增长。 2. **KV Cache**:自回归推理需要为历史 Token 保存逐层 K/V,缓存宽度和序列长度共同决定显存。 3. **位置外推**:能接受更长输入不等于能在训练长度之外正确使用位置。 4. **有限状态表达**:线性注意力或 SSM 用固定状态压缩历史,获得常数缓存,也因此存在容量上限。 5. **系统实现**:单算子变快以后,跨设备序列切分、状态传递、前缀缓存和请求调度仍可能成为瓶颈。 正文必须分别记账,不能把“更省显存”“更少 FLOPs”“更快墙钟时间”和“更强长程检索”混成一个“高效”。 ## 已核验的一手来源 本地只读研究缓存位于 `research/sources/long-context/`,PDF 与抽取文本不进入 Git。 | 论文 | 本地原文 | 本轮核验重点 | |---|---:|---| | FlashAttention (2205.14135) | 34 页 | exact attention;减少 HBM IO;仍有二次算术,反向重算甚至增加 FLOPs | | DeepSeek-V2 (2405.04434) | 52 页 | MLA 低秩联合 KV 压缩、权重吸收、decoupled RoPE、缓存维度 | | Gated DeltaNet (2412.06464) | 22 页 | delta rule 与 scalar gate 的组合 | | Kimi Linear (2510.26692) | 28 页 | KDA、3:1 KDA/MLA、NoPE、混合比例消融、1M 解码实验 | | DeepSeek-V3.2 (2512.02556) | 23 页 | Lightning Indexer、top-k=2048、两阶段稀疏训练 | | DeepSeek-V4 (2606.19348) | 58 页 | CSA/HCA、压缩率、top-k、局部窗口、Partial RoPE、1M 成本 | | Kimi K3 (2607.24653) | 47 页 | 69 KDA + 24 Gated MLA、NoPE、1M curriculum、FlashKDA/KCP/服务 | 辅助检索使用 Grok CLI Headless 模式扩大覆盖;正文数字只采纳上述论文、arXiv 元数据或作者官方仓库能够回查的内容。 ## 关键事实与边界 ### FlashAttention - 它是 **IO-aware exact attention**,不是近似注意力。 - 它不把完整 `N × N` attention matrix 写入 HBM,使用分块和 online softmax 在 SRAM 中累计。 - 理论 attention 算术仍为二次;论文明确说明反向重算会增加 FLOPs。 - 论文报告的 `7.6×` 是 GPT-2 上 attention kernel 的加速,不应写成所有模型端到端都快 7.6×。 - 同文端到端数字包括 GPT-2 约 `3×`、Long Range Arena 约 `2.4×`,必须带实验语境。 ### MQA / GQA / MLA - MQA/GQA 缩小 **KV 头数**,历史 Token 数仍是 `L`。 - MLA 为每个 Token 缓存联合低秩 latent `c_t^KV`,内容 K/V 的 up-projection 可分别吸收到 Query 与输出投影。 - 如果直接对内容 Key 使用 RoPE,位置相关旋转矩阵会阻断权重吸收。因此 DeepSeek-V2 用单独的 RoPE Query/共享 Key 分支。 - DeepSeek-V2 的缓存为每层每 Token `(d_c + d_h^R)` 个元素;报告配置为 `d_c=512`、`d_h^R=64`。 - `KV Cache −93.3%` 与 `最大生成吞吐 5.76×` 是相对 DeepSeek 67B 的整模型报告数字,不是 MLA 对所有 MHA 的普适常数。 ### 线性注意力、Delta Rule 与 KDA - 核化线性注意力把历史压进固定矩阵状态,解码缓存不再随 `L` 增长。 - 固定状态不是无损的全历史表;精确检索和多关系绑定会受有限容量约束。 - Delta Rule 先擦除状态中与当前 Key 对齐的旧预测,再写入 Key—Value 关系。 - Gated DeltaNet 加入遗忘 gate;KDA 进一步把 gate 细化到 Key 通道。 - Kimi Linear 的原文消融支持 `3 KDA : 1 MLA`:训练/验证 PPL 为 `9.23 / 5.65`,优于测试的 `0:1、1:1、7:1、15:1`。 - Kimi Linear 报告同时区分了约 `2.3×` 的单请求 1M 解码加速和通过缓存节省扩大 batch 后最高约 `6.3×` 的理论吞吐;正文不可混写。 ### DeepSeek Sparse / Compressed Attention - DeepSeek-V3.2 的 DSA 用 Lightning Indexer 为主 MLA 选择历史 Token;主 attention 每 Query 选择 `2048` 个 KV。 - Indexer 先在 dense attention 下单独训练 `2.1B` Token,再与主模型稀疏续训 `943.7B` Token。 - V3.2 窗口是 `128K`,不是 `1M`。 - DeepSeek-V4 的 CSA 先每 `m=4` 个历史条目压成一个,再稀疏选择;V4-Flash top-k 为 `512`,V4-Pro 为 `1024`。 - HCA 每 `m'=128` 个条目压成一个,不再做稀疏选择。 - 两者都增加 `128` Token 的未压缩滑窗分支,并只在向量末 `64` 维使用 Partial RoPE。 - V4-Pro 为 `61` 层、`1.6T/49B activated`;V4-Flash 为 `43` 层、`284B/13B activated`。 - 在 1M 语境下,报告给出 V4-Pro 相对 V3.2 的单 Token FLOPs `27%`、KV Cache `10%`;V4-Flash 分别为 `10%` 和 `7%`。 ### Kimi K3 - K3 的 93 个主干层由 `69 KDA + 24 Gated MLA` 构成;基本节奏是三层 KDA 后一层 MLA,并以 MLA 收尾。 - 全部 MLA 使用 NoPE。位置和近因偏置主要由 KDA 的递归 gate/decay 提供,MLA 专注全局内容寻址。 - 上下文 curriculum:预训练从 `8K → 64K`,cooldown 从 `256K → 1M`。 - KDA 用固定大小状态替代增长 KV;24 个 MLA 层仍保留随长度增长的压缩缓存,所以 K3 不是“完全无 KV Cache”。 - 系统侧必须同时阅读 FlashKDA、KDA Context Parallelism、混合 KDA/MLA prefix cache、外置 KV Pool 和 cache-aware scheduling。 ## 因果主线 ```text 全连接注意力 ├─ 计算太重:局部/稀疏 → Flash(IO) → DSA → CSA/HCA ├─ 缓存太宽:MQA → GQA → MLA ├─ 位置外推:相对位置 → RoPE/ALiBi → PI/YaRN → NoPE+递归位置 ├─ 历史太长:线性 attention → fast weight → DeltaNet/GDN → KDA └─ 单卡装不下:Transformer-XL → Ring/Context Parallel → KCP/服务缓存 汇流: Kimi K3 = 3×固定状态 KDA + 1×NoPE 全局 MLA + KDA 系统协同 DeepSeek-V4 = CSA 压缩后稀疏 + HCA 重压缩后稠密 + 局部窗口 ``` ## 正文的证据标注 - `论文事实`:公式、结构或数字可在对应原文定位。 - `教学估算`:用统一假设计算的 KV/状态大小,不等于作者报告的生产显存。 - `机制推断`:从公开结构推出的代价或能力边界,必须明确写“推断”。 - `未知`:训练数据配比、未公开 kernel 细节和线上集群参数不猜测。