简介:近期某主流开源大模型放弃MLA、重回MQA,打破了“开源架构已收敛到MLA”的判断。本文系统对比MLA与MQA在KV缓存占用、解码带宽、实现复杂度、系统兼容性与迁移成本上的差异,梳理MHA/GQA/MQA/MLA技术谱系,并给出场景化的选型建议与切换注意事项,帮助开发者理解“系统级耦合优化比单点创新更难”背后的工程逻辑。
最近,某旗舰开源大模型发布新版本,最大的架构变化是放弃了其前两代一直在用的MLA(Multi-head Latent Attention,多头潜在注意力),转回结构更简单的MQA(Multi-Query Attention,多查询注意力)。此前业内一度认为,先进开源模型的架构已经“收敛”到MLA,剩下的只是小修小补;而多个主流开源模型仍在沿用MLA的背景下,这次转向直接打破了这个判断,也在近期的国际AI学术会议上成为热议话题。
这背后是一个关键的工程判断:系统级耦合优化比单点创新更难,也更重要。MLA是典型的“单点创新”——它在算法层面把KV缓存压得极小;而MQA结构看似朴素,却为前缀缓存、跨层KV共享、分布式推理调度等系统级优化留出了空间。选择哪条路线,不只影响模型本身,更决定了整个推理服务体系的演进空间。
本文将围绕技术架构、性能表现、工程复杂度、生态兼容性、迁移成本等维度,系统对比这两类注意力优化思路,并给出场景化的选型建议。
在对比之前,先厘清这两个机制在注意力技术谱系中的位置。
MHA(Multi-Head Attention,多头注意力)是Transformer的标准形态:每个注意力头拥有独立的Query、Key、Value投影。它表达能力最强,但推理时KV缓存需要保存每个头的K和V,显存占用随头数线性增长,在长上下文场景下成为主要瓶颈。
MQA(Multi-Query Attention,多查询注意力)是对MHA的直接简化:所有Query头共享同一组Key和Value。KV缓存被压缩到MHA的约1/N(N为头数),解码时需要从显存读取的数据量大幅减少,推理带宽压力随之下降——代价是模型表达能力可能略受影响。
GQA(Grouped-Query Attention,分组查询注意力)是两者的折中:将多个Query头分组,每组共享一组KV,在质量与显存之间取得平衡,目前被大量开源模型采用。
MLA(Multi-head Latent Attention,多头潜在注意力)则另辟蹊径:不直接减少KV头数,而是通过低秩压缩把KV映射到一个低维潜在向量,推理时只缓存这个压缩表示,需要时再还原(或通过矩阵“吸收”技巧折算进计算)。它的设计目标是显存占用大幅下降的同时,质量尽量贴近MHA,但引入了额外的投影计算和更高的工程复杂度。
用示意性伪代码可以直观看出三者的结构差异:
# MHA:每个头独立的K/V投影K_i = X @ W_k[i]; V_i = X @ W_v[i] # i = 1..h,需缓存 h 组 KV# MQA:所有头共享一组K/VK = X @ W_k; V = X @ W_v # 仅缓存 1 组 KV# MLA:将KV压缩为低秩潜在向量c_kv = X @ W_dkv # 只缓存低秩向量 c_kvK = c_kv @ W_uk; V = c_kv @ W_uv # 推理时还原,可吸收进注意力计算
尽管实现路径差异很大,MLA与MQA在目标和底层逻辑上有本质共性:
MQA只缓存一组KV,压缩比约等于注意力头数,效果显著且边界清晰可预测。MLA通过设计低秩潜在向量的秩,压缩比可以做得很大,但通常还需要额外缓存一个与位置相关的分量以支持RoPE,整体缓存规模介于MQA与MHA之间,实际收益取决于具体设计。
MQA缓存缩小后,每步解码读取的数据量减少,带宽瓶颈直接缓解,性能收益“简单直接”,在大批量、长上下文解码场景尤其容易兑现。MLA虽然缓存小,但引入了额外的低秩投影计算,为避免这些计算成为新瓶颈,需要用矩阵吸收技巧把投影折进注意力运算。这使得它的性能高度依赖算子优化水平:算子写得足够好,表现可以非常出色;优化不到位,反而可能拖慢整体速度。
MQA结构简单,只需修改KV投影的共享方式,训练流程几乎不需要大改,调参经验成熟。MLA则需要设计低秩投影维度、处理位置编码的解耦问题(位置相关部分无法直接压缩)、并在训练与推理之间维护一套等价变换,实现复杂度明显更高,调试与调优门槛也更高。
这是本轮“重回MQA”讨论的核心,也是两类方案差异最实质的体现:
从公开讨论看,MLA的质量贴近MHA、损失较小;MQA简化更激进,理论上质量风险略高,但实际是否可感知取决于模型规模、数据量与训练方法。一个重要的经验观察是:某支从MLA转回MQA的团队,其新版本模型在数学推理、代码能力与Agent指令执行上均有提升,幻觉现象明显减少,整体体验与同代主流开源模型相当——这说明当系统整体优化到位时,单一机制带来的质量影响可以通过其他手段补偿。
| 维度 | MHA | GQA | MQA | MLA |
|---|---|---|---|---|
| KV共享方式 | 不共享 | 分组共享 | 全部共享 | 低秩压缩 |
| KV缓存占用 | 最大 | 中等 | 最小 | 极小(略高于MQA) |
| 解码带宽压力 | 高 | 中等 | 低 | 低,但含额外投影计算 |
| 实现复杂度 | 低 | 低 | 低 | 高 |
| 算子依赖 | 通用即可 | 通用即可 | 通用即可 | 需专用优化算子 |
| 前缀缓存友好度 | 高 | 高 | 高 | 需额外适配 |
| 质量下限 | 最高 | 较高 | 略低,依赖训练补偿 | 接近MHA |
| 团队工程能力要求 | 中 | 中 | 中 | 高 |
MLA与MQA代表了两条优化路线:前者在算法单点上深度创新,把KV缓存压缩到极致;后者以更朴素的结构换取系统级简洁,为前缀缓存、跨层共享、分布式推理等更多优化留出空间。某旗舰开源模型从MLA转回MQA的案例说明:大模型研发中的架构选择不是孤立的算法问题,而是系统级耦合问题——注意力机制必须与缓存体系、调度策略、硬件带宽、算子生态放在一起权衡,真正决定竞争力的是系统整体效率,而非某一点的精巧。对开发者而言,选型的关键是:基于自身的上下文长度、并发形态、团队工程能力与成本结构,选择能与自己系统级优化形成正反馈的路线,并通过完整的评估与灰度流程控制迁移风险。