三十二:Long Context自测题¶
来源:http://mp.weixin.qq.com/s?__biz=MzYyNTk3Njg1NA==&mid=2247484383&idx=1&sn=5b5c052de094ac6e9e876392b6acd34a&chksm=f01eb0a6c76939b0e027b621fe85d8a8f4ee7426258328b6e90fb6d260a73b7866932da974dd#rd
一、位置编码基础¶
-
为什么 Transformer self-attention 需要位置编码?
-
绝对位置编码、相对位置编码、RoPE、ALiBi 的核心区别是什么?
-
RoPE 和原始 sinusoidal position encoding 有什么联系和区别?
-
为什么现代 decoder-only LLM 常用 RoPE?
-
RoPE 的位置编码是在 embedding 层相加,还是在 attention 中作用?请说明。
二、RoPE 数学推导¶
-
RoPE 中每两个维度构成一个二维旋转平面,这句话是什么意思?
-
请写出二维旋转矩阵
R(m, theta)。 -
对向量
[x0, x1]应用位置m的 RoPE 后,两个维度如何变化? -
RoPE 中
theta_i = base^(-2i/d)的含义是什么? -
高频维度和低频维度分别负责什么位置关系?
-
请证明或解释为什么 RoPE 使 QK 内积依赖相对位置
n-m。 -
为什么说 RoPE 既使用绝对位置,又体现相对位置?
-
RoPE 是否改变 attention 的复杂度?为什么?
-
RoPE 是否要求 head_dim 必须为偶数?如果只做 partial rotary 呢?
三、张量形状与实现¶
-
给定 hidden_states
[B,S,D],多头 attention 中 q/k/v 的常见形状是什么? -
RoPE 通常作用在哪些张量上?为什么不作用在 V 上?
-
inv_freq、position_ids、freqs、cos、sin的常见形状分别是什么? -
rotate_half的作用是什么? -
前半/后半旋转和偶/奇维旋转有什么区别?为什么实现约定必须一致?
-
请写出
apply_rope(x, cos, sin)的伪代码。 -
cos/sin cache 为什么常用 FP32 生成,再转成模型 dtype?
-
在 batch 内有 padding 时,position_ids 应该如何处理?
四、KV cache 与推理¶
-
自回归生成中 KV cache 的作用是什么?
-
prefill 阶段和 decode 阶段的 position_ids 有什么区别?
-
如果 decode 阶段每个新 token 的 position_id 都错误地设为 0,会发生什么?
-
left padding 场景下,为什么不能简单用列下标作为 position_ids?
-
RoPE 与 attention mask 的关系是什么?
-
在多轮对话增量推理中,RoPE 位置偏移最常见的 bug 是什么?
五、长上下文扩展¶
-
RoPE 没有固定位置表,为什么仍然不能天然无限外推?
-
RoPE 长上下文退化和频率、相位有什么关系?
-
什么是 Position Interpolation?它如何修改位置?
-
Position Interpolation 的优点和缺点是什么?
-
NTK-aware scaling 的直觉是什么?
-
YaRN 主要想解决什么问题?
-
LongRoPE 相比简单线性插值的直觉差异是什么?
-
为什么不能简单把
max_position_embeddings改大就获得可靠长上下文? -
长上下文扩展后,为什么短上下文能力也可能变差?
-
如何评估 RoPE scaling 是否有效?
六、排错与综合¶
-
如果模型短文本正常、长文本回答混乱,你会从哪些 RoPE 相关方向排查?
-
如果加载模型后效果明显变差,怀疑 RoPE 实现不一致,你会检查哪些细节?
-
请用一段面试表达完整解释 RoPE。
-
请画出从 hidden_states 到 RoPE attention score 的计算流程。
预览时标签不可点<div class="