来源:AIGC深一度

长上下文语言模型完全指南

❝ 参考文献: Liu, J., Zhu, D., Bai, Z., et al. (2025). A Comprehensive Survey on Long Context Language Modeling.

多年来,大语言模型(LLMs)一直是在狭窄的“上下文窗口”内运行,即它们一次能够处理的文本量。这种限制通常只有几千字,就像眼罩一样,阻碍了它们处理涉及长篇文档、长时间对话或复杂数据集的复杂任务的能力。

但形势正在发生巨大变化。我们正在进入“长上下文语言模型(LCLMs)”时代,这类模型能够一次性处理数百万个词元(单词或单词的一部分)。想象一下,有这样一种人工智能,它能读完一整部小说并探讨其主题,分析一整年的财务报告,或者在长达一周的对话中始终保持完美的记忆。这已不再是科幻小说中的情节了。

基于全面的 M-A-P 综述论文《长上下文语言建模的综合调查》,深入探讨了长上下文语言模型(LCLM)的世界。我们将探究它们是如何构建的。

短上下文窗口的局限性不仅带来不便,更是根本性的障碍。

  • 总结:对长篇文档进行总结通常意味着将其分割成多个部分,这可能会导致丢失整体叙述或各部分之间的微妙联系。

  • 问答:回答有关长篇文本的问题需要复杂的检索系统,首先找到潜在相关的片段,期望上下文窗口足够大,以包含答案及其周围的推理依据。

  • 聊天机器人与智能体:对话式人工智能在长期记忆方面存在困难,常常会忘记用户偏好、之前的讨论要点或复杂任务的历史记录。

  • 代码生成:理解整个代码库或复杂的依赖关系通常是不可能的,这限制了人工智能重构、调试或生成大型连贯应用程序的能力。

  • 创意写作:生成连贯的长篇叙述,或基于大量前期步骤的思维链(CcoT,Chain-of-Thought)推理序列,均受到严重阻碍。

长上下文语言模型(LCLMs)直接解决了这些限制。通过以指数级扩大上下文窗口——从数千个标记扩展到数十万个,甚至数百万个标记——它们开启了新的能力:

  • 深度文档理解:一次性分析整本书籍、研究论文、法律合同或财务报告。

  • 增强型检索增强生成(Enhanced RAG):通过允许模型处理更大篇幅的检索信息,以实现更精确的合成,从而改进检索增强生成技术。

  • 复杂智能体:使人工智能智能体能够维持长期计划、记忆和环境感知能力。

  • 存储库级代码辅助:全面了解软件项目的上下文,以提供更智能的编码建议和分析。

  • “类 o1”长推理:助力复杂的多步骤推理过程,这类过程需要在较长的思维链条中回忆并整合信息。

打开网易新闻 查看精彩图片
长上下文模型架构分类法。
❝ 发人深省的问题: 对于一个能够瞬间处理和记住数百万单词的人工智能,你能设想出的最令人兴奋的应用是什么?
2. 打造巨兽:扩展内存的架构

创建能够高效处理海量上下文的模型需要重大的架构创新。这不仅仅是增大窗口那么简单,更要让它在不增加过高计算成本的前提下发挥作用。该综述重点介绍了两个关键领域:位置嵌入(Positional Embeddings)注意力机制(Attention Mechanisms)

A. 知晓所处位置:位置嵌入

在原始的 Transformer 架构中,自注意力机制本身并不知道词元的顺序。位置嵌入(PEs)会添加关于词元位置的信息。对于长上下文语言模型(LCLMs)来说,挑战在于将这种位置信息扩展到远远超出模型在初始训练时所接触到的范围。

问题所在:想象一下,你正在读一本书,但在第 4000 页之后就无法追踪页码了,因为在印刷测试时这本书本应在那里结束。当遇到比训练长度更长的序列时,标准的位置嵌入(PEs)会面临“分布外(Out-of-Distribution, OOD)”问题。

主要方法:

1)绝对位置嵌入与相对位置嵌入:绝对位置嵌入会为每个位置分配一个独特的标记(就像固定的页码)。相对位置嵌入则关注词元之间的距离(比如“在此之后 5 页”)。旋转位置嵌入(Rotary Positional Embedding, RoPE)是一种流行的相对位置嵌入方法,它根据词元的位置对词元嵌入进行“旋转”,巧妙地编码相对距离。ALiBi是另一种相对位置嵌入方法,它根据距离为注意力分数添加偏差。

2)外推策略:如何让在约 4k 词元上训练的位置嵌入(PEs)能够处理 100 万词元,而无需进行完整的重新训练?

2.1)位置插值(Position Interpolation, PI):线性地“拉伸”已学习的位置以适应新的、更长的长度。可以想象成缩小字体大小,以便在原来的页数上容纳更多的单词。这种方法简单,但有时可能会丢失高频细节。

2.2)NTK 感知缩放与 YaRN:更复杂的插值方法。它们认识到不同“频率”的位置信息重要性不同。打个比方:不是均匀地拉伸卷尺,而是精心调整刻度,在延长整体长度的同时,保持小单位的精度。它们对旋转位置嵌入(RoPE)的高频和低频分量进行不同的缩放。

2.3)位置重组(例如,SelfExtend、ReRoPE):这些方法不是拉伸位置,而是巧妙地重用分组远距离词元的位置索引,在关注局部的同时,仍能感知到远距离的上下文。

Transformer 中的核心自注意力机制具有二次复杂度(O(n²))——这意味着随着序列长度(n)的增加,计算和内存需求会急剧增加。使用标准注意力机制处理 100 万词元在计算上是不可行的。长上下文语言模型(LCLMs)依赖于高效的替代方案:

问题所在:想象一下,在一个有 100 万人参加的会议中,每个人都试图同时与其他所有人交谈。这就是标准注意力机制的情况。它很全面,但成本极高。

主要方法:

1)稀疏注意力(例如,Longformer、GQA):每个词元不再关注每个词元,而只关注一部分词元——比如本地邻居和一些重要的全局词元。可以想象成在会议中只与附近的人和几位关键发言人交流。诸如分组查询注意力(Grouped-Query Attention, GQA)和多查询注意力(Multi-Query Attention, MQA)等技术减少了“键”和“值”投影的数量,节省了内存,尤其是在键值缓存(KV Cache)方面(稍后会详细介绍)。

2)线性复杂度架构(例如,Mamba、RWKV、RetNet):这些架构从根本上改变了注意力机制,使其复杂度与序列长度呈线性关系(O(n))。

2.1)Mamba(基于状态空间模型):采用受控制论启发的状态空间模型。打个比方:不是基于所有历史重新计算一切,而是维持一个压缩的“状态”,并在新词元到来时高效地更新它,就像一个不断更新的摘要。

2.2)RWKV:结合了循环神经网络(RNNs)和 Transformer 的特点,在推理时实现线性缩放,同时训练时可并行化。

2.3)RetNet:提供并行训练、循环推理(如循环神经网络)以及块级循环模式,以实现灵活的计算。

3)混合架构(例如,Jamba、Zamba、Command R、Minimax-01):这些模型进行混合搭配!它们通常将标准(或稀疏)注意力层与线性注意力层(如 Mamba)相结合。其理念是兼顾两者的优势——注意力机制的表达能力和线性方法的效率。研究表明,大约 6:1 或 7:1(线性层与注意力层)的比例可能是一个最佳平衡点。有些混合模型甚至在不同的的同一层中使用不同的机制(Hymba)。

❝ 许多最近的最先进模型(如 Command R+、Jamba 以及未来可能的 GPT 版本)很可能正在使用混合架构,以在大规模应用中平衡性能和效率。
3. 超越架构:扩展上下文的工作流

有时候,即使有巨大的上下文窗口,也需要比单纯输入所有内容更智能的策略。该综述重点介绍了增强长上下文语言模型(LCLMs)的工作流设计:

1. 提示压缩(例如,LLMLingua、ICAE):在输入到达主长上下文语言模型(LCLM)之前减小输入大小。

  • 硬压缩:从原始提示中选择或重写最重要的词元

  • 软压缩:将提示压缩为连续的嵌入(向量表示),通常使用更小的辅助模型。这些“要点词元”或“软提示”随后被输入到长上下文语言模型(LCLM)中。

  • 类比:在漫长的会议前创建简洁的要点(硬压缩)或密集的摘要段落(软压缩)。

2. 基于记忆的方法(例如,MemoryBank、LongMem):使用外部记忆模块来存储和检索长上下文中的信息,而不是将所有信息都保存在活跃窗口中。

  • 语言记忆:存储文本片段,通常带有基于时效性、重要性和相关性的检索分数(如生成式智能体)。

  • 连续记忆:存储潜在的向量表示。

  • 参数记忆:将信息直接编码到模型的权重中(例如,DSI)。

  • 类比:在主要工作记忆旁边有一个可搜索的外部记事本或数据库。

3. 基于检索增强生成(RAG)的方法:虽然有时被视为长上下文语言模型(LCLMs)的替代方案,但检索增强生成(RAG)也可以被它们增强。长上下文语言模型(LCLMs)可以处理更大的检索片段,在长上下文内部执行检索(“自我检索”),或者利用其推理能力改进检索查询。两者的界限变得模糊:检索增强生成(RAG)帮助长上下文语言模型(LCLMs)集中注意力,而长上下文语言模型(LCLMs)使检索增强生成(RAG)更强大。

4. 基于智能体的方法(例如,ReadAgent、CoA):利用大语言模型(LLM)智能体的规划、反思和工具使用能力来处理长上下文。

  • 单智能体:一个智能体可能会分解长文档,按顺序阅读各部分,进行总结、反思,并计划下一步的阅读步骤。

  • 多智能体:不同的智能体可能专门处理上下文的不同部分或任务的不同方面,通过协作产生最终结果。

  • 类比:研究助手(单智能体)有策略地阅读和总结一本书,而专家团队(多智能体)处理不同的章节。

4. 百万词元模型的基础设施

处理百万词元的上下文需要巨大的计算资源。要使长上下文语言模型(LCLMs)切实可行,必须针对训练和推理进行复杂的基础设施优化。

高效训练长上下文语言模型

在海量文本序列上进行训练,除了模型大小之外,还会带来其他瓶颈:

  • 输入/输出瓶颈:读取和准备大量数据的速度会变慢。解决方案包括优化数据打包(巧妙地将多个序列整合在一起)、采用高效的文件系统以及预取数据。

  • GPU 内存:激活值(中间计算结果)会随着序列长度呈线性增长,很快就会耗尽 GPU 内存。

  • 混合精度训练:在大多数计算中使用较低精度的数字(如 FP16 或 BF16)可以节省内存并加快计算速度,同时将关键部分(如 softmax)保持在较高精度(FP32)。甚至 8 位(FP8)训练也正在兴起。

  • 优化的内存访问(FlashAttention):一项革命性的技术,它重新排列注意力计算,以最大限度地减少 GPU 高带宽内存(HBM)和更快的片上静态随机存取存储器(SRAM)之间缓慢的数据传输。它避免了生成庞大的中间注意力矩阵。FlashAttention 对于高效的长上下文训练至关重要。

  • 并行化:采用标准技术(数据并行、张量并行、管道并行),但序列并行(将序列分配到多个 GPU 上)和诸如环形注意力(Ring Attention)等专门策略对于长上下文语言模型(LCLMs)尤为重要。

  • 通信开销:在 GPU 之间传输数据可能成为瓶颈。相关技术致力于将通信与计算重叠(例如,改进梯度累积策略)。

推理:键值缓存(KV Cache)挑战

在推理过程中(逐个生成文本词元),最大的内存消耗是键值缓存(KV Cache)。对于生成的每个词元,模型需要回溯到为序列中所有先前词元计算的“键(Key, K)”和“值(Value, V)”向量。对于百万词元的上下文,这个缓存会变得非常庞大!

  • 问题所在:想象一下,为了决定下一个词,需要为一场长达一周的会议中说出的每个词都记录详细的笔记(键和值向量)。这个笔记本会变得大得难以想象,而且访问速度很慢。

  • 主要解决方案:

  • 量化:使用更少的位(例如,INT8、INT4 甚至更低)存储键值缓存(有时还包括模型权重)。这会大幅减少内存占用,但需要谨慎处理以保持准确性。

  • 内存管理(分页注意力机制, vLLM):受操作系统中虚拟内存的启发,分页注意力机制以不连续的块(“页”)分配键值缓存内存。这样可以避免内存碎片化,并允许在不同请求之间(例如,多个用户与同一基础文档聊天)高效共享上下文。它是 vLLM 等高效长上下文语言模型(LCLM)服务框架的基石。

  • 注意力汇聚点与逐出策略(StreamingLLM、H2O):研究发现,即使在语义上不重要的情况下,最初的几个词元(“注意力汇聚点”)通常也会吸引过多的注意力。StreamingLLM 保留这些汇聚点,同时对其余部分使用滑动窗口。当达到内存限制时,其他动态策略(“逐出策略”)尝试根据注意力分数或其他启发式方法,智能地从键值缓存中丢弃不太重要的条目。

  • 推测解码:使用更小、更快的“草稿”模型提前生成几个候选词元。然后,大型长上下文语言模型(LCLM)并行检查这些候选词元,一次性接受一连串正确的词元。通过减少大型模型需要运行的次数,这显著加快了生成速度。

5. 衡量标准:评估和理解长上下文语言模型

能力越强,评估的挑战就越大。我们如何知道长上下文语言模型(LCLM)是否真的在有效地利用其庞大的上下文呢?

该综述将评估分为两个主要领域:

1. 长上下文理解:模型能否理解并运用长输入中的信息?

  • 大海捞针(Needle-in-a-Haystack, NIAH):经典测试。将一条特定信息(“针”,例如“最好的水果是芒果”)插入到一段冗长、具有干扰性的文本(“干草堆”)中的某个位置。然后要求模型检索出这根“针”。性能通常根据“针”的位置和上下文长度来绘制图表。

  • “迷失在中间”:这是大海捞针(NIAH)测试的一项关键发现。许多长上下文语言模型(LCLMs)当“针”位于上下文的开头或结尾时表现良好,但当“针”被埋在中间时,表现会显著下降。这表明宣称的上下文长度往往不等于有效上下文长度。

  • 多线索推理:更复杂的变体需要检索并对分散在整个上下文中的多个“线索”进行推理。

  • 现实世界任务:评估在长文档问答、摘要生成、长文本检索增强生成(RAG)以及多次上下文学习(使用数百或数千个示例)等任务上的性能。

  • 基准测试:LongBench、Loogle、ZeroSCROLLS、BABILong、RULER。

打开网易新闻 查看精彩图片
长上下文理解的评估范式

2. 长文本生成:模型能否生成篇幅较长、连贯且相关的文本?

  • 任务:长文本问答(详细回答)、故事生成、长文本摘要、整个模块的代码生成。

  • 挑战:在长篇输出中保持连贯性、一致性和事实准确性颇具难度。像ROUGE或BLEU这样的标准指标,在极长文本上的可靠性会降低。

  • 评估方法:越来越依赖人工评估或“大语言模型充当裁判”的方法(使用像GPT-4这样强大的模型来评估质量),同时结合特定任务的指标(例如,事实一致性检查)。

  • 基准测试:ELI5、MS-NLG、LongWriter、HelloBench。

打开网易新闻 查看精彩图片
长文本生成评估概述 分析长上下文语言模型(LCLM)的行为

除了基准测试,研究人员还在剖析长上下文语言模型(LCLMs),以了解它们的内部工作原理:

  • 困惑度与实际性能:虽然困惑度(一种预测置信度的度量)与短任务的性能相关性良好,但在长上下文中这种关联会减弱。然而,只关注上下文敏感词元的改进困惑度指标(如LongPPL)有望恢复这种相关性。

  • 长上下文语言模型(LCLMs)与检索增强生成(RAG):争论仍在继续。长上下文语言模型(LCLMs)提供端到端处理,但可能效率不高。检索增强生成(RAG)效率高,但依赖于检索质量。趋势是走向协同作用——利用长上下文语言模型(LCLMs)增强检索增强生成(RAG),反之亦然。

  • 模型结构分析:确定模型的哪些部分对长上下文至关重要。

  • 位置嵌入:分析不同的外推方法如何影响注意力模式和性能。

  • 注意力头:找到专门的“检索头”或“R2头”(检索-推理),它们对长距离信息提取至关重要。

  • 多层感知机层与层间交互:理解信息在长序列中如何在各层之间流动和转换。

打开网易新闻 查看精彩图片
长上下文语言模型(LCLMs)分析示意图。
❝ 发人深省的问题: 如果一个模型声称具有100万个词元的上下文,但在处理中间信息时表现不佳,那么它实际上真正拥有多少上下文?我们应该如何定义“有效上下文长度”?
6. 技术深度剖析:让短期训练发挥长期效果——旋转位置嵌入(RoPE)外推的神奇之处

让我们简要聚焦一个关键挑战:将旋转位置嵌入(RoPE)扩展到超过其训练长度。

旋转位置嵌入(RoPE)的工作原理是根据查询和键向量的绝对位置对它们进行旋转。旋转量取决于位置n以及由基数β(通常为10000)确定的一组“频率”。高频分量旋转得快,捕捉局部关系,而低频分量旋转得慢,捕捉长距离关系。

# 简化的旋转位置嵌入(RoPE)理念 # 每个维度对(2i,2i+1)都按角度theta_i * n旋转 # 其中theta_i = 1 / (beta^(2i/d)) --- i越小 = 频率越低(旋转越慢) def apply_rope(vector, n, beta=10000):   d = vector.length   rotated_vector = vector.copy() for i in range(0, d // 2):     theta_i = 1.0 / (beta**(2.0 * i / d))     angle = n * theta_i     cos_angle = cos(angle)     sin_angle = sin(angle)     # 旋转维度2i和2i+1     x0 = vector[2*i]     x1 = vector[2*i+1]     rotated_vector[2*i]   = x0 * cos_angle - x1 * sin_angle     rotated_vector[2*i+1] = x0 * sin_angle + x1 * cos_angle return rotated_vector

简单扩展的问题:如果你在长度L上进行训练,并在L'L' > L)上进行推理,那么位置n > L会导致模型从未见过的旋转角度,从而导致性能不佳。

位置插值(Position Interpolation, PI):简单地将位置n缩放至n' = n * (L / L')。所有频率都被均匀缩放。这一方法出奇地有效,但可能会损害性能,因为它实际上抑制了模型用于精细局部理解所依赖的高频(快速旋转)。这就好比均匀拉伸一首复杂的音乐作品——整体长度增加了,但快速音符变得模糊不清。

NTK感知与YaRN:这些方法认识到位置插值(PI)的问题在于统一缩放。它们提议进行非均匀缩放。

  • 核心思想:不要过度缩放高频分量(甚至不缩放),以保留局部细节。更积极地缩放低频分量,以扩展上下文范围。

  • 实现方式(简化):它们有效地修改beta基数或每个频率维度的缩放因子。例如,YaRN使用斜坡函数,在高频较少缩放和低频较多缩放之间平滑过渡。这使得模型能够在成功扩展其对较长距离的理解的同时,保持对局部模式的理解。

这种基于频率的巧妙缩放,是模型通常可以在无需从头开始的情况下,通过微调或调整来处理比其原始预训练长度长得多的上下文的关键原因。

探索长上下文语言模型的旅程令人兴奋且发展迅速。以下是本次调查的关键要点:

  1. 长上下文语言模型(LCLMs)具有变革性:它们克服了以往模型的基本局限,在深度文档分析、长期规划等方面释放出诸多能力。

  2. 效率至上:架构创新(稀疏/线性/混合注意力机制、更优的位置嵌入)和基础设施优化(FlashAttention、分页注意力机制、量化、推测解码)对于让长上下文语言模型(LCLMs)切实可行至关重要。

  3. 评估是细致入微的:宣称的上下文长度并不总是有效的上下文长度(“迷失在中间”)。稳健的评估需要在不同位置测试检索,评估长篇生成质量,并使用多样化的基准。

  4. 数据策略很重要:预训练和微调都需要高质量、长距离依赖的数据。有效合成和过滤数据是关键。

  5. 工作流增强能力:提示压缩、记忆系统、检索增强生成(RAG)和智能体为处理长信息提供了替代或互补策略。

  6. 协同效应,而非仅仅竞争:长上下文语言模型(LCLMs)和检索增强生成(RAG)越来越被视为互补工具。机理可解释性开始探究长上下文语言模型(LCLMs)如何在内部处理长上下文。

未来方向:

  • 突破极限:进一步扩展上下文窗口(数千万词元?)并提升现有大窗口的能力。

  • 高效架构:持续研究更高效的注意力机制和混合模型。

  • 稳健评估:为阅读理解和长篇内容生成开发更好、更可靠的基准和指标,可能采用从粗到细的“大语言模型充当评判”流程。

  • 机制可解释性:更深入地理解哪些模型组件能够实现长上下文处理,以及如何改进这些组件。

  • 长文本生成质量:应对生成极长、连贯、事实准确且可控文本的挑战(例如,用于长篇思维链或创意写作)。

长上下文语言模型(LCLMs)的发展标志着人工智能领域的一个关键时刻。通过打破上下文限制,这些模型有望彻底改变我们与信息交互的方式,以及人工智能在复杂、知识密集型任务中对我们的协助方式。这一过程错综复杂,但潜在回报巨大。

阅读最新前沿科技趋势报告,请访问欧米伽研究所的“未来知识库”

https://wx.zsxq.com/group/454854145828

未来知识库是“ 欧米伽 未来研究所”建立的在线知识库平台,收藏的资料范围包括人工智能、脑科学、互联网、超级智能,数智大脑、能源、军事、经济、人类风险等等领域的前沿进展与未来趋势。目前拥有超过8000篇重要资料。每周更新不少于100篇世界范围最新研究资料。 欢迎扫描二维码或访问https://wx.zsxq.com/group/454854145828进入。

截止到3月31日 ”未来知识库”精选的百部前沿科技趋势报告

(加入未来知识库,全部资料免费阅读和下载)