深度技术文档 · 2025

大模型 RoPE 深度对比指南

系统梳理 DeepSeek V3.2、GLM5、Qwen、LLaMA 等主流大模型的旋转位置编码实现差异,图文并茂,矩阵级精度

DeepSeek V3 / V3.2 GLM4 / GLM5 Qwen2.5 LLaMA 3.x Mistral RoPE · YaRN · MLA · NTK
// 目录 · Table of Contents
RoPE 基础原理与旋转矩阵
在深入对比各模型实现之前,需要先掌握 RoPE 的数学本质:通过旋转操作将位置信息编码进 Query 和 Key 向量。

核心思想

RoPE(Rotary Position Embedding)由苏剑林(Su et al., 2021)提出,其核心不是给向量一个位置向量,而是对向量做一次旋转变换。位置信息通过旋转角度隐式编码进去,并且具有一个关键性质:

核心性质:经过 RoPE 旋转的 qₘ 和 kₙ 的点积,只依赖于两者的相对位置差 (m − n),而非绝对位置。这给 Transformer 提供了天然的相对位置感知。

旋转矩阵的数学定义

对于位置 m,维度为 d 的向量 q,RoPE 将其每两个维度分为一组,施加一个二维旋转:

θᵢ = base⁻²ⁱ/ᵈ, i ∈ {0, 1, ..., d/2 - 1} 对第 i 对维度 (q₂ᵢ, q₂ᵢ₊₁) 旋转角度 m·θᵢ: [q'₂ᵢ ] [ cos(m·θᵢ) -sin(m·θᵢ) ] [q₂ᵢ ] [q'₂ᵢ₊₁] = [ sin(m·θᵢ) cos(m·θᵢ) ] [q₂ᵢ₊₁]

完整旋转矩阵 Rₘ(d=8 时的展开形式)

将所有维度对排列后,得到一个块对角旋转矩阵(d=8,4 个旋转块):

Rₘ (位置 m 的旋转矩阵,d=8)
cos mθ₀
0
0
0
-sin mθ₀
0
0
0
0
cos mθ₁
0
0
0
-sin mθ₁
0
0
0
0
cos mθ₂
0
0
0
-sin mθ₂
0
0
0
0
cos mθ₃
0
0
0
-sin mθ₃
sin mθ₀
0
0
0
cos mθ₀
0
0
0
0
sin mθ₁
0
0
0
cos mθ₁
0
0
0
0
sin mθ₂
0
0
0
cos mθ₂
0
0
0
0
sin mθ₃
0
0
0
cos mθ₃
■ 橙色 = 旋转系数(cos/sin) □ 灰色 = 0(稀疏块对角结构)
θ₀ > θ₁ > θ₂ > θ₃ 低频维度旋转慢,高频维度旋转快

频率分布:低频 vs 高频

维度 i=0
θ₀ = 1.0(高频,旋转最快)
维度 i=d/4
θ ≈ 0.01(中频)
维度 i=d/2
θ_{d/2} ≈ 10⁻⁴(低频,旋转最慢)
低频维度 → 感知长程位置关系(文章结构);高频维度 → 感知短程位置关系(词序)
关键公式: 标准 RoPE 的 base 默认为 10000。
θᵢ = 10000^(−2i/d) ← 各模型最核心的分叉点之一
Standard RoPE(基准实现)
以 LLaMA 1/2 为代表的原始 RoPE 实现,是理解所有变体的起点。

计算流程(GEMM 矩阵视角)

输入 x [seq×d]
x₀₀
x₀₁
x₀₂
x₀₃
x₁₀
x₁₁
x₁₂
x₁₃
x₂₀
x₂₁
x₂₂
x₂₃
3 tokens × 4 维
→ W_Q →
Q = xWᵀ_Q [seq×d_head]
q₀₀
q₀₁
q₀₂
q₀₃
q₁₀
q₁₁
q₁₂
q₁₃
q₂₀
q₂₁
q₂₂
q₂₃
原始 Q,未含位置信息
⊙ Rₘ
Q' = RoPE(Q,pos) [seq×d_head]
q'₀₀
q'₀₁
q'₀₂
q'₀₃
q'₁₀
q'₁₁
q'₁₂
q'₁₃
q'₂₀
q'₂₁
q'₂₂
q'₂₃
每行旋转角度不同(对应不同 token 位置)
Standard RoPE 特点:Q 和 K 的全部维度都参与旋转。V 不参与 RoPE(V 没有位置感知需求,因为位置信息已在注意力权重 QKᵀ 中体现)。

注意力计算完整矩阵流

h_t [1×d]
W_Q、W_K、W_V
Q, K, V
RoPE(Q, pos)
+
RoPE(K, pos)
Attn(Q'K'ᵀ/√d)·V
→ KV Cache 存储:完整的 K'(旋转后),V(原始)  Cache 大小 = seq × (d_K + d_V) × num_layers × precision
Base:
10000(LLaMA 1/2)
Context:
2048(L1)/ 4096(L2)
KV Cache:
Full K + V,每 token 存 (d_K + d_V) 维
长序列处理:
无(超出训练长度后质量急剧下降)
DeepSeek V3 / V3.2:解耦 RoPE + MLA
DeepSeek 引入了 Multi-head Latent Attention(MLA)架构,核心创新是将 KV 压缩 与 RoPE 位置编码解耦,使得推理时 KV Cache 极大压缩,同时保持模型性能。
为什么需要解耦? 标准 RoPE 直接应用于 K,意味着 K 的每个位置的表示都不同,无法在 latent 空间共享——一旦压缩就会丢失位置信息。DeepSeek 将 RoPE 部分从 K 中分离出来单独处理,让压缩的 KV 缓存只存位置无关的语义信息。

MLA 架构:KV 压缩 + 解耦 RoPE 完整矩阵流

// Phase 1: 下投影 —— 压缩 KV

h_t [1×d]
×
W_DKV [d×d_c]
=
c_t^KV [1×d_c]
← 这是KV Cache存的内容!d_c << d

// Phase 2: 解耦 RoPE Key(独立通路)

h_t [1×d]
×
W_KR [d×d_R^k]
=
k_t^R [1×d_R^k]
RoPE(k_t^R, pos_t)
← 含位置信息的 key(也存 Cache)

// Phase 3: 上投影 —— 解压 KV(推理阶段)

c_t^KV
×
W_UK [d_c×(n_h×d_h)]
=
K_C (语义 key)
c_t^KV
×
W_UV [d_c×(n_h×d_h)]
=
V

// Phase 4: 最终 Key = concat(K_C, RoPE(k_t^R))

K_C [语义部分]
k_t^R_rotated [RoPE部分]
=
K_full [完整 Key]

KV Cache 矩阵对比:Standard vs MLA

❌ Standard RoPE KV Cache(每层每token)
K'₀
K'₁
K'₂
K'₃
K'₄
K'₅
K'₆
K'₇
V₀
V₁
V₂
V₃
V₄
V₅
V₆
V₇
存储:n_heads × (d_K + d_V) 维 → 假设=1024维/层
VS
✅ MLA KV Cache(每层每token)
c₀
c₁
c₂
c₃
kR₀
kR₁
kR₂
kR₃
存储:d_c(压缩KV)+ d_R^k(RoPE key)维
d_c ≈ 512,d_R^k ≈ 64 → 仅 ~576 维/层,压缩比 ~1.8x

Query 端的解耦 RoPE

// Query 同样分为两部分:语义 Q (q_t^C) 和 RoPE Q (q_t^R) h_t × W_DQ → c_t^Q [压缩Q,低秩] c_t^Q × W_UQ → q_t^C [语义Q部分] h_t × W_QR → q_t^R [RoPE专用维度] q_t^R → RoPE(q_t^R, pos) [旋转] 最终 Q = concat(q_t^C, RoPE(q_t^R))

解耦 RoPE 的关键维度设计

参数
Standard RoPE
DeepSeek MLA 解耦 RoPE
KV Cache 维度/token/层
n_heads × (d_K + d_V)
≈ 2048 维(DeepSeek规格)
d_c + d_R^k
≈ 512 + 64 = 576 维
RoPE 作用位置
全部 K、Q 维度
仅 q^R、k^R 子空间
(不参与压缩)
位置信息携带方式
K 旋转后直接 cache
语义 c^KV + 单独 k^R
解压时再拼接
推理时计算量
无额外矩阵乘
每步需 W_UK、W_UV 上投影
(可吸收进 W_Q 优化)
V3.2 相对 V3 的变化: DeepSeek V3.2 保持了 MLA 的解耦 RoPE 框架,并在 base 频率和长度外推方面做了进一步调整(具体 base 未公开),同时对 MoE routing 做了改进,使得同样的 RoPE 框架下长序列性能更稳定。
GLM4 / GLM5:2D RoPE(二维旋转位置编码)
清华 GLM 系列(ChatGLM → GLM4 → GLM5)的最显著特征是为不同的文本区域(前缀/生成)设计了两套独立的位置 ID,从而支持填空式(Blank Infilling)任务。
为什么需要 2D RoPE? GLM 的训练目标是 prefix-LM + blank infilling。前缀(已知上下文)和各个生成 span 之间需要独立的位置计数,否则跨 span 的相对位置关系会错乱。

2D 位置 ID 设计

// 每个 token 有两个位置 ID: position = (block_pos, local_pos) 例: "北京 [MASK1] 是 [MASK2] 的首都" 填写 "天安门广场" 和 "中国" Token: 北 京 [M1] 是 [M2] 的 首都 | 天 安 门 广 场 | 中 国 block_pos: 0 1 2 3 4 5 6 | 2 2 2 2 2 | 4 4 local_pos: 0 0 0 0 0 0 0 | 1 2 3 4 5 | 1 2

其中 block_pos全局 token 序号(每个 token 唯一),local_pos 是该 token 在其所属 generation span 中的局部偏移(前缀 token 全为 0)。

旋转矩阵的拆分方式

GLM 2D RoPE 旋转矩阵 R_{(b,l)}(d=8)
c(b·θ₀)
0
-s(b·θ₀)
0
0
0
0
0
0
c(b·θ₁)
0
-s(b·θ₁)
0
0
0
0
s(b·θ₀)
0
c(b·θ₀)
0
0
0
0
0
0
s(b·θ₁)
0
c(b·θ₁)
0
0
0
0
0
0
0
0
c(l·φ₀)
0
-s(l·φ₀)
0
0
0
0
0
0
c(l·φ₁)
0
-s(l·φ₁)
0
0
0
0
s(l·φ₀)
0
c(l·φ₀)
0
0
0
0
0
0
s(l·φ₁)
0
c(l·φ₁)
■ 蓝色块(左上 d/2×d/2)= block_pos 旋转,使用 θᵢ 频率
■ 紫色块(右下 d/2×d/2)= local_pos 旋转,使用 φᵢ 频率
b = block_pos,l = local_pos

GLM vs Standard:位置 ID 矩阵对比

Standard RoPE 位置序列(1D)
pos=0
pos=1
pos=2
pos=3
pos=4
pos=5
pos=6
线性单调递增,跨 span 无感知
GLM 2D RoPE 位置序列
block=0local=0
block=1local=0
block=2local=0
block=3local=0
block=2local=1
block=2local=2
block=2local=3
蓝色=前缀,紫色=生成span
生成 span 的 block_pos 固定=mask所在位置,local_pos 递增

GLM5 相对 GLM4 的演进

特性
GLM4 / ChatGLM4
GLM5(GLM-4.1系列)
RoPE 类型
2D RoPE
2D RoPE(保留)+ 扩展上下文
Base
10000 / 部分实验500k
更高 base(对齐大上下文需求)
上下文长度
128k
128k~1M(实验性)
填空任务支持
✓ 核心功能
✓ 保留并强化
Qwen2.5:YaRN 动态 NTK 长度外推
Qwen 系列在 RoPE 上的核心贡献是将 YaRN(Yet Another RoPE extensioN)方法融合进训练,解决标准 RoPE 在超出训练长度后性能急剧下降的问题。

长序列外推的三代演进

Standard RoPE
train len=L
→ 超出L →
高频维度过拟合
位置溢出
NTK-aware RoPE
等比缩放所有频率:
θ'ᵢ = (base · k)^(-2i/d)
高频改善,低频不理想
YaRN(Qwen2.5)
分维度策略:
高频不变 | 中频插值 | 低频NTK
全频段最优

YaRN 的三段式频率处理(维度分区矩阵)

YaRN 频率分区(d=16,4分区示意)
θ₀
高频
θ₁
高频
θ₂
过渡
θ₃
过渡
θ₄
过渡
θ₅
低频
θ₆
低频
θ₇
低频
🔴 高频(i < α): θ'ᵢ = θᵢ(不变)
🟣 过渡(α≤i≤β): θ'ᵢ = 线性插值
🟢 低频(i > β): θ'ᵢ = θᵢ / scale_factor(NTK)

YaRN 公式详解

// YaRN 修改后的频率 def yarn_freq(i, d, base, scale, α, β): # 原始频率 θᵢ = base ** (-2*i / d) # 波长 λᵢ = 2π / θᵢ λᵢ = 2 * π / θᵢ if λᵢ < α: # 高频:波长短,直接用原始 return θᵢ elif λᵢ > β: # 低频:波长长,NTK缩放 return θᵢ / scale else: # 过渡区:线性混合 ramp = (λᵢ - α) / (β - α) return (1 - ramp) * θᵢ + ramp * (θᵢ / scale) # Qwen2.5 典型参数: base = 1_000_000 # ← 超高 base! scale = 4.0 # context 扩展 4x 时 α = 1 # 高频截止波长 β = 32 # 低频截止波长
Qwen2.5 的超高 base:Qwen2.5 将 base 设为 1,000,000(vs LLaMA1 的 10,000),使得所有频率维度的旋转都更慢,天然地支持更长上下文,而无需大幅修改低频维度。配合 YaRN 使用效果更佳。

注意力缩放(YaRN 额外引入)

// 标准注意力: score = QKᵀ / √d // YaRN 注意力(加入温度缩放): score = QKᵀ / (√d × t) 其中 t = 0.1 × ln(scale) + 1.0 (Qwen2.5 scale=4 时 t ≈ 1.14) 效果:缩小 attention logit 方差,对抗长序列的注意力退化
LLaMA 3.x:高 Base + RoPE Scaling
Meta 在 LLaMA 3 系列中对 RoPE 做了最直接、最激进的改动:将 base 从 10000 提升至 500000,并在 LLaMA 3.1 中引入 llama3 专用的 RoPE scaling 策略。

LLaMA 系列 RoPE Base 演进

版本
LLaMA 1
LLaMA 2
LLaMA 3.0
LLaMA 3.1/3.2
RoPE Base
10,000
10,000
500,000
500,000 + scaling
上下文长度
2,048
4,096
8,192
128k(3.1)
RoPE Scaling 策略
llama3 分段策略
高频维度处理
不处理
不处理
高 base 缓解
保留(不插值)

LLaMA 3.1 的 llama3 RoPE Scaling

// LLaMA 3.1 rope_scaling 配置(transformers 格式) { "rope_scaling": { "factor": 8.0, # 总体扩展因子 "high_freq_factor": 4.0, # 高频维度额外系数 "low_freq_factor": 1.0, # 低频维度系数 "original_max_len": 8192, # 预训练最大长度 "rope_type": "llama3" # 新增策略 }, "rope_theta": 500000.0 # base = 500k } // 实际频率修改逻辑(llama3 策略) for i in range(d//2): wavelen = 2π / (base ** (-2i/d)) low_thresh = original_max_len / low_freq_factor # = 8192 high_thresh = original_max_len / high_freq_factor # = 2048 if wavelen > low_thresh: # 低频:直接除以 factor θ'ᵢ = θᵢ / factor elif wavelen < high_thresh: # 高频:保持不变 θ'ᵢ = θᵢ else: # 过渡:平滑混合 smooth = (original_max_len/wavelen - low_freq_factor) / (high_freq_factor - low_freq_factor) θ'ᵢ = (1 - smooth) * θᵢ/factor + smooth * θᵢ
高 Base 的本质:base=500000 使得 θ₀ 不变(始终=1),但最低频的 θ_{d/2-1} 从原来的 ~10⁻⁴ 变得更小(~10⁻⁵.³),让模型能"慢旋转"更长——从数学上看,这等价于将模型的"旋转波长"等比拉伸,覆盖更长的序列范围。
矩阵级 DIFF 全景对比
以 GEMM 格式展示各模型在 Attention 计算中 RoPE 的应用方式差异,一图看清所有关键分叉点。

Attention 矩阵计算路径对比(4模型并排)

▸ DeepSeek V3(MLA 解耦 RoPE)
h_t [1×d]
h₀
h₁
h₂
h₃
W_DKV [d×d_c]
w₀₀
w₀₁
w₁₀
w₁₁
w₂₀
w₂₁
w₃₀
w₃₁
=
c^KV [1×d_c] ← CACHE
c₀
c₁
W_KR [d×d_R]
w₀₀
w₀₁
w₁₀
w₁₁
w₂₀
w₂₁
w₃₀
w₃₁
=
k^R → RoPE → CACHE
kR₀
kR₁
▸ Standard RoPE(LLaMA 1/2)
h_t [1×d]
h₀
h₁
h₂
h₃
×W_K=
K [1×d_h]
k₀
k₁
k₂
k₃
⊙R_m=
K' → CACHE(全维度)
k'₀
k'₁
k'₂
k'₃
▸ GLM(2D RoPE)
Q / K [1×d_h]
q₀
q₁
q₂
q₃
蓝色=前d/2维(block_pos旋转)
紫色=后d/2维(local_pos旋转)
⊙R_{b,l}
Q' 旋转后(2个角度)
rot_b₀
rot_b₁
rot_l₂
rot_l₃
橙=block旋转,红=local旋转
▸ Qwen2.5(YaRN 分频策略)
频率向量 Θ [d/2](修改后)
θ₀
高频不变
θ₁
高频不变
θ₂
插值过渡
θ₃
插值过渡
θ₄
低频NTK
θ₅
低频NTK
每个维度使用不同缩放策略
应用于
Q, K(全维度,非解耦)
q'₀
q'₁
q'₂
q'₃
q'₄
q'₅
同一向量内不同维度用不同θ旋转

核心差异 DIFF 矩阵(GEMM 格式汇总)

维度 \ 模型
Standard RoPE
(LLaMA1/2)
DeepSeek V3
(MLA解耦)
GLM4/GLM5
(2D RoPE)
Qwen2.5
(YaRN)
LLaMA 3.1
(llama3策略)
RoPE 位置 ID 维度
1D(单调整数)
1D(与标准同)
2D(block, local)
1D(单调整数)
1D(单调整数)
RoPE Base θ
10,000
未公开
(推测500k+)
10,000
(GLM5可能更高)
1,000,000
500,000
RoPE 应用对象
全部 Q、K
仅 q^R、k^R
子空间(解耦)
全部 Q、K
(但 2D 分段)
全部 Q、K
全部 Q、K
V 是否应用 RoPE
❌ 不应用
❌ 不应用
❌ 不应用
❌ 不应用
❌ 不应用
频率维度策略
统一(base^(-2i/d))
统一(仅在子空间)
d/2 用 block 频率
d/2 用 local 频率
三段式
高/中/低频不同处理
三段式
类似YaRN
长度外推策略
❌ 无
✓ 高Base + 训练
2D结构本身
有一定外推能力
✓ YaRN + 高Base
✓ llama3 scaling
KV Cache 结构
Full K'(旋转后)+ V
压缩 c^KV + k^R
(显著更小)
Full K' + V
Full K' + V
Full K' + V
注意力温度缩放
❌ 无
❌ 标准 √d
❌ 无
✓ YaRN 温度 t
部分版本有
最大上下文
4k(L2)
128k
128k(GLM5+)
128k
128k(3.1)
训练时是否用 RoPE Scaling
❌ 无
✓(内置于MLA)
部分版本
✓ YaRN 融合训练
✓ llama3 策略
超参数对比速查表
模型 RoPE Base RoPE 类型 d_head GQA / MLA 训练 Context 外推最大 Context
LLaMA 1 10,000 Standard RoPE 128 MHA 2,048 2,048(无外推)
LLaMA 2 10,000 Standard RoPE 128 GQA(70B) 4,096 4,096(无外推)
LLaMA 3.0 500,000 Standard RoPE(高Base) 128 GQA 8,192 ~16k(有退化)
LLaMA 3.1 500,000 llama3 scaling 128 GQA 128,000 128k
Mistral 7B 10,000 Standard RoPE 128 GQA 8,192(SWA) 32k(Sliding Window)
ChatGLM3 / GLM4 10,000 2D RoPE 128 MHA / MQA 32k → 128k 128k
GLM5(GLM-4.1) 待确认(估计高) 2D RoPE + 扩展 128 MHA/GQA 128k 1M(实验)
Qwen2 / Qwen2.5 1,000,000 YaRN RoPE 128 GQA 128k 128k(YaRN扩展)
DeepSeek V2 10,000 解耦 RoPE(MLA) 128(head) MLA(极致压缩) 128k 128k
DeepSeek V3 / V3.2 未公开(估计500k+) 解耦 RoPE(MLA)+ MoE 128 MLA 128k 128k
GQA vs MLA:
· GQA(Grouped Query Attention):多个 Q head 共享一个 KV head,减少 KV Cache,但 K/V 仍是全维度向量。
· MLA(Multi-head Latent Attention):DeepSeek 独创,将 KV 压缩到低秩 latent 空间,压缩比更激进,且解耦了 RoPE。
推理 KV Cache 视角下的 RoPE 差异
RoPE 的实现方式直接影响 KV Cache 的大小和推理内存占用——这是工程落地中最关心的指标。

KV Cache 内存占用对比(假设 batch=1,seq=128k,层数=60)

// 通用公式 KV_Cache_GB = seq_len × num_layers × kv_dim_per_token × sizeof(dtype) / (1024³) // Standard RoPE(如 LLaMA 3.1 8B,GQA 8 KV heads,d_head=128) kv_dim = 8 × 128 × 2(K+V)= 2048 维/token KV = 131072 × 32 × 2048 × 2(fp16)/ 1024³ ≈ 16 GB // DeepSeek V3(MLA,d_c=512,d_R=64,num_layers=61) kv_dim = 512 + 64 = 576 维/token KV = 131072 × 61 × 576 × 2(fp16)/ 1024³ ≈ 8.7 GB → 节省约 45%(相对同规模 GQA) // Qwen2.5 72B(GQA,8 KV heads,d_head=128) kv_dim = 8 × 128 × 2 = 2048 维/token KV = 131072 × 80 × 2048 × 2 / 1024³ ≈ 40 GB

Cache 内容结构可视化

Standard RoPE KV Cache(每token/层)
K'[0]
K'[1]
K'[2]
K'[3]
V[0]
V[1]
V[2]
V[3]
K' = 旋转后(含位置信息)· V = 原始
MLA KV Cache(每token/层)
c[0]
c[1]
c[2]
c[3]
kR[0]
kR[1]
绿色 c^KV(d_c=512)= 语义 K 和 V 的压缩表示
红色 k^R(d_R=64)= 位置相关的 key(旋转后)
V 从 c^KV 上投影得到,无需单独存储
推理时的 MLA 技巧:在实际 batched inference 中,MLA 可以将 W_UK 吸收进 W_Q(类似 low-rank 合并),使得 c^KV 上投影的代价摊销,不增加额外计算步骤。这是 DeepSeek 工程实现的一个精妙之处。
总结与选型思维框架

各模型 RoPE 设计的核心驱动力

DeepSeek V3 / V3.2
MLA 解耦 RoPE

核心目标:极致压缩 KV Cache。通过将语义信息(压缩至 c^KV)与位置信息(k^R)解耦,在不损失 RoPE 相对位置感知的前提下,使 KV Cache 压缩到标准方案的 1/5 以内。适合长序列、大 batch 高吞吐推理场景。

独特之处
位置编码与KV压缩完全解耦
代价
推理时需上投影矩阵(可优化)
适用场景
长上下文生产推理
GLM4 / GLM5
2D RoPE

核心目标:支持填空式(Blank Infilling)训练目标。2D 位置 ID 让模型能区分"我在原文的哪个位置"和"我在这个生成 span 内的第几个 token",是 GLM 系列特殊训练方式的必然产物。

独特之处
双位置ID,block/local分离
代价
位置ID计算复杂,工程上需特殊处理
适用场景
文档填写、结构化生成
Qwen2.5
YaRN + 超高 Base

核心目标:最优长序列外推性能。通过超高 base(1M)+ YaRN 三段式频率处理 + 注意力温度缩放,在维持短序列性能的同时,无损地将有效上下文扩展到 128k+,是目前工程化最成熟的长度外推方案。

独特之处
三段式频率+温度缩放
代价
超参数(α、β、scale)调校复杂
适用场景
超长文档理解/RAG
LLaMA 3.1
高 Base + llama3 Scaling

核心目标:简单有效的长度扩展。高 base(500k)已经覆盖大部分场景,llama3 分段策略保护高频维度不被过度插值。方案工程友好、可解释性强,是社区标准化程度最高的选择。

独特之处
工程简洁,社区兼容性最好
代价
外推性能略弱于YaRN
适用场景
通用场景微调/部署

决策树:如何选择 RoPE 策略

你的场景
KV Cache 是瓶颈?
是 →
选 MLA 解耦 RoPE
DeepSeek V3 架构
否 →
需要 >32k 上下文?
是 →
选 YaRN / llama3
Qwen / LLaMA 3.1
否 →
需填空/结构化任务?
是 →
选 GLM 2D RoPE
否 →
Standard RoPE 即可

一句话总结各模型的 RoPE 哲学

// 各模型 RoPE 核心哲学(可直接背诵给听众) Standard RoPE: "一把钥匙开一把锁" — 简单、稳健、有上限 LLaMA 3: "换把更大的钥匙" — 提高 base,原理不变,工程友好 Qwen2.5 YaRN: "不同长度的钥匙组合"— 分频率差异化处理,最优外推 GLM 2D RoPE: "双面钥匙" — 两套位置坐标系,服务填空任务 DeepSeek MLA: "钥匙和锁分开放" — 位置信息与语义信息解耦,极致省内存
讲给别人时的核心记忆点:
1. 所有模型都不对 V 做 RoPE——位置感知只需在 attention score(QKᵀ)中体现。
2. Base 越大 → 旋转越慢 → 模型能"区分"越长的距离。
3. DeepSeek 解耦 RoPE 的本质是:让 KV 压缩不破坏位置信息
4. GLM 2D RoPE 是 prefix-LM 训练目标的直接产物,不是为了长度外推。
5. YaRN 的三段式处理源自一个观察:高频维度不需要外推(已在训练范围内),低频维度才需要 NTK 缩放