LLM架构族对比
大语言模型(Large Language Model, LLM)的架构设计经历了从实验探索到系统化工程的演进过程。本文梳理主流架构族的技术特点、设计决策与演进脉络,为理解现代LLM提供结构化的参考框架。
1. GPT系列架构演进
GPT系列是Decoder-only架构的典型代表,其演进过程展示了参数量扩展与能力涌现的紧密关联。
1.1 GPT-1:Transformer Decoder-only架构的开创
2018年,OpenAI发布GPT-1(Generative Pre-trained Transformer),首次证明了仅使用Transformer Decoder架构进行预训练的可行性。1
核心架构特点:
| 组件 | 设计选择 |
|---|---|
| 架构类型 | Decoder-only(单向自注意力) |
| 层数 | 12层 |
| 隐藏维度 | 768 |
| 注意力头数 | 12 |
| 参数量 | 约1.17亿 |
| 位置编码 | 学习式(Learnable) |
| 归一化 | Post-LN |
预训练任务:标准语言建模(CLM, Causal Language Modeling)
历史意义:GPT-1证明了大参数量的Transformer Decoder在预训练后可通过微调适配下游任务,开创了”预训练+微调”的范式。
1.2 GPT-2:规模扩大与Zero-shot能力
2019年发布的GPT-2将参数量提升至15亿,并展示了令人惊讶的Zero-shot能力。2
架构演进:
| 改进 | GPT-1 | GPT-2 |
|---|---|---|
| 层数 | 12 | 48 |
| 隐藏维度 | 768 | 1600 |
| 参数量 | 117M | 1.5B |
| 上下文长度 | 512 | 1024 |
| 归一化位置 | Post-LN | Pre-LN |
Pre-LN架构:将层归一化前置,显著改善了深层Transformer的训练稳定性。
# Pre-LN Transformer Block(简化)
def transformer_block_pre_ln(x):
# Pre-LN: 先归一化再做注意力
x_norm = LayerNorm(x)
attn_output = MultiHeadAttention(x_norm)
x = x + Dropout(attn_output)
x_norm = LayerNorm(x)
ffn_output = FeedForward(x_norm)
x = x + Dropout(ffn_output)
return xZero-shot假设:GPT-2的实验表明,语言模型足够强大时,可以直接根据任务描述(Prompt)完成任务,无需示例。这一观察为后续In-context Learning埋下伏笔。
1.3 GPT-3:175B参数与In-context Learning
GPT-3以1750亿参数的规模震惊学界,展示了强大的In-context Learning(上下文学习)能力。3
核心架构:
| 参数 | 数值 |
|---|---|
| 参数量 | 175B |
| 层数 | 96 |
| 隐藏维度 | 12288 |
| 注意力头数 | 96 |
| 上下文长度 | 2048 |
| 词表大小 | 50257 |
| 训练Token数 | ~300B |
In-context Learning机制:GPT-3无需参数更新,仅通过输入中的示例即可学习新任务。
关键观察:
- 模型能力随参数量呈幂律增长(Scaling Law)
- 175B参数出现涌现能力(Emergent Abilities)
- Few-shot性能显著优于Zero-shot
API商业模式:GPT-3开启了”模型即服务”的时代,用户通过API调用模型,降低了AI应用门槛。
1.4 GPT-4:多模态与复杂推理
GPT-4在架构上更为封闭,但据公开信息,其主要改进包括:4
| 特性 | 实现方式 |
|---|---|
| 多模态 | 视觉编码器 + 语言模型融合 |
| 复杂推理 | 强化学习人类反馈(RLHF)增强 |
| 长上下文 | 改进的位置编码,支持32K上下文 |
| 指令遵循 | 大量人类标注的指令微调 |
RLHF Pipeline:
架构假设:基于GPT-3.5的技术报告和开源社区分析,GPT-4可能采用:
- MoE(混合专家)架构降低推理成本
- 更高效的注意力机制
- 改进的RLHF流程
2. LLaMA系列
LLaMA(Large Language Model Meta AI)是Meta开源的LLM基础模型族,其设计理念是在有限算力下追求最优性能。5
2.1 LLaMA 1-2:开源LLM先驱
LLaMA 1(2023年2月)发布了7B、13B、33B、65B四个规模的模型。
核心架构决策:
| 组件 | LLaMA选择 | 动机 |
|---|---|---|
| 归一化 | RMSNorm | 比LayerNorm更高效的归一化方式 |
| 激活函数 | SwiGLU | 门控机制增强信息流动 |
| 位置编码 | RoPE | 支持更长上下文,自然外推 |
| 注意力 | Grouped Query Attention | 减少KV缓存,提升推理效率 |
| FFN | SwiGLU变体 | 3×隐藏层维度 |
SwiGLU激活函数:
# SwiGLU实现
class SwiGLU(nn.Module):
def __init__(self, d_model, d_ff):
super().__init__()
self.w1 = nn.Linear(d_model, d_ff, bias=False)
self.w2 = nn.Linear(d_model, d_ff, bias=False)
self.w3 = nn.Linear(d_ff, d_model, bias=False)
def forward(self, x):
return self.w3(F.silu(self.w1(x)) * self.w2(x))LLaMA 2(2023年7月)在此基础上:
- 上下文长度扩展至4096
- 发布了LLaMA 2-Chat对话模型
- 训练数据量增加40%至2万亿Token
- 引入Ghost Attention等对话优化技术
2.2 LLaMA 3:128K上下文与405B参数
2024年发布的LLaMA 3将开源LLM推向前所未有的规模。6
模型规模:
| 模型 | 参数量 | 上下文 | 训练Token |
|---|---|---|---|
| LLaMA 3 8B | 8B | 128K | 15T |
| LLaMA 3 70B | 70B | 128K | 15T |
| LLaMA 3 405B | 405B | 128K | 15T |
架构升级:
- **分组查询注意力(GQA)**扩展至所有规模
- RoPE频率基底调整,支持更长上下文
- 改进的训练数据质量过滤
- 128K Token上下文:通过位置编码优化实现
2.3 Llama家族变体
开源社区基于LLaMA衍生出众多变体模型:
| 模型 | 特点 | 训练方法 |
|---|---|---|
| Alpaca | 7B/13B | Self-Instruct微调 |
| Vicuna | 7B/13B/33B | ShareGPT数据微调 |
| Code Llama | 7B/13B/34B/70B | 代码专项训练 |
| Mistral 7B | 7B | 专家设计的紧凑架构 |
| Yi | 6B/34B | 双语(英中)优化 |
Code Llama架构:
Code Llama在LLaMA 2基础上,针对代码任务进行了专项优化:
# 代码任务的特殊设计
class CodeAttention(nn.Module):
def __init__(self, d_model, num_heads):
super().__init__()
self.attention = GroupedQueryAttention(d_model, num_heads, num_kv_groups=8)
# 代码特定的注意力模式
self.long_range_weight = 0.1 # 增强长距离依赖
def forward(self, x, code_structure=None):
# 融合代码结构信息(如AST)
attn_out = self.attention(x)
return attn_out3. 其他重要架构
3.1 PaLM:Pathways架构与540B参数
Google的PaLM(Pathways Language Model)展示了Pathways系统的可扩展性。7
架构特点:
| 特性 | 实现 |
|---|---|
| 参数规模 | 540B |
| 架构 | 标准Transformer Decoder |
| 并行策略 | Pathways(多路径并行) |
| 注意力 | Standard MHA |
| 激活函数 | SwiGLU |
| 归一化 | Sandwich Norm |
Pathways系统设计:
PaLM的核心创新在于Pathways计算范式:
# Pathways伪代码示意
@jax.pmap
def pathway_forward(inputs, model_weights):
# 多路径并行执行
outputs = []
for path in range(num_paths):
path_output = transformer_block(inputs[path])
outputs.append(path_output)
# 路径聚合
return aggregate(outputs)3.2 Chinchilla:70Boptimal理论与数据效率
DeepMind的Chinchilla重新定义了LLM训练的Scaling Law。8
核心发现:之前Kaplan等人的Scaling Law高估了模型大小的优先级。
Chinchilla Optimal理论:
对于计算预算 ,最优模型参数量 和训练Token数 满足:
这意味着模型大小和数据量应等比例扩展。
| 模型 | 参数量 | 训练Token | 性能 |
|---|---|---|---|
| Chinchilla | 70B | 1.4T | 超越GPT-3 |
| Gopher | 280B | 300B | 基线 |
架构对比:
| 组件 | Chinchilla | Gopher |
|---|---|---|
| 参数 | 70B | 280B |
| 层数 | 80 | 80 |
| 隐藏维度 | 1280 | 2560 |
| 注意力头 | 32 | 64 |
| 训练Token | 1.4T | 300B |
3.3 Mistral:注意力机制优化
Mistral AI发布的Mistral 7B展示了紧凑模型的高效设计。9
核心技术创新:
1. Sliding Window Attention(滑动窗口注意力):
class SlidingWindowAttention(nn.Module):
def __init__(self, d_model, num_heads, window_size=4096):
super().__init__()
self.window_size = window_size
# 标准注意力 + 滑动窗口
self.attention = MultiHeadAttention(d_model, num_heads)
self.sparse_attention = SparseAttention(d_model, num_heads, window_size)
def forward(self, x):
# 局部窗口注意力
local_out = self.sparse_attention(x)
# 全局注意力(稀疏)
global_out = self.attention(x)
return local_out + global_out2. Grouped Query Attention(GQA):
将KV头分组,共享注意力计算:
# GQA vs MHA vs MQA对比
class GroupedQueryAttention(nn.Module):
def __init__(self, d_model, num_heads, num_kv_heads):
# num_kv_heads < num_heads 时触发GQA
self.num_kv_groups = num_heads // num_kv_heads| 注意力类型 | KV头数 | 内存效率 | 质量 |
|---|---|---|---|
| MHA | n_heads | 1× | 最优 |
| GQA | n_heads/g | g× | 接近最优 |
| MQA | 1 | n_heads× | 略有下降 |
3.4 Mixtral与MoE架构
Mixtral 8x7B是Mistral的MoE(Mixture of Experts)变体。10
MoE架构:
其中 是门控函数, 是专家网络。
class MixtureOfExperts(nn.Module):
def __init__(self, d_model, num_experts, top_k=2):
super().__init__()
self.num_experts = num_experts
self.top_k = top_k
self.gate = nn.Linear(d_model, num_experts)
self.experts = nn.ModuleList([
FeedForward(d_model) for _ in range(num_experts)
])
def forward(self, x):
# 门控权重
gate_logits = self.gate(x)
weights, indices = torch.topk(gate_logits, self.top_k)
weights = F.softmax(weights, dim=-1)
# 选择top-k专家
outputs = torch.zeros_like(x)
for k in range(self.top_k):
expert_idx = indices[:, k]
expert_output = self.experts[expert_idx](x)
outputs += weights[:, k:k+1] * expert_output
return outputs3.5 Qwen:阿里通义千问架构
阿里巴巴的Qwen系列展示了中文LLM的高效训练路径。11
Qwen架构特点:
| 组件 | Qwen设计 |
|---|---|
| 位置编码 | RoPE(优化频率基底) |
| 注意力 | GQA(大规模模型) |
| 激活函数 | SwiGLU |
| 归一化 | RMSNorm |
| 词表 | 大词表(约15万) |
Qwen2突破:
- Qwen2-72B采用完整的GQA配置
- 支持128K上下文
- 多语言能力显著提升
4. 架构决策对比
4.1 激活函数:SwiGLU vs Gated Linear Unit
SwiGLU(LLaMA采用):
Gated Linear Unit(GLU):
对比:
| 特性 | SwiGLU | GLU | ReGLU |
|---|---|---|---|
| 门控函数 | SiLU/Swish | Sigmoid | GeLU |
| 表达能力 | 高 | 中 | 中 |
| 训练稳定性 | 良好 | 良好 | 优秀 |
| 计算开销 | 中 | 中 | 中 |
| 典型使用 | LLaMA, PaLM | - | - |
4.2 位置编码:RoPE vs ALiBi vs 绝对位置编码
| 特性 | RoPE | ALiBi | 绝对位置编码 |
|---|---|---|---|
| 编码方式 | 旋转矩阵 | 线性偏置 | 可学习/正弦 |
| 参数量 | 可忽略 | 零参数 | 可学习 |
| 相对位置 | ✅ 隐式编码 | ✅ 显式编码 | ❌ |
| 外推能力 | 中等(需NTK-Scaling) | 优秀 | 差 |
| 实现复杂度 | 中等 | 低 | 低 |
| 与注意力融合 | QK旋转 | 分数加偏置 | 嵌入相加 |
| 代表模型 | LLaMA, GPT-NeoX | MPT, Bloom | GPT-2早期 |
RoPE数学原理:
RoPE通过旋转Q/K向量实现位置编码:
注意力分数仅依赖相对位置 。
4.3 归一化:RMSNorm vs LayerNorm
LayerNorm:
其中 ,
RMSNorm(Root Mean Square Normalization):
对比:
| 特性 | LayerNorm | RMSNorm |
|---|---|---|
| 计算量 | 需计算均值和方差 | 仅需计算RMS |
| 移位不变性 | ✅ | ❌ |
| 表达能力 | 高 | 略低 |
| 训练稳定性 | 优秀 | 良好 |
| 效率提升 | 基线 | ~10-20% |
Pre-Norm vs Post-Norm:
# Pre-Norm(现代LLM常用)
def pre_norm_block(x, sublayer):
return x + sublayer(LayerNorm(x))
# Post-Norm(原始Transformer)
def post_norm_block(x, sublayer):
return LayerNorm(x + sublayer(x))| 架构 | 归一化位置 | 稳定性 |
|---|---|---|
| GPT-3 | Pre-Norm | 良好 |
| LLaMA | Pre-Norm + 残差后 | 优秀 |
| Chinchilla | Pre-Norm | 良好 |
4.4 注意力变体
Grouped Query Attention(GQA):
MHA(Multi-Head Attention)、MQA(Multi-Query Attention)、GQA对比如下:
# 注意力类型对比
class MHA(nn.Module):
"""Multi-Head Attention: 每个头独立Q,K,V"""
# 参数量: 3 * d_model * d_model
class MQA(nn.Module):
"""Multi-Query Attention: 所有头共享K,V"""
# 参数量: d_model * d_model + d_model * d_k
class GQA(nn.Module):
"""Grouped Query Attention: 分组共享K,V"""
# 参数量: d_model * d_model + num_kv_groups * d_model * d_kFlash Attention:
Flash Attention通过Tiling技术避免完整注意力矩阵的存储:
| 复杂度 | 标准注意力 | Flash Attention |
|---|---|---|
| 内存 | ||
| HBM访问 |
其中 为SRAM大小。
5. 设计原则总结
5.1 Scaling Laws指导
Kaplan等人(2020)的Scaling Law:
其中 为测试损失, 为参数量, 为训练数据量。
Chinchilla Optimal(2022)修正:
| 结论 | Kaplan Law | Chinchilla |
|---|---|---|
| 预算分配 | 优先增大模型 | 模型数据等比例缩放 |
| 8倍计算预算 | 5倍模型 + 1.5倍数据 | 2倍模型 + 4倍数据 |
| 数据效率 | 低 | 高 |
5.2 推理效率vs效果权衡
Key Trade-off:
效果
↑
│ MoE (高效)
│ / \
│ Dense / \ 长上下文
│ (高效果) / \
│ / \
│ / \
│ / SwiGLU
│ / \
│ / \
│ / GQA \
│ / \
│ / Flash Attention
│ /________________________→ 效率
架构决策树:
| 场景 | 推荐架构 |
|---|---|
| 极致推理效率 | MoE + GQA + Flash Attention |
| 最佳效果 | Dense + MHA + 长上下文 |
| 平衡方案 | GQA + SwiGLU + Pre-Norm |
| 超长序列 | RoPE/ALiBi + Sparse Attention |
5.3 开源vs闭源策略
开源模型代表:
| 模型 | 特点 | 许可证 |
|---|---|---|
| LLaMA 3 | 405B最强开源 | Llama 3 Community |
| Mistral 7B | 高效紧凑 | Apache 2.0 |
| Qwen2 | 多语言优秀 | Apache 2.0 |
| Gemma | Google出品 | Gemma Terms |
闭源模型代表:
| 模型 | 特点 |
|---|---|
| GPT-4 | 多模态、复杂推理 |
| Claude 3 | 长上下文、安全对齐 |
| Gemini | Google生态集成 |
生态影响:
| 维度 | 开源优势 | 闭源优势 |
|---|---|---|
| 定制化 | 可完全微调 | 受限 |
| 透明度 | 架构可分析 | 黑盒 |
| 成本 | 推理成本可控 | 按需付费 |
| 安全性 | 风险较高 | 专业防护 |
| 创新速度 | 社区驱动 | 集中资源 |
6. 架构演进趋势
6.1 当前主流架构共识
经过多年演进,现代LLM形成以下架构共识:
# 现代LLM架构模板
modern_llm_config = {
"architecture": "Decoder-only Transformer",
"normalization": "RMSNorm + Pre-LN",
"activation": "SwiGLU",
"position_encoding": "RoPE (optimized)",
"attention": "Grouped Query Attention",
"attention_optimization": "Flash Attention",
"optimizer": "AdamW",
"training": "BF16 mixed precision"
}6.2 未来方向
| 方向 | 代表技术 | 预期影响 |
|---|---|---|
| 更长上下文 | 位置编码插值、线性注意力 | 100K+上下文 |
| 高效推理 | MoE、量化、推测解码 | 10×推理加速 |
| 多模态融合 | 视觉编码器集成 | 原生多模态 |
| 专用架构 | 领域自适应设计 | 垂直领域优化 |
参考资料
相关词条:Transformer与注意力机制,FlashAttention深度解析,ALiBi位置编码,MoE混合专家机制
Footnotes
-
Radford et al., “Improving Language Understanding by Generative Pre-Training”, 2018 ↩
-
Radford et al., “Language Models are Unsupervised Multitask Learners”, 2019 ↩
-
Brown et al., “Language Models are Few-Shot Learners”, NeurIPS 2020 ↩
-
OpenAI, “GPT-4 Technical Report”, 2023 ↩
-
Touvron et al., “LLaMA: Open and Efficient Foundation Language Models”, Meta AI 2023 ↩
-
Meta AI, “The Llama 3 Herd of Models”, 2024 ↩
-
Chowdhery et al., “PaLM: Scaling Language Modeling with Pathways”, JMLR 2023 ↩
-
Hoffmann et al., “Training Compute-Optimal Large Language Models”, NeurIPS 2022 ↩
-
Jiang et al., “Mistral 7B”, arXiv 2023 ↩
-
Jiang et al., “Mixtral of Experts”, arXiv 2024 ↩
-
Alibaba Cloud, “Qwen2 Technical Report”, 2024 ↩