当前位置: 首页 > news >正文

现代 LLM 的核心架构设计其四:GQA

多头注意力 MHA#

我们在前面展开过:标准 Transformer 使用多头注意力机制, 个注意力头各自拥有独立的 Q、K、V 投影矩阵:

而其中每个头独立学习不同的注意力模式。最终的输出是 个头的拼接:

这本身是为了增加表达能力的合理设置,但 KV Cache 出现后,KV Cache 需要为每个头单独存储一份 K 和 V。这一结构设计带来了较大的内存压力。

2. 多查询注意力 MQA#

19 年,Shazeer(就是 SwiGLU 那位)在 Fast Transformer Decoding: One Write-Head is All You Need 提出了一个激进方案,即多查询注意力(Multi-Query Attention,MQA)。

在 MQA 中, 个 Query Head 共享同一组 K 和 V,只有一个 K 头和一个 V 头:

意思是无论有多少个 Query Head,它们查的都是同一份 K 和 V。
这样,KV Cache 的大小瞬间降到 MHA 的 。对于 64 头的模型,直接省了 98.4% 的 KV Cache 内存。

但代价也很明显:不同 Query Head 已经被证明会关注不同模式,把它们绑定到同一份 K、V 上,必然损失表达能力。

实验结果也印证了这一点:MQA 的训练更不稳定,在质量敏感的任务上效果有明显下降。

3. 分组查询注意力 GQA#

目前的主流方案来自 23 年的论文 GQA: Training Generalized Multi-Query Transformer for Multi-Head Attention ,它其实更像是前两个方案的折中:

把 个 Query Head 分成 组,每组共享一个 K 头和一个 V 头。 是一个可调参数。

这其实是把质量与效率的权衡变成了一个连续可调的超参数:你想省多少显存,就设置多少组。

举个例子,假设 ,那么其对应关系即如下:

Query Head使用的 KV Head
Q₀KV₀
Q₁KV₀
Q₂KV₁
Q₃KV₁
Q₄KV₂
Q₅KV₂
Q₆KV₃
Q₇KV₃

于是注意力实际上是这样的:

然后,所有组的输出再拼接到一起:

看得出来,GQA 的改动非常小,它只改变了 K 和 V 的投影矩阵列数,简单对比如下:

  1. MHA:,,
  2. GQA:,,

GQA 的 K、V 列数从 缩小到 ,Q 保持不动。这意味参数量节省了 ,同时 KV Cache 也相应缩小。

而从实现角度看,现代框架通常不会真的复制 K、V。而是在进入注意力计算前,先针对头索引 构造一个映射:

然后计算时直接索引:

这样来实现只共享内存,不会真的复制数据。

4. 大模型中的实际配置#

GQA 在提出之后迅速成为主流方案。如今绝大多数开源大模型都已经放弃传统 MHA,转而采用 GQA 来控制 KV Cache 的规模。

一些代表性开源模型如下:

模型KV HeadQuery HeadQ:KV
LLaMA 2 70B8648:1
LLaMA 3 8B8324:1
LLaMA 3 70B8648:1
LLaMA 3 405B812816:1
Mistral 7B8324:1
Mixtral 8x7B8324:1
Qwen 2.5 72B8648:1
Gemma 2 9B8162:1

值得一提的是:8 个 KV Head 几乎成为行业默认值。

这是因为对于常见的 个 Query Head 而言,8 个 KV Head 已经能够保留足够丰富的注意力模式,同时又能让 KV Cache 缩小到原来的 左右,这是大量实践下的优解。

http://www.jsqmd.com/news/1089067/

相关文章:

  • 龙邱树莓派扩展板电路解析与智能车模实验指南
  • 魔兽争霸III终极优化指南:三步解决宽屏适配与性能提升的完整方案
  • GPT-4的2%参数激活真相:MoE稀疏路由与硬件协同机制解析
  • 基于浮空飞艇的广域穿云全域感知、虚实孪生建模重构及自愈合宽带专网融合指挥系统技术方案
  • 软考冲刺阶段最危险的7种伪努力,第4种正在悄悄毁掉你的通过率——附21天纠偏训练表
  • 终极窗口置顶指南:如何用AlwaysOnTop让重要窗口永不消失
  • OneMore:160+功能扩展,让OneNote成为您的全能笔记中心
  • 高性能图像识别自动化框架:MaaFramework的零依赖架构设计与跨平台实现
  • 【GNSS】从地心到星体:多坐标系协同定位的工程实践
  • 告别网络壁垒:手把手部署nfs-subdir-external-provisioner离线镜像全攻略
  • 从LTP到BRINT:LBP改进算法的演进之路与实战选型
  • 如何用XXMI启动器一站式管理所有热门二次元游戏模组:完整指南
  • 双系统时间同步:从BIOS时区差异到Ubuntu与Windows 11的协同校准
  • 微信数据恢复终极指南:3步解密你的珍贵聊天记录
  • GEC6818开发板:从核心特性到多领域应用实战解析
  • 终极Sketch设计标注工具:Sketch MeaXure完整使用指南
  • 面试官灵魂拷问:如何用 C++ 线程池避免死锁?大部份人答不上来!
  • 2026潮州黄金回收白银回收铂金回收旧料回收怎么选?五家高实价铂金白银线下门店测评清单 + 联系方式
  • 微信小程序自动化反编译与实时监控打包方案
  • 你的聊天记录被“锁“起来了?三分钟解锁微信数据库的实用指南
  • 更换 Kingbase V9 License 踩坑记
  • 大模型MoE架构揭秘:稀疏激活与专家路由的工程真相
  • STM32H743+CubeMX-定时器TIM互补PWM驱动(带死区控制与电机应用)
  • Kali 2023.1 实战:一站式部署DVWA渗透测试靶场
  • AI 代币经济模型设计:从激励机制到链上治理的 DApp 工程实践
  • 斐讯N1 OpenWrt单臂路由实战:从旁路到主路由+AP的进阶配置
  • K-means面试核心考点:从目标函数、收敛性到工程陷阱全解析
  • Docker容器化复现CVE-2018-2628:WebLogic T3协议反序列化漏洞实战
  • 从舞台到算法:用DDPG的“演员-评论家”框架攻克连续控制难题
  • 【ns-3】集成5G-LENA模块:从源码到仿真的完整指南