破茧与蝶变:从 GPT 到 Claude,万字揭秘主流大语言模型架构演进史

导读:自 2017 年 Transformer 诞生以来,自然语言处理领域经历了翻天覆地的变化。从初代 GPT 的试探性探索,到 GPT-3 的暴力美学,再到如今以 Claude 3、Llama 3 为代表的新一代架构崛起,大模型的底层设计经历了无数次“微调”与“重构”。本文将带你深入时间线,剥开黑盒,从工程和数学的视角全景式剖析主流大模型架构的演进史。


引言:为什么我们需要关注底层架构?

在当前“百模大战”的喧嚣中,我们常常被各种跑分和评测指标吸引,却忽略了一个核心事实:模型的能效比、推理速度、上下文长度限制,几乎全由其底层架构决定。

当 ChatGPT 刚发布时,它的上下文长度仅为 4K(约 3000 字),而今天发布的 Claude 3 甚至原生支持高达 200 万的上下文窗口。这种跨越式的工程奇迹,绝非仅仅依靠“堆显卡”就能实现,它背后是一系列精妙的架构演进:

  1. 注意力机制的优化(从 Sparse Attention 到 GQA/MQA)
  2. 位置编码的进化(从绝对位置到 RoPE、ALiBi)
  3. 激活函数与归一化的更迭(ReLU 到 SwiGLU,LayerNorm 到 RMSNorm)
  4. 对齐与工程优化的结合(RLHF 到 Constitutional AI,推理引擎的极致压榨)

接下来,让我们正式开启这场硬核的架构溯源之旅。


第一章:万物起源 —— GPT 系列的“基座”与暴力美学

1.1 Decoder-Only 的胜利

在 Transformer 原论文《Attention is All You Need》中,模型由编码器和解码器两部分组成。最初,BERT 采用了 Encoder 架构(双向注意力,适合理解任务),而 OpenAI 则坚定地选择了 Decoder-Only 架构(单向/掩码注意力,适合生成任务)。

事实证明,Decoder-Only 架构具有极强的 Scaling Law(扩展定律)潜力。其核心在于因果掩码,它确保在预测下一个 Token 时,模型只能看到当前的输入,无法“偷看”未来。

1
2
3
4
5
6
7
8
9
# 基础的因果掩码生成逻辑
import torch

def generate_causal_mask(seq_len):
# 生成一个上三角矩阵,对角线及以上为1(或-inf),防止信息泄露
mask = torch.tril(torch.ones(seq_len, seq_len))
mask = mask.masked_fill(mask == 0, float('-inf'))
mask = mask.masked_fill(mask == 1, float(0.0))
return mask

1.2 GPT-3 的工程极限挑战

GPT-3 将参数量拉升到了 1750 亿,这带来了巨大的工程挑战:标准的 Dense Attention 计算复杂度是 O(N2)O(N^2)(N 为序列长度)。如果上下文太长,显存会直接爆炸。

为了解决这个问题,GPT 系列在早期引入了多种工程优化,例如混合精度训练(FP16/BF16)和模型并行(Tensor Parallelism)。但在架构层面,GPT-3 依然是一个“简单且庞大”的怪物,它证明了量变引起质变,但在处理长文本时显得力不从心。


第二章:架构的基因突变 —— LLaMA 引领的现代架构范式

如果说 GPT 证明了大力出奇迹,那么 Meta 推出的 LLaMA 系列则代表了“精细化架构设计”的巅峰。如今几乎所有主流开源模型(如 Qwen、GLM、Mistral)以及闭源巨头(如 Claude),都在采用或借鉴 LLaMA 提出的现代架构组件。

2.1 激活函数的进化:从 ReLU 到 SwiGLU

在早期的神经网络中,ReLU(f(x)=max(0,x)f(x) = max(0, x))是标配,后来 GPT-2/3 采用了带有高斯误差线性单元的 GeLU。而在现代大模型中,SwiGLU 成为了绝对的主流。

SwiGLU 引入了门控机制,虽然在数学形式上比 ReLU复杂,但它能显著提升模型在深层网络中的表达能力和梯度流动性。

1
2
3
4
5
6
7
8
9
10
11
12
13
import torch.nn as nn
import torch.nn.functional as F

class SwiGLU(nn.Module):
def __init__(self, dim, hidden_dim):
super().__init__()
self.w1 = nn.Linear(dim, hidden_dim, bias=False)
self.w2 = nn.Linear(dim, hidden_dim, bias=False)
self.w3 = nn.Linear(hidden_dim, dim, bias=False)

def forward(self, x):
# SwiGLU(x) = (xW1 ⊗ swish(xW2))W3
return self.w3(F.silu(self.w1(x)) * self.w2(x))

注:SwiGLU 将原本单纯的全连接层拆分为两条路径,一条进行 SiLU 激活,另一条作为门控信号进行逐元素相乘,极大地增强了特征提取能力。

2.2 归一化的更迭:RMSNorm 与 Pre-Norm

深度网络容易出现梯度消失或爆炸。以前常用 LayerNorm (LN)。现代模型转向了 RMSNorm(均方根归一化)。

RMSNorm 移除了 LayerNorm 中的均值计算,只计算均方根。这在理论上认为,神经网络的性能主要取决于缩放不变性,而非平移不变性。在工程上,RMSNorm 减少了约 10% 的计算开销。

此外,架构从 Post-Norm(Transformer 原版)全面转向了 Pre-Norm(在进入注意力层之前进行归一化)。Pre-Norm 虽然可能略微降低模型的理论上限,但它在深层网络中训练极其稳定,几乎不需要 Warm-up。

2.3 上下文的钥匙:旋转位置编码

这是现代大模型最核心的突破之一。Transformer 本身是没有位置概念的(词袋模型),必须注入位置信息。

绝对位置编码(如 GPT 的正弦编码)只能标记固定的位置,很难泛化到超出训练长度的文本。RoPE 通过巧妙的复数旋转机制,将位置信息融入到 Query 和 Key 的点积运算中。

RoPE 的核心思想是:在二维空间中,通过旋转矩阵对向量进行变换,使得两个向量的内积不仅取决于它们的值,还取决于它们之间的相对距离。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 简化的 RoPE 旋转位置编码实现逻辑
import torch

def precompute_freqs_cis(dim: int, end: int, theta: float = 10000.0):
# 计算频率
freqs = 1.0 / (theta ** (torch.arange(0, dim, 2)[: (dim // 2)].float() / dim))
t = torch.arange(end, device=freqs.device)
freqs = torch.outer(t, freqs).float()
# 转换为复数指数
freqs_cis = torch.polar(torch.ones_ones_like(freqs), freqs)
return freqs_cis

def apply_rotary_emb(xq, xk, freqs_cis):
# xq: [batch, seq, dim] -> 转换为复数域
xq_ = torch.view_as_complex(xq.float().reshape(*xq.shape[:-1], -1, 2))
xk_ = torch.view_as_complex(xk.float().reshape(*xk.shape[:-1], -1, 2))
# 应用旋转
freqs_cis = freqs_cis[0:xq_.shape[1]]
xq_out = torch.view_as_real(xq_ * freqs_cis).flatten(2)
xk_out = torch.view_as_real(xk_ * freqs_cis).flatten(2)
return xq_out.type_as(xq), xk_out.type_as(xk)

RoPE 的出现,使得模型在处理长文本时具有天然的相对位置感知能力,为后来的“长文本扩展”奠定了基础。


第三章:突破内存墙 —— 注意力机制的极尽压榨

当模型参数量突破百亿,上下文长度突破 4K、8K 甚至达到 100 万时,标准的多头注意力(MHA)成为了最大的显存杀手。

3.1 KV Cache:以空间换时间

大模型生成文本是自回归的(逐字生成)。在生成第 NN 个词时,需要用到前 N1N-1 个词的 Key (K) 和 Value (V)。为了避免重复计算,现代推理框架都会将计算过的 K 和 V 缓存在显存中。

然而,随着上下文变长,KV Cache 会呈指数级增长,严重占用显存带宽。

3.2 MQA 与 GQA:Claude 与 LLaMA 的拿手好戏

为了解决 KV Cache 过大的问题,主流架构开始采用 Multi-Query Attention (MQA)Grouped-Query Attention (GQA)

  • MHA (多头注意力):每个 Query 头都有自己独立的 Key 和 Value 头。例如 32 个头,就有 32 组 K 和 V。
  • MQA (多查询注意力):所有 Query 头共享同一组 Key 和 Value。这极大地节省了显存,推理速度飙升,但可能会带来轻微的精度损失。
  • GQA (分组查询注意力):折中方案。将 Query 分组(例如分为 8 组),每组共享一对 Key 和 Value。

以 Llama-2/3 和 Claude 系列为例,它们广泛采用了 GQA。通过将 KV 的头数减少(例如 Q 头数为 32,KV 头数仅为 8),KV Cache 的显存占用直接缩减为原来的 1/4,从而允许模型处理更长的上下文,且大幅提升了推理的吞吐量。

1
2
3
# GQA 的直观理解:Q的维度与K,V的维度比例不再是1:1
# 假设 num_attention_heads = 32, num_key_value_heads = 8 (GQA)
# 在计算 Attention 时,需要将 K, V 复制或者通过广播机制扩展到与 Q 相同的头数进行计算

第四章:从 GPT 到 Claude —— 对齐与工程优化的双冠王

架构的演进不仅仅在于模型前向传播的数学公式,还在于训练方法系统工程的深度融合。这也是 Anthropic 的 Claude 系列能够从 ChatGPT 的包围中杀出重围的核心原因。

4.1 RLHF 的局限与 Claude 的 Constitutional AI (CAI)

ChatGPT 依靠 RLHF(基于人类反馈的强化学习)完成了对齐,让模型不再“口无遮拦”。但 RLHF 高度依赖昂贵且容易出现偏见的人类标注数据。

Claude 架构背后的核心创新是 Constitutional AI (宪法 AI)

  • 阶段一(监督学习):给模型设定一组“宪法原则”(如 helpful、harmless、honest)。让模型自己生成有害的提示,然后自己根据宪法原则进行批评和修正,再用修正后的数据微调自己。
  • 阶段二(RL):模型自己评估哪个回答更好(AI Feedback),替代了人类标注,实现了 RLAIF(基于 AI 反馈的强化学习)。

这种机制使得 Claude 在安全性、拒绝不当请求的逻辑严密性上远超早期的 GPT 架构。

4.2 极致的系统工程:Ring Attention 与跨节点扩展

Claude 3 最令人震撼的是其原生支持 200 万 Token 的上下文。在底层架构上,这依赖于分布式计算的革命——Ring Attention(环形注意力)

当上下文达到 200 万时,单张 GPU(如 H100 80G)根本无法装下输入序列的激活值和 KV Cache。Ring Attention 将长序列切分成多个块,分配给多台机器上的 GPU 组成一个环。

通过计算与通信的重叠,集群中的每张 GPU 只需要保存局部的 KV Cache,同时通过高速网络(InfiniBand)在环中传递 Q、K、V 块,完美实现了跨节点的长序列并行处理,打破了单卡内存墙的限制。

4.3 推理引擎的加速:FlashAttention 与 PagedAttention

现代大模型推理离不开底层硬件架构的深度优化:

  1. FlashAttention: 重新组织了注意力矩阵的计算顺序。标准的注意力计算需要在 HBM(高带宽内存)中读写巨大的中间矩阵 N×NN \times N。FlashAttention 通过分块计算,尽量在 GPU 极速但极小的 SRAM 中完成计算,减少了 HBM 的读写次数,实现了约 2-3 倍的加速。
  2. PagedAttention (vLLM): 借鉴了操作系统的虚拟内存分页机制。由于生成的序列长度不确定,传统的 KV Cache 预分配连续显存会导致大量的“内存碎片”。PagedAttention 将 KV Cache 划分为固定大小的 Block,按需分配,将显存利用率逼至 95% 以上。

第五章:下一代架构的曙光 —— 超越 Transformer?

虽然当前的 GPT 和 Claude 均基于 Transformer 架构,但随着规模的继续扩大,Transformer O(N2)O(N^2) 的计算瓶颈依然是一个紧箍咒。未来的架构演进正在朝着新的方向探索:

5.1 状态空间模型:Mamba 的崛起

2023 年底,Mamba 架构横空出世。它基于状态空间模型(SSM),摒弃了传统的注意力机制。Mamba 的核心优势在于:

  • 线性复杂度:推理时的计算量不随上下文长度呈平方级增长,而是线性增长。
  • 选择性机制:早期的 SSM(如 H3)无法像 Attention 那样聚焦于重要信息,Mamba 引入了参数化的选择性机制,使其既具备 Transformer 的拟合能力,又拥有 RNN 的线性推理效率。

5.2 混合专家架构的极致化

GPT-4 的传闻中广泛采用了 MoE 架构。MoE 将 Transformer 的 FFN 层拆分成多个“专家”,每次计算时通过一个路由机制只激活其中 1-2 个专家。
这种方式可以在不增加推理计算成本的前提下,疯狂增加模型的总参数量。未来的演进方向将是细粒度的 MoE(如 DeepSeek-V2 采用的细粒度专家路由),甚至将注意力头也进行专家化。


总结:从“大”到“强”,从“通才”到“良相”

从 GPT-1 到如今的 Claude 3 Opus,大语言模型的架构演进史,本质上是一部在硬件物理极限上跳舞的工程诗史

  • 架构组件上:我们见证了从粗糙的 Post-LN 到高效的 Pre-RMSNorm,从死板的绝对位置编码到优雅的 RoPE,从笨重的 MHA 到精巧的 GQA。
  • 系统工程上:从单机模型的暴力运行,到结合 Ring Attention、FlashAttention、PagedAttention 的全链路分布式协同。
  • 对齐哲学上:从简单的 RLHF 进化到了自我约束、自我进化的 Constitutional AI。

作为开发者和工程师,理解这些底层架构的演进,不仅有助于我们在遇到瓶颈时做出正确的技术选型(如什么时候该用 MQA,什么时候需要开启 KV Cache 量化),更能让我们在这个日新月异的 AI 时代,保持一份清醒的技术洞察力。

未来的大模型架构将不再是单纯的 Transformer,而是融合了 SSM 线性优势、MoE 稀疏特性、且由更强 AI 对齐法则约束的超级混合体。 让我们拭目以待。