最近,微软研究院便推出了LongRoPE框架,支持200万tokens上下文,超过了谷歌的输入上限。
在LLaMA 2、Mistral主流开源大模型上,微软研究人员对LongRoPE进行了评估。结果显示,使用LongRoPE后,各大模型保持了原始架构和性能,并对位置嵌入进行少量修改,就可以使用大部分现有的优化。
微调成本高、长文本稀缺以及新标记位置引入的灾难性值是大多数大模型的上下文窗口长度无法实现突破性拉长的主要原因。LongRoPE通过利用位置嵌入中的两个非均匀性,渐进式扩展策略等,突破了技术瓶颈。在保留大模型性能的前提下,极限扩展了上下文输入。
LongRoPE的核心模块之一,通过充分利用位置嵌入中存在的两种非均匀性,不同的RoPE维度和标记位置。该模块会通过一个进化搜索算法来识别每个RoPE维度的最佳缩放因子。搜索空间包括每个RoPE维度的缩放因子以及位置阈值。在控制每个维度的旋转角度的缩放比例,模型会设置一个较大的搜索范围,同时控制最初不进行位置插值的标记数量。搜索算法主要由两个优化技术组成:
- 1、优化的初代种群生成和单调非递减约束。前者可以利用已有的位置插值方法(比如PI、NTK等)来初始化种群。
- 2、后者要求生成的RoPE缩放因子在维度上保持单调非递减,这样可以大幅减少搜索代价。
这种搜索方式的好处是,可以最大限度地保留原始RoPE中的关键维度信息,从而减小位置插值带来的信息损失,为后续的微调提供更好的初始化条件。此外,在无需微调的情况下,可扩展8倍上下文窗口。
LongRoPE使用了一种更高效的渐进式训练策略将上下文扩展至200万,而无需直接在极长文本上进行精调。首先使用上述搜索算法将预训练大模型扩展到25.6万,然后进行精调;接着,在精调后的模型上再次执行位置插值,最终获得200万上下文窗口,无需再进行额外精调。这种渐进式训练策略极大减少了,AI算力资源和直接在长文本上精调的需求。此外,由于第一阶段的模型已经进行过位置插值和精调,第二阶段的RoPE搜索会更加高效。
当大模型的上下文窗口扩展到极大值后,短文本上的性能会有所下降。为了缓解这一难题,LongRoPE使用同样的搜索算法对已经扩展的模型调整RoPE缩放因子,专门针对更短的上下文长度,例如,4000、8000进行了优化。在推理时,如果序列长度小于8000,模型会更新为这些更短长度的RoPE因子,可以有效恢复短文本上的性能。
上下文窗口有效拉长,语言模型长文本理解能力可以得到很大提高。研究人员在LLaMA2-7B和Mistral-7B上应用LongRoPE,在长文档上评估扩展上下文语言模型的困惑度。在256k以内的评估长度上,研究人员使用Proof-pile和PG19数据集来进行测试。LongRoPE在4k-256k的文本长度上,整体上显示出困惑度下降的趋势,优于基准。