00 FIVE LEDGERS
先拆成五个问题,才不会被“高效”这个词骗过
“更长上下文”常被写成一条进度条,实际上至少有五个互不等价的瓶颈。 一个方法可能让墙钟时间更短,却完全没有减少理论 FLOPs;也可能把 KV Cache 变薄,却仍然让每个 Query 看遍全部历史。
序列变 2 倍,注意力配对约变 4 倍。长 Prompt 的 prefill 最先感到这张账单。
Longformer · Performer · DSA · CSADecode 不想重算旧 Token,于是把逐层 K/V 留在显存;上下文、并发和缓存宽度相乘。
MQA · GQA · MLA · HCA模型可能“装得下”长输入,却不认识远处的门牌号;位置扩展不自动产生长程推理。
RoPE · ALiBi · PI · YaRN · NoPE线性注意力把无限历史压进固定白板,成本稳定,但不能无损保留任意 Token 地址。
RetNet · Mamba · DeltaNet · KDA单卡装不下后,还要决定传 KV、传状态、做 scan,怎样缓存共享前缀和恢复长轨迹。
Ring · CP · FlashKDA · MooncakeFull Attention 像读者每问一次,都把全馆索引卡逐张比较;FlashAttention 仍逐张比较,只把卡片分批搬到更快的工作台; MLA 给每本书换成缩微卡;DSA 先用小索引找候选;KDA 则不保留所有卡片,而是持续更新一块固定白板。 白板便宜,却不可能无损保存无限本书,因此 K3 每隔三层仍回到一次全局索引。
历史不是一条直线,而是五条泳道
把过去段落接回来
Transformer-XL · MQA前者解决固定段边界,后者开始压缩解码 KV 头。
留下:计算仍全局;缓存仍随历史增长。改写连接图
Longformer · Reformer · Linformer · Performer · Linear Transformer局部、哈希、低秩、核近似与递推状态同时探索。
留下:质量、动态长度、硬件利用率与精确检索难同时满足。位置与硬件重新入场
RoPE · ALiBi · FlashAttention · GQA · PI · YaRN · Ring位置外推、HBM IO、KV 共享和多设备序列并行分别优化。
留下:大多数方法只改一张账单。固定状态学会写与忘
RetNet · Mamba · GLA · DeltaNet · Gated DeltaNet · Kimi Linear递推状态从简单累加变成输入相关选择、擦除与通道遗忘。
留下:固定状态容量仍有限,混合全局层成为关键。工业路线汇流
MLA · DSA · CSA/HCA · KDA + NoPE MLA缓存宽度、序列维、固定状态、位置与服务系统一起设计。
留下:模型报告公开结构,但生产 kernel、数据密度和真实负载仍不完整。01 THE BASELINE BILL
标准注意力贵在哪里:训练、Prefill、Decode 要分开算
对单个 attention head,长度为 L、head dimension 为 d: Query 与 Key 做矩阵乘得到 L × L 分数,再经 softmax 加权 Value。
整段并行,但要保存反向信息
GPU 可以一次处理许多 Token,代价是 attention 中间量、激活、梯度和参数状态共同占内存。
主要问题:算力 + 激活 IO先把长 Prompt 全部读一遍
Prompt 内所有 Query 可以并行,但需要建立每层缓存;输入极长时二次 attention 主导首 Token 延迟。
主要问题:O(L²) + 生成 KV每次只生成一个新 Token
旧 K/V 不重算,新 Query 逐层读取历史缓存;单步算量约随 L 线性,但常被显存带宽和并发限制。
主要问题:KV 带宽 + 容量KV Cache 的最小公式
这也解释了为什么“模型权重能装下”不代表“长对话能跑起来”:权重通常只装一份,KV Cache 却按请求、按 Token 增长。 对 Agent 来说,工具输出、代码文件和思考轨迹还会不断把 L 推高。
论文说“KV Cache 减少 93.3%”时,必须先找比较对象。DeepSeek‑V2 的数字是整模型相对 DeepSeek 67B; 不能把它改写成“MLA 对任何 MHA 固定节省 93.3%”。头数、层数、latent dimension 和精度都会改变比例。
02 THE FIRST WAVE
2020 年的百花齐放:删连接、找近邻、投影序列、近似核
Transformer 的二次矩阵非常显眼,于是早期工作主要问:“能不能少算一些 pair?” 这些路线建立了今天的词汇,但没有一条单独成为所有 LLM 的终局。
缓存上一个 segment 的隐藏态,让当前段跨边界读取。
段内仍二次旧状态 stop-gradient;不是现代服务 KV 的完整替代。每个 Token 只看局部滑窗,少量指定 Token 看全局。
O(Lw)全局 Token 怎样选取与任务强相关。用 LSH 把相似 Query/Key 分到相同 bucket,再做局部配对。
近似 O(L log L)哈希与排序复杂,近邻错分会损失信息。把 K/V 的序列维从 L 投影到固定低秩 k。
O(Lkd)投影依赖长度假设,因果动态服务不自然。随机特征近似 softmax kernel,重排矩阵乘顺序。
O(Lrd)随机特征数、方差和精度需要折中。核化后维护 Σφ(k)vᵀ 的固定状态,解码变成递推。
训练/Prefill O(L)历史被压缩,精确内容寻址能力下降。为什么近似算法没有立刻取代 full attention
- 渐近复杂度不等于墙钟时间。哈希、稀疏 gather、随机特征可能难以喂满 GPU;规则二次 matmul 反而非常成熟。
- 近似误差击中的是模型核心。少看一次关键 Token,可能让多步推理整条链断掉。
- 训练并行与解码递推的最佳形态不同。真正可用的方法需要两种等价算法和专用 kernel。
- 长程检索不是唯一任务。局部语言建模、短任务和长 Agent 轨迹对注意力模式的偏好不同。
局部窗口进入 Griffin、Jamba 和 DeepSeek‑V4;低秩进入 MLA;核化递推发展为 DeltaNet/KDA; 稀疏候选选择发展为 DSA/CSA。论文会被新系统重新组合,而不是简单被“淘汰”。
03 FLASH ATTENTION
FlashAttention 的革命:别把一张巨表反复搬出显存
朴素实现先写出 S = QKᵀ,再写 softmax 结果 P,最后读回 P 与 V 相乘。 大量时间花在 HBM 与片上 SRAM 之间搬运二次大小的中间矩阵,而不是纯算术。
HBM IO 与工作内存
论文给出更少 HBM 访问,并把额外工作内存从二次降到随序列线性增长;GPU 因此更接近高效矩阵乘。
精确 attention 的配对数量
仍要计算全部合法 Query—Key 配对。反向为省 HBM 重算 block,论文甚至明确写“increased FLOPs”。
原论文在特定 GPT‑2 attention kernel 上报告最高约 7.6×;端到端 GPT‑2 训练约 3×,Long Range Arena 约 2.4×。 这些数字说明 IO 优化很重要,但不能把某个 kernel 数字当成所有模型、所有长度和所有硬件的固定加速。
FlashAttention‑2 与 Ring Attention 接着解决什么
FlashAttention‑2 减少非矩阵乘操作,改进 thread block 与 warp 的工作切分,让算子更接近 GPU 峰值。 Ring Attention 则把序列切到多台设备:每台保留自己的 Query block,KV block 沿设备环流动,通信与 block attention 重叠。 Ring 分摊单设备内存,却没有让全局总配对消失。因此它与 Flash、稀疏 attention、Context Parallelism 是正交可组合关系。
04 KV CACHE COMPRESSION
MQA → GQA → MLA:少存“几份”,再少存“多宽”
这条路线首先服务自回归 Decode。它不一定减少 Prompt 内两两配对,却直接改变每个请求能在 GPU 上活多久、同一时间能跑多少请求。
每个 Query 头一份 KV
表达最自由,缓存也最宽。
所有 Query 共享一份
缓存最薄,质量可能下降。
一组 Query 共享一份
MHA 与 MQA 的工程折中。
每个 Token 存联合潜变量
不再按固定 KV 头做简单共享。
MLA 的三步推导
先把当前隐藏态压到低维联合 latent。服务时真正逐 Token 缓存的是它。
vₜC = WUVcₜKV
训练时可展开多头 K/V;解码时利用矩阵结合律重新安排投影。
WOWUV · chistory
上投影分别吸收到 Query 与输出投影,不必为历史显式还原完整多头 K/V。
为什么还要 decoupled RoPE
如果对内容 Key 直接施加随位置变化的 RoPE,位置旋转矩阵会夹在两个可学习矩阵之间,权重吸收无法提前完成; 为当前 Query 计算时甚至要重新恢复历史 Key。DeepSeek‑V2 因此把位置放到额外的 Query/共享 Key 分支, 内容 latent 路保持可吸收。
05 POSITION ≠ MEMORY
知道“多远”不等于记得“那里有什么”
位置编码解决的是顺序与距离;attention/状态解决的是内容怎样传递。把 RoPE base 调大,可能让数值在更远位置不崩, 却不会自动降低计算、减少缓存,也不会凭空制造训练中从未见过的长程任务。
绝对位置
位置向量加到 Token 表示;简单,但跨训练长度行为没有保证。
相对位置
Transformer‑XL 让跨 segment 的注意力分数依赖相对距离,缓存旧状态更自然。
RoPE / ALiBi
RoPE 把位置变成 Q/K 的旋转;ALiBi 在 logit 中加入随距离下降的线性偏置。
PI / YaRN
把新位置插值回旧范围,并对 RoPE 不同频段和 attention 温度做更细缩放。
NoPE + 位置感知递推
Kimi Linear/K3 的全局 MLA 不显式编码位置,KDA 的 gate/decay 负责近因与顺序。
K3 为什么敢在 MLA 里用 NoPE
如果每层都无位置,全局 attention 可能难以区分同内容出现在何处。K3 并不是删除整个模型的位置: 三个 KDA 层先用有方向、有衰减的递推混合上下文,产生已经包含顺序的隐藏态;第四层 MLA 再做无显式位置的全局内容匹配。 这是沿深度分工,不是宣称“位置不重要”。
配置声明支持 1M,只证明接口边界;Needle‑in‑a‑Haystack 证明某类单点检索; 真实长 Agent、跨文档综合与长视频推理才更接近“会使用 1M”。网站会把这三种证据分开。
06 FINITE-STATE MEMORY
线性注意力真正的交易:不再存历史地址,换成一台会写会忘的记忆机
先把 softmax attention 写成 kernel,再交换矩阵乘法顺序,历史可以累计成固定矩阵。 这让解码从“读 L 个历史条目”变成“读一个固定状态”,也同时失去任意历史 Token 的无损地址。
oₜ = Sₜᵀφ(qₜ) / normalization这是核化线性注意力的教学骨架。训练可以通过 prefix scan/chunk 并行;自回归解码只更新固定大小 S。
只会追加:重复 Key 容易覆盖不准或无限累积。
先擦除与当前 Key 对齐的旧关联,再写入真实 Value。
整体先忘,再做纠错;不同输入拥有不同记忆时长。
遗忘细化到 Key channel,并配合 chunkwise DPLR 算法。
从 RetNet、Mamba 到 DeltaNet:不是一条互相替代的直线
RetNet 强调同一 retention 的并行、递推、chunkwise 三种形态;Mamba 让状态空间参数随输入变化, 擅长选择性保留;Mamba‑2 用 Structured State Space Duality 把 SSM 和半可分矩阵联系起来。 GLA/DeltaNet 则保留更明显的 attention/fast‑weight 语言,引入 gate 与纠错写入。 KDA 站在 Gated DeltaNet 上继续细化记忆控制。
固定状态为什么仍需全局层
状态大小与序列长度无关,意味着一百万 Token 和一千 Token 要争用同一容量。 Gate 能决定忘什么,Delta Rule 能更准确地更新,却不能让固定矩阵突然拥有无限地址。 Kimi Linear 的原文消融因此非常关键:3:1 KDA/MLA 的验证 PPL 5.65, 优于测试的纯 MLA 5.77、1:1 的 5.66、7:1 的 5.70 与 15:1 的 5.82。 这不是“线性层越多越好”,而是效率和全局恢复能力之间存在最佳比例。
Kimi Linear 报告在 1M 上下文给出单请求约 2.3× 解码加速;缓存节省后扩大 batch, 理论吞吐最高约 6.3×。摘要里的“up to 6×”更接近后者,不能写成单请求永远快六倍。
07 INTERACTIVE LAB
亲手切换:连接图和缓存曲线怎样分离
下图故意把策略放在同一界面:Flash 与 MHA 的连接完全一致;GQA/MLA 也仍看全部历史; DSA 才减少主 attention 的历史连接;KDA 则不再保留逐 Token 地址。
INTERACTIVE / ATTENTION STRATEGY LAB
“支持长上下文”到底改了哪一笔账?
上半区看信息连接,下半区看缓存。切换方法时,注意“连接变少”和“缓存变窄”不是一回事。
Full MHA
每个 Query 精确比较全部历史 Token;每层为每个历史 Token 保存所有 KV 头。
- 主要解决
- 表达力基线
- 仍然留下
- 二次计算 + 最宽 KV
Flash
连接关系与 Full MHA 完全相同,只是不再把完整注意力矩阵写进 HBM。
- 主要解决
- 显存读写与中间矩阵
- 仍然留下
- 理论 FLOPs 仍为二次
GQA
Query 头仍可很多,但一组 Query 共享一组 K/V;历史条目不减少,缓存宽度变窄。
- 主要解决
- KV 头数
- 仍然留下
- 序列仍逐 Token 增长
MLA
每个历史 Token 只缓存低维联合 latent;通过权重吸收避免在解码时展开完整多头 K/V。
- 主要解决
- 每 Token KV 宽度
- 仍然留下
- 全局两两计算仍在
DSA
轻量 Indexer 从全部 latent KV 中选出少量候选,再让主注意力只读这些候选。
- 主要解决
- 主注意力连接数
- 仍然留下
- 仍需索引和保存历史 latent
KDA
历史被持续写入固定矩阵状态;Delta Rule 擦除旧关联,通道 gate 控制遗忘。
- 主要解决
- 长度相关 KV 与二次配对
- 仍然留下
- 有限状态容量
K3 Hybrid
三层用固定状态做廉价混合,每四层用一次 NoPE MLA 重新获得全局内容寻址。
- 主要解决
- 效率与全局表达折中
- 仍然留下
- MLA 层仍有增长缓存
V4 Hybrid
CSA 先 4:1 压缩再 Top-k;HCA 128:1 重压缩后读全部,并都保留局部滑窗。
- 主要解决
- 序列维缓存与连接数
- 仍然留下
- 压缩有损且系统复杂
横轴是可被读取的历史,纵轴是当前 Query。图只画 20 个位置,展示的是连接模式,不代表论文真实头数或窗口大小。
02 / CACHE BUDGET
把上下文拖到一百万 Token
统一教学模型:64 层、64 个 Query 头、head dim 128、BF16、GQA 8 个 KV 头、MLA latent 576。 数字用于比较增长规律,不是任何具体模型的线上显存报告。
KDA 行只计算固定递推状态;K3 行按 3:1 层比叠加 KDA 状态与 MLA latent; V4 行用 1:1 CSA/HCA、4×/128×压缩和 128 局部窗口做结构估算,未计 Indexer、未压缩尾部、分页和框架开销。
08 TWO 1M ANSWERS
Kimi K3 与 DeepSeek‑V4:都做混合,但压缩发生在不同维度
到 2026 年,前沿路线不再争论“全 attention 还是线性模型”。 两边都承认:廉价主干需要更强的全局锚点,局部细节、位置、缓存和 kernel 必须共同设计。
- 69 KDA每层用固定矩阵状态持续读写历史。
- 24 Gated MLA每四层恢复一次精确全局内容寻址,并以 MLA 收尾。
- NoPE MLA显式位置由 KDA 承担,全局层避免 RoPE 外推。
- 系统FlashKDA、KCP、混合 prefix cache、外置 KV Pool。
- V4‑Flash43 层,284B total / 13B active。
- V4‑Pro61 层,1.6T total / 49B active。
- 1M / Pro相对 V3.2:27% 单 Token FLOPs、10% KV Cache。
- 1M / Flash相对 V3.2:10% 单 Token FLOPs、7% KV Cache。
DeepSeek 路线的三步演化
每个历史 Token 留一个联合 latent,但历史条目数仍为 L。
Lightning Indexer 从 latent 历史中选 2048 个 KV;窗口仍为 128K。
4:1/128:1 压缩历史条目,配合稀疏、稠密与局部窗口到 1M。
DSA 不是“免费 Top‑k”
要知道哪些历史值得读,仍需一个 Indexer。DeepSeek‑V3.2 先冻结主模型, 用 2.1B Token 让 Lightning Indexer 对齐 dense attention 分布;再选每个 Query 的 2048 个 KV, 用 943.7B Token 让模型适应稀疏模式。选择器自身也有计算和训练成本。
Kimi Linear 的缓存/吞吐是对 full MLA 的公平实验;K3 报告的是最终大模型结构; DeepSeek‑V4 的 27%/10% 以 V3.2 为基线。它们的参数、层数、精度和 kernel 都不同。 最可靠的比较是“各自压缩了哪一维、留下哪一张账单”,不是把所有百分比塞进同一排行榜。
09 ALGORITHM–SYSTEM CO-DESIGN
算法写成 O(L) 以后,真正困难才从公式里走出来
递推意味着前一块状态影响后一块;跨设备意味着状态或 KV 必须移动;服务意味着同一前缀可能被许多请求复用。 百万上下文的成本常由“传什么、何时传、能否命中”决定。
块内并行、块间递推
FlashKDA 用 CUTLASS 重排 token-parallel 计算和 head-parallel recurrence;不同训练、prefill、decode regime 需要不同 kernel。
传 KV 还是传状态
Softmax CP/Ring 传随序列增长的 KV block;线性状态固定,但 KDA 的乘性转移不能只把各分片状态相加。
两种缓存同池管理
K3 同时有固定 KDA state 和逐 Token MLA KV,需要统一页面、快照边界、哈希粒度与一致性。
暂停、恢复与外置缓存
百万 Token Agent rollout 可能跨迭代未完成;外置 KV Pool 和 partial rollout 避免昂贵重算与尾延迟。
按缓存位置和预算调度
命中 400K 共享前缀与重新 prefill 的成本差几个数量级;请求数不再能代表真实负载。
1M 也不是无限
工具噪声、重复状态和旧计划会降低有效信息密度;更大窗口仍需要上下文压缩和阶段性总结。
KDA Context Parallelism 为什么不能简单 All‑Reduce
这也是 K3 技术报告最值得学习的地方:架构论文没有停在复杂度符号, 而是继续解释 Tensor Core 可表示范围、CUTLASS kernel、跨设备 scan、prefix cache 粒度、 外置 KV、沙箱恢复和 fleet admission control。真正的 1M 是一整套系统属性。
10 DOES IT REALLY USE 1M?
四层证据:从不崩,到找得到,再到推得动、跑得久
可接受
API 与 kernel 能处理目标长度,数值不 NaN、不 OOM。
必要,但几乎不证明能力。可检索
在不同深度放置 Needle,模型能返回目标信息。
检测位置/检索退化,容易被模板化。可综合
答案需要跨多个远距离片段比较、归纳、排序或验证。
LongBench、多 Needle、长文档 QA。可行动
Agent 在长轨迹中维护目标、工具状态、错误恢复与证据。
最接近真实价值,也最难公平评测。评测时至少记录这些变量
- 实际输入长度分布。不要用“最大窗口 1M”代替平均/中位 Prompt。
- 信息密度与目标位置。100K 高密度代码与 100K 重复文本不是同一难度。
- 是否允许 RAG、搜索、工具和 context compaction。这些是系统能力,不应暗中混入纯模型比较。
- Prefill/Decode 分开计时。TTFT、TPOT、吞吐、显存和成本回答不同问题。
- 缓存命中与并发。共享前缀场景可能完全改变生产成本。
- 质量基线。不能只报变快多少,还要检查短上下文、长检索和推理是否回退。
一个模型“会用长上下文”,不是因为位置编码没越界,也不是因为能找一根 Needle。 它必须在可接受成本下保留远处信息、组合多个证据,并在很长的行动序列中持续维持目标。
↳ PRIMARY PAPER CHAIN
26 篇论文,按问题顺序读
推荐先读 FlashAttention、DeepSeek‑V2、Kimi Linear、DeepSeek‑V4 与 K3 五篇主干; 遇到概念缺口再沿左侧年份回补。以下链接全部指向 arXiv 一手入口。
Segment recurrence 与相对位置;理解“有效上下文”如何跨段。
Multi-Query Attention让多个 Query 头共享一组 K/V,第一次直接面向解码带宽。
Longformer滑窗局部连接与少量全局 Token。
ReformerLSH 近似检索与可逆残差的代表。
Linformer在序列维做低秩投影。
Linear Transformer把核化注意力改写成固定状态递推。
PerformerFAVOR+ 随机特征近似 softmax。
RoFormer / RoPE用旋转让点积自然包含相对位置信息。
ALiBi在线性距离偏置中训练短、测试长。
FlashAttention精确注意力的 IO-aware 分块与 online softmax。
GQAMHA 与 MQA 之间的分组 KV 折中。
FlashAttention-2减少非矩阵乘开销并改进并行切分。
Position Interpolation把训练外位置压回模型熟悉的范围。
YaRN频段缩放与 attention temperature 的 RoPE 扩展配方。
Ring Attention设备环上传递 KV block,分摊超长序列。
RetNet并行、递推、chunkwise 三种等价计算形态。
Mamba输入相关选择式状态空间模型。
Mamba-2 / SSD用状态空间对偶连接 SSM 与结构化注意力。
Gated Linear Attention数据相关 gate 与硬件高效 chunk 算法。
DeepSeek-V2 / MLA联合压缩 K/V、权重吸收与 decoupled RoPE。
DeltaNet把 Delta Rule 沿序列并行化。
Gated DeltaNet门控遗忘与纠错写入的直接结合。
DeepSeek-V3.2 / DSALightning Indexer + Top-k=2048 的稀疏 MLA。
Kimi LinearKDA、3:1 混合、NoPE 和 1M 解码实验。
DeepSeek-V4CSA/HCA 把序列压缩与稀疏选择合并。
Kimi K369 KDA + 24 NoPE Gated MLA 与完整 1M 系统。