LLM 长文本处理技术综述:位置编码与注意力机制优化
本文深入探讨了大语言模型在处理长文本时面临的核心挑战,包括显存占用与计算复杂度随序列长度二次增长的问题。重点分析了位置编码方案从绝对位置编码到相对位置编码(如 RoPE、ALiBi)的演进及其外推能力,并介绍了通过稀疏注意力机制(如 LongLoRA、S2-Attn)优化推理效率的方法。文章详细阐述了 KV Cache 优化、混合注意力机制及状态空间模型等补充策略,旨在为理解长上下文窗口技术提供理论框架与实践参考。

本文深入探讨了大语言模型在处理长文本时面临的核心挑战,包括显存占用与计算复杂度随序列长度二次增长的问题。重点分析了位置编码方案从绝对位置编码到相对位置编码(如 RoPE、ALiBi)的演进及其外推能力,并介绍了通过稀疏注意力机制(如 LongLoRA、S2-Attn)优化推理效率的方法。文章详细阐述了 KV Cache 优化、混合注意力机制及状态空间模型等补充策略,旨在为理解长上下文窗口技术提供理论框架与实践参考。

要研究清楚长文本的问题,首先应该搞清楚文本长度在模型中的地位与影响。那么我们便以 Decoder-base 的模型为例来进行分析。
Decoder-base 的模型主要包括三个部分:Embedding(词嵌入层)、Decoder Layer(解码器层)和 Head(输出头)。
其中最主要部分是 Decoder Layer,其由 n 个层组成,每个层又分为两部分:Self-Attention(自注意力机制)和 MLP(多层感知机)。

随着序列长度 $L$ 的增加,模型的显存占用和计算量会显著变化。特别是 Self-Attention 机制,其计算复杂度通常为 $O(L^2)$,这意味着当文本长度翻倍时,计算量和显存占用将变为原来的四倍。这是限制大语言模型上下文窗口长度的主要瓶颈之一。

此外,KV Cache(键值缓存)在推理过程中也会随序列长度线性增长,进一步加剧了长文本场景下的显存压力。

在 Transformer 结构的模型中,Attention 模块的值与顺序无关,因此需要加入位置编码以确定不同位置的 token。典型的位置编码方式有两类:
随着文本长度的增加,位置编码也会发生相应的变化,因此处理好位置编码问题是解决长文本问题的重要环节。

由于绝对位置编码由两部分组成,且两部分相互独立,因此无法直接计算相对距离。下面介绍几种典型的绝对位置编码:

不同 alpha 下 BERT MLM 的训练准确率对比显示,简单的矩阵式位置编码在当前的大模型中已经比较少采用,仅有 GPT2 等早期模型中采用了这种方式。
Sinusoidal 位置编码使用正弦和余弦函数来生成位置向量。整体位置编码如下图所示:

首先研究 Sinusoidal 位置编码与位置之间的关系,绘制不同位置下,函数值与 sin 维度的关系。其曲线可以得到几点结论:

研究 Sinusoidal 位置编码与维度分量之间的关系,可以发现结论如下:
了解了这些基本的特性后,接下来就需要讨论更加深层次的问题:
问题一:为什么用包含各频率的正弦和余弦对? 位置编码存储的是一个包含各频率的正弦和余弦对,这样做有两个好处:
问题二:底数对结果的影响是什么? 底数越大,位置向量能表示的序列就越长,这是大底数的好处。但是,底数大,意味着在 -1 到 +1 的范围内向量的取值越密集,造成两个位置的向量距离越近,这对后续的 Self-Attention 模块来说是不利的。
问题三:Sinusoidal 位置编码如何外推? 三角函数式位置编码的特点是有显式的生成规律,因此可以期望于它有一定的外推性。
如递归式(如 FLOATER)和相乘式(如 Peng Bo),因使用较少,在此不予赘述。
相对位置并没有完整建模每个输入的位置信息,而是在算 Attention 的时候考虑当前位置与被 Attention 的位置的相对距离。由于自然语言一般更依赖于相对位置,所以相对位置编码通常也有着更好的表现,灵活性也更大。
实际上 RoPE 的诸多思想来源于 Sinusoidal 位置编码,区别在于 Sinusoidal 位置编码采用和 word embedding 相加的形式,RoPE 则采用了矩阵相乘的形式。
在正式介绍之前,我们需要回顾一下经典的欧拉公式:$e^{ix} = \cos(x) + i\sin(x)$。

旋转角度随维度的变化展示了不同维度上的旋转频率差异。
下图展示了不同距离尺度上不同 base 值的积分结果,可以得到以下结论:

长度外推性是一个训练和预测的长度不一致的问题。主要体现在两点:
一旦我们在模型中有效地整合了相对位置信息,增加 LLM 上下文窗口的最直接方法就是通过位置插值 (Position Interpolation, PI) 进行微调。
这种方法实现很简单,如果希望将预训练阶段的位置向量范围 [0, 2048] 外推到 [0, 4096],只需要将对应位置缩放到原先支持的区间 [0, 2048] 内:计算公式如下,L 为原先支持的长度,L' 为需要扩展的长度:
$$ P_{new} = P_{old} \times \frac{L}{L'} $$
其过程如下图所示:

需要说明的是,论文 Scaling Laws of RoPE-based Extrapolation 中深入研究了 RoPE 位置编码的特性,其结论就是:RoPE 中 base 的放大和缩小都能获得很好的外推效果 (base=10K 效果最差)。原因在于:
在苏神的文章 Transformer 升级之路中指出:RoPE 形式上是一种绝对位置编码,但实际上给 Attention 带来的是相对位置信息,即如下的 Toeplitz 矩阵。
这么这种形式的 bias 似乎有种似曾相识的感觉,没错,就是 ALiBi 编码。严格来说,ALiBi 并不算位置编码,因为它并没有作用在 embedding 上,而是直接作用在了 Attention 上,通过这种构造方式既实现了远程衰减,又实现了位置的相对关系。
对于外推特性,ALiBi 与前文所述的方法也是不同的,体现在:
Attention 机制也是制约长文本实现的重要因素,以下是几种典型的 Attention 的方式:

在此主要想介绍一个方案 —— LongLoRA。
回顾第一节中研究的结论,长文本影响最大的就是 self-attention 中的,随长度二次变化的显存占用和计算复杂度。为解决这个问题,LongLoRA 的原则是,虽然在推理过程中需要密集的全局注意力,但通过稀疏的局部注意力可以有效且高效地微调模型。
LongLoRA 在微调期间延长上下文长度,同时使用 LoRA 方法保持高性能和低复杂性。其中最关键的是提出了转移短注意力(S2-Attn)方案。下面简要介绍这一方案:
S2-Attn 在微调阶段使用局部注意力而不是全局注意力。即将输入文档分解为几个不同的组,并在每个组中分别应用注意力机制(Pattern 1)。尽管这种方式能够在资源占用不多的情况下拓展长度,由于不同组之间缺乏信息交换,随着上下文长度的增加,会导致混乱增加。
为了解决上述问题,S2-Attn 引入了组大小一半的移位操作,确保相邻组之间顺利的信息交换(Pattern 2)。这种做法有助于模型在文本开头和结尾之间顺利交换信息,从而提高模型稳定性。

而本文提出的 shift short attention 有一半的 head 会被做 shift,如下图所示,然后每个 group 内作 self-attention,从而使信息可以在不同 group 间传递。这种做法实际上将 Pattern 1 和 Pattern 2 结合起来,而没有引入额外的计算开销,使其非常适合高效处理长序列文本。

此外,LongLoRA 相比于 LoRA 还可以微调 embedding 层和 normalization 层。尽管这两项内容占的参数量很小(以 Llama 2-7B 为例,embedding 层只占 1.94%,normalization 层更是不到十万分之四),对结果也起到了重要作用。
除了上述的位置编码和注意力机制改进外,业界还探索了多种其他策略来应对长文本挑战。
KV Cache 是加速推理的关键技术,但在长文本场景下,其显存占用巨大。常见的优化方法包括:
为了平衡全局视野与计算效率,混合注意力机制被广泛采用。例如,结合滑动窗口注意力(Sliding Window Attention)与全局注意力。前 K 个 token 使用全局注意力,后续 token 仅关注最近的窗口。这种模式在保证长程依赖的同时,显著降低了计算复杂度至 $O(N)$。
近年来,基于 Mamba 的状态空间模型在长序列建模上展现出潜力。相比 Transformer 的二次复杂度,SSM 具有线性复杂度优势,且具备并行训练能力。虽然目前在通用语言任务上尚未完全取代 Transformer,但在特定长文本场景下提供了新的思路。
长文本处理是大语言模型发展的关键瓶颈之一。本文从模型架构、位置编码、注意力机制三个维度进行了系统梳理。
通过综合运用上述技术,开发者可以在有限的资源下构建出支持更长上下文的 AI 系统,从而更好地服务于文档分析、代码生成、长对话等实际应用场景。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online