以 LLaMA 为代表的大型语言模型已成为当前主流的 Decoder-only 架构典范。相较于经典 Transformer 架构中的解码器(Decoder)模块,LLaMA 在结构设计上进行了多项关键优化与改进。本文将围绕 LLaMA 模型的核心架构,深入剖析其关键技术组件与设计演进,主要内容包括:

1)对 LLaMA 架构中核心模块——多头注意力机制(MHA)和前馈神经网络(FFN)的结构进行详细拆解与分析;

2)探讨各模块中归一化策略与激活函数的选择及其相较于原始 Transformer 的演变动因与优势;

3)梳理 LLaMA 系列模型的发展脉络,并介绍基于其架构衍生出的重要后续模型。

通过以上内容,旨在系统性地呈现 LLaMA 在现代大模型发展中的技术贡献与影响力。

1,LLaMA 架构介绍

LLaMA (Large Language Model Meta AI)是Meta 发布的一款开源模型,和 GPT 系列一样,LLaMA 模型也是 Decoder-only 架构,其主要的改进如下:

  • • Pre-norm。 为了提高训练稳定性,LLaMA 对每个 Transformer 子层的输入进行归一化,使用 RMSNorm归一化函数,好处是不用计算样本的均值,速度提升了40%
  • • FFN_SWiGLU 。结构上使用门控线性单元,且为了保持 FFN 层参数量不变,将隐藏单元的数量调整为原来的三分之二,而不是论文中的 4d,同时将 ReLU 替换为 SiLU 激活,以提高性能。
  • • Rotary Embeddings 。模型的输入不再使用 positional embeddings,而是在网络的每一层添加了 positional embeddings (RoPE)。

架构图如下:

img

2,归一化|位置和类型变化

2.1,由post-norm 到 pre-norm

图中的post和pre是指归一化相对于残差的位置。post 是指在残差之后做归一化,而pre是在残差之前做归一化。一般认为,Post-Norm在残差之后做归一化,对参数正则化的效果更强,进而模型的收敛性也会更好;而Pre-Norm有一部分参数直接加在了后面,没有对这部分参数进行正则化,可以在反向时防止梯度爆炸或者梯度消失,大模型的训练难度大。

img

相同的深度条件下,Post-Norm的效果要优于Pre-Norm,因为Pre-Norm实际上相当于通过了一个更宽的网络而非更深的网络,所以在同等深度下,Pre-Norm的实际效果相当于一个更浅却更宽的网络,

然而在LLaMA中却采用了Pre-Norm,或许是因为模型够深(7B,13B,30B,65B的模型,transformer layer数量分别为32,40,60,80),而Pre-Norm的恒等分支更加明显,有利于梯度的传播

2.2,由Layer-norm 到 RMS-norm

层归一化 LayerNorm 通过对输入以及权重矩阵,进行重新中心化和重新缩放(re-centering 和re-scaling),即减均值和除方差,也称平移不变性和缩放不变性),来帮助稳定训练并加速模型收敛。

  • Layer Norm

作用:对特征张量按照某一维度或某几个维度进行均值为0,方差为1的归一化操作。

其中 表示均值, 均方值,e为一个极小值防止分母为0, 可以认为是一个可以训练的参数。

Layer Norm 的作用方式 可以理解为张量中具体某一维度的所有元素,比如对于 shape 为 (2,2,8) 的张量 input,若指定归一化的操作为第三个维度,则会对第三个维度中的四个张量(2,2,1) ,即第一维度和第二维共四个元素,各进行上述的一次计算。

nn.LayerNorm(normalized_shape, eps=1e-05, elementwise_affine=True, device=None, dtype=None)
“”“
- normalized_shape:归一化的维度,int(最后一维)listlist里面的维度)。以(2,2,4)为例,如果输入是int,则必须是4,如果是list,则可以是[4], [2,4], [2,2,4],即最后一维,倒数两维,和所有维度
- eps:加在分母方差上的偏置项,防止分母为0
- elementwise_affine:是否使用可学习的参数,前者开始为1,后者为0,设置该变量为True,则二者均可学习随着训练过程而变化
”“”
  • RMS Norm

RMS Norm(Root Mean Square Layer Normalization),是一般Layer Norm的一种变体,可以在梯度下降时令损失更加平滑。与layerNorm 相比,RMS Norm的主要区别在于去掉了减去均值的部分(re-centering),只保留方差部分(re-scaling),从归一化的表达式上可以直观地看出。

其中 均方值表示为:

一个直观的猜测是,center操作,类似于全连接层的bias项,储存到的是关于数据的一种先验分布信息,而把这种先验分布信息直接储存在模型中,反而可能会导致模型的迁移能力下降。所以T5模型中不仅去掉了Layer Norma的center操作,它把每一层的bias项也都去掉了。

3, FFN|激活函数

前馈网络 FFN (Feed Forward Normal)原版的激活函数为ReLU,引入激活函数的目的是为了增加神经网络的非线性拟合能力。

3.1,ReLU 线性整流函数

ReLU(Rectified Linear Unit),通常意义下,其指代数学中的斜坡函数,即 :

在神经网络中使用ReLU激活函数作为非线性变换得到的输出结果是:

Transformer架构采用了ReLU激活函数的函数表达式,如下:

  • ReLU 死亡单元问题

一般参数的更新公式为:,当学习率过大时,导致参数更新后的值为负值,此时输入网络的正值会和权重相乘后,也会变为负值,负值通过relu后就会输出0。

如果权重w在后期有机会被更新为正值也不会出现大问题,但是当relu函数输出值为0时,relu的导数也为0,因此会导致后边Δw一直为0,进而导致权重w一直不会被更新,因此会导致这个神经元永久性死亡,

3.2,Sigmoid 逻辑函数和Swish激活函数

  • Sigmoid 逻辑函数

Sigmoid 是常用的连续、平滑的s型激活函数,也被称为逻辑(Logistic)函数。可以将一个实数映射到(0,1)的区间,用来做二分类。其函数定义为:

Sigmoid 存在一定梯度消失问题

即在训练深度神经网络时,随着反向传播过程的深入,当输入值过大或过小时,函数的导数(梯度)会变得非常小(接近零)。这会导致梯度在向网络的前层传播时逐渐变小,导致网络的前层几乎无法更新。

注意:死亡单元和梯度消失不是同一个问题,具体解释参考[4]。

  • Swish 激活函数

Swish 又被称为 SiLU(Sigmoid Linear Unit)是Sigmoid 和线性函数的组合

x 是输入值,β 是一个可学习参数。Swish 激活函数具有以下优点:

1)在某些情况下,Swish 的梯度更加平稳,可以减少梯度消失问题。

2)Swish 可以通过学习参数 β 来适应不同的问题,从而提高模型的泛化能力,比如在图像分类、自然语言处理等领域变现优秀。

3.3,GLU 及其变体

GLU(Gated Linear Units)其实不算是一种激活函数,而是一种神经网络层。它是一个线性变换后面接门控机制的结构。其中门控机制是一个sigmoid函数用来控制信息能够通过多少。

其中的激活函数就是sigmod 函数,通过改变激活函数可以得到 GLU 的各种变体。比如SwiGLU就是采用Swish作为激活函数的GLU变体。

SwiGLU本质上是对Transformer的FFN前馈传播层的第一层全连接和ReLU进行了替换,原生的FFN中采用两层全连接,第一层升维,第二层降维回归到输入维度,两层之间使用ReLU激活函数。

SwiGLU也是全连接配合激活函数的形式,不同的是SwiGLU采用两个权重矩阵和输入分别变换,再配合Swish激活函数做哈达马积的操作,因为FFN本身还有第二层全连接,所以带有SwiGLU激活函数的FFN模块一共有三个权重矩阵,用公式表达如下

其中W1,V为SwiGLU模块的两个权重矩阵,W2为原始FFN的第二层全连接权重矩阵。这种方式使得FFN中的权重矩阵从2个变为了3个,为了使得模型的参数大体不变,因此中间层的向量维度需要削减为原始维度的三分之二。

img

4,位置编码

在 Transformer 等序列模型中,位置编码用于向模型注入词元的位置信息,以帮助模型理解序列的顺序关系。

4.1,Sinusoidal 位置编码

定义: 基于正弦和余弦函数的数学公式生成位置编码

  • • 偶数维度:
  • • 奇数维度:

其中,pos 为词元位置,i 为维度索引,为词向量维度。

优势:

  • • 天然的长度外推性:正弦和余弦函数的周期性使其可生成任意长度的位置编码,无需预定义最大长度,适合处理超长序列。
  • • 隐含相对位置信息:通过三角函数的性质,两个位置的编码差值可部分反映相对位置关系,缓解了绝对位置编码对相对位置感知的不足。
  • • 计算高效:无需训练,直接通过公式生成,节省显存和训练成本。

4.2,RoPE(Rotary Position Embedding)

定义:通过对词向量进行旋转操作注入绝对位置信息,同时实现对相对位置的感知。

其核心是使位置为*m*的查询向量,与位置为*n*的键向量的内积,仅依赖于相对位置*m*−*n*,即 。

优势:

  • • 兼顾绝对位置编码的简洁性和相对位置编码的有效性:通过绝对位置旋转的方式,自然引入相对位置信息,解决了传统绝对位置编码无法感知词元间距离的问题。
  • • 支持长度外推优化:旋转角度的周期性与 base 参数相关,通过调整 base(如放大至 1000000)可扩展序列长度。
  • • 数学性质稳定:旋转操作不改变向量模长,避免了位置编码对词向量本身的干扰。
总结

LLaMA 架构作出的主要改变有三点,层归一化从post-norm 到pre-norm,FFN中的激活函数最终选择了SwiReLU,位置编码选择了稳定性更强的 RoPR。LLaMA模型架构取得成功,为其变体提供了可参考的范式,目前国内流行的Qwen架构基本为LLaMA架构。

千问Qwen大模型与标准transformer的主要区别如下

1)使用untied embedding嵌入;
2)使用旋转位置嵌入-即RoPE相对位置编码;
3)normalization实现–即 RMSNorm 代替 LayerNorm;
4)FFN激活函数-即 SwiGLU 代替 ReLU;
5)attention中除 QKV 外无bias–采用flash attention加速训练

读者福利:如果大家对大模型感兴趣,这套大模型学习资料一定对你有用

对于0基础小白入门:

如果你是零基础小白,想快速入门大模型是可以考虑的。

一方面是学习时间相对较短,学习内容更全面更集中。
二方面是可以根据这些资料规划好学习计划和方向。

包括:大模型学习线路汇总、学习阶段,大模型实战案例,大模型学习视频,人工智能、机器学习、大模型书籍PDF。带你从零基础系统性的学好大模型!

😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓
在这里插入图片描述

👉AI大模型学习路线汇总👈

大模型学习路线图,整体分为7个大的阶段:(全套教程文末领取哈)

第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;

第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;

第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;

第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;

第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;

第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;

第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。

👉大模型实战案例👈

光学理论是没用的,要学会跟着一起做,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

在这里插入图片描述

👉大模型视频和PDF合集👈

观看零基础学习书籍和视频,看书籍和视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
在这里插入图片描述
在这里插入图片描述

👉学会后的收获:👈

• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;

• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;

• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;

• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。

👉获取方式:

😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓
在这里插入图片描述

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐