要解决的问题

长上下文需要同时考察两点:模型是否能利用远处的信息,以及计算和显存成本是否可以接受。名义窗口很大不保证有效利用;效果可能受信息位置影响,例如对中间位置的利用弱于开头和结尾。

核心方法

  • 位置插值:把超出训练长度的位置按比例压缩回训练时见过的范围,再做少量微调。
  • RoPE 重标定:调整旋转位置编码(RoPE)的频率基数或按频段区别对待,例如 NTK 感知缩放及其改进。
  • 分阶段扩窗:先在较短长度上训练,再逐步拉长,降低成本。
  • 长上下文持续预训练:用长文档数据继续预训练,让模型学会真正使用长距离信息。

代表工作

  • Position Interpolation(2023):对 RoPE 做线性位置插值,少量微调即可把 LLaMA 的窗口扩展到 32K。
  • YaRN(2023):结合按频段插值与注意力温度调整,用很低的训练成本扩展窗口。
  • LongRoPE(2024):通过搜索非均匀的位置插值方案,把窗口扩展到 200 万 token 以上,并尽量保持短上下文性能。

入门

用 passkey retrieval(在长文本中找出一串随机密码)或「大海捞针」(needle-in-a-haystack)测试,区分「名义窗口」与「有效利用」。

开放问题

  • 长距离多跳推理与精确召回,远比简单检索困难。
  • 扩窗后如何不损失短上下文上的能力。
  • 与检索增强生成相比,长上下文是互补还是替代。

参考资料

相关专题