介绍llama2|理解group query attention(GQA)

概要

    作为开源可商用的大语言模型LLaMA 2.0,它在学术基准上超过了其他同尺寸的开源模型。你一定想知道是什么模型结构使得它取得了较好的表现?

    如图一所示,相比于transformer的decoder,LLaMA 2.0在模型架构中引入了: group query attention、SwiGLU 激活函数、旋转位置嵌入、均方根层归一化。本系列文章将先后带你介绍这些模块,让我们开始吧。

                  

图一

group query attention是什么

    我们注意到transformer decoder中使用的是multi-head attention,而llama2模型使用的是group query attention。

    multi-head attention(上图左一)指的是用N个self-attention来计算出参考上下文的token embedding,具体来说,对于每个token计算出N个q向量,N个k、v向量,其中第i个attention用第i个q向量、第i个k、v向量计算出来。

    同样是计算N个self-attention,multi-query attention(上图右一)对于每个token计算出N个不同q向量,1个k、v向量,其中第i个attention用第i个q向量、同一个k、v向量计算出来。

    而group query attention(上图中间),将N个attention分为G个组,每个组共用相同的k、v向量。每个token计算出N个不同q向量,第i个attention用第i个q向量、i所属组的k、v向量计算出来。   

group query attention的意义

  • 从gpu内存的角度

     以前的文章概念|如何根据大模型api服务定价推测云厂商让利程度?-CSDN博客提到过,大模型的推理用kv cache空间换时间,multi-head attention每推理输出一个token都要加载已经缓存的N个头的kv cache,而GQA的分组使得只需缓存G个kv cache,也就是说kv cache的memory从block的数目*推理样本数目*N*sequence_length*attention的head的维度*2变为block的数目*推理样本数目*G*sequence_length*attention的head的维度*2。因此大模型推理服务可以同时处理更多的请求,吞吐量就变大。

  •  从通信的角度

    大模型的推理每推理出下一个token时都需要加载前序所有token的kv cache,带宽的限制了推理的速度,group query attention的kv cache的size更小,相比于multi-head attention减少了加载和更新kv cache的时间,所以group query attention推理速度势必更快。​​​​​​​

  • 从模型质量的角度

    multi-query attention相比于multi-head attention减少了用于计算出K 、V矩阵的数目,随着模型参数数量的减少,从标准的multi-head attention到multi-query attention的转变会导致模型性能的下降。group query attention这种折中的方式,不仅能在模型质量上与multi-head attention差别不大,还能相比于multi-head attention推理快。

小结

    本文对比分析了GQA 与MHA和MQA,从多角度给出了llama2模型中GQA的含义和意义。

    喜欢这篇博文就关注、点赞和收藏吧!

### LLaMA2 模型架构图解析 #### 模型概述 LLaMA2 是 Meta 发布的一个大型语言模型系列,在原有基础上进行了多项改进。这些改进不仅体现在预训练使用的 token 数量增加上,还包括对模型架构本身的调整[^4]。 #### 架构特点 - **Group Query Attention (GQA)** GQA 的引入显著提升了模型效率和性能。这一机制允许查询在同一组内共享注意力计算资源,从而减少了冗余操作并提高了处理速度。 - **扩展的 Token 库** 预训练阶段使用了更多的 tokens,这使得 LLaMA2 能够学习到更加丰富的语义表示,进而增强了其理解和生成自然语言的能力。 #### 结构组件详解 1. **输入层** 输入文本经过分词器转换成 token 后进入模型。每个 token 对应一个唯一的 ID 编号,作为后续编码的基础。 2. **嵌入层(Embedding Layer)** 将离散化的 token IDs 映射至连续向量空间中的位置。此过程保留了词语间的相似性和上下文关系。 3. **多头自注意机制(Multi-head Self-Attention Mechanism)** 这一部分负责捕捉序列内部不同部分之间的依赖关系。通过多个平行运行的关注头来增强表达力,使模型可以同时关注不同的子模式。 4. **前馈神经网络(Feed Forward Neural Network, FFNN)** 经过自注意模块后的特征会被送入两层线性变换组成的全连接层中进一步加工。每层之间通常配有激活函数以引入非线性特性。 5. **Layer Normalization 层** 在每一层之后施加标准化操作有助于稳定梯度传播路径,加快收敛速率的同时防止数值溢出风险。 6. **输出层** 最终得到的结果会再次映回词汇表维度,并利用 Softmax 函数转化为概率分布形式给出预测结果。 7. **特殊之处——GQA 实现细节** - 查询分为若干个小组; - 每组内的所有查询共同作用于相同的一套键值对集合; - 不同组间保持独立运作互不干扰。 ```mermaid graph LR; A[Input Tokens] --> B(Embeddings); B --> C{Multi-Head<br>Self-Attention}; C --> D(Layer Norm); D --> E[FFNN]; E --> F(Layer Norm); F --> G(Output Probabilities); subgraph Grouped Queries within Multi-Head Self-Attention C -->|Query Groups| H(Keys & Values Sets); H --> I(Merged Outputs per Group); I --> J(Final Output Sequence); end ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值