MHA、MQA、GQA区别和联系

news2024/11/28 5:35:19

2023 年7月,Meta发布了其最新版本LLaMA 2,其中 LLama2 的注意力机制使用了GQA,那么什么是GQA呢?和标准的MHA有什么区别呢?关于 LLM 更多信息,可参考笔者文章:AIGC入门 - LLM信息概览

本文将介绍以下 内容:

  • MHA: Multi Head Attention
  • MQA:Multi Query Attention
  • GQA:Grouped Query Attention

一、MHA(Multi Head Attention)

Google 的团队在 2017 年提出的一种 NLP 经典模型:Attention Is All You Need ,首次提出并使用了 Self-Attention 机制,也就是 Multi Head Attention。
关于 Multi Head Attention 内容可参考笔者之前文章:Transformer模型总体架构和理论,此处不再赘述。

二、MQA(Multi Query Attention)

1、论文

MQA(Multi Query Attention)最早是出现在2019年谷歌的一篇论文 《Fast Transformer Decoding: One Write-Head is All You Need》,之所以没有关注到,是因为之前很少做文本生成,解码序列长度也没有现阶段大模型的要求那么高。

2、原理

MQA的思想其实比较简单,论文中给出的描述如下:

Multi-query attention is identical except that the different heads share a single set of keys and values.

理解翻译内容:MQA 与 MHA 不同的是,MQA 让所有的头之间共享同一份 Key 和 Value 矩阵,每个头正常的只单独保留了一份 Query 参数,从而大大减少 Key 和 Value 矩阵的参数量。

3、MHA 和 MQA 对比

在这里插入图片描述
推理速度上生成一个 token 时 MHA 和 MQA 的 encoder 分别耗时1.7us和1.5us,而 decoder 分别46us和3.8us,说明 decoder 上 MQA 比 MHA 快很多。另外在效果上 MQA 的 PPL (越小越好)有所上升,BLEU(越大越好)有所下降,换句话说就是效果有所下降。

4、改进

如上对比,在 Multi-Query Attention 方法中只会保留一个单独的key-value头,这样虽然可以提升推理的速度,但是会带来精度上的损失。《Multi-Head Attention:Collaborate Instead of Concatenate 》这篇论文的第一个思路是基于多个 MQA 的 checkpoint 进行 finetuning,来得到了一个质量更高的 MQA 模型。这个过程也被称为 Uptraining。

具体分为两步:

  • 对多个 MQA 的 checkpoint 文件进行融合,融合的方法是: 通过对 key 和 value 的 head 头进行 mean pooling 操作,如下图。
  • 对融合后的模型使用少量数据进行 finetune 训练,重训后的模型大小跟之前一样,但是效果会更好
    在这里插入图片描述

三、GQA(Grouped Query Attention)

1、论文

Google 在 2023 年发表的一篇 《GQA: Training Generalized Multi-Query Transformer Models from Multi-Head Checkpoints》的论文,整体论文写的清晰易读。

2、原理

如下图所示,在 MHA(Multi Head Attention)中,每个头有自己单独的 key-value 对;在 MQA(Multi Query Attention)中只会有一组 key-value 对;在 GQA(Grouped Query Attention)中,会对 attention 进行分组操作,query 被分为 N 组,每个组共享一个 Key 和 Value 矩阵。GQA-N 是指具有 N 组的 Grouped Query Attention。GQA-1具有单个组,因此具有单个Key 和 Value,等效于MQA。而GQA-H具有与头数相等的组,等效于MHA。

在基于 Multi-head 多头结构变为 Grouped-query 分组结构的时候,也是采用跟上图一样的方法,对每一组的 key-value 对进行 mean pool 的操作进行参数融合。融合后的模型能力更综合,精度比 Multi-query 好,同时速度比 Multi-head 快。
在这里插入图片描述

3、MHA、MQA、GQA 对比

在这里插入图片描述
GQA 综合 MHA 和 MQA ,既不损失太多性能,又能利用 MQA 的推理加速。不是所有 Q 头共享一组 KV,而是分组一定头数 Q 共享一组 KV,比如上图中就是两组 Q 共享一组 KV。

参考:

  • 具体可以参考【Andy Yang:为什么现在大家都在用 MQA 和 GQA?】

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

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

相关文章

携手并进 | 云畅科技与华商智造院签署战略合作协议

9 月 15 日,云畅科技与华商智造院的签约仪式顺利举行,湖南华商智造院董事长郭平、湖南华商智造院董事兼副总经理秦宇琳、湖南华商智造院湘江新区总经理郭蕊、云畅科技董事长兼 CEO 蔡鑫莹、云畅科技联合创始人兼 CMO 徐智峰等出席活动,共同见…

Kafka 杂谈

概览 什么是 Kafka? 这里先给出结论,我不太希望在解释概念 X 的时候,说到「为了了解 X,我们需要先了解一下 Y」,阅读的人思绪会被迁到另一个地方。既然小标题里说了要解释什么是 Kafka,那么我们就只说什么…

兔兔答题企业版1.0.0版本全网发布,同时开源前端页面到unicloud插件市场

项目说明 兔兔答题是用户端基于uniapp开发支持多端适配,管理端端采用TypeScriptVue3.jselement-plus,后端采用THinkPHP6PHP8Golang开发的一款在线答题应用程序。 问题反馈 线上预览地址 相关问题可以通过下方的二维码,联系到我。了解更多 …

15.状态模式(State)

UML 意图:允许一个对象在其内部状态改变时改变它的行为,使得对象看起来好像修改了它的类型一样。 Context:定义客户感兴趣的接口; 维护一个ConcreteState子类的实例,这个实例定义当前的状态。 State:定义一…

FPGA原理与结构(0)——目录与传送门

一、 简介 FPGA的设计和软件设计不同,我们所设计的RTL代码最终还是要落实到硬件底层来进行实例化,因此理解硬件底层的内容是很有意义的。 二、可编程逻辑块CLB 可配置逻辑块CLB(Configurable Logic Block)是xilinx系类FPGA的基本…

极验率先推出一键认证安全版,供客户自主免费升级,规避日常运营中的风险盲区

2017年6月1日,互联网服务开始响应《中华人民共和国网络安全法》的要求实施账号实名认证。由此,手机号码成为网络世界最主要的“身份证”,也让本机号码一键认证成为可能。其中,极验是最早的直连三大运营商的五家供应商之一&#xf…

Linux内核分析:输入输出,字符与块设备 31-35

CPU 并不直接和设备打交道,它们中间有一个叫作设备控制器(Device Control Unit)的组件,例如硬盘有磁盘控制器、USB 有 USB 控制器、显示器有视频控制器等。这些控制器就像代理商一样,它们知道如何应对硬盘、鼠标、键盘、显示器的行为。 输入输出设备我们大致可以分为两类…

“深入理解事件处理器、表单综合案例和组件通信“

目录 引言1. Vue的事件处理器2. Vue的表单综合案例3. Vue的组件通信总结 引言 Vue.js是一款流行的JavaScript框架,广泛应用于现代Web开发中。在Vue的世界里,事件处理器、表单综合案例和组件通信是三个重要的主题。本文将深入探讨这些主题,并…

二十二、MySQL联合查询

1、基础概念 (1)语法: select …… from …… union [all] select …… from …… (2)理解: 所谓的联合查询,就是对多个条件查询结果进行联合处理,取其并集。 2、实际操作 &…

AI写作生成器-人工智能技术的工具

众所周知,写作是一项需要时间、思考和创造力的工作。传统的写作过程可能需要作者长时间的积累、思考和修改,才能产生一篇优质的文章。随着AI写作生成器的出现,这一传统写作模式正经历着巨大的改变。 AI写作生成器是一类基于人工智能技术的工…

SpringBoot对Filter过滤器中的异常进行全局处理

前言 今天处理拦截器中的异常时,遇到这样一个问题,我们希望在过滤器中对用户的请求进行判断,如果不符合要求直接抛出异常并在前端展示。但是如果我们直接在过滤器中throw一个异常时,尽管我们使用ControllerAdvice和 ExceptionHan…

一对多映射处理

8.3.1 、collection /** * 根据部门id查新部门以及部门中的员工信息 * param did * return */ Dept getDeptEmpByDid(Param("did") int did);<resultMap id"deptEmpMap" type"Dept"> <id property"did" column"did&quo…

Java21 LTS版本

一、前言 除了众所周知的 JEP 之外&#xff0c;Java 21 还有更多内容。首先请确认 java 版本&#xff1a; $ java -version openjdk version "21" 2023-09-19 OpenJDK Runtime Environment (build 2135-2513) OpenJDK 64-Bit Server VM (build 2135-2513, mixed mo…

Shiro 整合 Web

文章目录 Shiro的Web流程Shiro整合SSMShiro整合SpringBootShiro授权方式过滤器链自定义过滤器注解记住我 Shiro的Web流程 Shiro整合SSM 准备SSM的配置准备经典五张表&#xff08;见Shiro基本使用&#xff09;&#xff0c;完成测试准备Shiro的配置 核心过滤器 <!-- 配置S…

Git学习笔记4

GitHub是目前最火的开源项目代码托管平台。它是基于web的Git仓库&#xff0c;提供公有仓库和私有仓库&#xff0c;但私有仓库是需要付费的。 到Github上找类似的项目软件。 GitLab可以创建免费的私有仓库。 GitLab是利用 Ruby开发的一个开源的版本管理系统&#xff0c;实现一个…

ResFields: 一种即插即用的MLP增容工具

ResFields: 一种即插即用的MLP增容工具 目录 概述 RESFIELDS 理论简介 实验(部分) 2D VIDEO APPROXIMATION1 TEMPORAL NEURAL RADIANCE FIELDS (NERF) 消融实验 环境配置 概述 论文名称: RESFIELDS: RESIDUAL NEURAL FIELDS FOR SPATIOTEMPORAL SIGNALS 作者单位…

基于Yolov8的野外烟雾检测(2):多维协作注意模块MCA,效果秒杀ECA、SRM、CBAM等 | 2023.9最新发布

目录 1.Yolov8介绍 2.野外火灾烟雾数据集介绍 3.MCA介绍 4.训练结果分析 5.系列篇 1.Yolov8介绍 Ultralytics YOLOv8是Ultralytics公司开发的YOLO目标检测和图像分割模型的最新版本。YOLOv8是一种尖端的、最先进的&#xff08;SOTA&#xff09;模型&#xff0c;它建立在先前…

Docker 应用部署

Docker 应用部署 一、部署MySQL 搜索MySQL镜像 拉取MySQL镜像 docker pull mysql:8.0创建容器&#xff0c;设置端口映射&#xff0c;目录映射 # 在root/home/mysql目录下创建MySQL目录用于存储MySQL数据信息 mkdir /root/home/mysql cd /root/home/mysql创建并运行 # 330…

video属性练习,手写controls

<video src"../xxx.mp4"></video><div class"controls"><button id"btnPlay">播放/暂停</button></div><div class"controls" id"progress">进度&#xff1a;<input type&quo…

编译chromium总结

文章目录 一、官方文档二、DEPOT_TOOLS_UPDATE三、少修改subprocess.py里的编码四、运行截图 之前在ubuntu18编译过&#xff0c;这次换win11试一试&#xff0c;成功后我又删了一次&#xff0c;再次编译发现了之前没注意到的点。下面是一些重点和我的实践。 一、官方文档 https…