Files
llm-atlas/research/LONG_CONTEXT_RESEARCH.md
2026-07-28 22:49:04 +08:00

6.2 KiB
Raw Permalink Blame History

长上下文与高效注意力:研究账本

最后核验: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=512d_h^R=64
  • KV Cache 93.3%最大生成吞吐 5.76× 是相对 DeepSeek 67B 的整模型报告数字,不是 MLA 对所有 MHA 的普适常数。

线性注意力、Delta Rule 与 KDA

  • 核化线性注意力把历史压进固定矩阵状态,解码缓存不再随 L 增长。
  • 固定状态不是无损的全历史表;精确检索和多关系绑定会受有限容量约束。
  • Delta Rule 先擦除状态中与当前 Key 对齐的旧预测,再写入 Key—Value 关系。
  • Gated DeltaNet 加入遗忘 gateKDA 进一步把 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 为 512V4-Pro 为 1024
  • HCA 每 m'=128 个条目压成一个,不再做稀疏选择。
  • 两者都增加 128 Token 的未压缩滑窗分支,并只在向量末 64 维使用 Partial RoPE。
  • V4-Pro 为 61 层、1.6T/49B activatedV4-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 → 64Kcooldown 从 256K → 1M
  • KDA 用固定大小状态替代增长 KV;24 个 MLA 层仍保留随长度增长的压缩缓存,所以 K3 不是“完全无 KV Cache”。
  • 系统侧必须同时阅读 FlashKDA、KDA Context Parallelism、混合 KDA/MLA prefix cache、外置 KV Pool 和 cache-aware scheduling。

因果主线

全连接注意力
├─ 计算太重:局部/稀疏 → 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 细节和线上集群参数不猜测。