← 返回题库
第 030 题 · LLM 基础 · 困难

RoPE 如何表示相对位置,为什么会遇到长上下文外推问题?

核心必会 这代表什么?
✓ 资料核验 来源说明:用户提供的分级面试题单;具体公司归属未独立核验,技术答案依据原论文整理
RoPE位置编码长上下文
评论与补充 ↓
口述训练

先用自己的话答,再看参考说法

60 秒是练习上限,不是必须凑满。原理题讲清因果,设计题讲清约束,项目题只讲真实证据。

别照着背。参考说法只用于对照;直接回答问题,简单题说清楚就收尾。项目题只用自己的经历和数字。

面试时怎么答

从二维旋转说起即可:RoPE 按位置和频率旋转 Q、K 的成对维度,点积中的绝对角度会抵消,留下与位置差有关的相位。不要只背“它是相对位置编码”,要交代这个相对性从哪里来。

长上下文追问的关键是训练外位置产生未见过的角度模式,并可能破坏高低频分工。可再谈位置插值、NTK-aware 缩放或继续训练,以及质量与长度之间的代价。

可以这样答:

RoPE 把 Q、K 的每对维度按位置乘以不同频率的旋转矩阵。两个位置做点积时,共同的绝对旋转会抵消,结果主要依赖位置差,因此自然带入相对位置信息。超过训练长度后,模型会遇到未见过的旋转相位和距离分布,注意力可能失真。位置插值或频率缩放能延长窗口,但会压缩原有位置尺度;改坐标并不等于模型已经学会利用远距离信息。

核心回答

RoPE 把 Query 和 Key 的相邻维度两两分组,并按位置 \(m\) 与该维度对应的频率做二维旋转。若未旋转向量为 \(q\)、\(k\),位置旋转矩阵为 \(R_m\)、\(R_n\),则注意力内积满足:

\[(R_m q)^\top (R_n k) = q^\top R_{n-m} k\]

因此分数显式依赖相对位移 \(n-m\)。V 不参与“用内积决定读取哪个位置”的打分,所以标准 RoPE 通常只旋转 Q、K,不旋转 V。

当推理位置远超训练长度时,模型会遇到训练中未见过的旋转相位与相对距离分布,不同频率维度还会以不同速度变化,因此直接把最大长度配置调大通常不能保证有效外推。Position Interpolation、调整 RoPE 频率基底以及 YaRN 等方法,本质上都在重新映射位置或频率,使新窗口中的相位变化更接近可学习范围,但需要长文本微调或评测验证。

展开说明

对第 \(i\) 个二维分量,可把角度写为 \(m\theta_i\):

\[R(m\theta_i) = \begin{bmatrix} \cos(m\theta_i) & -\sin(m\theta_i) \\ \sin(m\theta_i) & \cos(m\theta_i) \end{bmatrix}\]

正交旋转保持向量范数,并利用 \(R_m^{\top}R_n = R_{n-m}\) 把绝对位置差转进 Q/K 点积。RoPE 并不意味着模型只知道相对位置:因果边界、内容表示和训练分布仍会共同影响最终行为。

常见扩展方法的侧重点是:

  • Position Interpolation(PI):把更长窗口的位置按比例压回原训练位置范围,避免直接访问更大的角度;代价是原有相邻位置在旋转空间中变得更接近。
  • NTK-aware 类缩放:调整 RoPE 的频率基底,使不同频段采用非均匀缩放,尝试兼顾局部分辨率与远距离范围。具体公式随实现而异,不能只凭名称假设完全一致。
  • YaRN:在频率分段缩放基础上加入平滑过渡与 Attention Logit 的尺度修正,并配合少量长上下文微调扩展窗口。

“配置支持 128K”与“在 128K 上仍能可靠利用证据”是两件事。长上下文能力还受训练数据、Attention Mask、KV Cache、检索干扰和评测任务影响。

工程实践

扩窗时必须核对模型配置、Tokenizer、推理框架中 RoPE 参数的语义,防止训练和服务端使用不同的 rope_theta 或 scaling 实现。评估至少覆盖原长度回归、不同深度的 needle retrieval、多跳证据、长文摘要和困惑度随位置变化;同时记录 TTFT、KV Cache 与并发,因为能输出不代表质量和成本都可接受。

常见追问

  1. 为什么 RoPE 作用在 Q、K,而通常不作用在 V? Q/K 的内积决定当前位置应该关注哪里,把旋转加在二者上即可让分数携带相对位移。V 承载被读取的内容,旋转它不是形成相对位置打分所必需的。
  2. 如何从旋转矩阵推导内积只与相对位置有关? 利用旋转矩阵正交性可得 \(R_m^{\top}R_n = R_{n-m}\),所以 \((R_mq)^{\top}(R_nk) = q^{\top}R_{n-m}k\)。位置项由两个绝对位置变成了它们的差。
  3. Position Interpolation 为什么可能损失局部位置分辨率? 它把更长的位置区间压缩到训练范围,相邻真实位置在旋转空间中的角度差也随之缩小。模型因此需要适应更密集的位置表示。
  4. NTK-aware Scaling 与简单线性插值的思路有何区别? 简单 PI 对所有位置或频率做统一压缩;NTK-aware 类方法非均匀调整频率基底,希望少破坏高频局部关系并扩展低频范围。具体实现公式并不完全相同。
  5. 为什么修改 max_position_embeddings 不等于获得可靠长上下文能力? 配置只允许引擎接收更长输入,不能补上模型从未学习过的位置分布、远距离证据使用能力和训练数据。必须通过缩放方案、适配训练和长文本评测验证。

一句话复习

RoPE 用位置相关旋转让 Q/K 内积携带相对位移;扩窗要重映射位置或频率,并用真实长上下文任务验证相位外推是否有效。

参考资料

无需账号 · 原地交流

评论与补充

评论会直接显示在这道题下面。可以写自己的答法、继续追问或指出错误,不需要 GitHub 账号,也不会跳转到 Issue;内容会公开,请勿填写个人隐私、公司机密或受保密约束的材料。

正在加载评论…