AB
AiBoss
Wiki

什么是位置插值(Position Interpolation)?

位置插值是一种扩展大语言模型上下文窗口的方法:它把超出训练长度的输入位置索引线性压缩回原始窗口范围内,而不是直接外推到训练长度之外。该做法由 arXiv 论文提出,最初用于基于旋转位置编码(RoPE)的预训练模型,后被用于改进 ALiBi 模型的外推能力。

位置插值(Position Interpolation,简称 PI)是一类用于扩展大语言模型上下文窗口的技术:当输入序列长度超过模型预训练时见过的最大长度时,它不把位置索引继续向外推,而是把位置索引线性缩小,使其落回模型原本训练过的位置范围内。它要解决的问题是:预训练语言模型的位置编码只在有限长度上训练过,一旦推理时序列变长,位置索引就会落到训练分布之外,注意力机制随之失稳。

为什么重要

基于旋转位置编码(Rotary Position Embedding,RoPE)的预训练大语言模型,其上下文窗口在预训练阶段就被固定下来。模型只在这个长度范围内见过位置索引的取值分布,位置编码与注意力打分之间的数值关系也是在这个范围内学到的。

当推理阶段需要处理更长的文本时,最直接的做法是外推(extrapolation):让位置索引继续按原来的方式增长,超出训练时见过的最大值。arXiv 论文《Extending Context Window of Large Language Models via Positional Interpolation》指出,这种做法可能带来灾难性的高注意力分数,从而彻底破坏自注意力机制。也就是说,模型不是简单地「没见过这么长的句子」,而是注意力权重的数值本身会失控。

另一条路是重新预训练一个更长窗口的模型,但代价高昂。位置插值提供的折中方案是:保持模型原有架构不变,只做极少量的微调,就能把上下文窗口拉长。该论文称,通过位置插值扩展后的模型可以复用大部分既有的优化与基础设施,因为架构本身没有被改动。

工作机制

位置插值的核心操作可以拆成几个要点。

  1. 压缩位置索引,而不是延长它。设模型原始训练窗口长度为 L,当前输入序列长度为 L′ 且 L′ > L。位置插值把第 i 个位置(i 从 0 到 L′−1)映射为 i × L / L′,也就是按比例把整个位置轴线性压缩回 [0, L) 区间内。这样每个位置索引都落在模型训练时见过的范围内。
  2. 避免外推带来的数值失控。论文的表述是,位置插值之所以选择压缩而非外推,是因为外推可能产生灾难性的高注意力分数,完全破坏自注意力机制。压缩之后,位置索引的取值分布与预训练阶段保持一致。
  3. 理论上的稳定性论证。该论文的理论分析称,插值的上界至少比外推的上界小约 600 倍,论文以此作为插值更稳定的佐证。需要说明的是,这是该论文自身的理论结论,并非独立复现的行业共识。
  4. 只需极少量的微调。论文称,把 LLaMA 系列模型的上下文窗口扩展到最长 32768,只需要在 1000 步以内的微调。微调的作用是让模型适应被压缩后的位置表示,而不是从头学习长上下文能力。
  5. 保留原有架构。位置插值不改变模型结构,因此可以沿用原有的优化流程与部署基础设施。

需要区分的是,位置插值处理的是位置索引的取值,而不是注意力计算方式本身。它不改变注意力是稠密还是稀疏,也不改变键值缓存的组织形式,只是在位置这一层做线性重标定。

典型例子

位置插值最早在 RoPE 类模型上被验证。arXiv 论文《Extending Context Window of Large Language Models via Positional Interpolation》以 LLaMA 模型为例,把上下文窗口扩展到最长 32768,并在多类需要长上下文的任务上给出了实验结果,包括密钥检索(passkey retrieval)、语言建模(language modeling)和长文档摘要(long document summarization),覆盖的模型规模从 LLaMA 7B 到 65B。该论文同时称,经位置插值扩展后的模型在原始上下文窗口内的任务上,质量保持得相对较好。

位置插值的适用范围后来被推广到 RoPE 之外。arXiv 论文《Position Interpolation Improves ALiBi Extrapolation》提出,把线性位置插值用于使用线性偏置注意力(Attention with Linear Biases,ALiBi)的模型,以扩展其外推范围。该论文称,位置插值在上游语言建模以及下游的摘要与检索任务上,显著改善了外推能力。这篇论文的篇幅为 4 页正文、1 页参考文献和 4 张图。

两篇论文合起来说明:位置插值最初是针对 RoPE 提出的方法,随后被同一思路迁移到另一种位置编码方案上,并且都报告了正向结果。但两篇论文的实验设置、模型与任务各不相同,不能把其中一篇的结论直接套到另一篇的场景上。

边界与常见误解

它不是「免费」的无限上下文。位置插值需要微调,论文给出的量级是 1000 步以内,但这是针对其特定实验设置而言的,不构成对任意模型、任意目标长度的通用承诺。

它不是外推。这是最容易被混淆的一点。外推是让位置索引超出训练范围继续增长;位置插值是把它压回训练范围内。两者方向相反,论文明确指出外推可能导致注意力分数灾难性升高,而插值正是为规避这一点而设计的。

它不改变模型架构。位置插值属于位置编码层面的重标定,不引入新的网络结构,因此也不解决长上下文中的其他问题,例如注意力计算量随序列长度增长带来的开销。

效果数据来自论文自身。「扩展到 32768」「1000 步以内微调」「上界小约 600 倍」「在原始窗口内质量保持较好」这些说法,均出自 arXiv:2306.15595 这篇论文的摘要与正文,是该论文作者报告的结论,不是独立第三方复现的结果,也不应被表述为整个领域的普遍共识。同样,ALiBi 上的改进结论出自 arXiv:2310.13017,属于该论文的主张。

它不适用于所有位置编码方案。两篇论文分别针对 RoPE 与 ALiBi 展开,其他位置编码方案是否同样受益,素材中没有给出结论。

参考资料