多头潜在注意力 (MLA) — 综述
Source: Dev.to
MLA 解决了什么问题?
Klover: 先从基础说起。MLA 解决了什么问题?
Me: 它可以节省 KV 缓存。与其为每个 token 存储完整的键和值向量,MLA 只存储一个更小的潜在向量。推理时需要时再把该潜在向量解码回键和值。
Klover: 好——你抓住了核心概念。再问两个后续问题。第一:这种压缩到底是怎么机械地实现的?第二:如果目标是降低内存,为什么不直接使用更少的注意力头?
压缩机制以及为何不直接减少头数
Me: 压缩是矩阵乘法。先把完整的 KV 编码到一个更小的潜在空间,需要时再解码回来。至于减少头数——不同的头会关注输入的不同方面。如果直接削减头数,就会完全失去这些不同的视角。MLA 保留了多头之间的关系,只是把所有信息紧凑地存储。
Klover: 对。关键细节:MLA 使用 学习的线性投影。有一个下投影矩阵 W_c 用来把 KV 压缩成潜在向量,随后使用上投影矩阵 W_uk 和 W_uv 在注意力计算时为每个头重新构造键和值。
需要注意的是——这是一种 学习得到的 压缩,而不是事后处理的压缩。模型在训练期间学习 如何 压缩,使得潜在向量捕获真正对注意力重要的信息。这与事后直接截断或删除头的做法根本不同。
内存 vs 计算
Klover: 下一个问题:MLA 在训练时会节省计算吗?
Me: 不会,实际上会增加计算量。你需要额外的编码和解码步骤——压缩与解压并非免费。
Klover: 正确。节省的主要是 内存,而不是计算。推理时,KV 缓存是主要瓶颈——它随序列长度和批量大小线性增长,限制了可以处理的 token 数量或并发用户数。MLA 能显著缩小该缓存。
对训练内存的质疑
Me: 等等——训练时的 KV 缓存也不是也有好处吗?前向传播时仍然需要在内存中保存 KV。
Klover: 这点你说得对。训练时,前向传播的激活需要被保存以供反向传播使用。如果存储的是潜在向量而不是完整的 KV,就会减少激活内存——这在精神上类似于梯度检查点(gradient checkpointing)。所以,确实有训练内存的收益。
但相对收益远小于推理时的收益。训练时批次大小和序列长度是固定的,激活内存只是整体内存预算(模型参数、优化器状态、梯度等)的一部分。推理时,KV 缓存往往是 主要 的内存开销,尤其是处理长序列时。MLA 的优势正体现在这里。
有什么风险?
Klover: 最后一个问题。这种方法有什么风险?
Me: 它是有损压缩。把 KV 压缩到低维空间会导致信息丢失,注意力质量可能下降。
Klover: 正确。潜在维度是一个调节旋钮——维度越小,压缩率越高、内存越省,但信息损失也越多。压得太狠会导致注意力模式退化。关键在于找到一个折中点:在不显著降低质量的前提下实现显著的内存节省。
复习时间:2026 年 2 月 4 日。曝光 → 开发中。所有核心概念均已保留,对训练内存收益的质疑也得到良好回应。