跳转至

三十二: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_freqposition_idsfreqscossin 的常见形状分别是什么?

  • 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="