首页 > 其他分享 >一文为你深度解析LLaMA2模型架构

一文为你深度解析LLaMA2模型架构

时间:2024-07-04 14:42:21浏览次数:16  
标签:架构 函数 模型 LLaMA2 GQA LLaMA 解析 注意力

本文分享自华为云社区《【云驻共创】昇思MindSpore技术公开课 大咖深度解析LLaMA2 模型架构》,作者: Freedom123。

一、前言

随着人工智能技术的不断发展,自然语言处理(NLP)领域也取得了巨大的进步。在这个领域中,LLaMA展示了令人瞩目的性能。今天我们就来学习LLaMA2模型,我们根据 昇思MindSpore技术公开课·大模型专题(第二期)第六讲_云视界live_直播_云社区_华为云 (huaweicloud.com) 视频内容进行了学习整理,输出如下内容,欢迎大家前来指正。

二、LLaMA 介绍

1. LLaMA 简介

LLaMA 由 Meta AI 公司2022年发布的一个开放且高效的大型基础语言模型,共有 7B、13B、33B、65B(650 亿)四种版本。其数据集来源都是公开数据集,无任何定制数据集,整个训练数据集在 token 化之后大约包含 1.4T 的 token。LLaMA 的性能非常优异:具有 130 亿参数Llama 模型「在大多数基准上」可以胜过 GPT-3( 参数量达 1750 亿),而且可以在单块 V100 GPU 上运行;而最大的 650 亿参数的 LLaMA 模型可以媲美谷歌的 Chinchilla-70B 和 PaLM-540B,LLaMA 模型参数如下:

2. LLaMA 1 与 LLaMA 2 对比

LLaMA2是Meta最新开源的大型语言模型,其训练数据集达到了2万亿token,显著扩大了处理词汇的范围。此外,LLaMA2对上下文的理解长度也从原来的LLaMA模型的2048个token扩大到了4096个token,使得这个模型能够理解并生成更长的文本。LLaMA2包含7B、13B和70B三种规模的模型,它们在各种语言模型基准测试集上都展示了优异的性能。值得一提的是,LLaMA2模型不仅适用于语言研究,也可用于商业应用。总的来说,LLaMA2是目前开源的大型语言模型(LLM)中表现最出色的一种。

相比于 LLaMA 1 ,LLaMA 2 的训练数据多了 40%,上下文长度也翻倍,并采用了分组查询注意力机制。具体来说,Llama 2预训练模型是在2 万亿的 token上训练的,精调 Chat 模型是在100 万人类标记数据上训练的,具体对比分析如下:

1)总token数量增加了40%:LLaMA 2训练使用了2 万亿个token的数据,这在性能和成本之间提供了良好的平衡,通过对最真实的来源进行过采样,以增加知识并减少幻觉。

2)加倍上下文长度:LLaMA 2 支持更长的上下文窗口,使模型能够处理更多信息,这对于支持聊天应用中的更长历史记录、各种摘要任务和理解更长文档特别有用。

3)Grouped-query attention (GQA):LLaMA 2支持GQA,允许在多头注意力(MHA)模型中共享键和值投影,从而减少与缓存相关的内存成本。通过使用 GQA,更大的模型可以在优化内存使用的同时保持性能。

三、LLaMA2核心介绍

1. 与Transformers架构的区别

Transformer模型是一种基于自注意力机制的神经网络模型,旨在处理序列数据,特别是在自然语言处理领域得到了广泛应用。Transformer模型的核心是自注意力机制(Self-Attention Mechanism),它允许模型关注序列中每个元素之间的关系。这种机制通过计算注意力权重来为序列中的每个位置分配权重,然后将加权的位置向量作为输出。模型结构上,Transformer由一个编码器堆栈和一个解码器堆栈组成,它们都由多个编码器和解码器组成。编码器主要由多头自注意力(Multi-Head Self-Attention)和前馈神经网络组成,而解码器在此基础上加入了编码器-解码器注意力模块。Transformer与LLaMA 的模型结构对比如下:

从Transformer的结构图中我们可以看出,Transformer主要分为编码器(encoder)和解码器(decoder)两部分。相较之下,LLaMA仅使用了Transformer的解码器部分,采取了一个仅解码器(decoder-only)的结构。这种结构现在被大多数生成型的语言模型所采用。在结构上,与Transformer模型相比,LLaMA2的主要变化是将其中的层标准化(LayerNorm)替换为了均方根标准化(RMSNorm),多头注意力(Multi-Head Attention)换成了分组查询注意力(GQA,在LLaMA中则是多查询注意力MQA),并将位置编码(Positional Encoding)替换为了旋转嵌入(Rotary Position Embedding,RoPE)。下面我们分别介绍RMS Normalization均方根标准化 ,Group Multi Query Attention分组查询注意力机制,SwiGLU Activation Function激活函数。

2. RMS Normalization 均方根标准化

LLaMA 2为了提高训练的稳定性,对每个transformer层的输入进行归一化,而不是输出进行归一化。同时,使用 RMS Norm 归一化函数。RMS Norm 的全称为Root Mean Square layer normalization,RMS Norm计算公式如下:

Layer Normalization(层归一化)和RMSNormalization(均方根归一化)都是神经网络中用于稳定训练过程的归一化技术。它们都旨在对神经网络中的激活进行规范化处理,以减少训练过程中的内部协变量偏移(Internal Covariate Shift)问题。尽管它们的目标相似,但在实现和应用上存在一些差异。与Layer Norm 相比,RMS Norm的主要区别在于去掉了减去均值的部分,它可以使得网络的训练更加稳定,加快收敛速度,并在一定程度上改善网络的泛化能力。具体来说,每一层的标准化操作都会调整该层输入数据的均值和方差,使其保持在一个稳定的数值范围内。RMS Norm 的作者认为这种模式在简化了Layer Norm 的计算,可以在减少约 7%∼64% 的计算时间。

3. Group Multi Query Attention 分组查询注意力

在各种多头注意力机制比较中,原始的多头注意力机制(MHA,Multi-Head Attention)使得QKV三部分具有相等数量的“头”,并且它们之间是一一对应的。每一次计算注意力时,各个头部的QKV独立执行自己的计算,最后将所有头部的结果加在一起作为输出。标准的MHA就是这样一个模型,其中Q、K、V分别对应了h个Query、Key和Value矩阵:

相对于MHA,多查询注意力(MQA,Multi-Query Attention)则略有不同。MQA保持了原来的Query头数,但是只为K和V各设置了一个头,即所有的Query头部都共享同一个K和V组合,因此得名为“多查询”。据实验发现,这种机制通常可以提高30%-40%的吞吐量,对性能的影响相对较小。MQA是一种多查询注意力的变体,被广泛用于自回归的解码。与MHA不同,MQA让所有的头部在K和V之间实现共享,每个头部只保留一份Query参数,从而大大降低了K和V矩阵的参数量。

分组查询注意力(GQA,Grouped-Query Attention)综合了MHA和MQA,既避免了过多的性能损失,又能够利用MQA的推理加速。在GQA中,Query部分进行分组,每个组共享一组KV。GQA把查询头分成G组,每个组内部的头部共享一个相同的K和V组合。当G设为1,即GQA-1,则所有Query都共享同一组K和V,这时的GQA等效于MQA;而当G等于头的数量,即GQA-H,那么这时的GQA等效于MHA,具体差异及整体结构见下图:

4. SwiGLU Activation Function激活函数

SwiGLU 激活函数是Shazeer 在文献中提出,并在PaLM等模中进行了广泛应用,并且取得了不错的效果,相较于ReLU 函数在大部分评测中都有不少提升。在LLaMA 中全连接层使用带有SwiGLU 激活函数的FFN(Position-wise Feed-Forward Network)的计算公式如下:

σ(x) 是Sigmoid 函数,Swish 激活函数在参数β 不同取值下的形状,可以看到当β 趋近于0 时,Swish 函数趋近于线性函数y = x,当β 趋近于无穷大时,Swish 函数趋近于ReLU 函数,β 取值为1 时,Swish 函数是光滑且非单调。在HuggingFace 的Transformer 库中Swish1 函数使用silu 函数 代替,见下图Swish 激活函数在参数β 不同取值下的形状:

关于激活函数的作用,种类,以及使用场景,由于篇幅限制,这里不做过多介绍,可自行百度。

四、与国内大模型对比

1. 模型参数

下面我们整理了LLaMA 系列,ChatGLM系列,BaiChuan系列,Qwen系列以及Yi系列等众多模型的数据,我们从训练数据,位置编码,激活函数,归一化方法以及注意力机制这几个维度分别对几个模型进行分析。

1)训练数据

LLaMA 7B和13B使用了1T的训练数据,LLAMA2对应使用了2T的数据,在训练数据上增加了一倍;ChatGLM 6B使用了1T的数据,ChatGLM2 6B使用了1.4T的数据,增加了40%;BaiChuan-7B使用了1.2T的数据,BaiChuan2-7B使用了2.6T的数据,训练数据增加了120%。看的出来,BaiChuan2在6B这个参数量级使用的训练数据是最多的,当然模型的表现也是有目共睹的。

2)位置编码

LLaMA,LLaMA2,ChatGLM,Qwen,Yi模型都是使用了RoPE位置编码,BaiChuan 13B模型使用的是ALiBi编码,BaiChuan 7B使用的是RoPE编码,百川大模型维护了俩套代码,,RoPE是主流位置编码。

3)激活函数

LLAMA,LLAMA2,Qwen,Baichuan,Yi模型都使用的是SwiGLU激活函数,ChatGLM1使用的是GELU激活函数,ChatGLM2使用了SwiGLU激活函数,SwiGLU是目前使用最广泛的激活函数。

4)归一化方法

LLaMA,LLaMA2,Qwen,Baichuan,Yi模型使用的归一化方位为RMS Norm, ChatGLM1使用的是Layer Norm,ChatGLM2使用了RMS Norm,大家默认都是用RMS Norm 归一化方法。

5)注意力机制

LLaMA,LLaMA2 7B,LLAMA2 13B,Qwen,ChatGLM-6B,BaiChuan,Yi模型使用的事MHA(多头注意力机制),LLaMA2 70B和ChatGLM2-6B 使用的是GQA(分组查询注意力机制)。

2. 模型测评

在众多国内开源模型之中,百川智能发布的Baichuan-7B、清华大学和智谱AI发布的ChatGLM2-6B、上海人工智能实验室发布的InternLM-7B等优秀模型广受业界关注。下表列出了这几个7B量级模型在几个有代表性评测集上的表现:

LLaMA-2在知识能力上有明显优势。但在学科、语言、推理和理解能力上,InternLM和ChatGLM2都已经超越了LLaMA-2,而且InternLM的领先优势十分明显。

五、问题解答

问题1:模型的上下文的记忆处理技术有哪些?

解答1:通常有两种方案,即:Fine-Tuning(模型微调)和 RAG(检索增强生成)。RAG(Retrieval Augmented Generation),检索增强生成:通过检索的方法来增强生成模型的能力。将文本转换为向量后,需要将文档和向量存储在数据库中,以便后续的检索和分析。向量数据库可以高效地存储大量的文本和向量,同时也有快速的的查询性能。Fine-Tuning(模型微调):使用准备好的知识库对LLM进行fine-tuning,让LLM成为领域专家,经常使用lora等低成本finetune,毕竟LLM的全参调参也是非常耗GPU的,从成本考虑不如RAG 向量知识库的形式,效果上很多业务下会比向量数据库略优。

问题2:模型的训练及推理,对显存的要求?

解答2:下面以举例的方式进行说明:

如果只是进行推理的话,还是比较容易计算的。目前模型的参数绝大多数都是float32类型, 占用4个字节。所以一个粗略的计算方法就是,每10亿个参数,占用4G显存(实际应该是10^9*4/1024/1024/1024=3.725G,为了方便可以记为4G)。比如LLaMA的参数量为7000559616,那么全精度加载这个模型参数需要的显存为:7000559616 * 4 /1024/1024/1024 = 26.08G 。这个数字就有点尴尬,专注游戏的Geforce系列最高只有24G,运行不起来,至少得上Tesla系列了。

如果还需要训练的话,则需要同时考虑优化器,梯度,临时显存等额外信息,只看前3部分,需要的显存是至少推理的3-4倍。7B的全精度模型加载需要78G ~ 104G。

问题3:模型精度的验证是怎么做的?

解答3:模型的精度验证目前国内主要采用在标准测评数据集上进行模型测试,测评集包含MMLU,CEval,GSM8K,MATH,TriviaQA,HumanEval,BBH等,在学科,语言,知识,推理,理解等多个维度进行测评。

问题4:大模型的未来发展方向有哪些?

解答4:基于Transformers底层架构的大模型存在被业内所诟病的罔顾事实而产生的“幻觉”问题、深层次的逻辑理解能力、数学推理能力等问题,为了实现大模型的高效训练和推理,有的是从模型底层下手,比如直接改变底层模型架构,将原来的Transformer架构改成近期新出的基于状态空间模型(SSM)的mamba架构;有的是在预训练微调方法上下手,通过采用少量精心策划的风格示例和精心设计的系统提示,对基础LLMs进行有效对齐的URIAL方法;还有一种方法就是对模型大而化之的处理方法,也就是本文要介绍的基于门控网络的混合专家模型(Mixture of Experts:MoE),由于篇幅限制,这里不做展开。

六、小节

今天我们学习了了LLaMA2大模型,我们对比了LLaMA1和 LLaMA2模型的技术细节以及整体同理,同时学习了LLaMA2模型的内部核心算法,包括与Transformers架构的差异, RMS Normalization,Group Multi Query Attention,SwiGLU Activation Function等算法。最后我们对比学习了LLaMA2与国内大模型的异同,更进一步加深了我们对LLaMA的理解。

 

点击关注,第一时间了解华为云新鲜技术~

 

标签:架构,函数,模型,LLaMA2,GQA,LLaMA,解析,注意力
From: https://www.cnblogs.com/huaweiyun/p/18283822

相关文章

  • 在Linux中,想在命令行下访问某个网站,并且该网站域名还没有解析,如何做?
    在Linux命令行下访问某个网站,但遇到该网站域名还没有解析的情况,确实会带来一些挑战。因为域名解析是互联网访问的基本前提,它负责将人类可读的域名转换为计算机可理解的IP地址。如果域名没有解析,那么直接通过域名访问网站是不可能的。不过,可以尝试以下几种方法来间接处理或绕过这个......
  • 在Linux中,自定义解析域名的时候,可以编辑哪个⽂件?是否可以⼀个ip对应多个域名?是否⼀个
    在Linux系统中,如果你想要自定义域名解析,通常有以下几种方法:编辑/etc/hosts文件:hosts文件是一个本地DNS解析文件,它允许你将域名映射到IP地址。你可以编辑这个文件来自定义域名解析。例如:192.168.1.10example.comwww.example.com在这个例子中,192.168.1.10是IP地址,exampl......
  • 在Linux中,如何指定dns服务器,来解析某个域名?
    在Linux中,指定DNS服务器来解析某个域名主要涉及编辑DNS配置文件或使用命令行工具进行临时配置。以下是详细的步骤和说明:一、编辑DNS配置文件(永久生效)Linux系统中,DNS解析的配置通常位于/etc/resolv.conf文件中。你可以通过编辑这个文件来指定DNS服务器。步骤:打开/etc/resolv.......
  • AI大模型实战进阶:内容审核应用深度解析
    1.背景介绍内容审核是指对互联网上的内容进行审核的过程,主要包括文本、图像、音频和视频等多种形式的内容。随着互联网的普及和用户生成内容的增加,内容审核的重要性也不断提高。人工审核不能满足需求,因此需要借助人工智能技术来自动化审核。AI大模型在内容审核领域具有广泛......
  • 用PyQt5打造炫酷界面:深入解析pyqt5-custom-widgets
    在PyQt5中,使用自定义小部件可以为应用程序增添更多实用性和时尚感。pyqt5-custom-widgets是一个开源项目,提供了一系列有用且时尚的自定义小部件,如开关按钮、动画按钮等。本文将详细介绍pyqt5-custom-widgets的安装和使用方法。安装可以使用PIP进行安装(根据你的平台,可能是......
  • 字符串相似度算法完全指南:编辑、令牌与序列三类算法的全面解析与深入分析
    在自然语言处理领域,人们经常需要比较字符串,这些字符串可能是单词、句子、段落甚至是整个文档。如何快速判断两个单词或句子是否相似,或者相似度是好还是差。这类似于我们使用手机打错一个词,但手机会建议正确的词来修正它,那么这种如何判断字符串相似度呢?本文将详细介绍这个问题。字......
  • 2.Kubernetes集群架构与组件
    一、Kubernetes组件       1.1控制面板组件(都是在master上面的)               kube-apiserver:对节点以及任务处理的一个相关接口(所有的调用都要经过这个组件调用)               kube-controller-manager:控制器管理器,管理各个类型的......
  • 历年CSP-J初赛真题解析 | 2018年CSP-J初赛选择题(1-15)
    学习C++从娃娃抓起!记录下CSP-J备考学习过程中的题目,记录每一个瞬间。附上汇总贴:历年CSP-J初赛真题解析|汇总_热爱编程的通信人的博客-CSDN博客第1题以下哪一种设备属于输出设备()A.扫描仪B.键盘C.鼠标D.打印机【答案】:D【解析】A、B、C都是输入设备第2题下列......
  • 深度长文解析SpringWebFlux响应式框架15个核心组件源码
    SpringWebFlux介绍SpringWebFlux是SpringFramework5.0版本引入的一个响应式Web框架,它与SpringMVC并存,提供了一种全新的编程范式,支持异步非阻塞的Web应用开发。WebFlux完全基于响应式编程模型,支持ReactiveStreams规范,可以在诸如Netty、Undertow以及Servlet......
  • 探索NVIDIA的强大计算能力:从数据中心到个人设备的全面解析
    前言在当今快速发展的科技时代,NVIDIA凭借其卓越的图形处理单元(GPU)系列,成为了计算领域的中流砥柱。从高性能的数据中心解决方案到个人用户的游戏设备,NVIDIA的产品涵盖了广泛的应用场景。本文将带你深入了解NVIDIA不同类别GPU的计算能力,以及它们在各自领域的卓越表现。NVIDI......