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

100 lines
6.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 长上下文与高效注意力:研究账本
最后核验: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 加入遗忘 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 为 `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 细节和线上集群参数不猜测。