以精度换取吞吐:模型结构的极致压缩之路

显存带宽墙:为什么要动 Attention 的结构

在项目 11 中我们看到,KV Cache 的大小直接决定了显存占用。但在工程实践中,更大的瓶颈在于内存带宽(Memory Bandwidth)。在每一轮 Decode 中,GPU 必须将所有历史 KV Cache 从显存读取到计算核心。如果 KV Cache 太大,读取时间会远超计算时间,导致硬件利用率极低。

项目 12 探讨的是如何通过修改模型架构,在源头上“减小” KV Cache 的体积。

1. Multi-Head Attention (MHA) —— 基准线

  • 结构:每个 Query Head 都有一个对应的 Key Head 和 Value Head。
  • 缺陷:KV Cache 随头数线性膨胀。

2. Multi-Query Attention (MQA) —— 极端共享

  • 结构:所有的 Query Head 共享同一组 Key 和 Value Head。
  • 数学直觉:如果模型有 32 个头,KV Cache 的大小直接缩减为原来的 1/32。
  • 工程代价:虽然推理变快了,但模型表现会显著下降。因为所有头不得不共享同样的上下文关系,导致模型在处理复杂依赖时变得“短视”。

3. Grouped-Query Attention (GQA) —— 帕累托最优

  • 结构:介于两者之间。将 Query Head 分组,每一组共享一个 KV Head。例如 32 个 Query Head 分为 8 组,每组 4 个。
  • 现状:这是目前 Llama-3、Mistral 等主流模型的标配。它在推理速度(KV Cache 读取量)和模型表现之间找到了近乎完美的平衡。

4. Multi-head Latent Attention (MLA) —— 极致的低秩压缩

这是由 DeepSeek-V2 提出的创新架构,代表了目前多模态/大长上下文推理的最前沿。

核心逻辑: 传统 GQA 只是减少了 Head 的数量,但每个 Head 的维度仍然很大。MLA 引入了矩阵分解(Low-rank Adaptation)的思想。

  1. KV 压缩:它不直接存储 $d_{k} \times d_{v}$,而是将 KV 压缩到一个极小维度的 Latent 向量中(例如维度从 128 压到 32)。
  2. 解压缩:在推理时,通过一个矩阵乘法实时从 Latent 向量中“解压”出多头特征。
  3. 吸收权重(Weight Absorption):在生成时,可以将部分解压缩矩阵与模型的输出矩阵预先合并。
  • 惊人结果:MLA 实现了比 GQA 更高的压缩率,同时由于其 Latent 表示保留了更多的全量信息,模型质量甚至优于传统的 MHA。

实验与架构对比

你可以尝试构建一个小规模的 Transformer,分别实现上述架构并观察以下指标:

  • KV 读写流量:记录每一轮 Decode 需要搬运的 Bytes 数。MLA 通常能比 MHA 减少一个数量级的带宽消耗。
  • 困惑度(Perplexity)曲线:在相同训练步数下,观察 MQA 是否存在明显的 Loss 震荡,以及 GQA 和 MLA 是否能逼近 MHA 的上限。
  • 显存占用计算:计算在不同 Context Length 下,显存是何时耗尽的。

技术选型启示

作为架构师,理解这些差异意味着:

  • 如果你的场景是超长文本(1M+ Context),你几乎必须选择 MLA 或高压缩比的 GQA。
  • 如果你追求极速响应且任务简单(如情感分类),MQA 可以提供最高的吞吐量。
  • 如果你追求极致的生成质量(如诗歌创作),传统的 MHA 仍然是表达能力最强的。

总结

MQA、GQA 到 MLA 的进化路径,本质上是人类对 LLM 推理瓶颈——内存带宽——的深度围剿。我们不再一味地追求增加参数,而是学会了如何用更紧凑的数学表达来容纳同样丰富的信息。这是 LLM 从“学术模型”迈向“工业化产品”的最关键一步。

版权声明: 如无特别声明,本文版权归 sshipanoo 所有,转载请注明本文链接。

(采用 CC BY-NC-SA 4.0 许可协议进行授权)

本文标题:项目 12:架构的进化:MQA、GQA 与 MLA 深度解析

本文链接:https://www.sshipanoo.com/blog/ai/llm-roadmap/lab-12-mqa-gqa-mla/

本文最后一次更新为 天前,文章中的某些内容可能已过时!