理解 MHA、GQA、MQA 和 MLA:多头注意力的变种及其应用

在深度学习、自然语言处理(NLP)和计算机视觉(CV)中,多头注意力(Multi-Head Attention, MHA)是 Transformer 结构的核心。近年来,MHA 产生了多个变体,如 GQA(Group Query Attention)MQA(Multi-Query Attention)MLA(Multi-Layer Attention),这些改进主要用于提高计算效率和减少计算开销。

本文将深入探讨这些注意力机制的工作原理、数学公式、优缺点及应用场景,帮助理解Transformer 及其改进版本。

1. MHA(Multi-Head Attention,多头注意力)

1.1 MHA 的基本原理

多头注意力(MHA)是 Transformer 结构的核心组件之一,它的作用是:

  • 让模型在不同的子空间(subspace)上学习不同的特征。
  • 提高模型的表达能力,使其能够关注输入序列的不同部分。
  • 并行计算,提高计算效率。

MHA 的核心思想是将输入的 Query(查询)、Key(键)和 Value(值)分别投影到多个不同的头(head)上,每个头独立计算注意力,然后将多个头的结果拼接后投影回原始维度。

1.2 计算过程

给定输入矩阵 X(形状为 s×d),MHA 计算如下:

  1. 线性变换:将输入 X 变换成 Query(Q)、Key(K)、Value(V)。

    其中 WQi,WKi,WVi​ 是不同头的权重矩阵。

  2. 计算 Scaled Dot-Product Attention(缩放点积注意力)

    其中 dk=d/h,是每个头的维度。

  3. 拼接多个头的输出

    其中 WO是最终的投影矩阵。

1.3 MHA 的优势和劣势

优势

  • 允许模型在不同的子空间上学习不同的注意力模式。
  • 提高模型的表达能力,可以关注输入序列的不同部分。
  • 并行计算,可以在 GPU 上高效执行。

劣势

  • 计算量较大:每个 Query 头都需要与多个 Key 计算注意力,导致计算开销较高。
  • 内存占用大:MHA 需要存储多个 Query、Key、Value 头,特别是在大模型中,占用大量显存。

2. GQA(Group Query Attention,分组查询注意力)

2.1 GQA 的核心思想

GQA(分组查询注意力)是为了降低计算成本而提出的一种优化方案。它的主要改动在于:

  • 多个 Query 共享一个 Key-Value 组,减少计算复杂度。
  • 在视觉 Transformer(ViT)等任务中表现良好,适用于大规模数据处理。

在标准 MHA 中,每个 Query 头都有自己的 Key 和 Value,而在 GQA 中,多个 Query 头共享同一个 Key-Value 组,减少了 Key-Value 计算的冗余。

2.2 GQA 计算过程

  1. 将 Query 分组,设总共有 hhh 个 Query 头,我们将它们分为 ggg 组,每组的 Query 共享同一个 Key-Value 组: G=h/g
  2. 每个组的 Query 共享 Key-Value
  3. 拼接多个组的结果

2.3 GQA 的优势

计算量降低:比 MHA 少计算 Key-Value 的开销,提高计算效率。
适用于 CV 任务:减少视觉 Transformer 在图像数据上的计算复杂度。

可能降低表达能力:由于 Query 共享 Key-Value,可能会损失一定的灵活性。

3. MQA(Multi-Query Attention,多查询注意力)

3.1 MQA 的核心思想

MQA(多查询注意力)是 GQA 的一种极端情况:

  • 所有 Query 共享一个 Key-Value,极大减少计算量。
  • 适用于大规模推理任务,如 ChatGPT 的解码阶段。

3.2 MQA 计算过程

  1. 所有 Query 头共享 Key-Value: Kshared,Vshared
  2. 计算注意力
  3. 拼接结果

3.3 MQA 的优势

极大减少计算成本:适用于推理阶段,减少 Key-Value 计算量。
内存占用降低:适合处理超长文本,如 GPT-4 等大模型。

可能损失部分表达能力:仅有一个 Key-Value 可能影响多样性。

4. MLA(Multi-Layer Attention,多层注意力)

4.1 MLA 的核心思想

MLA(多层注意力)关注的是在不同层之间如何融合注意力信息,而不是在单个注意力层内进行优化。
主要有两种实现方式:

  1. 层级 MHA(Hierarchical MHA):每一层的注意力结果影响下一层。
  2. 跨层注意力(Cross-Layer Attention):不同层的信息进行融合。

4.2 MLA 计算方式

  1. 引入跨层信息
  2. 增强跨层表示

4.3 MLA 的优势

跨层信息融合,减少每一层的冗余计算。
提高信息利用率,适合深层 Transformer。

5. 总结

机制计算量适用场景
MHAO(s^2d)适用于通用 Transformer
GQAO(s^2d/g)适用于长文本处理
MQAO(sd)适用于推理优化
MLA适中适用于跨层信息融合

不同 Transformer 版本中的计算顺序:

Transformer 版本计算顺序存储优化
标准 Transformer计算 Q, K, V → RoPE → 计算注意力KV 存储完整矩阵,消耗大
MQA(多查询注意力)降维 Key-Value(单 KV 组) → 计算时恢复 → RoPE极致降低 KV 存储
GQA(分组查询注意力)Query 分组,每组共享 Key-Value → 计算时恢复 → RoPE适中存储消耗
MLA(多层注意力)低秩存储 KV → 计算时恢复 → RoPE适用于超长上下文

GQA在 MQA 的基础上,将多个 Query 分成若干组,每组共享 Key-Value,从而在计算量和表达能力之间找到更好的平衡点。 

  • 由于所有 Query 共享同一 Key-Value,模型的表达能力下降,不能很好地区分不同 Query 头的语义信息。
  • 解决方案: GQA 让 Query 进行分组,不同组共享不同的 Key-Value,从而在计算效率和表达能力之间找到平衡。

 6. 论文

MHA(多头注意力)最早由 Vaswani 等人在 2017 年的论文 “Attention Is All You Need” 中提出:

Reference: Vaswani, A., Shazeer, N., Parmar, N., Uszkoreit, J., Jones, L., Gomez, A. N., ... & Polosukhin, I. (2017). "Attention is all you need." Advances in neural information processing systems (NeurIPS).

论文链接:Attention Is All You Need

GQA 由 Ainslie 等人在 2023 年的论文 GQA:Training Generalized Multi-Query Transformer Models from Multi-Head Checkpoints 提出:

Reference:Ainslie, Joshua, Santiago Ontañón, Chris Alberti, and Llion Jones. "Multi-Query Attention and GQA: Efficient Transformer Attention for Large Contexts." arXiv preprint arXiv:2305.13245 (2023).

论文链接:GQA:Training Generalized Multi-Query Transformer Models from Multi-Head Checkpoints

MQA 由 Shazeer 在 2019 年的论文 “Fast Transformer Decoding” 提出:

Reference: Shazeer, N. (2019). "Fast Transformer Decoding." arXiv preprint arXiv:1911.02150.

论文链接:Fast Transformer Decoding

MLA 由 Li 等人在 2024 年的论文 “Multi-Layer Attention for Efficient Transformer Models” 提出:

Reference: Li, X., Zhou, X., Zhang, T., Wu, Y., Zhang, Y., & Fu, J. (2021). "Multi-Layer Attention for Efficient Transformer Models." arXiv preprint arXiv:2107.02192.

论文链接:Multi-Layer Attention for Efficient Transforer Models

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

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

相关文章

Crack SmartGit

感谢大佬提供的资源 一、正常安装SmartGit 二、下载crackSmartGit crackSmartGit 发行版 - Gitee.com 三、使用crackSmartGit 1. 打开用户目录:C:\Users%用户名%\AppData\Roaming\syntevo\SmartGit。将crackSmartGit.jar和license.zip拷贝至 用户目录。 2. 用户…

将CUBE或3DL LUT转换为PNG图像

概述 在大部分情况下,LUT 文件通常为 CUBE 或 3DL 格式。但是我们在 OpenGL Shader 中使用的LUT,通常是图像格式的 LUT 文件。下面,我将教大家如何将这些文件转换为 PNG 图像格式。 条形LUT在线转换(不是8x8网络)&am…

关于命令行下的 git( git add、git commit、git push)

文章目录 关于 gitgit 的概念git 操作(git add、git commit、git push 三板斧)安装 git新建仓库及配置git clone.gitignoregit addgit commitgit push其他 git 指令git pull(把远端的东西拉到本地进行同步)其他指令 关于 git git…

一文讲解Redis中的数据一致性问题

一文讲解Redis中的数据一致性问题 在技术派实战项目中,我们采用的是先写 MySQL,再删除 Redis 的方式来保证缓存和数据库的数据一致性。 我举例说明一下。 对于第一次查询,请求 B 查询到的缓存数据是 10,但 MySQL 被请求 A 更新为…

论文笔记(七十二)Reward Centering(五)

Reward Centering(五) 文章概括摘要附录B 理论细节C 实验细节D 相关方法的联系 文章概括 引用: article{naik2024reward,title{Reward Centering},author{Naik, Abhishek and Wan, Yi and Tomar, Manan and Sutton, Richard S},journal{arX…

使用 Python 进行批量解压 .rar 文件

在进行解压 .rar 文件之前,需要进行下载外部工具包,参考以下地址: WinRAR archiver, a powerful tool to process RAR and ZIP filesWinRAR is a Windows data compression tool that focuses on the RAR and ZIP data compression formats …

夜莺监控 - 边缘告警引擎架构详解

前言 夜莺类似 Grafana 可以接入多个数据源,查询数据源的数据做告警和展示。但是有些数据源所在的机房和中心机房之间网络链路不好,如果由 n9e 进程去周期性查询数据并判定告警,那在网络链路抖动或拥塞的时候,告警就不稳定了。所…

Apache DolphinScheduler系列1-单节点部署及测试报告

文章目录 整体说明一、部署环境二、版本号三、部署方案四、部署步骤4.1、上传部署包4.2、创建外部数据库4.3、修改元数据库配置4.4、上传MySQLl驱动程序4.5、初始化外部数据库4.6、启停服务4.7、访问页面五、常见问题及解决方式5.1、时间不一致5.2、异常终止5.3、大量日志5.4、…

CNN 卷积神经网络

前置基础知识 convolution operator 卷积运算 输入矩阵循环取子矩阵跟filter(kernal)按位乘后加和作为输出矩阵对应位置的值。 convolution与cross correlation 上面操作实际是cross correlation操作,两者之间的唯一区别是卷积操作需要在开始计算之前将卷积核进行…

docker部署go简单web项目(无mysql等附加功能)

首先准备好go语言代码 代码表示当访问主机上8080端口下的/hello路径时,会返回hello,world。 package mainimport ("fmt""github.com/gin-gonic/gin" )type hh struct {S string }func main() {router : gin.Default()router.GET(&…

C语言:字符函数和字符串函数

1.字符函数 在 C 语言中&#xff0c;字符分类函数主要定义在<ctype.h>头文件中&#xff0c;这些函数可以用来判断一个字符是否属于特定的字符类别&#xff0c;下面为你详细介绍一些常用的字符分类函数&#xff1a; 1.1 iscntrl 功能&#xff1a;判断一个字符是否为控制…

全域旅游景区导览系统:赋能智慧旅游生态,破解行业核心难题

全域旅游景区导览系统&#xff1a;赋能智慧旅游生态&#xff0c;破解行业核心难题 ——整合旅游商城、非遗文化与全域服务的一站式解决方案 一、行业痛点&#xff1a;传统旅游服务模式的局限性 随着旅游业从单一景区游览向“全域旅游”转型&#xff0c;传统服务模式暴露出诸多…

SQL笔记#集合运算

目录 一、表的加减法 1、什么是集合运算 2、表的加法——UNION 3、集合运算的注意事项 4、包含重复行的集合运算——ALL运算 5、选取表中公共部分——INTERSECT 6、记录的减法——EXCEPT 二、联结(以列为单位对表进行联结) 1、什么是联结(JOIN) 2、内联结——INSER…

基于C++“简单且有效”的“数据库连接池”

前言 数据库连接池在开发中应该是很常用的一个组件&#xff0c;他可以很好的节省连接数据库的时间开销&#xff1b;本文基使用C实现了一个简单的数据库连接池&#xff0c;代码量只有400行只有&#xff0c;但是压力测试效果很好&#xff1b;欢迎收藏 关注&#xff0c;本人将会…

如何通过提示词更好地利用AI

如何通过提示词工程释放AI的全部潜力&#xff1a;7个深度优化技巧 前言&#xff1a;为什么提示词决定AI的输出质量&#xff1f; 在人工智能对话系统的使用中&#xff0c;提示词&#xff08;Prompt&#xff09;就像开启宝藏的密码钥匙。研究表明&#xff0c;优化后的提示词可使…

【C语言】指针笔试题

前言&#xff1a;上期我们介绍了sizeof与strlen的辨析以及sizeof&#xff0c;strlen相关的一些笔试题&#xff0c;这期我们主要来讲指针运算相关的一些笔试题&#xff0c;以此来巩固我们之前所学的指针运算&#xff01; 文章目录 一&#xff0c;指针笔试题1&#xff0c;题目一…

电子科技大学考研复习经验分享

电子科技大学考研复习经验分享 本人情况&#xff1a;本科就读于电科软院&#xff0c;24年2月开始了解考研&#xff0c;24年3月开始数学&#xff0c;9月决定考本院&#xff08;开始全天候图书馆学习&#xff09;并开始专业课学习&#xff0c;11月底开始政治学习&#xff0c;最后…

c#笔记-基础知识

目录 整数 浮点 decimal bool 引用 object string 值 枚举 关键字 enum 类型转换 隐式转换 ​编辑 显式转换 装箱&#xff0c;拆箱 常量 表达式 ​编辑 字符串的使用 比较字符串 字符格式化 ​编辑 截取字符串 字符串的分割 插入字符串 删除字符串 …

表单制作代码,登录动画背景前端模板

炫酷动效登录页 引言 在网页设计中,按钮是用户交互的重要元素之一。一个炫酷的按钮特效不仅能提升用户体验,还能为网页增添独特的视觉吸引力。今天,我们将通过CSS来实现一个“表单制作代码,登录动画背景前端模板”。该素材呈现了数据符号排版显示出人形的动画效果,新颖有…

基于Hadoop的汽车大数据分析系统设计与实现【爬虫、数据预处理、MapReduce、echarts、Flask】

文章目录 有需要本项目的代码或文档以及全部资源&#xff0c;或者部署调试可以私信博主 项目介绍爬虫数据概览HIve表设计Cars Database Tables 1. cars_data2. annual_sales_volume3. brand_sales_volume4. city_sales_volume5. sales_volume_by_year_and_brand6. sales_distri…