四:位置编码与 RoPE自测题¶
来源:http://mp.weixin.qq.com/s?__biz=MzYyNTk3Njg1NA==&mid=2247483778&idx=1&sn=e2c5f4f20682c61638b76899f8652075&chksm=f01eb2fbc7693bede7e98795181cba3490a4e0c010d7ea55b205f8a9fe7f9376968423bc045b#rd
覆盖范围¶
-
Transformer 为什么需要位置编码
-
绝对位置编码、相对位置编码、sinusoidal encoding
-
RoPE 的二维旋转直觉和高维实现
-
RoPE 如何让 attention score 依赖相对位置
-
RoPE 在 Q/K 上的位置、shape、实现和 KV cache 细节
-
RoPE 与 learned absolute PE、relative PE、ALiBi 的对比
-
长上下文外推、RoPE scaling、常见工程错误
¶
``
一、位置编码基础¶
-
Transformer 为什么需要位置编码?
-
如果 self-attention 中完全不加入位置信息,会出现什么问题?
-
请解释 permutation equivariant 在 self-attention 里的含义。
-
“我爱你”和“你爱我”为什么能说明位置编码的重要性?
-
位置编码提供的是绝对顺序信息、相对距离信息,还是二者都可能提供?
-
位置编码通常会影响 Transformer 的哪些计算环节?
-
位置编码和 attention mask 是同一类东西吗?它们有什么区别?
-
位置编码和 tokenizer 的 position id 有什么关系?
二、绝对位置编码与 Sinusoidal¶
-
什么是绝对位置编码?它通常如何加入模型输入?
-
learned absolute position embedding 的优点和缺点是什么?
-
原始 Transformer 的 sinusoidal position encoding 公式是什么?
-
sinusoidal encoding 中不同频率有什么作用?
-
为什么 sinusoidal encoding 比 learned absolute embedding 更有长度外推潜力?
-
sinusoidal encoding 是否直接建模相对距离?为什么说它仍然是绝对位置编码?
-
把 position embedding 加到 token embedding 后,shape 是否变化?语义上发生了什么?
-
绝对位置编码为什么在超出训练最大长度时可能失效?
三、相对位置编码¶
-
什么是相对位置编码?
-
相对位置编码为什么更贴近 attention 的建模需求?
-
请写出一种给 attention score 加 relative position bias 的形式。
-
Shaw et al. 这类相对位置表示的大致思想是什么?
-
T5 类 relative position bias 和把位置向量加到 embedding 有什么差异?
-
相对位置编码相比绝对位置编码有哪些优势?
-
相对位置编码可能带来哪些实现成本或复杂度?
四、RoPE 核心思想¶
-
RoPE 的全称是什么?它主要解决什么问题?
-
RoPE 和普通绝对位置 embedding 的核心区别是什么?
-
RoPE 通常作用在 Q、K、V 的哪些张量上?
-
RoPE 为什么一般不作用在 V 上?
-
RoPE 的一句话核心思想是什么?
-
RoPE 为什么可以被理解为“用绝对位置方式实现相对位置效果”?
-
RoPE 在 attention 计算流程中的位置在哪里?
五、RoPE 数学推导¶
-
请写出二维旋转矩阵
R_m的形式。 -
对二维向量
[x0, x1],写出旋转后的两个分量。 -
旋转矩阵为什么不改变向量模长?
-
高维 RoPE 为什么要把 head_dim 两两分组?
-
RoPE 中常见的频率
theta_i = base^(-2i/d)表示什么? -
请写出 RoPE 的核心恒等式
(R_m q)^T (R_n k)如何变成只依赖n-m。 -
为什么
R_m^T R_n = R_{n-m}? -
RoPE 如何让 attention score 感知相对距离?
-
RoPE 中
m-n和n-m的符号差异重要吗?工程上如何保持一致? -
RoPE 与复数乘法、欧拉公式有什么关系?
六、RoPE 工程实现¶
-
实际实现中为什么不显式构造完整旋转矩阵?
-
rotate_half(x)通常做什么? -
请写出
x_rot = x * cos + rotate_half(x) * sin的含义。 -
给定
q, k: [B, H, T, D],RoPE 中cos/sin常见可广播 shape 是什么? -
RoPE 为什么要求 head dimension 为偶数,或者只旋转偶数维?
-
interleaved pair 和 half-split pair 两种实现有什么需要注意的地方?
-
RoPE 应该在 multi-head attention 的哪一步应用?
-
为什么 Q 和 K 的 position ids 必须一致地反映真实 token 位置?
-
推理使用 KV cache 时,RoPE 的 position id 应如何处理?
-
left padding 场景下 RoPE position id 可能出现什么问题?
-
cos/sin cache 的作用是什么?长度不够会怎样?
-
请写出一个最小 RoPE apply 的 PyTorch 风格伪代码。
七、对比与长上下文¶
-
RoPE 和 sinusoidal absolute PE 有什么相似点和差异?
-
RoPE 和 learned absolute position embedding 相比有什么优势?
-
RoPE 和传统 relative position bias 相比有什么优势和局限?
-
RoPE 和 ALiBi 的核心区别是什么?
-
ALiBi 是如何注入位置信息的?
-
为什么 RoPE 对长度外推有一定帮助?
-
为什么 RoPE 不能保证无限长上下文都稳定?
-
RoPE scaling、NTK-aware scaling、YaRN 等方法大致想解决什么问题?
-
现代 decoder-only LLM 为什么常用 RoPE?
八、工程排错与面试追问¶
-
如果只对 Q 做 RoPE、不对 K 做 RoPE,会有什么问题?
-
如果错误地对 V 做 RoPE,可能有什么影响?
-
如果 KV cache 推理和不使用 cache 的结果明显不一致,RoPE 相关原因有哪些?
-
如果扩展上下文长度后模型困惑度明显变差,RoPE 相关原因有哪些?
-
如果不同框架迁移模型后效果异常,RoPE 配置需要检查哪些字段?
-
RoPE 的 base、rotary_dim、rope_scaling 为什么不能随意改?
-
请总结 RoPE 的优点、局限和常见 bug。
-
面试官让你 30 秒解释 RoPE,你会怎么说?
-
请总结今天从位置编码到 RoPE 的完整知识链路。
预览时标签不可点 修改于<div class="