前两条(PI、NTK/YaRN)的共同前提是"维度按波长整齐分工,所以一条单调过渡曲线就够"。LongRoPE(Ding et al. 2024)直接挑战这个前提:既然 RoPE 维度的重要性分布没有解析形式,那就别假设,搜出来。它把 LLaMA2-7B 的上下文推到 2048k——是基座的 128 倍——同时保持短上下文质量不掉,用的微调量只有 PI 类方案的零头。
从"一条曲线"到"逐维度搜索"
形式化地说,PI/NTK/YaRN 都在选一个位置缩放函数 $h(i)$(第 $i$ 维的位置乘 $h_i$),三者的区别只在 $h$ 的形状假设:PI 是常数,NTK 是幂律,YaRN 是分段斜坡。LongRoPE 去掉形状假设,把 $h \in \mathbb{R}^{d/2}$ 本身当搜索变量:
$$ \min_{h}\ \ \mathrm{PPL}\big(\text{模型},\, \text{目标长度验证集};\ h\big) \quad \text{s.t.}\quad h_i \in [1/s,\,1],\ \ h \text{ 单调}. $$
约束有两条:下界 $1/s$ 保证任何维度都不会把位置压出训练范围(每个维度各自满足"相位不越界",这是 PI 安全性的逐维版本);单调性约束 $h_{i+1}\le h_i$(高频压缩少、低频压缩多)把搜索空间从指数级压到可处理——演化算法几千次评估就能收敛。评估用目标长度的少量验证文本算困惑度,每次评估只需一次前向,比训练便宜几个数量级。
搜出来的谱线长什么样
搜索结果的定性形态和 YaRN 的直觉一致但细节更狠:
- 最前面的维度组几乎不被插值($h_i\approx1$)。这些 $\lambda_i$ 只有几个位置的维度负责局部精度,PI 把它们压 $s$ 倍正是"变糊"的主因;LongRoPE 直接跳过它们,局部行为原封不动。
- 中间维度组呈现不平滑的过渡。YaRN 假设重要性随波长单调变化,实际搜索发现部分中频维度保留比单调假设给出的更多——这些维度编码了模型真实依赖的特定距离尺度,均匀处理会误伤。
- 低频组压到接近 $1/s$,和 PI 一致,长程覆盖靠它们。
换句话说,非均匀不是工程装饰,是本质改进:最优 $h$ 的形状由训练好的模型实际怎么用每个维度决定,而这一点从波长表里读不出来,只能测。
2048k 的两阶段渐进扩展
单次搜索直接上 2048k 会失败——验证集太长、评估方差大、演化算法在早期被噪声淹没。LongRoPE 用渐进策略:
- 第一阶段:搜到 256k,微调约 1k 步恢复该尺度质量;
- 第二阶段:在 256k 模型基础上再搜一轮到 2048k。第二阶段的搜索从第一阶段的解出发,评估在 2048k 文本上进行,微调量很小。
直觉和课程学习同源:先把中期尺度上的相位分布对齐,再处理极端尺度时模型已经有"长程怎么用"的雏形,搜索空间的有效维度大幅下降。报告的结果里 2048k 的困惑度曲线仍然单调优于 PI 和 YaRN 基线,且短上下文(4k 以内)评测不掉——后者靠的正是那些几乎没被插值的局部维度。
代价与边界
诚实的成本清单:搜索本身需要目标长度的验证语料(小众领域要自己准备)、数千次前向评估(7B 规模约数 GPU 时)、以及两阶段各一轮微调。它适合"要一次把上下文推到极限"的场景;如果目标只是 2~4 倍的温和扩展,YaRN 的斜坡加少量微调性价比更高。另外搜索解是针对具体模型的——换基座或换数据分布,最优 $h$ 要重搜,这是"搜出来"方案的固有税。
小结
LongRoPE 给长度外推问题收了个尾:从"位置刻度怎么压"到"每个维度压多少",问题的自由度被彻底展开又通过搜索闭合。它对后续工作的启示超出 RoPE 本身——凡是有"按维度/按组分配资源"的结构(MoE 专家容量、量化粒度、KV 压缩),"先假设形状再调参"都该让位于"定义目标函数直接搜"。