LLaMA(Large Language Model Meta AI)是 Meta(原 Facebook)发布的一系列开源大语言模型,自 2023 年 2 月首次推出以来,已成为开源大模型领域最具影响力的模型家族之一。LLaMA 系列以其开放权重、相对高效的架构设计、在学术和商业场景中的广泛应用而闻名,被视为 GPT、Claude、Gemini 等闭源模型的主要开源竞争对手。
截至 2025 年,LLaMA 系列已经经历了五代演进:
| 版本 | 发布时间 | 模型规模 | 核心特性 |
|---|---|---|---|
| LLaMA 1 | 2023-02 | 7B/13B/33B/65B | 纯文本,仅公开数据训练 |
| LLaMA 2 | 2023-07 | 7B/13B/70B | 商用许可,RLHF 微调 |
| LLaMA 3 | 2024-04 | 8B/70B | 改进分词器,更强推理能力 |
| LLaMA 3.1 | 2024-07 | 8B/70B/405B | 128K 上下文,首个 400B+ 开源模型 |
| LLaMA 3.2 | 2024-09 | 1B/3B/11B-V/90B-V | 多模态视觉,边缘设备模型 |
| LLaMA 4 | 2025-04 | Scout 17B/Maverick 17B/Behemoth(训练中) | MoE 架构,原生多模态,1000 万 token 上下文 |
2023 年 2 月 24 日,Meta 发布了 LLaMA 1 系列,这是 Meta 首次公开发布的大语言模型。与当时主流的 GPT-3(闭源)和 LLaMA(仅限研究社区)不同,LLaMA 1 的主要创新在于:仅使用公开可用的数据集进行训练,摒弃了此前业界普遍采用的私有数据训练方式。
LLaMA 1 提供了四个规模版本:
Meta 的研究表明,7B 参数的 LLaMA 1 在大多数基准测试上超越了 GPT-3(175B),而 13B 版本与 GPT-3 相当——这验证了高质量训练数据比模型规模更重要的假设。
LLaMA 1 采用了标准的 decoder-only Transformer 架构,但引入了几个关键改进:
预归一化(Pre-normalization):使用 RMSNorm(Root Mean Square Layer Normalization)对每个 Transformer 子层的输入进行归一化,而不是输出。这种"Pre-Norm"设计提升了训练的稳定性。
SwiGLU 激活函数:替代了标准的 GELU 或 ReLU 激活函数,采用了 SwiGLU(Swish-Gated Linear Unit)。SwiGLU 已被证明在 Transformer 模型中能显著提升性能,但需要额外的参数(因为它是门控结构)。
旋转位置编码(RoPE):使用 Rotary Position Embedding(RoPE)来处理位置信息,区别于 GPT 系列使用的绝对位置编码。RoPE 通过旋转矩阵将位置信息编码到注意力计算中,天然支持相对位置表示和长度外推。
优化器:使用 AdamW 优化器,配合余弦学习率调度和权重衰减。
LLaMA 1 的训练数据完全来自公开来源,总计约 1.4T tokens:
| 数据集 | 占比 | 描述 |
|---|---|---|
| CommonCrawl | 67% | 网页抓取数据,经过广泛过滤和去重 |
| C4 | 15% | Colossal Clean Crawled Corpus |
| Wikipedia | 4.5% | 多语言维基百科 |
| Books | 4.5% | 书籍语料(如 Gutenberg 项目) |
| GitHub | 4.5% | 公开代码仓库 |
| ArXiv | 2.5% | 学术论文 |
| StackExchange | 2% | 问答社区数据 |
LLaMA 1 的开源发布在 AI 社区产生了巨大影响:
2023 年 7 月 18 日,Meta 在 Microsoft Inspire 大会上发布了 LLaMA 2,这是一个里程碑式的版本——首次提供商用许可,使得 LLaMA 2 可以被广泛应用于商业产品中。
LLaMA 2 提供了三个规模版本,每个都有基础版(Base)和对话版(Chat):
其中 Chat 版本通过 Rejection Sampling 和 PPO(Proximal Policy Optimization)进行 RLHF(Reinforcement Learning from Human Feedback)微调。
LLaMA 2 在架构上基本保持了 LLaMA 1 的设计,但做了以下改进:
LLaMA 2 Chat 的训练流程是其核心创新之一:
LLaMA 2 引入了一项创新技术——Ghost Attention(GAtt),用于改善长对话中模型对系统指令的遵循能力。GAtt 通过将系统消息注入到对话的每个回合中(但在损失函数中掩盖),使得即使经过多轮对话,模型仍能保持对初始指令的响应。
LLaMA 2 的商用许可极大地推动了其生态发展:
2024 年 4 月 18 日,Meta 发布了 LLaMA 3,这是一次重大的能力跃升。LLaMA 3 引入了全新的分词器、更高质量的训练数据,并在多个基准上达到了当时开源模型的 SOTA。
改进的分词器(Tokenizer):使用与 LLaMA 2 不同的分词器,基于 tiktoken 实现,词汇量从 32K 扩展到 128K,大幅提升了编码效率和跨语言能力。
训练数据规模:在 15 万亿 token 上训练,是 LLaMA 2(2T)的 7.5 倍。
分组查询注意力(GQA)全面应用:与 LLaMA 2 仅在 70B 上使用 GQA 不同,LLaMA 3 在所有规模上都使用了 GQA。
更强的指令遵循能力:Chat 版本采用了更复杂的后训练方案,结合 SFT、拒绝采样和 PPO。
大幅提升的推理能力:LLaMA 3 在代码、数学推理等方面取得了显著提升。70B 版本在 MMLU 上达到 82.0,接近 GPT-4 的水平。
2024 年 7 月 23 日,Meta 发布了 LLaMA 3.1——这是大模型发展史上一个重要的转折点。LLaMA 3.1 405B 是首个达到 GPT-4 级别性能的开源模型,标志着开源模型第一次真正追赶上了闭源模型的前沿水平。Meta 同时发布了 92 页的技术论文《The Llama 3 Herd of Models》,详细记录了训练过程。
LLaMA 3.1 405B 是 Meta 训练的最大模型,其技术细节尤为值得关注:
与许多人的预期相反,LLaMA 3.1 405B 仍然采用了标准的 dense Transformer 架构,没有使用 MoE(Mixture of Experts)。Meta 的论文中明确解释了这一选择:
"While intensive human annotation could theoretically solve these issues, synthetic data generation offers a complementary approach at a lower cost and higher scale."
核心考量是训练稳定性和可扩展性。Dense Transformer 虽然在推理时计算量更大,但训练过程更稳定,且 Meta 通过大规模工程优化(16,000+ H100 GPUs,39.3M GPU 小时)克服了训练挑战。
LLaMA 3.1 的后训练是其与 GPT-4 竞争的关键:
SFT(Supervised Fine-Tuning):使用包括 2500 万条合成数据在内的指令数据集
拒绝采样(Rejection Sampling):针对每个 prompt 采样多个候选回答,选择奖励模型评分最高的
DPO(Direct Preference Optimization):替代传统的 RLHF PPO,使用直接偏好优化,更简单且更稳定
合成数据生成:405B 模型生成高质量合成数据用于训练 8B 和 70B 版本。有趣的是,405B 用自己生成的数据训练反而会降级,因此 405B 使用"执行反馈"作为真实信号
知识蒸馏:大型模型在多个任务上生成高质量的推理轨迹,用于训练较小的模型,形成"教师-学生"范式
为了在单台服务器上部署 405B 模型,Meta 采用了 FP8 量化:
2024 年 9 月 25 日,Meta 发布了 LLaMA 3.2,这是 LLaMA 系列首次引入多模态能力和边缘设备模型的版本。
LLaMA 3.2 发布了两类模型:
文本模型(轻量级):
视觉模型(多模态):
LLaMA 3.2 的多模态能力基于交叉注意力架构:
与 LLaMA 4 的"早期融合"不同,LLaMA 3.2 采用的是更传统的后期融合方式——视觉编码器与语言模型相对独立。
1B 和 3B 模型是为边缘部署优化的版本:
2025 年 4 月,Meta 发布了 LLaMA 4 系列,这是 LLaMA 历史上架构变化最大的一次发布。LLaMA 4 从传统的 dense Transformer 转向了 MoE(Mixture of Experts) 架构,并实现了原生多模态。
LLaMA 4 发布了两款可部署模型,同时预告了一款更大规模的训练中模型:
LLaMA 4 最核心的变化是从 Dense Transformer 转向 MoE 架构:
MoE 的核心思想是:大型模型不需要一次性激活所有参数,而是根据不同输入选择性激活最适合的"专家"子网络。
LLaMA 4 的 MoE 实现:
输入 Token
│
▼
┌──────────────┐
│ 门控网络 │ → 选择 Top-1 专家(除共享专家外)
│ (Router) │
└──────────────┘
│
├────┬────┬────┬────┐
│ E1 │ E2 │ E3 │ E4 │ ... (Scout: 16, Maverick: 128)
└────┴────┴────┴────┘
│ │ │ │
└────┴────┴────┴────┘
│ 被选专家
▼
┌──────────────┐
│ 共享专家 │ ← 所有 token 都经过
└──────────────┘
│
▼
输出
关键设计:
LLaMA 4 引入了 iRoPE(interleaved RoPE),通过交错注意力层替代传统的位置编码方案,从而支持1000 万 token 的超长上下文。
iRoPE 的核心思想是:不同注意力层可以关注不同范围的位置关系,通过交错组合实现任意长度的上下文外推。
LLaMA 4 实现了原生多模态——与 LLaMA 3.2 的后期融合不同,LLaMA 4 采用早期融合架构:
这使得 LLaMA 4 能够实现更好的跨模态理解和推理。
Meta 开发了 MetaP(Meta-Parameterization)技术,用于自动确定关键超参数:
所有 LLaMA 4 模型都使用 FP8(8-bit floating point)精度训练:
LLaMA 4 的发布代表了 Meta 开源模型的重大范式转变:
Root Mean Square Layer Normalization 是 LayerNorm 的简化变体:
LayerNorm: y = (x - μ) / σ * γ + β (需计算均值和方差)
RMSNorm: y = x / RMS(x) * γ (仅需计算均方根)
RMSNorm 计算效率更高,且在大规模 Transformer 中被证明效果与 LayerNorm 相当。
SwiGLU 是 Swish 激活函数和 GLU(Gated Linear Unit)的结合:
SwiGLU(x) = Swish(W_g · x) ⊙ (W_u · x)
其中 Swish(x) = x · σ(βx)
相比 ReLU,SwiGLU 在 Transformer 中通常能带来 0.1-0.5% 的基准提升,但代价是参数量增加(因为需要额外的门控投影矩阵)。
RoPE 通过旋转矩阵实现位置编码,具有以下优点:
旋转矩阵公式:
其中 是位置索引, 是预定义的旋转频率。
GQA 是 MHA(Multi-Head Attention)和 MQA(Multi-Query Attention)之间的折中方案:
LLaMA 家族中 GQA 的演进:
在 LLaMA 3.1 405B 中,GQA 配置为 128 个查询头和 8 个键值头(kv_ratio = 16:1)。
| 组件 | LLaMA 1 | LLaMA 2 | LLaMA 3/3.1 | LLaMA 4 |
|---|---|---|---|---|
| 归一化 | Pre-RMSNorm | Pre-RMSNorm | Pre-RMSNorm | Pre-RMSNorm |
| 激活函数 | SwiGLU | SwiGLU | SwiGLU | SwiGLU |
| 位置编码 | RoPE | RoPE | RoPE | iRoPE |
| 注意力 | MHA | MHA/GQA | GQA | GQA + MoE |
| FFN | Dense | Dense | Dense | MoE |
| 上下文 | 2K | 4K | 128K | 10M (Scout) |
| 分词器 | BPE (32K) | BPE (32K) | tiktoken (128K) | tiktoken (128K+) |
LLaMA 系列最核心的竞争壁垒之一是数据策略:
从 LLaMA 2 开始,Meta 建立了一套完整的后训练流水线:
预训练模型
│
├──→ SFT(监督微调)
│ 使用人工标注 + 合成数据
│
├──→ 奖励建模(RM)
│ 训练有用性和安全性两个奖励模型
│
├──→ 拒绝采样(Rejection Sampling)
│ 从 SFT 模型采样 N 个回答,选择 RM 评分最高的
│
└──→ DPO / PPO
直接偏好优化或近端策略优化迭代
Meta 在 LLaMA 3.1/3.2 中系统性地应用了知识蒸馏:
LLaMA 的开放权重政策催生了庞大的衍生模型生态:
LLaMA 的部署生态非常完善:
| 版本 | 许可 | 商用 |
|---|---|---|
| LLaMA 1 | 非商业研究许可 | ❌ |
| LLaMA 2 | LLaMA 2 社区许可 | ✅(月活 < 7 亿免费) |
| LLaMA 3/3.1 | LLaMA 3 社区许可 | ✅(同上) |
| LLaMA 3.2 | LLaMA 3.2 社区许可 | ✅(同上) |
| LLaMA 4 | LLaMA 4 社区许可 | ✅(同上) |
注意:LLaMA 的许可协议是定制化的社区许可(Community License),并非 OSI 认证的开源许可证。Meta 使用的是"开放权重(Open Weight)"的表述,强调权重的可用性而非完全符合开源定义。
我个人在项目中对 LLaMA 系列有较多使用经验,记录如下:
1. 本地部署首选 Ollama
在开发调试时,推荐使用 Ollama 部署 LLaMA 模型。它提供了一键式体验和兼容 OpenAI 格式的 REST API,非常适合快速原型开发。
# 拉取 LLaMA 3.1 8B 模型
ollama pull llama3.1:8b
# 运行
ollama run llama3.1:8b
# 通过 API 调用
curl http://localhost:11434/api/chat -d '{
"model": "llama3.1:8b",
"messages": [{"role": "user", "content": "Hello"}]
}'
2. 生产环境使用 vLLM
对于生产部署,vLLM 的 PagedAttention 技术能显著提升吞吐量。以下是一个简单的部署配置:
# 使用 vLLM 部署 LLaMA 3.1 8B
from vllm import LLM, SamplingParams
llm = LLM(
model="meta-llama/Meta-Llama-3.1-8B-Instruct",
tensor_parallel_size=1, # 单 GPU
dtype="bfloat16",
max_model_len=8192, # 可根据需要调整
)
sampling_params = SamplingParams(
temperature=0.7,
top_p=0.9,
max_tokens=2048,
)
3. 量化选择策略
根据 GPU 显存量选择量化方案:
| 模型 | BF16 | FP8 | INT4 |
|---|---|---|---|
| LLaMA 3.1 8B | 16 GB | 8 GB | 4 GB |
| LLaMA 3.1 70B | 140 GB | 70 GB | 35 GB |
| LLaMA 3.1 405B | ~800 GB | ~400 GB | ~200 GB |
在实践中:
1. QLoRA 是性价比最高的选择
在大多数场景下,QLoRA(Quantized Low-Rank Adaptation)是最实用的微调方式:
# 使用 LLaMA-Factory 进行 QLoRA 微调
python src/train_bash.py \
--stage sft \
--model_name_or_path meta-llama/Meta-Llama-3.1-8B \
--dataset my_custom_dataset \
--finetuning_type lora \
--quantization_bit 4 \
--lora_target q_proj,v_proj \
--output_dir ./llama-qlora-output
2. 踩坑:RLHF 的数据质量 > 数据量
在我的项目中,最初使用 10 万条自动标注数据做 RLHF,效果反而不如仅使用 5000 条人工精心标注的数据。LLaMA 系列对训练数据质量极为敏感,粗糙的自动化标注会引入噪声,甚至降低模型性能。
3. 上下文窗口的实际局限
虽然 LLaMA 3.1/3.2 宣称支持 128K 上下文长度,但实际使用中超过 32K 后,长距离信息的召回率会显著下降(所谓的"lost in the middle"问题)。对于真实应用,建议:
1. 许可合规
注意 LLaMA 社区许可的月活限制:如果产品的月活跃用户超过 7 亿,需要额外向 Meta 申请许可。这对大型社交平台或面向海量用户的产品有影响,但绝大多项目中无需担心。
2. 权重访问限制
Hugging Face 上的 LLaMA 模型需要填写 Meta 的联系方式表单才能访问。建议提前注册 Meta 的 LLaMA 访问权限,避免在 Pipeline 中卡住。
3. 推理效率
LLaMA 的推理可以通过 FlashAttention-2 加速,但需要 CUDA 12+ 和 Hopper 架构 GPU:
# 在 transformers 中启用 FlashAttention-2
from transformers import AutoModelForCausalLM
model = AutoModelForCausalLM.from_pretrained(
"meta-llama/Meta-Llama-3.1-8B",
attn_implementation="flash_attention_2", # 需要 torch >= 2.1.1
torch_dtype=torch.bfloat16
)
LLaMA 系列的发展轨迹清晰地展示了 Meta 的开源大模型战略:
能力追赶:从 LLaMA 1 的"缩小差距"到 LLaMA 3.1 的"与 GPT-4 持平",再到 LLaMA 4 Behemoth 的"超越 GPT-4.5",展现了持续快速的迭代节奏
架构演变:从 Dense → GQA → MoE 的演进路径,反映了 Meta 在"编码器效率 vs 模型能力"之间的权衡思考
多模态转型:从纯文本(LLaMA 1-3.1)到视觉理解(LLaMA 3.2)再到原生多模态(LLaMA 4),Meta 正在构建统一的跨模态基础模型
生态构建:开源 + 云合作伙伴 + 收入分成的模式,使得 LLaMA 从单纯的"Meta 的产品"演化为"整个行业的开源 AI 基础设施"
LLaMA 未来的发展方向可能包括:专用推理模型(LLaMA 4 已在预告中提及)、更深度的多模态融合(视频理解、语音输入)、以及更激进的架构创新。
对于开发者而言,LLaMA 系列目前是开源大模型领域最重要的选择之一,尤其在需要私有部署、数据合规、定制微调的场景下,LLaMA 提供了闭源模型难以替代的灵活性。
参考资料