RoPE 优雅地解决了"用绝对编码实现相对位置"的问题,但它自身面临另一个挑战:当模型需要处理训练时未见过的更长序列时,位置编码会发生什么?这个问题——长度外推——直接决定了模型能否在推理阶段扩展上下文窗口。理解长度外推的关键,在于苏剑林提出的一个深刻类比:RoPE 的旋转角度就是 进制数的各位数字。
这个类比不仅提供了直觉,更统一了直接外推、位置内插、NTK-aware 缩放和 YaRN 等看似不同的外推策略。本文将从 进制类比出发,揭示这些方法背后"分辨率与范围"的根本取舍。
RoPE 的外推困境
回顾 RoPE 的旋转角度 ,其中 。对位置 的第 个维度对,旋转角度为 。
假设训练时的最大序列长度为 。在训练过程中,模型从未见过位置 的输入。推理时如果直接使用 ,会发生什么?
从几何上看,位置 的旋转角度 可能超出训练时见过的角度范围。对于高频分量( 小, 大), 可能在训练范围内已经经历了多个完整旋转周期,超出范围只是多旋转了几圈,模型对此尚可应对。但对于低频分量( 大, 小), 在训练范围内可能只覆盖了圆周的一小段,超出范围意味着进入全新的角度区域,模型没有任何经验,注意力分布将变得不可预测。
这就是 RoPE 的外推困境:低频分量在长序列上的分辨率不足,导致模型在超出训练长度的位置上注意力计算失准。
进制类比
整数 的 进制表示将 分解为各位数字:
各位数字 捕捉了 在不同尺度上的信息: 是最低位,变化最快,捕捉细粒度信息; 是最高位,变化最慢,捕捉粗粒度信息。
RoPE 的旋转角度 与此有深刻的对应。将 写成某种"旋转进制"的表示:
这可以理解为 除以 的小数部分。当 从 增大到 时, 从 增大到 ,相当于进制表示中从低位到高位的遍历。低频分量( 大)对应高位数字,变化缓慢,分辨率低;高频分量( 小)对应低位数字,变化快速,分辨率高。
更精确地说,每个频率分量的"周期"为 。第 个分量在位置 处的角度 可以视为"第 位数字"的值。当 增加 时,最低位数字变化 ,最高位数字变化 。这正是一个 进制计数器的行为。
这个类比的核心发现是:进制系统的表示范围由位数决定,分辨率由底数决定。要扩展表示范围,要么增加位数(增加维度 ),要么增大底数(增大 )。
为了使这个类比更加具体,考虑苏剑林给出的具象数字例子。整数 759 的十进制表示是 ,各位数字的计算方式为 :百位 ,十位 ,个位 。类似地,1749 转为十六进制是 ,因为 。
RoPE 的旋转角度 与 有相同的底数 。而且 与 同为周期函数——前者是离散周期,后者是连续周期,但两者其实都在捕捉"角度的小数部分"。这就是 进制类比精确的数学对照:RoPE 的每个频率分量在做的事情,与进制系统中某一位数字在做的事情,在数学上是同构的。
进制转换的代价是精度。3 位十进制能表示 ,转为十六进制后 3 位能表示 ——表示范围扩大了 4 倍,但每个数位的分辨精度从 变为 ,相当于每个十进制数对应十六进制中的 个可能值被模糊为一个。这正是长度外推中分辨率与范围取舍的直接类比:通过调整底数 来扩大表示范围,代价是每个频率分量的角度分辨率降低。
三种外推策略
进制类比将长度外推问题重新表述为:如何让进制系统在超出原有表示范围时仍然正常工作?有三种基本策略。
直接外推
直接使用超出训练范围的 。在 进制类比中,这相当于计数器溢出:高位数字进入从未见过的区域。
对于低频分量, 进入全新的角度范围,模型注意力急剧恶化。实验表明,直接外推在超出训练长度 以上时性能就显著下降。
位置内插(Position Interpolation)
Chen 等人提出的 Position Interpolation 不改变编码方式,而是将位置缩放到训练范围内:
其中 是目标长度。在 进制类比中,这相当于在原有进制下将数字按比例压缩:原来范围 对应 。
位置内插保证了所有角度仍在训练范围内,但代价是分辨率降低。原来相邻位置 和 对应的旋转角度差为 ,内插后变为 。当 时,分辨率降低为原来的 ,高频分量可能无法区分相邻位置。
NTK-Aware 缩放
NTK-Aware 方法的核心思想是调整底数 而非缩放位置。将 替换为 ,其中 是缩放因子。
在 进制类比中,增大底数相当于改变进制:从 进制变为 进制。底数增大后,每个数字的取值范围变大,但每个数字的变化步长也变大。关键在于,不同位受到的影响不同:
- 高位(低频分量):,底数增大使得角度变小,相当于高位数字的变化更缓慢,从而能够"数到"更大的位置而不溢出
- 低位(高频分量):由于 相对 的增幅被 次方调整,高频分量的角度变化接近训练时的范围,保持了局部分辨率
这种"不均匀缩放"正是 NTK-Aware 方法的精妙之处:它在低频分量上做了内插(扩展范围),在高频分量上接近外推(保持分辨率),从而在范围和分辨率之间取得了比纯粹内插更好的平衡。
从可视化中可以直观对比三种策略的差异。直接外推时,低频分量的波长不足以覆盖扩展后的范围,注意力矩阵出现大面积的均匀分布(信息丢失);位置内插虽然保持了注意力的局域性,但局部结构被模糊化;NTK-Aware 在两者之间取得了更好的平衡。
NTK-Aware 的数学细节
NTK-Aware 方法的底数调整公式为:
其中 是长度缩放因子。这个指数 的选择并非任意——它是基于 NTK(Neural Tangent Kernel)理论的分析。
考虑一个宽度无限的网络,其 NTK 在输入变化时的稳定性取决于位置编码的频率分布。RoPE 的频率 形成几何级数,NTK 分析表明,要保持 NTK 的稳定性,频率的缩放应该是非均匀的。
具体地,对于第 个频率分量,NTK-Aware 的有效缩放因子为:
当 小(高频)时,,高频分量几乎不变,保持了局部分辨率;当 大(低频)时,,低频分量被按比例缩放,扩展了表示范围。
这正是 NTK-Aware 的核心:不均匀缩放使得每个频率分量都得到合适的调整,高频保持分辨率,低频扩展范围。
值得区分的是,NTK-Aware 缩放在实践中演化出了多个版本:
- NTK-RoPE-old:仅替换底数 ,这是原始版本,直观但低频分量的缩放不够充分
- NTK-RoPE-fixed:在频率上额外除以 ( 为缩放因子, 为维度索引),修正版,低频分量获得更大缩放,更合理
- NTK-RoPE-mixed(混合进制):不同频率分量使用不同缩放因子,低位承担更多外推压力——这是苏剑林 进制系列的核心创新。在 进制类比中,mixed 版本相当于不同位使用不同的底数,低位用更大的底数以承担更多外推压力
实验表明,mixed 版本优于 fixed 版本,fixed 版本优于 old 版本。这个进化过程的逻辑是:从"统一调整底数"到"逐位调整",越来越精确地匹配每个频率分量在长度外推中的需求。
苏剑林区分三个版本的根本论据是相对位置分布不均衡。在训练长度 内,相对位置 0 出现最频繁( 次),1 次之( 次),高位出现的次数很少。这意味着低位(高频分量)训练充分、外推压力小;高位(低频分量)训练不充分、外推压力大。因此外推压力不应该平摊到所有频率分量——这正是 NTK-RoPE-mixed 的设计动机:低位承担更多外推压力,高位承担更少。old 版本的统一底数调整无视了这种不均衡,fixed 版本通过额外除以 部分地补偿了高位的外推压力,而 mixed 版本则为每个频率分量单独设定缩放因子,精确匹配其在训练中获得的"免疫力"与外推时面临的压力之比。
YaRN:注意力温度的引入
NTK-Aware 解决了频率分布的问题,但仍有不足:随着上下文扩展,注意力分布变得更加均匀(entropy 增大),导致模型对远处 token 的关注度增加,近处 token 的注意力被稀释。
YaRN(Yet another RoPE extensioN)在 NTK-Aware 的基础上引入了注意力温度调节:
其中 是随缩放因子 增大而增大的温度参数。增大温度使得 softmax 的输入变小,输出更均匀;减小温度使 softmax 更尖锐。
YaRN 的设计逻辑是:在扩展上下文时,注意力分数的绝对值会因为频率分量的变化而改变,通过调节温度可以补偿这种变化,使得注意力的有效感受野保持稳定。
ReRoPE:截断实现无限外推
前面讨论的所有方法——位置内插、NTK-Aware、YaRN——都在"调整编码"上做文章:要么缩放位置,要么调整底数,要么调节温度。苏剑林在《无限外推的ReRoPE?》中提出了一个根本不同的思路:不调整编码,而是截断相对位置。
ReRoPE(Rescaled RoPE)的核心机制是在注意力计算中,将相对位置截断为:
其中 是训练时的最大位置距离。效果是双重的:
- 训练范围内():注意力计算与原始 RoPE 完全一致,模型行为不受影响
- 超出训练范围():注意力等价于在位置 处的注意力,即最大距离处的注意力模式被"复制"到更远的距离上
从几何上看,ReRoPE 将相对位置超出 的所有 token 都映射到同一个旋转角度,使得这些远处 token 的注意力分数保持在一个模型"见过"的范围内。这避免了直接外推中低频分量进入全新角度区域的问题。
Leaky ReRoPE:截断策略的连续推广
ReRoPE 的截断公式 是一种"硬截断"——窗口外的位置信息被完全丢弃。一个自然的推广是引入连续参数 ,允许窗口外的位置信息以线性衰减的方式保留:
参数 在三个极端之间插值:
- :标准 ReRoPE,窗口外完全截断
- :标准 RoPE,不做任何调整
- :窗口外部分保留位置的线性衰减
苏剑林用一个精妙的类比来解释三者的关系:ReRoPE 对应 ReLU(窗口外完全截断),Leaky ReRoPE 对应 Leaky ReLU(窗口外线性衰减),标准 RoPE 对应 Linear(不做任何调整)。这个类比不仅形式上相似,更揭示了截断策略的本质——在"完全丢弃窗外信息"与"完全保留窗外信息"之间存在连续的光谱,而 正是控制这个光谱位置的旋钮。
ReRoPE 的实际限制
尽管 ReRoPE 在理论上提供了最优雅的外推方案,其实际部署面临显著的工程代价:
计算量翻倍:ReRoPE 需要两次 Attention 计算——一次用原始位置编码计算注意力分数,一次用截断后的位置编码重新计算。这意味着计算量约为标准 Attention 的 2 倍。
与 Flash Attention 不兼容:Flash Attention 假设位置编码已在 Q/K 中预计算完成,通过批量矩阵乘法实现高效的 Attention 计算。而 ReRoPE 需要在 Attention 分数计算完成后再修改位置信息,这与 Flash Attention 的计算流程根本冲突。
KV Cache 需要特殊处理:标准 KV Cache 存储的是已编码的 ,但 ReRoPE 需要同时存储未编码的 和位置信息,以便在推理时动态应用截断。这增加了内存开销和实现复杂度。
苏剑林在原文中对这些工程限制有详细讨论,并指出这些是 ReRoPE 尚未被主流框架广泛采用的主要原因。结论是:ReRoPE 在理论上提供了最优雅的外推方案,但工程代价使其更适合作为理解外推问题的理论工具,而非即插即用的工程方案。
苏剑林的实验表明,在不微调的情况下,ReRoPE 的效果超过 NTK-Aware,甚至超过从零训练的 HFWA(Hybrid Frequency Window Attention)。这个结果令人意外:一个不修改任何参数、只截断位置的简单操作,竟能超越需要调参的方法。
ReRoPE 代表了外推方法论的下一个重大台阶——从"调整编码"到"截断+重缩放"。其哲学是:与其试图让编码适配更长的范围,不如承认训练范围外的位置信息不可靠,将其截断到模型有信心的范围内。这种思路更符合外推问题的本质——模型没有见过的位置,不应该试图"猜测"其编码,而应该保守地使用已知范围内最远处的信息。
统一理解:分辨率与范围的取舍
进制类比将所有外推方法统一到一个框架下:
| 方法 | 策略 | 分辨率 | 范围 | 本质 |
|---|---|---|---|---|
| 直接外推 | 不调整 | 保持 | 溢出 | 高位溢出,进制不变 |
| 位置内插 | 线性缩放位置 | 降低 | 扩展 倍 | 压缩数字,降低精度 |
| NTK-Aware | 非均匀缩放频率 | 高频保持,低频降低 | 扩展 倍 | 增大底数,调整进制 |
| YaRN | NTK + 温度调节 | 同 NTK | 同 NTK | 调制 + 校准 |
| ReRoPE | 截断相对位置 | 保持(范围内) | 无限(截断后) | 截断溢出,保守外推 |
这四种方法代表了同一个权衡的不同取点:分辨率与表示范围的取舍。在固定的维度 下,你不可能同时拥有无限的分辨率和无限的范围——这是信息论的基本约束。每种方法的本质区别在于如何在不同频率分量之间分配这个取舍。
应用:从 LLaMA 到 Qwen3.5
长度外推技术在实际大模型中的应用已经非常广泛。
LLaMA 2 的上下文长度为 4096,LLaMA 3 扩展到了 8192,而通过 NTK-Aware 类方法进一步扩展到 100K+ 已成为社区的标准操作。Meta 官方在 LLaMA 3.1 中通过训练阶段的长度扩展将上下文推到了 128K。
Qwen 系列更是一个典型案例。Qwen3.5 通过结合 NTK-Aware 缩放和渐进式训练,实现了 1M token 的上下文窗口(架构分析详见 Qwen3 vs Qwen3.5 架构对比)。其核心策略是:在预训练阶段逐步增大 RoPE 的底数 ,使得模型在扩展上下文时无需完全从头训练。
这些方法的实际部署往往不只是简单的公式套用,还需要配合渐进式训练、数据混合等工程手段。纯粹的 NTK-Aware 缩放在推理时即插即用,但性能不如经过微调的版本;而 YaRN 需要在扩展上下文上进行少量训练才能发挥最佳效果。
小结
进制类比将 RoPE 的长度外推问题从"频率该怎么调"重新表述为"进制该怎么变",提供了一个统一且直观的框架:
- 直接外推是不改变进制,让计数器溢出
- 位置内插是压缩数字,牺牲精度换范围
- NTK-Aware是增大底数,不均匀地调整各频率分量
- YaRN在 NTK-Aware 基础上增加温度校准
- ReRoPE截断相对位置,保守地使用已知范围内的信息
这些方法的核心取舍是分辨率与范围的 trade-off:在有限维度下,你无法同时拥有任意高的分辨率和任意大的表示范围。而 ReRoPE 提供了一个跳出这个 trade-off 的视角——不追求更大的表示范围,而是承认范围外的信息不可靠并将其截断。理解了这个根本约束和跳出约束的思路,就能理解每种方法为什么这样设计,以及在实际部署中如何根据需求选择。
相关概念
- RoPE几何本质 — β进制类比的频率θᵢ直接来自RoPE的旋转角度定义,详见旋转位置编码的几何本质
- 解耦设计 — NTK缩放中的频率选择与MLA中解耦RoPE维度dʳᵒᵖᵉ的选择有交互,详见从RoPE到DeepSeek MLA
- 条件数与分辨率 — 有限维度下分辨率与范围的取舍,与矩阵条件数有结构相似性,详见谱范数、条件数与优化景观
参考文献
- Su, J. (2023). Transformer升级之路:RoPE是一种β进制编码. https://kexue.fm/archives/9675
- Su, J. (2023). Transformer升级之路:将β进制位置进行到底. https://kexue.fm/archives/9706
- Su, J. (2023). Transformer升级之路:无限外推的ReRoPE? https://kexue.fm/archives/9708
- Chen, S., et al. (2023). Extending Context Window of Large Language Models via Positional Interpolation. arXiv:2306.15595.