LLaMA架构

Large Language Model Meta AI

概述

LLaMA是Meta于2023年开源的大语言模型系列,采用Decoder-only Transformer架构, 通过一系列架构优化在较小参数量下实现了出色的性能。LLaMA的开源开启了开源大模型时代, 成为后续众多开源模型的基础。

核心贡献:证明了经过充分训练的小模型可以匹敌更大的模型,推动开源大模型发展。

架构特点

1. RMSNorm归一化

LLaMA使用RMSNorm替代传统的LayerNorm:

# LayerNorm

LN(x) = (x - μ) / σ * γ + β


# RMSNorm(更简单,无需均值和方差计算)

RMSNorm(x) = x / √(mean(x²) + ε) * γ

RMSNorm计算更高效,且在LLM训练中表现稳定。

2. SwiGLU激活函数

将传统FFN的激活函数替换为SwiGLU:

# 传统FFN

FFN(x) = ReLU(xW₁ + b₁)W₂ + b₂


# SwiGLU FFN

SwiGLU(x) = Swish(xW₁) ⊙ (xW₂) * W₃

# 其中 Swish(x) = x * sigmoid(x)

注:SwiGLU增加了参数量(三个投影矩阵),但带来更好的性能。

3. 旋转位置编码 (RoPE)

使用旋转位置编码替代绝对位置编码:

  • 通过旋转矩阵编码位置信息
  • 支持相对位置,更好的长度外推
  • 计算效率高,无需学习位置嵌入

# RoPE核心公式

R_θ,d(x) = [x1, x2] * [cos θ, -sin θ; sin θ, cos θ]

# θ = position * base^(-2i/d)

4. 分组查询注意力 (GQA)

LLaMA 2及之后版本使用GQA加速推理:

  • LLaMA 1:使用标准多头注意力(MHA)
  • LLaMA 2/3:使用分组查询注意力(GQA)
  • KV Cache减少,推理速度提升

模型规格

模型维度层数注意力头参数量
LLaMA-7B409632327B
LLaMA-13B5120404013B
LLaMA-33B6656605233B
LLaMA-65B8192806465B

训练数据

LLaMA使用公开数据集训练,总token数约1.4T:

数据来源Token数占比
CommonCrawl674B48%
C4170B12%
Github95B7%
Wikipedia77B5%
Books89B6%
ArXiv27B2%
StackExchange20B1%

LLaMA系列演进

版本发布时间主要改进上下文长度
LLaMA 12023.02基础架构2048
LLaMA 22023.07GQA、更长上下文、对话版本4096
LLaMA 32024.04更大词表、更强性能8192
LLaMA 3.12024.07128K上下文、405B版本128K

代码示例

from transformers import AutoModelForCausalLM, AutoTokenizer

# 加载LLaMA模型
model = AutoModelForCausalLM.from_pretrained(
    "meta-llama/Llama-2-7b-hf",
    device_map="auto",
    torch_dtype="auto"
)
tokenizer = AutoTokenizer.from_pretrained("meta-llama/Llama-2-7b-hf")

# 生成文本
prompt = "The future of artificial intelligence is"
inputs = tokenizer(prompt, return_tensors="pt").to(model.device)

outputs = model.generate(
    **inputs,
    max_new_tokens=100,
    temperature=0.7,
    do_sample=True
)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))

性能对比

基准测试LLaMA-7BLLaMA-13BLLaMA-65BChinchilla-70B
MMLU35.146.963.467.5
HellaSwag76.181.185.386.2
PIQA79.880.782.882.8
WinoGrande70.073.077.077.5

架构影响

LLaMA架构已成为开源大模型的事实标准:

  • Vicuna、Alpaca:基于LLaMA微调的对话模型
  • Codellama:LLaMA的代码特化版本
  • Mistral:继承LLaMA架构,加入创新
  • Falcon、Qwen:采用类似架构设计

最佳实践

  • 使用预训练模型进行微调时,保持架构不变
  • 推理时利用GQA优势(LLaMA 2+)
  • 使用RoPE支持更长上下文
  • 量化部署时注意RMSNorm的数值稳定性
  • 中文任务建议使用经过中文增强的版本

参考资料

  • LLaMA: Open and Efficient Foundation Language Models (Touvron et al., 2023)
  • LLaMA 2: Open Foundation and Fine-Tuned Chat Models (Touvron et al., 2023)
  • Meta AI LLaMA Official Repository
----