RoPE(Rotary Position Embedding)外推是指在不进行额外训练的情况下,使模型能够处理比训练时更长的序列。RoPE外推的核心挑战在于,当输入长度超出训练长度时,模型性能会急剧下降(表现为困惑度上升)。以下是几种主要的RoPE外推方法及其原理: 位置线性内插(Position Interpolation, PI)

原理:通过缩小旋转弧度,将超出训练长度的位置映射回训练范围内。例如,若训练长度为2048,外推至4096,则将每个位置的旋转弧度缩小为原来的一半。

公式:调整后的旋转弧度为 \theta_i' = \theta_i / \lambda,其中 \lambda = L_{\text{extra}} / L_{\text{train}}。

优缺点:

优点:实现简单,兼容性强。

缺点:均等压缩所有位置,可能扰乱局部位置关系,需微调才能达到较好效果。 NTK-Aware插值

原理:基于NTK理论,对高频(低维)和低频(高维)分量区别处理:高频部分外推(缩放幅度小),低频部分内插(缩放幅度大)。

公式:调整基数为 \beta' = \beta \cdot \lambda^{d/(d-2i)},其中 \beta 为原始基数(如10000)。

优点:无需微调即可实现较好的外推效果,保留高频信息。 动态NTK(Dynamic NTK)

原理:在推理时动态调整缩放因子,根据当前序列长度逐步缩小旋转弧度,避免性能突变。

公式:缩放因子 s = \max(1, l'/L_{\text{train}}),其中 l' 为当前序列长度。 YaRN

原理:结合NTK-by-parts和注意力缩放因子(温度参数 t),优化长文本下的注意力计算。

优点:效果显著,兼容Flash Attention等优化库。 调整RoPE的基数(Base Scaling)

缩小基数:增大旋转角 \theta_i,使所有维度在训练时覆盖完整周期,提升外推稳定性。

放大基数:减小 \theta_i,在更长周期上微调,但可能在外推上界后性能骤降。

关键概念 临界维度:RoPE中部分维度在训练时未覆盖完整周期,导致外推时OOD问题。调整基数可优化临界维度。

远程衰减性:RoPE内积分数随距离增大而衰减,外推需平衡衰减与位置区分度。

实验结论 直接外推效果差,NTK-Aware无需微调即可优于线性插值。

缩小基数适合无明确外推上界的场景,放大基数适合有限长度的稳定外推。

更多细节可参考相关论文或博客。