微软推出LongRoPE:将LLM上下文长度扩展到200万token
大语言模型的上下文窗口一直是个热门话题,大家都在想怎么让模型记住更多内容。最近微软提出了一种名为LongRoPE的方法,直接把预训练语言模型的上下文窗口扩展到了2048k个标记——也就是超过200万个token。更厉害的是,它在扩展后的同时,还保住了原始短上下文窗口的性能,而且只需要1000步的微调。这听起来比以往许多方案都务实得多。

那么,LongRoPE是怎么做到的?它主要靠三个关键创新撑起了这个“长上下文”大局:
- 通过有效的搜索手段,识别并利用了RoPE的两个非均匀性——一个是RoPE维度上的变化,另一个是不同标记位置上的变化。这种发现为微调提供了更好的初始化起点,即便不作微调,也能实现8倍的上下文扩展。
挖掘位置插值中的非均匀性。
- 不是一口气拉到2048k,而是先对256k的长度做微调,然后在这个初步扩展的模型基础上,再进行一次位置插值——最终扩展成2048k的上下文窗口。这个“分步走”的思路,大大降低了直接冲击超长上下文带来的不稳定风险。
渐进式扩展策略。
- 上下文窗口拉长之后,模型在原始短窗口(比如8k)内的表现往往会下滑。LongRoPE专门针对这种情况做了额外的调整,通过优化位置嵌入(RoPE)的重缩放因子,确保超长上下文模型在短窗口任务上同样靠谱。
短窗口性能的回调。
整件事情的逻辑有点像搭积木:从识别非均匀性入手,再到逐步扩展,最后修补短处的短板——每一步都是在为更长、更稳定的上下文窗口铺路。
下面这张图可以帮你直观感受一下,不同插值方法下RoPE嵌入的表现差异:
上图是直接外推的效果,中图是线性位置插值后的重新缩放结果,下图是LongRoPE的做法——它充分利用了前面提到的两种非均匀性,在不同标记位置上对RoPE维度进行变化的插值和外推,效果明显更灵活。
在LLaMA2和Mistral这两个主流模型上,LongRoPE在各类长上下文任务中都展现了很强的竞争力。由于它保留的是原始架构,只是对位置嵌入做了微调,所以大多数已有的优化方法仍然可以直接沿用。实验数据显示,在256k上下文长度内,它在困惑度指标上就已经超过了以往各种位置插值方案。
说到这里,还有一个值得注意的细节:LongRoPE在做扩展时,并不需要额外的微调,训练时只用了128k和256k的上下文窗口,但确实有效地把上下文大小推到了2048k这个极端长度。这个“训练短、推理长”的特点,在实际部署中会显得非常实用。
从论文的实验部分来看,LongRoPE在长文档上的困惑度表现相当低,同时标准基准测试的准确性也没有掉链子。更关键的是,在像密钥检索这类考验长上下文能力的任务中,它的表现尤其出色——甚至能从数百万级别的标记池里准确找到目标密钥,这已经属于“不可思议”的范畴了。
在Hugging Face Open LLM基准测试中,长上下文LLMs与原始LLaMA2和Mistral的比较结果也进一步验证了这一点。
简单总结:LongRoPE给长上下文扩展提供了一个既优雅又实用的新解法,既有理论上的创新点,又有工程上的可落地性。当然,后续是否能在更大范围、更多任务上稳定复现效果,还需要更多实践的检验。不过至少从目前来看,这步棋走得挺稳。
-
- 关于宇宙的好的网名有哪些
- 角色扮演 | 1
- 网名