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

大模型学习笔记------Llama 3模型架构之分组查询注意力(GQA)

大模型学习笔记------Llama 3模型架构之分组查询注意力(GQA)

    • 1、分组查询注意力(GQA)的动机
    • 2、 多头注意力(Multi-Head Attention, MHA)
    • 3、 多查询注意力 (Multi-Query Attention,MQA)
    • 4、 分组查询注意力(Grouped-Query Attention, GQA)
    • 5、 多头注意力 (MHA) 、多查询注意力 (MQA)、分组查询注意力 (GQA)对比

    上文简单介绍了 Llama 3模型架构的旋转位置编码(Rotary Position Embedding,RoPE)。本文介绍Llama 3模型的最后一个网络结构相关知识:Llama 3模型架构之分组查询注意力(Grouped-Query Attention, GQA)。实际上。在Llama 2就已经使用GQA注意力机制了。GQA是Transformer模型注意力机制的重要改进,旨在平衡计算效率与模型表现。其核心设计理念可概括为:“分组共享键值对,独立保留查询向量”。

1、分组查询注意力(GQA)的动机

    Llama 3为什么采用GQA注意力机制呢?其实道理很简单,在大模型训练与推理过程中需要在保障准确率的基础上尽可能的减少计算量,减少参数数量,提高效率。这个怎样理解呢?论文里其实也提到了这个问题。主要是对比了多头注意力(Multi-Head Attention, MHA)和多查询注意力 (Multi-Query Attention,MQA)。具体三中方式的结构如下图所示:
在这里插入图片描述

2、 多头注意力(Multi-Head Attention, MHA)

    多头注意力(Multi-Head Attention, MHA)是一种在Transformer架构中广泛使用的注意力机制,具体结构如上图A。它通过并行地使用多个注意力头来捕捉输入序列中不同的特征,增强模型的表达能力。多头注意力的基本思想是将输入的查询(Query,Q)、键(Key,K)和值(Value,V)向量通过多个注意力头进行并行处理,然后将结果拼接在一起,得到最终的输出。每个注意力头在不同的子空间中学习数据的不同特征,使得模型能够更好地理解复杂的输入。具体原理如下所示:

    1)查询(Query,Q)、键(Key,K)和值(Value,V)的向量表示

在这里插入图片描述
其中, 在这里插入图片描述在这里插入图片描述在这里插入图片描述分别是查询、键和值的投影矩阵。

    2)自注意力计算
在这里插入图片描述
其中, 在这里插入图片描述为查询和键向量的维度。

    3)多头组合
在这里插入图片描述在这里插入图片描述
    通过多个注意力头并行处理,MHA能够从不同角度关注输入数据中的信息,捕捉到更丰富的上下文关系。MHA的设计使得可以在硬件加速上,同时计算多个关注头,提高了计算效率。

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

    多查询注意力(Multi-Query Attention, MQA)旨在提高注意力的效率并降低计算复杂度。相较于传统的多头注意力(Multi-Head Attention, MHA),MQA的设计采用了多个查询头,但共享相同的键和值,这使得计算更为高效,具体结构如上图B。具体计算原理如下步骤:

    1)查询向量
在这里插入图片描述
    2)共享的键和值向量
在这里插入图片描述
    3)自注意力计算
在这里插入图片描述
    4)组合
在这里插入图片描述

4、 分组查询注意力(Grouped-Query Attention, GQA)

    分组查询注意力(Grouped-Query Attention, GQA)旨在通过将查询分组来提升计算效率并增强模型的能力。与多头注意力和多查询注意力相比,GQA通过将查询分成多个组并为每组独立计算注意力来优化注意力计算过程。具体结构如上图C,计算步骤如下所示:
1)查询向量:
在这里插入图片描述
2)分组的键和值向量:
将总计N个注意力头划分为G组,每组共享相同的键和值投影:

在这里插入图片描述
3)组内自注意力计算:
在这里插入图片描述
4)组合:
在这里插入图片描述

5、 多头注意力 (MHA) 、多查询注意力 (MQA)、分组查询注意力 (GQA)对比

    这几种注意力机制有各自的特点,具体如下所示:

维度多头注意力 (MHA)多查询注意力 (MQA)分组查询注意力 (GQA)
查询数量多个独立的查询多个共享查询分组查询,部分独立
键和值每个头独立的键和值共享相同的键和值共享或独立的键值
计算复杂度较高较低灵活调节,适中
应用场景广泛小查询任务大规模模型优化
http://www.xdnf.cn/news/82729.html

相关文章:

  • [Git] Git Stash 命令详解
  • 【MATLAB第115期】基于MATLAB的多元时间序列的ARIMAX的预测模型
  • 线缆屏蔽与浪涌测试
  • Linux中查询进程服务,通过端口方式关闭
  • C++模板学习(进阶)
  • PH热榜 | 2025-04-22
  • 客户端本地搭建
  • Baidu Comate初体验:强大的全局ai工具
  • 嘻游后台系统与机器人模块结构详解:功能逻辑 + 定制改造实战
  • 性能比拼: Go vs Java
  • mybatis实现增删改查1
  • 三网通电玩城平台系统结构与源码工程详解(二):Node.js 服务端核心逻辑实现
  • 香橙派使用USB摄像头
  • 【锂电池剩余寿命预测】LSTM长短期记忆神经网络锂电池剩余寿命预测(Matlab源码)
  • Trae国内版怎么用?Trae IDE 内置 MCP 市场配置使用指南
  • STM32提高篇: WIFI通讯
  • Unity 脚本使用(二)——UnityEngine.AI——NavMesh
  • vscode使用笔记
  • spdlog日志库使用教程(含踩坑问题解决)
  • 2.6 递归
  • 2025.4.22学习日记 JavaScript的常用事件
  • 多模态大语言模型arxiv论文略读(三十四)
  • QEMU源码全解析 —— 块设备虚拟化(21)
  • go中map和slice非线程安全
  • 不可变数据:基于持久化数据结构的状态管理
  • Seata 分布式事务 快速开始
  • 动态规划算法:完全背包类问题
  • 应用案例|兵器重工:某体系需求视图模型开发
  • [论文阅读]ConfusedPilot: Confused Deputy Risks in RAG-based LLMs
  • docker容器,mysql的日志文件怎么清理