MLA(多头潜在注意力,第 4150 篇)的账本是:把每 token 的 KV cache 从 $2\, n_h d_h$ 压到压缩维度 $d_c$。这篇讲它推导中最别扭的一步——RoPE 和"权重吸收"的冲突,以及解耦 RoPE 这个解法。
回顾:吸收为什么省 cache
MLA 把 K/V 的计算改为先压后升:
$$ c_t = W^{DKV} h_t \in \mathbb{R}^{d_c}, \qquad k_t = W^{UK} c_t,\quad v_t = W^{UV} c_t . $$
推理时 cache 只存 $c_t$。关键在于打分和输出都可以重排:
$$ q_m^\top k_t = \big(W^{UK\top} q_m\big)^\top c_t,\qquad \text{令 } \tilde q_m = W^{UK\top} q_m \text{(预合并,与 cache 无关)}, $$
$$ \mathrm{Attn}_m = \sum_t \alpha_{mt}\, W^{UV} c_t = W^{UV} \sum_t \alpha_{mt}\, c_t . $$
两个权重矩阵分别被吸收进 query 侧和输出侧,推理全程不需要物化 $k_t, v_t$:矩阵乘次数不变,cache 从 $2 n_h d_h$(如 128 头 × 128 维 × 2 = 32k 维/token)降到 $d_c$(如 512 维/token),约 64 倍。
冲突:RoPE 挡在吸收路径中间
现在加入位置编码。RoPE 要求对 $k_t$ 施加逐位置旋转:$\tilde k_t = R_t\, k_t = R_t W^{UK} c_t$。问题立刻出现:
$$ q_m^\top \tilde k_t = q_m^\top R_t W^{UK} c_t . $$
$R_t$ 夹在 $q_m$ 和 $W^{UK}$ 之间,而且每个 token 的 $R_t$ 都不同。$W^{UK}$ 没法再与 query 侧预合并——想算打分就得对每个 cache 条目现算 $W^{UK} c_t$ 再旋转,等于把 MLA 省下的矩阵乘全还回去,cache 也得存旋转后的完整 $k_t$(32k 维),MLA 名存实亡。
根因是结构性的:RoPE 是乘性位置编码,作用在表示空间内部;而 MLA 的省法是在表示空间外部做线性代数合并。乘性项坐在两个可合并矩阵之间,合并就断了。
解法:解耦 RoPE
DeepSeek-V2 的思路是釜底抽薪:主通道不要位置编码,位置编码交给一条独立的小通道。
- 内容通道:$q_m^{C} = W^{QC} h_m$,$k_t^{C} = W^{UK} c_t$——不旋转,吸收链完整保留;
- 位置通道:额外的小投影 $q_m^{R} = W^{QR} h_m$,$k_t^{R} = W^{KR} h_t$,维度只有 $d_r$(如 64),对这对通道施加 RoPE。由旋转的群性质:
$$ q_m^{R\top} R_m^\top R_t\, k_t^{R} = q_m^{R\top} R_{t-m}\, k_t^{R}, $$
相对性保持($R_m^\top R_t$ 只依赖 $t-m$),且这条通道本来就不需要吸收——它自己的投影矩阵与内容矩阵互不干扰。
- 打分 = 两通道之和:
$$ a_{mt} = \frac{q_m^{C\top} k_t^{C}}{\sqrt{d}} + \frac{q_m^{R\top} R_{t-m} k_t^{R}}{\sqrt{d_r}} . $$
位置信息完全由小通道承担,代价是每 token 多存 $d_r$ 维(位置的 key)——总 cache $d_c + d_r \approx 512 + 64 = 576$ 维,仍是 MHA 的约 1/56。注意 $d_r$ 小意味着位置通道频率少、分辨率有限,但位置通道只负责"距离先验",精细寻址主要靠内容通道的 Q·K 匹配——第 5150 篇的分辨率账在这里要分通道算。
为什么这是「解耦」而不是妥协
用第 5180 篇(频域视角)的话说:任何位置方案都是在给"位置频率谱"做分配。解耦 RoPE 把这个分配显式模块化:内容通道的核是平移不变的内容相似度,位置通道的核是纯粹的相对距离先验,两者在 logit 里相加、互不污染。工程上还有红利:位置通道维度小,旋转矩阵小,kernel 里的位置计算开销可以忽略。
小结
MLA 和吸收技巧是一阶线性代数,RoPE 是一阶位置编码,各自优雅,直接相乘就互相打架。解耦 RoPE 的贡献在于诊断出冲突的本质——"位置项不该坐在可合并矩阵之间"——于是给位置信息单独修一条路,代价仅 $d_r$ 维 cache。这种"冲突诊断 → 通道分离"的思路,后来在 MoE 路由、多模态对齐里反复出现,值得记住。