@che_shr_cat: 1/ 多年来我们一直通过头部共享(GQA/MQA)来优化KV缓存,但我们忽略了一个基本假设:为什么……
摘要
这条推文挑战了关于Transformer需要独立的Q、K和V投影的基本假设,提出合并它们可以为KV缓存带来巨大的内存节省。
查看缓存全文
缓存时间: 2026/06/10 00:25
1/ 多年来,我们一直通过头共享(GQA/MQA)来优化 KV 缓存,但我们忽略了一个基本假设:为什么 Transformer 最初需要三个分离的 Q、K 和 V 投影?
事实证明,它们并不需要。合并它们能带来巨大的内存节约。
2/ 一篇新论文《Transformer 真的需要三个投影吗?》系统性地拆解了这一瓶颈。
Ali Kayyam、Anusha Madan Gopal 和 M Anthony Lewis 证明,共享 QKV 投影既可行又高效。
3/ 标准多头注意力独立地投影 Q、K 和 V。
作者分析了训练好的权重,发现了高度冗余:Key 和 Value 的投影空间余弦相似度为 0.73。Query 则明显不同(0.42)。
这为一种新变体 Q-K=V 提供了理由。
4/ 在 Q-K=V 配置中,我们将输入投影为 Q 和一个统一的 K 空间。
在自回归解码过程中,你只需在 KV 缓存中存储这个统一的 K 张量。这能立即将 KV 缓存内存占用减少 50%,且没有任何解压缩开销。
5/ 这并非要取代分组查询注意力(GQA)或多查询注意力(MQA),而是正交的。
将 Q-K=V 与 MQA 结合(Q-MQA)可使 KV 缓存内存减少惊人的 96.9%,在服务帕累托前沿上带来巨大转变。
6/ 这会不会破坏模型?几乎不会。
在 1.2B 参数规模下,Q-K=V 模型平均下游准确率仅下降 0.41%(HellaSwag、WinoGrande 等),困惑度仅增加 2.4%,影响微乎其微。
然而,对称变体 Q=K=V 在因果语言模型中则完全失败。
7/ 在重写训练流程之前,请注意以下事项: • 测试的最大规模为 1.2B 参数。 • 评估时上下文长度不超过 2k。 • 要获得实际速度提升,需要自定义 CUDA 内核,因为优化后的框架(如 FlashAttention)期望三个独立的 QKV 张量。
8/ 一个有趣的数学细节:作者证明,在完全 QKV 坍缩(Q=K=V)的情况下,线性核化注意力在数学上简化为一个具有自适应、输入条件更新的循环状态空间模型(SSM)。
这是注意力机制与 SSM 之间的一条优雅桥梁。
9/ 我认为这是一个被严重低估的架构变革。随着长上下文和边缘设备服务成为主要优先级,我们不能再容忍冗余的权重。
在训练中直接绑定 Key 和 Value 投影是一个简单且在数学上合理的胜利。
10/ 阅读完整论文和代码:
论文:https://arxiv.org/abs/2606.04032 代码:https://github.com/Brainchip-Inc/Do-Transformers-Need-3-Projections…
阅读我的完整技术解析:https://arxiviq.substack.com/p/do-transformers-need-three-projections…
你对坍缩 QKV 空间有何看法?
11/ 我还用漫画形式展示了这一架构变革,让原理更直观。请看下方!
相似文章
Transformer 真的需要三个投影矩阵吗?QKV 变体的系统性研究
本文系统研究了 Transformer 中 QKV 投影共享的各种变体,发现共享键和值投影(Q-K=V)可在仅造成 3.1% 困惑度下降的情况下实现 50% 的 KV 缓存压缩,结合 GQA/MQA 最高可达 96.9% 的缓存压缩率——以极小的质量损失实现实用的端侧推理。
KV缓存墙:为何固定大小内存的序列模型不断回归
探讨了Transformer推理中KV缓存日益增长的内存瓶颈,解释了为何像Mamba和RWKV这样的固定大小内存的替代架构重新获得关注。
@rohanpaul_ai: 有趣,这篇论文表明Transformer可能不需要独立的键和值投影就能表现良好。这篇论文…
本论文研究了Transformer是否需要独立的键和值投影,发现共享它们可将KV缓存减少50%,而困惑度仅增加3.1%,并且与GQA和MQA结合时进一步减少。
KV缓存正成为推理的内存层级结构
文章讨论了KV缓存如何演变为LLM推理的内存层级结构,优化解码过程中的内存管理。
@songhan_mit:探索我们在KV缓存压缩方面的持续努力:
来自Song Han的一条推文强调了在KV缓存压缩方面的持续工作,其中介绍了Weian Mao的一篇博客,讨论了论文中常常被忽视的系统级方面。