03-上下文系统 · 经典论文导读合集

面向零基础新手的详细中文导读,共 10 篇。
撰写日期:2026-05-27


总览:什么是上下文窗口,为什么扩展它这么难?

在开始读论文之前,我们先用几段话把背景讲清楚。

什么是上下文窗口?
大模型在回答问题或生成文字时,并不是"记住了所有事",而是每次都看着一段文字(这段文字叫做"上下文")来决定下一步怎么写。这段文字的最大长度,就是"上下文窗口"。早期 GPT-2 只能看约 1,000 个字(token),GPT-3 能看 4,096 个,而现在的模型已经能看 128,000 甚至更多。上下文窗口越长,模型就能"一口气"处理更长的文章、更复杂的任务。

为什么扩展很难?核心障碍一:O(n²) 注意力复杂度
Transformer 里有一个叫"自注意力"(self-attention)的核心机制:每个词都要和上下文里所有其他词互相打分,判断"哪些词对我最重要"。如果上下文有 n 个词,那就需要算 n × n 次打分——复杂度是 O(n²)。序列长度翻倍,计算量就变成 4 倍;翻 10 倍,计算量变成 100 倍。这就像一个班级开会,10 人互相交流需要 100 次对话,1,000 人互相交流则需要 100 万次——随着人数增加,代价呈爆炸式增长。

核心障碍二:位置编码外推问题
Transformer 用"位置编码"告诉模型每个词在哪个位置。训练时只见过长度 ≤ 4,096 的文本,测试时突然来了 20,000 词的文本,模型就像一个从没学过三位数加法的孩子突然被要求算四位数——位置编码完全失效,性能大幅下滑。这叫"外推失败"。

核心障碍三:KV 缓存和显存
推理时模型要把每个词的"键(Key)"和"值(Value)"存起来,随上下文增长线性占用显存。百万 token 的上下文,KV 缓存能吃掉几十 GB 显存。


本合集 10 篇论文的关系与分类

这 10 篇论文从四个不同角度出发,解决"如何让模型处理更长上下文"这一核心问题:

① 改注意力结构(让计算变稀疏)

② 改位置编码(让模型认识更远的位置)

③ 管理 KV 缓存 / 外部记忆(不存所有,选择存)

④ 揭示问题现象(长上下文用得好吗?)

它们的时间线与递进关系:
Longformer / Big Bird 是"改结构"的早期探索(2020年);ALiBi 引入更优雅的位置编码思路(2021年);2023 年是大爆发之年——Lost in the Middle 揭示问题,YaRN / LongLoRA / StreamingLLM / Ring Attention / MemGPT 各自从不同维度给出解法;Infini-attention(2024)则走向更激进的"无限上下文"目标。


第 1 篇:Longformer — 长文档处理的开山之作

arXiv: 2004.05150 | Beltagy et al., Allen AI, 2020


一句话概括

把全注意力中的"所有词两两相互关注"改成"每个词只关注附近邻居 + 少数全局关键词",把计算复杂度从 O(n²) 降到 O(n),从而让 Transformer 能高效处理数万字的长文档。


背景与动机

2020 年,BERT 和 GPT-2 已经证明了 Transformer 的强大,但它们都被限制在 512 个 token 左右(约 400 个中文字)。想处理一篇完整的学术论文、一份法律合同、一本书的某个章节?不行——不仅显存装不下,计算时间也无法接受。

类比理解 O(n²) 问题: 想象一个 100 人的学术会议,每个人都要和其他 99 人逐一握手交流,共需 4,950 次握手。如果会议规模扩大到 1,000 人,握手次数变成近 50 万次。标准 Transformer 就是这样——每个词都要和所有其他词"握手"。Longformer 的做法是:大多数人只和坐在自己旁边的人交流,只有"主持人"(全局 token)才和所有人打招呼。


论文结构与格式

论文共 10 页(含附录),结构清晰:引言说明长文档的挑战 → 提出三种注意力模式 → 描述预训练策略 → 在多个任务上实验 → 分析效率。图表约 5 个,以效率对比曲线和任务性能表格为主。写作风格偏工程实践,代码和实现细节充分。


核心方法/架构详解

Longformer 提出了三种注意力模式的组合:

1. 滑动窗口注意力(Sliding Window Attention)
每个词只能看到它前后各 w/2 个词(w 是窗口大小,例如 512)。就像你阅读一篇文章时,每次只盯着当前句子的前后几句——局部语境通常已经足够理解当前词的含义。计算复杂度从 O(n²) 降为 O(n × w),当 w 远小于 n 时大幅提速。

2. 膨胀滑动窗口(Dilated Sliding Window)
在更高层的 Transformer 层,窗口不再是连续的,而是"隔几个词取一个"(类似空洞卷积)。这样同样的计算量能覆盖更远的距离——就像你用望远镜看远处,分辨率低一些但看得更远。

3. 全局注意力(Global Attention)
对少数几个特殊 token(如 BERT 的 [CLS] 分类符、问答任务中的问题 token),允许它们与所有词互相关注。这些 token 扮演"全局聚合器"的角色,把各个局部窗口的信息汇总起来。全局 token 的数量远小于 n,所以额外开销可接受。

预训练策略: 作者没有从头预训练,而是在 RoBERTa 的权重基础上,用"位置编码复制扩展"的技巧(把 512 的位置编码向量复制多遍以覆盖更长位置)继续在长文档上训练,大幅节省算力。


主要创新点


实验设置

实验表明 Longformer 在多个长文档任务上显著超越截断基线,且推理速度与序列长度几乎呈线性关系。


写作风格特点

实用主义风格,重视工程细节。作者专门讨论了 CUDA 实现的注意力 kernel,以及如何在 PyTorch 中高效实现滑动窗口——这在学术论文中比较少见。适合边读论文边跑代码。


图表亮点


新手阅读建议

建议先读第 1-3 节(引言、相关工作、模型),理解三种注意力模式。第 4 节实验可以挑感兴趣的任务看。难点在于理解"全局注意力为什么必要"——可以思考:如果只有局部窗口,不同窗口间的信息怎么传递?全局 token 就是答案。代码已开源于 HuggingFace Transformers,可直接上手实验。


第 2 篇:Big Bird — 稀疏注意力的理论基础

arXiv: 2007.14062 | Zaheer et al., Google Research, 2020


一句话概括

用"随机注意力 + 局部注意力 + 全局注意力"三者组合构造稀疏注意力,并从理论上证明这种组合能模拟完整的全注意力,将复杂度降到 O(n),同时在长序列任务上取得强劲效果。


背景与动机

Longformer 解决了工程效率问题,但留下了一个理论问题:稀疏注意力真的和全注意力一样强吗?少了很多连接,会不会丢失某些重要的远程依赖信息?Big Bird 的贡献正在于此——它不只做工程优化,还给出了理论保证

类比理解: 想象一个城市的通信网络。全注意力是"每个人直接给所有人打电话"——代价极高但信息完整。Big Bird 的方案是:每个人只和邻居联系(局部),偶尔随机拨出去一个电话(随机),再加上几个可以联系所有人的基站(全局)。理论上可以证明:通过足够多的中转,任何信息都能从任何地方传到任何地方。


论文结构与格式

论文正文约 10 页,附录约 20 页(主要是数学证明)。结构为:问题提出 → 理论分析(图灵完备性 + 通用逼近性) → 模型设计 → 实验。写作风格兼顾理论和实践,但附录的数学推导相当深,新手可以暂时跳过。


核心方法/架构详解

Big Bird 的稀疏注意力由三个部分叠加而成:

1. 随机注意力(Random Attention)
每个 token 除了局部邻居外,再随机选取 r 个 token 建立连接。这引入了"长程随机跳跃"的能力,类似社交网络中的"弱连接"——你朋友的朋友可能来自完全不同的圈子,从而传递远方信息。

2. 局部窗口注意力(Local Window Attention)
每个 token 关注它前后各 w 个邻居,和 Longformer 的滑动窗口相同。这保证了局部语义的连贯性。

3. 全局 Token 注意力(Global Token Attention)
设置 g 个全局 token(可以是新增的 [CLS] 型 token,也可以是原文中选出的重要词),它们与所有 token 双向关注。Big Bird 提出两种方式:BigBird-ITC(在原序列中插入全局 token)和 BigBird-ETC(额外加一组全局 token)。

理论贡献:
论文证明了以下结论:
- 完整的全注意力 Transformer 是图灵完备的(能模拟任何程序)
- Big Bird 的稀疏注意力同样是图灵完备的,且是通用函数逼近器
- 稀疏的关键条件:图的直径(任意两点间最短路径)需要有上界

这意味着稀疏注意力在理论表达能力上并不输于全注意力——只是需要通过多层 Transformer 来"中转"远程信息。


主要创新点


实验设置

在多个任务上 Big Bird 以小幅度超越 Longformer,且理论基础更扎实。


写作风格特点

兼顾理论严谨与实验多样,是一篇"又有推导又有实验"的综合型论文。附录的定理证明相当完整,适合有一定数学基础的读者深入学习。


图表亮点


新手阅读建议

建议只读第 1 节(引言)、第 3 节(模型方法)和第 5 节(实验);附录的图灵完备性证明可作为选读。重点理解"为什么单独用局部注意力不够,还需要随机和全局"。可以把三种注意力想成三种不同的通信渠道,各自解决不同距离的信息传递问题。


第 3 篇:ALiBi — 用线性惩罚取代位置编码

arXiv: 2108.12409 | Press et al., UW / Meta AI, 2021(ICLR 2022)


一句话概括

彻底抛弃学习式位置编码,在注意力分数上直接加一个"距离越远扣分越多"的线性惩罚项(ALiBi = Attention with Linear Biases),使模型能自然地外推到比训练时更长的序列,且训练更快、内存更省。


背景与动机

2021 年时,主流 Transformer 用的是两种位置编码:绝对位置编码(给每个位置学一个向量,BERT 用)或正弦位置编码(GPT-2 用)。但这两种方式都有一个共同缺陷:外推失败——训练时只见过长度 ≤ T 的序列,推理时遇到更长序列,位置 T+1 从没被学过,模型性能急剧下滑。

类比: 就像一个只学过从 1 加到 100 的小学生,被要求计算 150 + 73。数字本身没问题,但他从没接触过三位数,大脑就会"不知所措"。

另一个现实问题是:位置编码需要占用参数量,且训练时每个位置都需要一定量的样本来学好——这增加了计算和数据成本。


论文结构与格式

论文约 9 页,结构简洁:引言 → 方法描述(不到 1 页)→ 外推实验 → 推理速度和内存分析 → 各类语言建模实验。写作非常简练,方法本身极其简单,大量篇幅用于验证其有效性。


核心方法/架构详解

ALiBi 的核心思想用一句话说完:在计算注意力分数时,对距离较远的词对施加线性惩罚。

标准注意力打分公式:

Attention(Q, K) = softmax(Q·Kᵀ / √d)

ALiBi 改为:

Attention(Q, K) = softmax(Q·Kᵀ / √d + m · M)

其中 M 是一个偏置矩阵,M[i,j] = -(i - j)(即位置 i 关注位置 j 时,惩罚值等于它们的距离);m 是每个注意力头各自固定的斜率(slope),不同头使用不同的 m 值(按几何级数分布,如 1/2, 1/4, 1/8...)。

直觉理解: 想象你在读一本书,当前在第 100 页,你需要判断第 50 页的内容与当前的相关性。ALiBi 说:距离越远,默认相关性越低——除非这个词的内容本身非常重要(Q·Kᵀ 得分很高),能盖过距离惩罚。不同注意力头的斜率不同,有的头对距离特别敏感(局部专注),有的头对距离不那么敏感(擅长远程关联)。

为什么能外推? 训练时最远看到距离 T 的词,推理时遇到距离 T+100 的词——ALiBi 直接把惩罚值扩展就好,不需要"学过"这个位置,只是惩罚更大而已。模型已经学会了"远=惩罚更多"的模式,自然能推广到更远的距离。

不需要学习的位置信息: ALiBi 中的斜率 m 是固定的超参数,不是学出来的。整个模型参数量减少,训练效率提升(论文报告训练速度提升约 11%)。


主要创新点


实验设置

结果:ALiBi 在推理时序列长度超出训练长度 2-4 倍时,困惑度仍然平稳甚至下降(而其他方法会急剧上升)。


写作风格特点

极其简洁清晰,是一篇"方法简单但洞察深刻"的论文典范。作者对各种位置编码方案做了系统对比,结论表达非常直接。适合新手通读全文,无太多技术门槛。


图表亮点


新手阅读建议

这篇论文非常适合新手入门,方法简单、写作清晰。建议重点看图2(外推实验),理解"位置编码外推失败"和"ALiBi 的外推优势"。方法部分(第3节)只有一页左右,一定要仔细读。读完本文,你会对"位置编码是什么、为什么重要"有非常清晰的认识,为后续读 RoPE 和 YaRN 打下基础。


第 4 篇:Lost in the Middle — 揭示长上下文的"中间遗忘"问题

arXiv: 2307.03172 | Liu et al., Stanford / Berkeley, 2023


一句话概括

通过系统性实验揭示:现有大语言模型在处理长上下文时,倾向于利用开头和结尾的信息而忽视中间部分,且上下文越长这种偏差越严重,同时提出了针对这一问题的评估方法和缓解策略。


背景与动机

2023 年,各大模型纷纷宣传"支持 128K 上下文",但一个关键问题被忽视了:支持长输入≠能有效利用长输入。模型也许能在技术上接受 100,000 个 token,但真的能从中准确找到需要的信息吗?

类比: 想象你让人在一本 1,000 页的书里找一条特定信息。如果这条信息在第 1 页或最后一页,他可能很快找到。但如果在第 500 页的某个角落,他可能根本就没仔细读那里——尽管他把书"接收了"。

这篇论文就是要测试:大模型在长上下文中,到底有没有认真"读"中间的部分?


论文结构与格式

论文约 12 页,结构为:问题定义 → 两个核心任务的实验设计 → 结果分析(位置效应)→ 影响因素分析 → 缓解方案讨论。实验非常系统,图表数量多(约 15 个),呈现方式清晰。


核心方法/架构详解

这篇论文的"方法"主要是实验设计,而非新模型:

实验任务 1:多文档问答(Multi-Document QA)
给模型提供 K 个文档,其中只有一个文档包含问题答案,其余是干扰文档。改变"答案所在文档的位置"(放在第 1 个、第 K/2 个、第 K 个……),测试模型的准确率。

实验任务 2:Key-Value 检索
给模型一个包含 N 个键值对的列表(如 "name: Alice, age: 25, ......"),要求模型检索特定键对应的值。同样改变目标键值对的位置,测试准确率。这个任务设计排除了语言理解的干扰,纯粹测试"位置感知能力"。

核心发现:U 形性能曲线
实验结果非常一致:无论哪种任务,性能曲线呈 U 形——答案在开头或结尾时性能最好,放在中间时性能最差。上下文越长,U 形越明显,中间的性能谷越深。

测试的模型: GPT-3.5-Turbo(16K)、Claude-1.0(100K)、LongChat-13B-16K、MPT-30B-Instruct(8K)等多个当时主流模型。

追加分析:
- 上下文长度的影响: 总文档数量越多(上下文越长),中间位置的性能下降越明显
- 模型本身的影响: 指令微调(Instruction Tuning)在一定程度上缓解这一问题,但无法消除
- Query-aware 文档排序: 提前把最相关的文档移到开头或结尾,能显著提升性能


主要创新点


实验设置


写作风格特点

这是一篇典型的"分析型/发现型"论文,而非提出新模型。写作以实验数据说话,语言平实,图表丰富。每个主要结论都有多个图表支撑,论证严谨。适合作为"警示牌"阅读——提醒你不要盲目相信"支持长上下文"的宣传。


图表亮点


新手阅读建议

这篇论文不需要太多技术背景就能读懂,非常适合新手从这里开始了解"长上下文的实际挑战"。建议先看摘要和图2(U 形曲线),然后理解实验设计逻辑。读完后你会对"长上下文利用"有更清醒的认识——下游的 YaRN、MemGPT 等论文提出的方法,都是在尝试解决(或绕过)这里揭示的问题。


第 5 篇:YaRN — 低成本扩展 RoPE 上下文窗口

arXiv: 2309.00071 | Peng et al., EleutherAI, 2023


一句话概括

针对旋转位置编码(RoPE)的频率特性提出改进的插值策略(NTK-aware + 注意力温度缩放),以极少的微调步骤(约 400 步),将现有 LLaMA-2(4K)扩展到 128K 上下文,且性能远优于此前的线性插值方法。


背景与动机

RoPE(Rotary Position Embedding,旋转位置编码)是 2023 年最主流的位置编码方案,被 LLaMA、Mistral 等主流开源模型采用。RoPE 把位置信息编码成旋转角度——token i 在向量空间里旋转了 i × θ 度。它的优雅之处在于:两个 token 的相对位置只取决于它们的旋转角度差,不依赖绝对位置,因此理论上有利于外推。

但实际上,直接外推 RoPE 效果很差——模型训练时只见过 θ × 4096 以内的旋转角度,推理时遇到更大的旋转角,依然茫然。

此前的解法——线性插值(Position Interpolation / PI):
2023 年 Meta 提出了一个简单方法:把更长的序列"压缩"映射回训练长度内。例如训练长度 4096,要推理 16384 的序列,就把位置索引除以 4,使最大旋转角保持不变。类比:你的尺子最长量 10 厘米,现在要量 40 厘米的东西,就把整体缩小到 1/4 再量。缺点是:压缩后短距离内的分辨率变差——原本相邻两个位置差 1,现在差 0.25,模型难以区分近邻。

YaRN 的出发点: 能否在扩展长度的同时保持短距离的高分辨率?


论文结构与格式

论文约 16 页,包含方法推导、与 PI/其他方法对比、大量困惑度曲线和下游任务评测。附录有实现细节和消融分析。写作风格较为技术性,需要对 RoPE 有基本了解。


核心方法/架构详解

YaRN = Yet another RoPE extensioN,方法包含两个关键改进:

改进 1:NTK-aware 插值(非均匀频率插值)
RoPE 对不同维度使用不同频率的旋转——高维度旋转快(高频),低维度旋转慢(低频)。这些频率类似于信号处理中的不同频道。

关键洞察:高频成分对短程位置信息很重要(相邻词的区分),低频成分对长程位置信息更重要(远距离词的区分)。 线性插值对所有频率等比缩放,会破坏高频成分(近距离分辨率下降)。

YaRN 的做法:对高频部分做少量甚至不做插值(保持近距离分辨率),对低频部分做更多插值(让远距离位置可达)。这像一把"可变焦"的望远镜——近处清晰,远处也能看到。具体实现通过调整每个 RoPE 维度的基频(base)来实现。

改进 2:注意力温度缩放(Attention Temperature Scaling)
序列变长后,注意力分数的方差会发生变化,softmax 变得过于集中或分散。YaRN 引入一个缩放因子 √(log n / log n_train) 对注意力分数进行温度调整,让更长序列的注意力分布保持合理形态。

微调策略: 在目标长度的数据上只微调约 400 步(相比从头训练几十万步)即可激活模型在扩展位置上的能力。


主要创新点


实验设置

在 Passkey Retrieval 任务上,YaRN-128K 在 128K 位置仍能 100% 找到隐藏信息,而线性插值版本在超过训练长度后迅速失败。


写作风格特点

技术深度较高,大量公式推导,但每个公式都有直觉解释。适合已经了解 RoPE 基本原理后阅读。作者开源了代码,并发布了 YaRN 微调过的 LLaMA-2 权重,实用价值高。


图表亮点


新手阅读建议

建议先搜索并简单了解"RoPE 是什么"(约 15 分钟),再读本文。核心方法在第 3 节,可重点阅读。如果公式太多,只理解"高频不动、低频缩放"的直觉就够了。YaRN 是实用价值极高的方法,是很多后续长上下文模型的基础,值得深读。


第 6 篇:LongLoRA — 普通 GPU 也能微调长上下文模型

arXiv: 2309.12307 | Chen et al., CUHK / MIT, 2023


一句话概括

提出"移位稀疏注意力"(S²-Attn)+ LoRA 微调的组合,让在单机 8 块 A100 上微调 LLaMA-2-7B 到 100K 上下文成为可能,同时保持接近全注意力的性能。


背景与动机

2023 年,YaRN 等方法解决了"如何让模型认识更长位置"的问题,但还有一个实际障碍:微调成本。即使只微调几百步,如果每步都用全注意力(O(n²)),100K 序列的一个 batch 就需要几百 GB 显存,远超普通实验室的硬件条件。

换言之:推理时可以用优化的注意力实现(如 FlashAttention),但训练时需要反向传播,显存需求更高

LongLoRA 的核心问题: 能不能用稀疏注意力训练,但用全注意力推理,且两者性能接近?


论文结构与格式

论文约 10 页,结构紧凑:方法(S²-Attn 和 LoRA+ 策略)→ 消融实验 → 与其他方法对比 → 案例分析。写作清晰,消融实验设计很好。


核心方法/架构详解

LongLoRA 包含两个独立但互补的贡献:

贡献 1:移位稀疏注意力(Shifted Sparse Attention,S²-Attn)

朴素的想法是:把长序列分成若干固定块(如每块 4096 token),每个块内部做全注意力,块间不交流。这样复杂度从 O(n²) 降为 O(n),但问题是块间没有信息流动——不同块的词无法相互看到。

移位的妙处: LongLoRA 把注意力头分成两组,一组按正常方式分块(token 1-4096 一块,4097-8192 一块……),另一组的分割点移位半个块长度(token 2048-6144 一块,6147-10240 一块……)。这样两组头的分块方式交错,每个 token 都能通过某一组头间接接触到相邻块的信息,避免了信息孤岛问题。

类比: 想象把一排学生分成若干小组讨论,一轮正常分组,一轮分组边界移位——两轮下来,每个人都和更多同学交流过,信息流通了。

更重要的是:S²-Attn 只在训练时使用,推理时换回标准全注意力——因为稀疏训练已经让模型学会了在全局关注下处理长序列的能力。

贡献 2:LoRA 可训练嵌入和归一化层(LoRA+)

标准 LoRA 只在注意力权重上加低秩适配,其他层(嵌入层、归一化层)保持冻结。作者发现:扩展上下文长度后,嵌入层和归一化层也需要微调,否则性能受限。LongLoRA 额外解冻这两类层,使 LoRA 参数量略增但效果显著提升。


主要创新点


实验设置


写作风格特点

工程实践导向,重视消融分析(专门做了"S²-Attn 是否必要"、"解冻哪些层最关键"等对照实验)。代码和模型权重完全开源,是复现性很好的工作。


图表亮点


新手阅读建议

建议先了解 LoRA 的基本思想(低秩适配,用少量参数微调大模型),再读本文。重点关注第 3 节方法和消融实验。LongLoRA 是一篇"工程技巧型"好论文,读完你会理解长上下文微调的成本瓶颈在哪里,以及如何用训练-推理解耦来绕过这个瓶颈。


第 7 篇:StreamingLLM — 发现"注意力汇",实现无限流式推理

arXiv: 2309.17453 | Xiao et al., MIT / Meta, 2023


一句话概括

发现 Transformer 存在"注意力汇"(Attention Sink)现象——模型倾向于把大量注意力集中在最初几个 token 上——利用这一发现,通过保留初始 token + 滑动窗口的 KV 缓存策略,在不重新训练的情况下实现内存稳定的无限流式文本生成。


背景与动机

大模型在实际部署中有一个常见场景:流式对话或超长生成(如多轮长对话、实时文档处理)。此时模型需要持续生成文字,序列不断增长,KV 缓存也不断扩大——直到撑爆显存。

现有解法的问题:
1. 截断: 只保留最近 N 个 token 的 KV 缓存(滑动窗口)。但实验发现,一旦丢弃了最初的几个 token,模型性能就会崩溃(困惑度飙升)。这非常奇怪——最初的几个 token 里可能只是"你好"之类的开场白,为什么那么重要?
2. 重新计算: 每次都重算所有 KV,代价太高。


论文结构与格式

论文约 11 页:问题发现(注意力汇)→ 方法设计 → 在流式生成任务上的实验 → 与其他 KV 缓存方案对比。写作风格清晰,有明显的"发现驱动"叙事结构。


核心方法/架构详解

核心发现:注意力汇(Attention Sink)
作者可视化了各层的注意力权重分布,发现一个惊人规律:无论当前词是什么,注意力分数中有相当大的比例集中在序列的前几个 token(通常是前 4 个),即使这些 token 在语义上与当前词毫无关系。

为什么会有注意力汇?
作者给出的解释:softmax 要求所有权重加和为 1,即使某个 token 在语义上对当前位置没用,但模型还是需要把注意力权重"停放"在某处。序列开头的几个 token(尤其是 SOS/BOS token)经过大量训练,成了稳定的"停车场"——无用的注意力汇聚于此,不影响真正重要的信息。就像办公室里有个老员工,大家开会时不管讨论什么,总会习惯性地看一眼他,即使他不发言。

StreamingLLM 的方法:
既然注意力汇必须保留,那策略就清晰了:
KV 缓存 = 初始几个 token(Attention Sink Tokens)+ 最近 W 个 token 的滑动窗口

计算示意:
- 固定保留前 4 个 token 的 KV(注意力汇)
- 滑动窗口保留最近 2,048 个 token 的 KV
- 总 KV 缓存大小固定为 4 + 2,048,不随序列增长

当新 token 进来时,窗口滑动,最旧的"近期"token 被丢弃,但最初 4 个 token 永远保留。

额外发现: 如果在训练阶段就加入一个专门的"占位"token(sentinel token)作为人工注意力汇,可以让模型不那么依赖真实内容的前 4 个 token,进一步提升流式性能。


主要创新点


实验设置


写作风格特点

"发现导向"的叙事风格,先用一系列图表揭示注意力汇现象,再顺水推舟提出解法。可视化图表做得极好,直观有力。适合当作"科学探索式论文"的范本阅读。


图表亮点


新手阅读建议

这篇论文的故事讲得非常好,非常适合新手阅读。建议按顺序读:先看图 1/2 感受注意力汇现象,再读第 3 节的方法,最后看实验曲线。这篇论文会改变你对"Transformer 注意力如何工作"的直觉认知,极具启发性。思考题:如果注意力汇现象真实存在,那 Longformer 的"全局 token"是不是也在做类似的事?


第 8 篇:Ring Attention — 把长序列切分到多台机器上

arXiv: 2310.01889 | Liu et al., UC Berkeley, 2023


一句话概括

将超长序列的上下文切分到多台设备上,通过"环形"通信拓扑让各设备依次交换 Key-Value 信息,在计算本地块注意力的同时完成通信,实现设备数量与可处理序列长度的线性扩展——无需任何近似,精确等效于全注意力。


背景与动机

假设你有 8 台 GPU,每台能处理最长 8K 的序列。现在想处理一篇 64K 的论文,怎么办?最简单的想法是:把 64K 的序列切成 8 段,每台 GPU 处理一段。但问题是:注意力机制要求每个 token 都能看到所有其他 token——切分后,不同机器上的 token 互相"看不见"对方。

Ring Attention 的核心问题: 如何让分布在 8 台机器上的 token 都能"看到彼此",同时不让通信成为瓶颈?


论文结构与格式

论文约 10 页,包含方法推导、通信分析、在不同硬件规模下的扩展性实验,以及与 FlashAttention 的组合。写作较为技术性,重点在系统设计和通信分析。


核心方法/架构详解

基本思路:流水线式 KV 传递

假设有 4 台 GPU(设备 0、1、2、3),序列切成 4 段(块 0、1、2、3),设备 i 持有块 i。

直觉上,每台设备需要看到所有 4 个块的 KV。如果直接广播,通信量是 O(n²/设备数);但 Ring Attention 用了更聪明的方式:

环形传递: 将 4 台设备排成一个环(0→1→2→3→0)。每一步,每台设备:
1. 用当前持有的 KV 块计算对应的部分注意力
2. 将自己的 KV 块传给环中的下一台设备(同时从上一台设备接收 KV 块)
3. 重复 4 步

4 步之后,每台设备都已经用过了所有 4 个 KV 块,完成了完整的注意力计算。通信和计算交叠(overlap)进行,设备在接收 KV 块的同时,就在用上一步收到的 KV 块做计算,通信延迟几乎被完全隐藏。

类比: 4 个厨师围坐一桌,每人手里有一种食材。每轮:先用手里的食材做一部分菜,同时把食材传给左边的厨师。4 轮后每人都用过了所有食材,做完了各自的全部菜。传递过程和烹饪过程同时进行,不浪费时间等待。

与 FlashAttention 结合: Ring Attention 需要在每台设备内部仍然使用高效注意力实现(如 FlashAttention)。Ring Attention 解决的是"跨设备"的扩展,FlashAttention 解决的是"单设备内"的效率——两者天然互补,可以组合使用。

精确性保证: Ring Attention 不是近似算法,每台设备计算的是完整注意力的一个精确子集,汇总后结果与标准全注意力完全等价。


主要创新点


实验设置


写作风格特点

系统论文风格,偏重于分布式计算和通信分析。数学推导清晰,系统图(展示环形通信过程)做得很好。适合对分布式训练感兴趣的读者。


图表亮点


新手阅读建议

这篇论文偏系统/工程,建议有一定分布式训练基础后阅读。核心概念"计算-通信重叠"是理解本文的关键。如果类比方便理解:Ring Attention 本质上把"流水线"的思路(一边做A一边准备B)应用到了跨机器的注意力计算上。对于不做大规模训练的读者,了解其核心思想即可,无需深究通信协议细节。


第 9 篇:MemGPT — 把 LLM 包装成操作系统

arXiv: 2310.08560 | Packer et al., UC Berkeley, 2023


一句话概括

借鉴操作系统虚拟内存管理的思想,设计了一个分层记忆架构(主上下文/外部存储/归档),通过让 LLM 自己调用函数来主动管理记忆的读写和换入换出,从而突破有限上下文窗口的物理限制,处理理论上无限长的对话和文档。


背景与动机

无论上下文窗口扩展到多大(4K、128K 还是更长),总有上限。处理一部《战争与和平》全本(约 58 万词)、或者一段持续数月的长期对话记录,终究会超出任何有限的窗口。

操作系统的类比是本文的核心: 你的电脑内存(RAM)只有 16GB,但你的硬盘有 1TB,操作系统通过"虚拟内存"让程序以为自己有 1TB 的内存可用——需要的数据从硬盘调入内存,不用的数据换出到硬盘。MemGPT 把同样的思路搬到 LLM 上:有限的上下文窗口 = 内存(RAM),外部存储(向量数据库、文件系统)= 硬盘,LLM 自身 = 操作系统 + 运行的程序。


论文结构与格式

论文约 13 页,结构为:类比与动机 → MemGPT 架构设计 → 两个应用场景的实验(长期对话、文档问答)→ 深入分析。写作叙事性强,类比生动,适合阅读。


核心方法/架构详解

MemGPT 的架构分为三层:

1. 主上下文(Main Context / 相当于 RAM)
LLM 实际能看到的内容,包括:
- 系统提示区(System Prompt): 不变的角色设定、记忆管理指令
- 工作记忆区(Working Context): 当前对话轮次和短期重要信息摘要
- 对话历史区(FIFO Queue): 最近几轮对话,先进先出

2. 外部存储(External Storage / 相当于硬盘)
- 回忆存储(Recall Storage): 所有历史对话的向量化存储,通过语义搜索检索
- 归档存储(Archival Storage): 外部知识库(文件、数据库),也支持语义搜索

3. LLM 作为处理器
LLM 不只是"被动生成文字",而是可以主动调用函数(类比 OS 的系统调用):
- recall_memory_search(query) — 从对话历史中检索相关内容
- archival_memory_search(query) — 从知识库检索
- archival_memory_insert(content) — 将重要信息存入知识库
- core_memory_replace(old, new) — 更新工作记忆中的信息

运作流程: 每次用户发消息,MemGPT 先决定是否需要调用记忆函数(如"这个用户上次说了什么爱好?"→ 调用 recall_memory_search),把检索到的内容填入主上下文,再生成回复。当上下文快满时,系统自动把旧对话压缩摘要后存入回忆存储,腾出空间。

这相当于 LLM 有了"主动注意力"——它能决定自己需要记住什么、忘记什么、当下应该关注什么。


主要创新点


实验设置


写作风格特点

叙事流畅,类比生动,学术技术性适中。这篇论文更像一个"系统设计提案"——核心贡献是架构设计理念和系统实现,而非新的数学方法。适合对 AI Agent 和系统设计感兴趣的读者。


图表亮点


新手阅读建议

这篇论文非常适合新手阅读,技术门槛低,类比生动。建议按顺序全文阅读,第 2 节(操作系统类比)尤其精彩。读完后可以思考:MemGPT 本质上是把"检索增强生成(RAG)"和"Agent 工具调用"结合在了一起,它与直接用 RAG 的主要区别是什么?(答案:LLM 在 MemGPT 中可以主动决定何时检索、何时写入,而不是被动等待触发。)


第 10 篇:Infini-attention — 无限上下文的注意力机制

arXiv: 2404.07143 | Munkhdalai et al., Google, 2024


一句话概括

在标准注意力机制中嵌入一个可压缩的"线性注意力记忆"模块,使每个注意力层既能处理当前局部上下文,又能通过压缩记忆访问任意久远的历史信息,实现参数量固定下的无限上下文处理。


背景与动机

前面的论文已经把上下文窗口扩展到了 128K 甚至 100 万 token,但这些方法本质上仍然是有限窗口——只是窗口更大了。随着序列继续增长,KV 缓存终究会超出限制,或计算成本变得不可接受。

真正的"无限上下文"需要一种内存占用不随序列长度增长的设计——就像人类的记忆:你不会因为活得更长就需要更大的大脑,大脑容量是固定的,但能以某种压缩形式存储大量信息。

Infini-attention 的类比: 每个注意力头不只是一个"当前词查询最近记录"的检索器,而是同时维护一个压缩记忆矩阵,这个矩阵把所有历史信息以固定大小存储,新信息不断写入(覆盖最不重要的),查询时同时查本地注意力和压缩记忆。


论文结构与格式

论文约 9 页,结构紧凑:问题动机 → 方法(Infini-attention 公式推导)→ 从头预训练 + 持续预训练实验 → 与其他无限上下文方案对比。公式较多,但直觉清晰。


核心方法/架构详解

Infini-attention 在每个标准注意力层中引入一个额外的记忆模块,具体如下:

线性注意力记忆(Linear Attention Memory)
论文使用线性注意力(Linear Attention)公式来维护一个固定大小的记忆矩阵 M:

与局部注意力结合
每个注意力头同时计算两种注意力:
1. 局部注意力(Local Attention): 标准的点积注意力,针对当前段(segment)内的 token
2. 记忆注意力(Memory Attention): 从压缩记忆矩阵中检索的结果

两者通过一个可学习的门控系数 β 加权求和:
A_final = sigmoid(β) · A_mem + (1 - sigmoid(β)) · A_local

模型自己学习对于每个位置,应该更多依赖局部信息还是历史记忆。

分段处理: 超长序列被切成固定长度的段(segment),每段处理完后记忆矩阵更新一次。关键是:记忆矩阵大小固定,不随段数增加而增长——真正实现 O(1) 的记忆开销。

注意事项: 这种线性注意力记忆是有损压缩——不是所有历史信息都能被完美保留,就像人类长期记忆会遗忘细节。但对于许多任务,关键信息能被保留下来就已足够。


主要创新点


实验设置


写作风格特点

公式推导与直觉解释并重,Google 风格的严谨实验设计。论文特意强调"即插即用"特性——只需修改注意力层内部,不改变模型接口,与现有框架兼容。


图表亮点


新手阅读建议

这篇论文是这 10 篇中技术密度最高的之一。建议先对"什么是线性注意力"有初步了解,再读本文。如果公式太难,可以只理解以下核心直觉:每个注意力头有一个"小本子"(记忆矩阵),不断把读过的内容压缩记下来;回答问题时既看眼前的内容,也翻翻小本子,两者综合判断。 小本子大小固定,写满了就覆盖最旧的内容。理解了这个比喻,就抓住了本文的精髓。


附录:10 篇论文快速对比表

论文 年份 核心方法 复杂度 最大测试长度 是否需要重训
Longformer 2020 滑动窗口+全局注意力 O(n) 16K 继续预训练
Big Bird 2020 随机+局部+全局稀疏 O(n) 8K 从头预训练
ALiBi 2021 线性距离惩罚偏置 O(n²) >4K外推 从头/继续
Lost in Middle 2023 —(实验分析论文) 16-100K
YaRN 2023 NTK插值+温度缩放 O(n²) 128K 约400步微调
LongLoRA 2023 S²-Attn+LoRA+ O(n)训练 100K LoRA微调
StreamingLLM 2023 注意力汇+KV滑窗 O(n·w) ∞(流式)
Ring Attention 2023 环形KV分布计算 O(n²/设备数) ~1M 配套使用
MemGPT 2023 分层记忆+函数调用 理论无限
Infini-attention 2024 局部注意力+线性记忆 O(n·s) 128K+ 少量持续训练

注:O(n·w) 中 w 为窗口大小;O(n·s) 中 s 为段长度。


导读合集完。如有勘误或补充,欢迎反馈。