首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >大模型 “智慧骨架”,LLaMA架构介绍

大模型 “智慧骨架”,LLaMA架构介绍

作者头像
AI老马
发布2026-01-13 20:28:40
发布2026-01-13 20:28:40
5420
举报
文章被收录于专栏:AI前沿技术AI前沿技术

以LLaMA 为代表的模型是大模型主流架构Decoder-only的典型代表,相对于基础Transformer中的decoder模块,本文主要围绕LLaMA 结构的核心组成和主要变化点,介绍以下内容:

1)LLaMA架构的核心组成部分模块MHA和FFN的结构拆解。 2)每个模块的归一化和激活函数,相对于基础transformer变化原因。 3)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)。

架构图如下:

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

2.1,由post-norm 到 pre-norm

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

相同的深度条件下,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) ,即第一维度和第二维共四个元素,各进行上述的一次计算。

代码语言:javascript
复制
nn.LayerNorm(normalized_shape, eps=1e-05, elementwise_affine=True, device=None, dtype=None)
“”“
- normalized_shape:归一化的维度,int(最后一维)list(list里面的维度)。以(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个,为了使得模型的参数大体不变,因此中间层的向量维度需要削减为原始维度的三分之二。

4,位置编码

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

4.1,Sinusoidal 位置编码

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

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

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

优势:

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

4.2,RoPE(Rotary Position Embedding)

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

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

优势:

  • • 兼顾绝对位置编码的简洁性和相对位置编码的有效性:通过绝对位置旋转的方式,自然引入相对位置信息,解决了传统绝对位置编码无法感知词元间距离的问题。
  • • 支持长度外推优化:旋转角度的周期性与 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加速训练

参考:

代码语言:javascript
复制
https://zhuanlan.zhihu.com/p/620297938
https://www.armcvai.cn/2024-10-21/llama1-3-model.html llama 结构详细介绍
https://zhuanlan.zhihu.com/p/627901828 GPT1-到GPT4
https://juejin.cn/post/7449919228033613864 死亡单元和梯度消失问题。
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-08-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AI老马啊 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1,LLaMA 架构介绍
  • 2,归一化|位置和类型变化
    • 2.1,由post-norm 到 pre-norm
    • 2.2,由Layer-norm 到 RMS-norm
  • 3, FFN|激活函数
    • 3.1,ReLU 线性整流函数
    • 3.2,Sigmoid 逻辑函数和Swish激活函数
    • 3.3,GLU 及其变体
  • 4,位置编码
    • 4.1,Sinusoidal 位置编码
    • 4.2,RoPE(Rotary Position Embedding)
      • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档