@techNmak发布Understanding RoPE第四版手册
旋转位置嵌入(RoPE)是现代大语言模型用来给注意力注入位置信息的主要机制之一,但它通常被简化为“旋转Q和K”,却没有解释为什么这会有效。
它的核心思想是几何层面的。对于位置m处的一个token,RoPE按照m确定的角度旋转查询坐标对。位置n处的键会按照它自身的角度旋转。当它们进行点积时,有用的部分就显现出来:(Rₘq̃)ᵀ(Rₙk̃) = q̃ᵀRₙ₋ₘk̃
旋转是通过绝对位置分配的,但它们对查询-键匹配度的位置影响取决于相对偏移量n − m。一旦你理解了这个恒等式,很多现代大语言模型工程就会更容易推理。
不同坐标对以不同频率旋转。rope_theta会改变这个频谱。在标准的固定RoPE的Llama风格解码中,键在写入KV缓存之前就完成旋转,因此正确的位置计算就成为缓存正确性的一部分。
能够计算位置100000处的RoPE角度,并不意味着在短得多的序列上训练出来的模型就能在这个位置可靠工作。模型是在特定范围的相位和注意力模式下学习的。
这就是为什么RoPE最终发展出了一整个上下文扩展生态系统——位置插值、动态/基础缩放变体、YaRN、LongRoPE,还有特定模型的方案,比如Llama 3.1的缩放RoPE。
也有几个细节很容易弄错。标准RoPE旋转的是Q和K,不是V。它不能保证注意力会随着距离增加而单调递减。而且两个模型都可以“使用RoPE”,但它们在基础频率、旋转维度、坐标配对和缩放规则上都可能不同。
我整理了《理解RoPE》,这是“理解AI”系列的第四本手册,从头到尾讲解了这个机制,从二维旋转一直讲到KV缓存、上下文扩展、ALiBi、NoPE和多模态RoPE。
在这里分享这本手册:
本文由 AI 翻译自英文原帖,技术名词保留英文。
查看 X 原帖