
安全好用的OpenApi
多头注意力机制是Transformer模型的关键部分,论文《Attention is All You Need — 2017 Google》提出了注意力机制,通过并行计算来捕获序列中token之间的全局依赖关系。这种注意力机制是一种颠覆性的创新,打破了RNN和CNN模型的序列约束,直接推动了语言模型的大规模演进。
在多头注意力机制中,每个头的键、值和查询都有一个专用的投影矩阵。例如,原始 Transformer 模型(在 Transformer 论文中)中有 8 个头,应该有 8×3(键、值和查询)= 24 个独立的投影矩阵。键、值和查询将分别使用它们的投影矩阵投影到h 个不同的副本上。在上述具有 8 个头的 Transformer 模型中,键将有 8 个投影副本,值将有 8 个投影副本,查询也是如此。
多头注意力机制
快速Transformer解码:只需一个写入头即可——2019谷歌这篇论文指出Transformer的一个主要挑战是增量推理的速度,并且它受到重新加载编码注意层状态的大型“键”和“值”张量所需内存带宽的限制。本文引入了多查询注意机制,让所有头共享相同的键和值。对于8个以上头的注意情况,键只有1个副本,值只有1个副本,查询仍然有8个投影副本。采用多查询注意机制后,解码器增量推理速度提高了13.9倍(基线有8个头)。
虽然多查询注意力机制可以显著提高 Transformer 的增量推理速度,但Google 在 GQA: Training Generalized Multi-Query Transformer Models from Multi-Head Checkpoints — Dec 2023 中提到,多查询注意力机制可能会导致质量下降和训练不稳定。为了克服这种质量牺牲,本文引入了分组查询注意力机制。
所有注意力头并不共享键和值,而是一组注意力头共享一个键和值的投影矩阵。本文在 T5(文本到文本传输)Transformer 模型中测试了 MQA,T5-Large 有 16 个注意力头,T5-XXL 有 64 个注意力头。本文为键/值选择了 8 组(8 个注意力头共享相同的键/值投影矩阵)。本文表明,与采用传统多头注意力的 T5 模型相比,采用分组查询注意力的 T5 模型具有 5 到 6 倍的推理速度和相似的质量(从下图中,我们仍然可以看到质量略有下降,即使它非常微小)。
DeepSeek-V2:一种强大、经济、高效的混合专家语言模型为注意力模块引入了多头潜在注意力 (MLA)。“MLA 利用低秩键值联合压缩来消除推理时间键值缓存的瓶颈,从而支持高效推理。MLA 的核心是对键和值的低秩联合压缩,以减少 KV 缓存。”
低秩压缩是一种用于减少深度学习模型的计算和内存需求的技术。关于它的论文很多,例如:
DeepSeek V1 采用旋转位置嵌入 (RoPE) 来携带 token 的位置信息(Transformer 采用正弦位置编码,详情请参考我的 Transformer 清晰解释博客)。由于低秩 KV 压缩与 RoPE 不兼容,DeepSeek V2 采用了解耦的 RoPE 策略,即使用额外的多头查询和共享密钥来携带 RoPE。
论文表示MLA表现出比MHA更好的性能,并且MLA所需的KV缓存量(小型MoE模型为14%,大型MoE模型为4%)明显小于MHA。
上述测试报告中 MLA 的质量超过了 MHA,这让我很惊讶,我以为 MLA 的质量与 MHA 差不多,甚至会略差一些。因为每个头的 MHA 都有自己的投影键、值和查询,这使得注意力模块能够轻松地学习关注不同的位置。