技术博客

位置插值 PI 的原理与代价

第 81 / 147 篇 · 2025-03-30 · ai · RoPE长度外推位置插值

PI(Position Interpolation,Chen et al. 2023)是把 RoPE 扩到长上下文的第一份系统方案,思路朴素到不像论文:想把上下文从 $L$ 扩到 $L'=sL$,那就把位置重新编号——

$$ m' = \frac{m}{s}, $$

插入 RoPE 的是缩小后的刻度 $m'$。这样一来 $m' \in [0, L)$ 覆盖了 $m \in [0, sL)$ 的全部物理位置,所有相位落回训练见过的范围,理论上"永不越界"。这篇算这笔账:相位发生了什么、质量为什么掉、微调在补什么。

相位压缩:s 倍分辨率损失

RoPE 的第 $i$ 对维度上,两个位置 $m > n$ 的打分相位差是 $(m-n)\theta_i$。PI 之后变成

$$ (m'-n')\theta_i = \frac{m-n}{s}\,\theta_i . $$

同样物理距离贡献的相位差缩小了 $s$ 倍。回想第 5070 篇的分工:高频维($\lambda_i$ 只有几个位置)存在的意义就是给相邻位置提供精细坐标——相邻 1 个位置的相位差原本是 $\theta_i$,PI 后只有 $\theta_i/s$,相邻几个位置的 cos 值几乎不可分。等价地说,这些维度的有效波长被拉长了 $s$ 倍,原本 8 个位置一个周期的局部刻度,现在 32 个位置才转完一周。模型看世界的方式从"毫米尺"变成"厘米尺",这就是社区说的"变糊"的定量版本。

低频维倒是被 PI 治对了:它们相位 $\theta_i \ll 1$,压缩 $s$ 倍后仍在训练分布内,恰好是我们想要的长程拉伸(第 5080 篇分析过这半边的正确性)。

一个对比数字:为什么必须微调

PI 不是免费午餐的另一个证据是微调需求。直接把 PI 用于推理(zero-shot),长程任务的掉分远大于微调后;论文用 32k 目标长度在 LLaMA 各尺寸上微调数百到一千步,才把质量拉回来。对照第 5080 篇的 YaRN:高频维完全不动、再加温度修正,微调成本降到预训练的约 0.1%,部分场景免微调可用。差异来源正是前面那个相位账:PI 动了全部维度,模型要重新拟合被扰乱的全部局部分辨模式;YaRN 只动低频维,已学的局部行为原样保留。

PI 在谱系里的位置

PI 的历史地位不在方案本身,而在它确立了两件事:其一,相位在训练范围内是 RoPE 可用的充要条件——直接外推崩、压回范围内就好,这把"外推问题"从玄学变成约束优化;其二,维度该区别对待——PI 的全部后续改进(NTK 缩放、YaRN、LongRoPE)都是"怎么只动该动的维度"的不同回答。PI 自己则退成长上下文方案的对照组:概念最简、代价最直白,论文图表里那条"uniform interpolation"基线至今仍在服役。

顺带一提 PI 的一个隐藏优点:$m'=m/s$ 不依赖任何维度参数,对 Q/K 的改造是一次逐位置的标量除法,工程上比 NTK 改底数还简单(改 position_ids 即可)。所以在"快速验证长上下文行为"的调试场景里,PI 仍是首选 hack——糊归糊,五分钟就能跑起来。

小结

PI 的公式只有一行,但把 RoPE 扩长问题的全部结构都暴露出来了:位置编码的"分辨率"本质上是相位差对距离的导数 $\theta_i$,重新编号位置就是在全局范围重定这个导数。想保局部精度就得保住高频维的导数,想扩长程就得压低频维的导数——单刻度方案不可能两者兼得,这就是后面所有非均匀方法的出发点。下一篇看把这个思想推到极限的 LongRoPE:不满足于一条斜坡,直接逐维度搜索各自的压缩比。

PI:位置刻度 ÷s,相邻位置的相位差同步缩小 s 倍 s=1:相位差 = 距离 × θ s=4:同距离相位差 ÷4,波长 ×4 1 个位置 1 个位置 高频维的有效刻度从毫米变厘米:相邻位置在 cos 曲线上几乎不可分 → “糊”