Skip to content

RoPE (Rotary Position Embedding)

旋转位置编码(Rotary Position Embedding, RoPE)是一种将绝对位置信息编码到注意力计算中的方法,通过旋转矩阵实现。它是目前主流大语言模型(Llama、Qwen、ChatGLM 等)的标准位置编码方案,兼具绝对位置感知和相对位置感知的优点。

Definition

传统的绝对位置编码(如正弦/余弦位置编码)将位置信息直接加到词嵌入中:

x_pos = x + PE(pos)

而 RoPE 则通过旋转矩阵将位置信息编码到注意力计算的查询和键向量中:

RoPE(x, m) = x · e^(i·m·θ)

其中 m 是位置索引,θ 是预定义的旋转角度。

核心机制

复数表示与旋转

将向量对 (x_i, x_{i+1}) 视为复数 x_i + i·x_{i+1},然后乘以旋转因子 e^(i·m·θ_j):

复数形式: z_j = (x_{2j} + i·x_{2j+1}) · e^(i·m·θ_j)

矩阵形式:

[ x_{2j}  ]   [ cos(m·θ_j)  -sin(m·θ_j) ]   [ x_{2j}  ]
[ x_{2j+1}] = [ sin(m·θ_j)   cos(m·θ_j) ] · [ x_{2j+1}]

旋转角度的设计

频率递减规则:θ_j = 10000^(-2j/d)

  • j 是维度索引
  • d 是总维度
  • 这确保低维度有较高的频率(快速变化),高维度有较低的频率(慢速变化)
  • 类似于正弦位置编码的波长递增设计

相对位置的自然表达

RoPE 的关键性质:两个位置 m 和 n 的内积只依赖于它们的相对距离 m-n:

<RoPE(q, m), RoPE(k, n)> = f(q, k, m-n)

这意味着:

  • 注意力分数自然具有相对位置感知
  • 可以外推到训练时未见过的长度
  • 不需要额外的相对位置偏置项

与其他位置编码的对比

方法类型绝对位置相对位置外推性代表模型
Sinusoidal PE绝对一般Transformer (original)
Learned PE绝对GPT-2, BERT
ALiBi相对MPT, BLOOM
RoPE混合Llama, Qwen, ChatGLM

RoPE vs ALiBi

特性RoPEALiBi
机制旋转矩阵线性偏置
训练稳定性中等更好(无需位置编码训练)
长上下文扩展需要拨揑调整(NTK, YaRN)天然支持
实际表现更好(当前主流)不错

长上下文扩展技术

标准 RoPE 在超出训练长度时性能下降,因此发展出多种扩展方法:

NTK-aware 拨揑 (2023)

通过改变基频(base frequency)来扩展上下文窗口:

  • 不需要额外训练
  • 可扩展到 2-8 倍训练长度

YaRN (2023)

Yet another RoPE extension method:

  • 结合频率拨揑和注意力温度调整
  • 支持 128K 甚至 256K 上下文
  • 被 Llama 2 Long 采用

Dynamic NTK (2023)

根据实际输入长度动态调整基频:

  • 短文本保持高精度
  • 长文本自动降低频率

应用与影响

主流采用模型

模型家族位置编码长上下文扩展
LlamaRoPEYaRN / NTK
QwenRoPENTK
ChatGLMRoPE内置扩展
BaichuanRoPEALiBi 混合
MistralRoPE滑动窗口 + RoPE

对模型设计的影响

RoPE 的普及影响了模型架构设计:

  • 不再需要绝对位置偏置: 相对位置感知自然涌现
  • 支持更长上下文: 通过拨揑技术可扩展到百万级 token
  • 简化模型架构: 无需额外的相对位置模块

Synthesis

RoPE 代表了位置编码设计的重要进化——它巧妙地将绝对位置信息编码到注意力计算中,同时自然地获得了相对位置感知。这种"两全其美"的特性使它成为当前主流模型的标准选择。配合长上下文扩展技术(YaRN、NTK),RoPE 支持了从 4K 到 2M token 的跨度。

Sources

  • Su et al. (2021). "RoFormer: Enhanced Transformer with Rotary Position Embedding." Neurocomputing.
  • LocalLLaMA 社区对 NTK 拨揑的讨论
  • Peng et al. (2023). "YaRN: Efficient Context Window Extension of Large Language Models."
  • bloc97 (2023). "NTK-Aware Scaled RoPE allows LLaMA models to have extended (8k+) context size without any fine-tuning." Reddit/LocalLLaMA.

AI Knowledge Base — 持续积累