Llama 模型架构解析:从 Pre-RMSNorm 到 GQA 的技术演进

前言

Llama(Large Language Model Meta AI)是由 Meta AI 团队研发的一系列开源大语言模型。与许多闭源商业模型(如 GPT 系列)不同,Llama 系列在发布时提供了模型权重和训练细节(尽管早期版本有使用限制),使得研究人员、企业和个人开发者都能在其基础上进行微调、部署和创新。

架构

Llama的架构整体上遵循了Transformer的Decoder-only设计,这与GPT系列类似。然而,它在一些关键组件上进行了重要的改进和优化。

以下是Llama模型架构的核心组成部分:

Pre-RMSNorm

Llama采用了**前置层归一化(Pre-Layer Normalization)**策略,即在每个子层(自注意力层或前馈网络)之前 进行归一化。同时,它使用了一种更高效的归一化方法------RMSNorm,来代替传统的LayerNorm。

  • 前置层归一化:将归一化层(如LayerNorm)放在子层(自注意力层或前馈网络)之前,而非传统后置归一化(Post-normalization)的输出后。这种策略能缓解梯度消失或爆炸问题,提升深层网络稳定性。

  • RMSNorm :一种轻量级归一化方法,仅通过输入特征的均方根(Root Mean Square, RMS)进行缩放,省略均值计算,提升了计算效率。公式如下:
    RMSNorm(x)=γ⊙xRMS(x)+ϵ \text{RMSNorm}(\mathbf{x}) = \gamma \odot \frac{\mathbf{x}}{\text{RMS}(\mathbf{x})+ \epsilon} RMSNorm(x)=γ⊙RMS(x)+ϵx

    其中:

    • RMS(x)=1d∑i=1dxi2\text{RMS}(\mathbf{x}) = \sqrt{\frac{1}{d}\sum_{i=1}^{d}x_i^2}RMS(x)=d1∑i=1dxi2 (输入向量的均方根)。
    • γ\gammaγ 为可学习参数向量。
    • ⊙\odot⊙ 表示逐元素相乘。

位置编码:旋转位置编码(RoPE)

  • LLaMA 没有使用原始 Transformer 中的绝对位置编码或可学习的位置嵌入。
  • 而是采用 RoPE,将 token 的绝对位置信息编码为旋转矩阵,并在计算注意力分数时以相对位置的方式作用于查询和键向量,从而有效建模长距离依赖。

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

从 Llama 2 开始,模型引入了 GQA 来优化推理性能。GQA 通过将查询头分为若干组,每组内的所有查询头共享同一对键头和值头,实现计算量与模型质量的折中。具体而言:

  • MHA(多头注意力):每个查询头独立计算键值,捕捉丰富的语义信息,但参数量和计算成本过高。
  • MQA(多查询注意力):所有查询头共享同一套键值矩阵,显著提升推理速度,但因过度简化导致精度损失。
  • GQA(分组查询注意力):介于两者之间,通过分组共享键值,既减少计算量,又保留不同头之间的语义多样性。

SwiGLU激活函数

  • 在两层全连接网络中间,使用激活函数 SwiGLU(而非 ReLU 或 GELU)

  • 公式如下:
    SwiGLU(x)=(xW1)⊙Swish(xW2) \text{SwiGLU}(\mathbf{x})=(\mathbf{xW_1})\odot \text{Swish}(\mathbf{x}\mathbf{W_2}) SwiGLU(x)=(xW1)⊙Swish(xW2)

    其中,Swish(x)=x⋅σ(βx)\text{Swish}(\mathbf{x})=x\cdot\sigma(\beta \mathbf{x})Swish(x)=x⋅σ(βx),β\betaβ 为标量,通常为1,σ\sigmaσ 表示 Sigmoid 函数。

  • 优势:相比ReLU,能捕捉更复杂的特征模式,提升模型表达能力。

相关推荐
坠星不坠1 天前
pycharm如何导入ai大语言模型的api-key
人工智能·语言模型·自然语言处理
hongjianMa1 天前
【论文阅读】Hypercomplex Prompt-aware Multimodal Recommendation
论文阅读·python·深度学习·机器学习·prompt·推荐系统
子非鱼9211 天前
1 NLP导论及环境准备
人工智能·自然语言处理
现在,此刻1 天前
李沐深度学习笔记D3-线性回归
笔记·深度学习·线性回归
能来帮帮蒟蒻吗1 天前
深度学习(2)—— 神经网络与训练
人工智能·深度学习·神经网络
illuspas1 天前
MI50运算卡使用llama.cpp的ROCm后端运行Qwen3-Coder-30B-A3B的速度测试
人工智能·llama
herogus丶1 天前
【LLM】LLaMA-Factory 训练模型入门指南
python·ai编程·llama
illuspas1 天前
MI50运算卡使用llama.cpp的ROCm后端运行gpt-oss-20b的速度测试
人工智能·gpt·llama
谏书稀1 天前
LLaMA Factory微调大模型
python·transformer·llama
知行力1 天前
【GitHub每日速递 20251111】PyTorch:GPU加速、动态网络,深度学习平台的不二之选!
pytorch·深度学习·github