2025算法八股——深度学习——MHA MQA GQA

MHA、MQA、GQA 都是深度学习中注意力机制的相关概念,其中 MHA 是标准的多头注意力机制,MQA 和 GQA 则是其优化变体,以下是它们的区别、优缺点介绍:

区别

  • MHA(多头注意力):是 Transformer 架构的核心组件,会将输入的查询(Query)、键(Key)和值(Value)分别投影到多个不同的头中,每个头都拥有专属的 Q、K、V 映射参数,它们独立计算注意力,然后将多个头的结果拼接后投影回原始维度。
  • MQA(多查询注意力):属于 MHA 的优化方案,其所有的查询头共享同一组 K、V 参数,每个头依然保持独立的 Q,以此在保持查询头多样性的同时,大幅减少内存占用。
  • GQA(分组查询注意力):是 MHA 和 MQA 的折中方案,它先把查询头划分成若干个组,每组配备独立的 K、V 参数,而组内所有查询头共享该组的 K、V 来计算注意力,最后将头部输出拼接后经线性层整合。

优缺点

  • MHA
    • 优点:能让模型在不同的子空间中学习不同的注意力模式,提高了模型的表达能力,可使模型关注输入序列的不同部分,并且支持并行计算,能在 GPU 上高效执行。
    • 缺点:每个查询头都需要与多个键计算注意力,计算量较大,并且还需要存储多个 Q、K、V 头,大模型中显存占用较多。
  • MQA
    • 优点:由于所有查询头共享 K、V,极大减少了计算成本,尤其适用于推理阶段,也降低了内存占用,对处理超长文本较为友好。
    • 缺点:仅有一个 K、V 组,可能会让模型的表达能力受到影响,难以很好区分不同查询头的语义信息,上下文信息捕捉能力有所下降。
  • GQA
    • 优点:相比 MHA,减少了键值计算的开销,计算效率有所提升,同时在视觉 Transformer 等计算机视觉任务里也能表现不错,可降低视觉 Transformer 在图像数据上的计算复杂度。
    • 缺点:因查询头共享 K、V,会让模型在灵活性上有一定损失,相对标准 MHA,其表达能力可能会降低。

备注:

在 MQA(多查询注意力)中,K、V 的维度不会除以头数 H 。

在标准的 MHA(多头注意力)里,假设模型隐藏层维度是 dmodel​,注意力头数为 H,通常会将 dmodel​ 均匀划分到各个头中,所以每个头的 K、V 维度是 dmodel​/H,K、V 的张量形状是 (batch_size, seq_len, H, dmodel​/H) 。但 MQA 中所有查询头共享同一组 K、V 参数,其 Key 与 Value 线性层输出维度为 (batch_size, seq_len, dmodel​),也就是不再需要按头数对维度进行切分,K、V 本身的维度就是原始的模型维度,后续会通过广播机制将它们扩展到和查询头数量相匹配的形状以完成注意力计算 。

MQA减少计算量体现在两方面:

1、减少多余投影的计算次数。

2、  标准的MHA每个头都拥有专属的 Q、K、V 映射参数 每个头的 Ki​ 是独立存储的 MQA 通过 K 的共享和广播,减少了内存访问的离散性,提高了硬件利用率。

3、减少对额外的每个头的K V投影矩阵的梯度计算。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/97885.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/97885.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vue3》》eslint Prettier husky

安装必要的依赖 npm install -D eslint eslint/js vue/eslint-config-prettier prettier eslint-plugin-vue 初始化 ESLint 配置 npm init eslint/config// eslint.config.js // 针对 JavaScript 的 ESLint 配置和规则。保持 JavaScript 代码的一致性和质量 import js from &qu…

Custom SRP - Point and Spot Lights

https://catlikecoding.com/unity/tutorials/custom-srp/point-and-spot-lights/Lights with Limited Influence1 Point Lights1.1 Other Light Data (Point )同方向光一样,我们支持有限数量的 Other Light.尽管场景中可能有很多 Other Lights,可能有超过光源上限的光源时可见的…

hive数据仓库的搭建

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言一、内嵌模式二、本地模式三、远程模式前言 HIVE是基于HDFS的数据仓库,要首先搭建好HADOOP的集群才可以正常使用HIVE,HADOOP集运搭建详见…

域名SSL证书免费申请lcjmSSL

.-.lcjmSSL(又名“来此加密”)是一个提供免费SSL证书申请的一站式平台。它支持单域名、多域名以及泛域名证书申请,且单张证书最高可覆盖100个域名,让您轻松实现全站HTTPS加密。为什么您的网站必须安装SSL证书?数据加密…

“能量逆流泵”:一种基于电容阵与开关矩阵的超高效大功率降压架构

摘要本文提出并验证了一种面向大功率降压应用的革命性电源架构——"能量逆流泵"(Energy Inversion Pump, EIP)。该架构摒弃了传统Buck转换器中的电感元件,通过高速开关矩阵控制的电容阵列,将高压侧能量以"分时、分…

打造精简高效的 uni-app 网络请求工具

在 uni-app 开发中,网络请求是连接前端与后端的核心桥梁。一个设计良好的请求工具能够显著提升开发效率,减少重复代码。本文将分享一个精简版的 uni-app 网络请求工具实现,它保留了核心功能同时保持了足够的灵活性。设计思路一个优秀的网络请…

【面试场景题】交易流水表高qps写入会有锁等待或死锁问题吗

文章目录一、先明确交易流水表的核心特性二、InnoDB的锁机制在流水表写入场景的表现1. 行锁(Record Lock):基本不涉及2. 间隙锁(Gap Lock)与Next-Key Lock:几乎不触发3. 表锁:仅在极端场景出现三…

项目部署——LAMP、LNMP和LTMJ

前情提要问:如何通过nginx的反向代理,代理多台虚拟主机(一台apache服务器上的虚拟主机)?1.在nginx的配置文件中,将基于域名的访问改为基于端口的访问(nginx.conf)upstream daili{ser…

晨曦中,它已劳作:一台有温度的机器人如何重塑我们的洁净日常

清晨六点,城市的轮廓在微光中逐渐清晰。某高端小区的路面上,一台灰色机身、线条流畅的机器正在安静地工作。它绕过停靠的车辆,精准地沿着路缘石前进,吸走落叶与尘土,遇到突然窜出的流浪猫时轻巧避让,仿佛有…

【最新高级版】酷柚易汛生产管理系统v1.2.8 +uniapp全开源+文档教程

酷柚易汛生产管理系统是基于FastAdminThinkPHPLayuiuniapp开发的生产管理系统,帮助企业数字化转型,打造智能工厂,专业为生产企业量身开发的一套完整的生产管理系统。主要包含以下模块:购货模块、生产模块、仓库模块、资料模块&…

40分钟的Docker实战攻略

一:什么是Docker (1)基本概念 Docker 是一种开源的 容器化平台,用于快速构建、部署和运行应用程序。它通过将应用程序及其依赖项打包到轻量级的、可移植的容器中,实现了环境一致性,解决了“在我机器上能运…

qt使用camke时,采用vcpkg工具链设置OSG的qt模块osgQOpenGLWidget

【免费】osgQOpenGLWidget嵌入qt模块,VS2022使用cmake的方式,工具链vcpkg资源-CSDN下载 CMake中设置 1.查找osg相关的库,同时也会设置对应include的路径 # 检查是否找到 osg find_package(OpenSceneGraph 3.6.5REQUIRED COMPONENTS osgosgUtilosgGAosgViewerosgDBosgAnimatio…

洛谷 P2245 星际导航(kruskal 重构树 + 倍增优化求路径最大边权)

题目链接 题目难度 洛谷上是蓝题&#xff0c;我觉得这道题挺简单的&#xff0c;一眼就看穿了&#xff0c;应该是绿题。 题目解法概括 kruskal 重构树 倍增优化求路径最大边权。 代码 #include <iostream> #include <vector> #include <algorithm> #in…

STM32H743-ARM例程1-IDE环境搭建与调试下载

目录实验平台环境搭建一、Keil MDK集成开发环境1.MDK简介2.MDK5安装3.程序下载与调试二、STM32CubeMX1.STM32CubeMX简介2.JAVA JRE安装3.STM32CubeMX安装4.STM32CubeH7库安装实验平台 硬件&#xff1a;银杏科技GT7000双核心开发板-ARM-STM32H743XIH6&#xff0c;银杏科技iTool…

FPGA学习篇——Verilog学习MUX的实现

PS&#xff1a;目前手上仍然没有板子&#xff0c;按照野火视频的讲解&#xff0c;目前我们只能做到前面六步&#xff08;其实第一步设计规划也是需要看板子的硬件的&#xff0c;但是现在没有板子就完全与野火传授的板子一致来看&#xff09; 首先我们以最简单的2路选择器MUX2_1…

OpenStack 学习笔记

OpenStack 1. 什么是 OpenStack 1.1 OpenStack 发展史 2006 年亚马逊推出 AWS&#xff0c;正式开启云计算的新纪元 2010 年 7 月美国国家航空航天局&#xff08;NASA&#xff09;与 Rackspace 合作&#xff0c;共同宣布 OpenStack 开放源码计划&#xff0c;由此开启了属于 Open…

mysql小数取整

1 向下取整 SELECT FLOOR(123.456); -- 结果: 1232 向上取整 SELECT CEIL(123.001); -- 结果: 1243 四舍五入 SELECT ROUND(123.456); -- 结果: 123 SELECT ROUND(123.556); -- 结果: 1244 截断&#xff08;不四舍五入&#xff0c;直接截断小数位&#xff09; SELECT …

Day43 PHP(mysql不同注入类型、mysql不同注入点、mysql传输不同数据类型 )

一、不同注入类型实际&#xff1a;我们未知sql是哪种类型&#xff0c;只能靠试/使用sql工具原理&#xff1a;闭合程序员写的sql语句&#xff0c;并且执行我们所需要的sql语句&#xff0c;最后将闭合后多余的 用-- 或者#注释掉。 总结一下就是先闭合&#xff0c;后注释。共四种…

Linux应用开发(君正T23):三网智能切换及配网功能

前段时间接手了一个监控项目&#xff0c;其中甲方对于设备的要求有一条就是实现网口eth、WiFi、4G三种手段的联网方式并且当某一个网络不好的时候就去切换到下一个能用的网络&#xff0c;让监控设备持续不断的有网络&#xff0c;保证监控数据的上传。这个部分的功能就交由我来实…

IvorySQL 4.6:DocumentDB+FerretDB 实现 MongoDB 兼容部署指南

背景 MongoDB 诞生之初&#xff0c;便以出色的易用性与详尽的驱动程序文档脱颖而出&#xff0c;堪称对传统关系型数据库的一次重要革新&#xff0c;也正因如此&#xff0c;它迅速成为开发者社区的热门之选。 然而&#xff0c;随着其许可模式从开源转向 SSPL 许可证&#xff0…