大模型架构基础:Transformer 内部结构详解
摘要: 针对大模型技术学习者对 Transformer 内部机制的系统性理解需求,本文以「数据流全景→组件逐层拆解→完整架构串讲」为主线,依次剖析了分词与嵌入的预处理、Attention 注意力机制(QKV 三部曲、缩放与 Softmax、自注意力与交叉注意力)、FFN 前馈网络(从经典升维降维到 SwiGLU 门控)、RoPE 旋转位置编码(时钟模型与相对距离直觉)、RMSNorm 归一化(从 LayerNorm 到 Pre-Norm 的演进)以及 LM Head 与 Temperature 的输出控制六大组件。每个组件的讲解均遵循「是什么→为什么这样设计→相比前代方案有何优势」的逻辑链路,最终将所有组件串联为完整的数据流,使读者能够理解 GPT、Claude、DeepSeek 等主流大模型共享的架构基因与设计取舍。
1. 引言
全篇内核
Transformer = (Attention + FFN) × N 层 + 残差连接 + 归一化。把这个结构做得足够大、喂足够多数据、训足够长时间,就是今天的大模型。
整个 Transformer 本质上是在反复做一件事——让每个 token 的向量表示与序列中其他 token 的向量进行加权交互,从而在向量中融入上下文信息。
前两篇我们画出了 AI 的版图,然后钻进了神经网络内部,理解了神经元如何计算、网络如何学习、深度为什么重要。现在来到最后一道门:Transformer 本身长什么样?
如果说神经网络是 LLM 的血肉,那 Transformer 就是 LLM 的骨架。GPT、Claude、DeepSeek、Qwen——所有这些模型的名字不同、规模不同、训练数据不同,但它们共享同一套架构基因。把这套基因拆开来看懂,你就理解了当代 AI 最核心的技术底座。
2. 全景数据流
在逐个拆解组件之前,先把整条链路铺开。一条文本从输入到输出,到底经历了什么?
整个过程分两步预处理、一个核心循环、一步输出:

2.1 预处理第一道:分词
分词(Tokenization) 是将原始文本切分为模型可处理的最小单元(Token)的过程。这是文本进入模型的第一道工序,计算机不认识文字,只认识数字,所以必须先拆词,再映射为数字 ID。
例句: "AI 改变世界"
中文 Tokenizer(如 Qwen)切分结果:
["AI", "改变", "世界"] → Token IDs: [10449, 43290, 34550]
英文 Tokenizer(如 GPT)切分结果:
["Hello", " world", "!"] → Token IDs: [15496, 995, 0]Token(词元):分词后的最小单元。中文里一个 Token 可能是一个字、一个词或一个标点;英文里可能是一个单词、一个子词或一个字母。
为什么需要分词?
- 统一输入格式:无论输入是中文、英文还是代码,最终都变成一串数字(Token IDs),模型只认这个
- 压缩语义:分词不是按字符拆,而是按语义单元拆——「改变」作为一个整体 Token 比拆成「改」「变」两个字符更高效
主流分词算法:
| 算法 | 原理 | 代表模型 |
|---|---|---|
| BPE(字节对编码) | 从字符开始,反复合并出现频率最高的相邻对 | GPT-2/3/4、LLaMA |
| WordPiece | 与 BPE 类似,但按概率增益选择合并对 | BERT |
| SentencePiece | 将文本视为 Unicode 字节流,语言无关 | LLaMA、Mistral、Qwen |
| Unigram | 从大词表出发,反复删除低频词 | T5、XLNet |
词表大小的影响:
- 词表太小:常见词被拆得太碎 → 「人工智能」可能被拆成「人」「工」「智」「能」四个 Token,信息密度低
- 词表太大:Embedding 矩阵占用参数量巨大 → 词表从 5 万扩到 15 万,Embedding 参数翻三倍
- 中文尤其需要大词表(10-25 万),否则常用汉字被过度拆分
特殊 Token:
| Token | 含义 |
|---|---|
<bos> / <s> | 序列开始标记(Beginning of Sequence) |
<eos> / </s> | 序列结束标记(End of Sequence)——模型输出这个就表示「说完了」 |
<pad> | 填充标记——批量处理时补齐长度到一致 |
<unk> | 未知词标记——碰到词表外的词用这个替代 |
<sep> | 分隔标记——用于区分输入的不同部分 |
2.2 预处理第二道:嵌入
嵌入(Embedding) 是将离散的 Token ID 映射为连续向量表示的过程。
分词得到的是一串整数 Token ID(如 10449),但神经网络无法直接对整数做数学运算,必须先将 ID 转换为高维浮点数向量,才能进行后续的 Attention、FFN 等计算。
Embedding 层就是一张巨大的可训练字典——用 Token ID 做索引,查出对应的 d_model 维向量。语义相近的词在高维空间中靠得更近:「猫」和「狗」的向量夹角约 15°,「猫」和「宇宙」的向量夹角近 90°。
Embedding 的工作原理——查表:
Embedding 矩阵本质上是一张巨大的可学习字典:
(vocab_size × d_model,即 词表大小 × 向量维度)
┌──────────────────────────┐
│ 词0: [0.1, -0.3, ...] │ ← 第 0 行
│ 词1: [-0.2, 0.5, ...] │ ← 第 1 行
│ ... │
Token ID ──→ 查第 ID 行 ──→ 取出该行向量
│ ... │
│ 词N: [0.4, 0.1, ...] │ ← 第 N 行
└──────────────────────────┘关键特性——语义相近的词,向量也相近:
经过训练后,Embedding 空间自动形成语义结构。相似的词在空间中靠得更近:
余弦相似度:
cos("猫", "狗") ≈ 0.85 → 都是宠物,向量夹角小
cos("猫", "汽车") ≈ 0.12 → 毫不相关,向量夹角大
cos("猫", "宇宙") ≈ 0.05 → 毫不相关,向量夹角很大
著名的类比:"国王" - "男性" + "女性" ≈ "女王"Embedding 矩阵的参数量:
Embedding 矩阵尺寸 = 词表大小 × 向量维度。有些模型还同时维护一个等大的输出矩阵(未做权重共享时),这部分参数可占总参数的 15-30%:
| 模型 | 词表大小 | d_model | Embedding 参数量 |
|---|---|---|---|
| GPT-2 | 50,257 | 768 | 0.39 亿 |
| GPT-3 | 50,257 | 12,288 | 6.17 亿 |
| LLaMA 2 7B | 32,000 | 4,096 | 1.31 亿 |
| Qwen 2.5 7B | 152,064 | 3,584 | 5.45 亿 |
| DeepSeek-V3 | 129,280 | 7,168 | 9.27 亿 |
与 Tokenizer 的关系——配套使用: 每个预训练模型都绑定了特定的 Tokenizer 和 Embedding。分词和嵌入是紧密耦合的——用 LLaMA 的 Embedding 必须用 LLaMA 的 Tokenizer,否则 Token ID 对不上,查表查出来的是完全错误的向量。
2.3 核心循环:Transformer Block × N 层
预处理得到的向量序列进入 Transformer 的主体——十几个到上百个结构完全相同的 Block 层层堆叠。每个 Block 内部交替执行两个操作:Attention 让所有 token 互相「交流」,FFN 让每个 token 独立「思考」。
无论经过多少层,向量的维度始终不变(都是 d_model),所以 Block 可以无限制堆叠。
2.4 输出:LM Head + Softmax.
最后一层 Block 输出的隐向量仍然在 d_model 维的语义空间中。要变成人类可读的文字,需要用 LM Head 把它投影回词表空间——得到一个长度等于词表大小的 Logits 向量——再经过 Softmax 转成概率分布,选概率最高的那个词元输出。
3 Transformer 架构
Transformer 是一种基于自注意力机制(Self-Attention)的神经网络架构,由 Google 在 2017 年论文《Attention Is All You Need》中提出。它的核心思想是:抛弃传统的循环结构(RNN),让序列中每个位置都能直接关注所有其他位置,从而实现完全并行化的序列建模。
3.1 为什么需要 Transformer?
在 Transformer 出现之前,处理文本序列的标配是 RNN 和 LSTM,但它们有一个致命问题:串行。
RNN 的问题(串行):
Token 1 → Token 2 → Token 3 → ... → Token N
↓ ↓ ↓ ↓
h₁ ──→ h₂ ──→ h₃ ──→ ... ──→ hₙ ← 必须等前一步算完才能算下一步RNN 处理第 N 个词的时候,必须等前面 N-1 个词全部算完。这带来了两个直接后果:
- 第一,无法并行训练——GPU 的大量核心闲着等前面算完。
- 第二,长距离依赖极差——经过多层传递后,开头的关键信息几乎被「遗忘」干净了。
你让 RNN 读一篇一万字的文章然后回答一个关于第一段的问题,它大概率会答错。
Transformer 在 2017 年用一句话破局:让每个 token 直接看到所有其他 token。不再逐字传递,而是一次性计算序列中所有 token 两两之间的关系——全局并行。
Transformer 的突破:用 Attention 机制让每个 token 直接"看到"序列中所有其他 token,彻底并行化。
Transformer(并行):
Token 1 ───────────┐
Token 2 ───────────┼──→ 一次性计算所有 token 间的两两关系
Token 3 ───────────┘这就好比把 RNN 的「传话游戏」换成了「圆桌会议」:每个人都能直接和房间里的任何一个人对话,不需要等人传话。因此,Transformer 成了现代大语言模型(LLM)的基石架构,GPT、LLaMA、Claude、Qwen、DeepSeek 等所有主流模型均基于其 Decoder 变体构建。Transformer 论文最初提出的是 Encoder-Decoder 架构,但后来的发展分化出三种范式:
- Decoder-Only(GPT、LLaMA、Qwen、DeepSeek、Claude):只看左侧上文,单向注意力,专攻文本生成,这是当前 LLM 的唯一主流选择。
- Encoder-Only(BERT、RoBERTa):双向注意力,同时看左右上下文,适合理解类任务如分类、实体识别。
- Encoder-Decoder(原始 Transformer、T5、BART):Encoder 理解输入,Decoder 生成输出,适合翻译和摘要。
为什么 LLM 清一色选 Decoder-Only?
自回归生成本身就是单向的——你在写第 100 个 token 时,第 101 个 token 还没出生。Decoder 的单向注意力恰好匹配生成任务的天然约束。
4. Transformer Block 核心结构
以下是几乎所有 LLM 采用的标准 Block 结构——也叫 Pre-Norm 结构:

每个 Block 包含两个子层,每个子层都遵循同一个模式:先归一化,再计算,最后加回原输入。
子层 1: Attention,
x = x + Attention(RMSNorm(x)).先对输入做 RMSNorm,然后送入多头自注意力——Q/K/V 投影、RoPE 注入位置、Causal Mask 遮住未来、计算注意力权重、加权聚合 V,最后把 Attention 的输出加回原始输入。子层 2:FFN,
x = x + FFN(RMSNorm(x)).先对 Attention 的输出做 RMSNorm,然后送入 SwiGLU 前馈网络——每个 token 独立过一遍三个线性矩阵和门控乘法——最后把 FFN 的输出加回输入。
x = x + Attention(RMSNorm(x)) # 子层 1:所有 token 互相"交流"
x = x + FFN(RMSNorm(x)) # 子层 2:每个 token 独立"思考"两行伪代码就是整个 Block 的全部逻辑。输出维度始终等于 d_model,所以 Block 可以无限制堆叠,每一层都在前一层的基础上做增量调整。
5. 残差连接——为什么能堆 100 层以上?
深层网络有一个天然困境:梯度消失。反向传播时,梯度从最后一层往回传,每经过一层就衰减一点,传到最底层时已经接近于零——底层参数几乎不更新。
无残差连接: 有残差连接:
x → Sublayer(x) → output x → x + Sublayer(x) → output
梯度经过非线性变换 梯度有一条恒等直达路径("短路")
逐层衰减 即使 Sublayer 梯度很小,x 的梯度也直通直观理解:残差连接就像写论文的「在此基础上修改」。你不是从零开始重写,而是在已有的草稿上做增量调整。每一层只需要学习「变化量」Δ,不需要学完整的输出。这个设计让 Transformer 可以堆到一百层以上仍然稳定训练。
残差连接的解决方案优雅到了极致:在每一子层的输入和输出之间加一条直达通道。公式就是 x = x + Sublayer(x)。这条通道让梯度可以走恒等路径直达底层,完全绕过 Sublayer 内部可能带来的衰减。
6. Attention 注意力机制
注意力机制能让每个 Token 在被处理的时候,都能“环顾四周”,看看句子里哪些词和自己最相关。
注意力机制(Attention) 是 Transformer 的核心计算单元,它让序列中的每个 Token 能够动态地关注所有其他 Token,根据相关性自动决定「应该从哪些词获取信息、各取多少」。
作用:解决序列建模的三大难题
- 长距离依赖:无论两个词相隔多远(第 1 个和第 1000 个),Attention 都能直接建立联系——不像 RNN 需要逐层传递,不会「遗忘」开头的信息。
- 并行计算:所有 Token 两两之间的关系可以一次性并行算出,训练速度远超 RNN 的串行方式。
- 动态权重:同一个词在不同上下文中关注的对象不同(见下方例子),权重是动态分配的,而非固定。

Q、K、V 三部曲
每个输入向量 x 经过三个不同的线性投影,产生三组向量:
- Q(查询,我在找什么?)
- K(键,我有什么特征供别人匹配?)
- V(值,我的实际内容是什么?)
一个经典的直觉类比是图书馆检索:Q 是你输入的关键词,K 是每本书的目录标签,V 是书的实际内容——系统匹配 Q 和 K,按匹配度返回 V 的内容。
分三步理解: 第一步: 计算相关性,Q 和 K 做矩阵乘法 QKᵀ,得到一个 N×N 的注意力分数矩阵——序列中每两个 token 之间都有一个原始相关性分数。
Q(Query,查询):当前 token 在问"谁跟我有关?"
K(Key,键): 每个 token 的"标签/特征"
Q·Kᵀ 的结果: 一个 N×N 的注意力分数矩阵(每两两 token 之间都有一个分数)
示意(4 个 token 的句子):
K₁ K₂ K₃ K₄
Q₁ [ 0.9 0.1 0.3 0.0 ]
Q₂ [ 0.2 0.8 0.1 0.1 ]
Q₃ [ 0.1 0.1 0.7 0.4 ]
Q₄ [ 0.0 0.1 0.3 0.9 ]第二步:缩放,除以 √dₖ 做缩放,防止大值输入让 Softmax 落入饱和区。
为什么要除以 √d_k?
当 d_k 很大时(如 128),QKᵀ 的点积值会变得很大。大值输入 softmax 会落在梯度接近零的饱和区,导致模型学不动。 √d_k 让方差控制在 1 左右,保持 softmax 处于敏感区。
第三步:归一化与加权聚合,对每一行做 Softmax 把分数转成概率,然后用这些概率对 V 做加权求和——得到的就是融合了上下文信息的输出向量。
Softmax 将每一行的分数转为概率(和为 1):
分数: [ 9.0 1.0 3.0 0.0 ]
↓ softmax
权重: [ 0.88 0.01 0.11 0.00 ] ← 88% 的注意力在第一个 token 上
output = 0.88 × V₁ + 0.01 × V₂ + 0.11 × V₃ + 0.00 × V₄Attention 本质上就是一次带权重的信息聚合。每个 Token 根据自己与上下文的匹配度,自动决定从哪些 Token 获取多少信息:
例句:"把 水 倒 进 杯子 里"
对于 "倒"(动词),Attention 权重可能如下:
"把" 0.02 ← 语法助词,不太关心
"水" 0.70 ← 动作的承受者,高度关注
"倒" 0.05 ← 自己
"进" 0.08 ← 方向补语
"杯子" 0.12 ← 目标容器
"里" 0.03 ← 方位词
结果:"倒" 的输出向量 ≈ 0.70 × V_水 + 0.12 × V_杯子 + 少量其他信息
→ "倒"的表示融入了「水」和「杯子」的语义
但如果换成 "把 足球 踢 进 球门 里":
对于 "踢",Attention 权重会完全不同,它关注的是 "足球" 和 "球门"
→ 权重是动态的,随上下文变化自注意力 vs 交叉注意力:
| 类型 | 核心操作 | 用途 |
|---|---|---|
| 自注意力(Self-Attention) | Token 与自己的序列内其他 Token 之间计算注意力 | 理解上下文——LLM 的主力 |
| 交叉注意力(Cross-Attention) | 一个序列的 Token 关注另一个序列的 Token | 翻译(Encoder→Decoder)、多模态(文本关注图像) |
Decoder-Only LLM 只使用自注意力;Encoder-Decoder 模型中 Encoder 用自注意力,Decoder 同时用两种。
7. FFN 前馈网络——知识存储的地方
Attention 让 token 之间互相「交流」,但交流完的信息还需要被「消化」——这就是 FFN 做的事。FFN 子层中每个 token 独立过网络,不与其他 token 发生交互。研究表明,事实性知识(如「巴黎是法国首都」)主要编码在 FFN 的参数中。

经典 FFN 的结构很简单:Linear 升维 4 倍 → 激活函数 → Linear 降维回 d_model。为什么先升再降?升维给了模型更多的「中间思考空间」——相当于在白板上用更大的面积演算,最后把答案抄回小纸条。
SwiGLU 是现代 LLM 的事实标准。它在经典 FFN 的基础上引入了门控机制——三个线性矩阵协同工作:
- gate 通路:SiLU(x · W_gate) 产生一个 (0, ∞) 的门控信号——决定「哪些信息可以通过」。
- up 通路:x · W_up 产生候选内容——「提案」。
- 两个通路逐元素相乘后,再经过 W_down 降维回 d_model。
用审批官的比喻最好理解:gate 是审批官,up 是提案——只有审批官点头的内容才会被保留。这个机制让模型学会了「有选择地保留信息」,而不是无脑全收。LLaMA 全系、Qwen、DeepSeek 都使用 SwiGLU。
8. 位置编码 RoPE——让模型感知顺序
Attention 本身有一个盲区:它对位置无感。「狗咬人」和「人咬狗」对 Attention 来说只是同一个集合的不同排列——如果不注入位置信息,模型无法区分。
RoPE(旋转位置编码) 用一种极其优雅的方式解决了这个问题。核心思想:用旋转矩阵给 Q 和 K 注入位置信息,使得两个 token 点积的结果只依赖于它们的相对距离。
把 Q 和 K 想象成二维平面上的向量:位置 m 的向量旋转 mθ 度,位置 n 的向量旋转 nθ 度。两个向量的点积等于 |Q| · |K| · cos((m-n)θ)——这个值只和相对距离 (m-n) 有关,与绝对位置 m、n 无关。
这就是「时钟模型」的直觉:每个 token 在钟面上占据一个角度,两个 token 的夹角取决于它们隔了多远,而不取决于它们各自在几点钟方向。距离越远的 token,夹角越大,相关性自然降低——这完全符合语言直觉。RoPE 还天然支持长文本外推:即使训练时最大上下文是 4K tokens,推理时也能处理 8K 甚至更长。
9. 归一化 RMSNorm——隐形的训练稳定器
深层网络中,每一层的输出分布会逐渐漂移。第 3 层输出值范围还在 (0, 1),到第 40 层可能已经漂到了 (0, 1000)——梯度开始震荡,训练收敛变慢。归一化就是把每一层的数据分布重新「拉回」标准范围。
LayerNorm 是经典方案:减去均值、除以标准差,再乘 γ 加 β。RMSNorm 做了极简的减法——只除以均方根,砍掉均值计算,砍掉 β 平移偏置。计算量只略减了一点(归一化本身只占总 FLOPs 的 0.17%),但内存搬运量显著下降——少读/写均值向量和 β,实际运行时间快了约 25%,模型效果持平甚至略优。这就是现代 LLM 设计中的「免费午餐」式优化。
Pre-Norm 是另一个已成定论的设计选择:把归一化放在子层之前而非之后。Pre-Norm 让梯度有一条直通底层的恒等通道——Residual 路径不经过 Norm 变换——训练不需要 LR warmup,收敛更稳定。Post-Norm(归一化在子层之后)在原始 Transformer 和 BERT 中被使用,但随着层数加深,梯度被 Norm「拦截」,训练极易崩溃。2024-2026 年所有 LLM 的标配就是 Pre-Norm + RMSNorm。
10. LM Head 与 Temperature——从向量回到文字
整个 Transformer 在 d_model 维语义空间中完成所有计算,但最终要输出人类可读的文字。LM Head 承担最后一个任务:把隐向量投影回词表空间。
最后一层 Block 输出的隐向量 → 乘上 LM Head 矩阵(尺寸 vocab_size × d_model)→ 得到一个长度等于词表大小的 Logits 向量。每个位置上的数值是该词元的「原始得分」——分数越高,模型越倾向于选它。再经过 Softmax 把 Logits 转成概率分布,选概率最高的那个词元——输出。
Temperature(温度系数) 是控制输出「创造力」的旋钮。它在 Softmax 之前用 T 缩放所有 Logits:
T < 1(低温):Logits ÷ 小值 = 差距放大 → 概率极度集中在最高分词 → 输出保守、确定、一板一眼。适合事实问答和代码生成。
T = 1(标准):Logits 原封不动 → 模型「本色出演」,保持训练时的统计模式。
T > 1(高温):Logits ÷ 大值 = 差距压缩 → 概率分布变平坦 → 冷门词也有不小概率被选中。适合写诗、头脑风暴、创意生成。
同一个模型、同一组参数,调一个数字就能在「严谨的工程师」和「天马行空的诗人」之间切换——Temperature 是整个大模型推理中最简洁也最实用的控制杆。
11. 六组件串起完整架构
走完了 Transformer 的全部六块积木,我们把它们拼在一起看:

Tokenizer + Embedding:把文字变成机器能算的向量。分词切 Token,Embedding 查表转高维向量,语义相近的向量靠得更近。
Attention 注意力:让每个 token 看到全局。Q 查、K 标、V 给,加权聚合所有上下文的语义信息。多头并行捕捉语法、指代、语义等不同维度。Causal Mask 确保自回归的单向因果性。
FFN 前馈网络:每个 token 独立思考。SwiGLU 用 gate 审批 + up 提案 + 逐元素过滤,让模型学会有选择地保留信息。事实性知识主要编码于此。
RoPE 位置编码:用旋转给 Q/K 注入位置,点积天然只依赖相对距离。时钟模型让长文本外推成为可能。
RMSNorm 归一化:Pre-Norm 让梯度直通底层,RMSNorm 快 25% 效果持平——2025 年唯一标准。
LM Head + Temperature:从隐向量投影回文字。Temperature 是创造力的旋钮,同一个模型拧出不同的人格。
每一篇 GPT 生成的文字、每一段 Claude 写的代码、每一次 DeepSeek 做出的推理,背后都是这六块积木在数以百层的堆叠中、数万亿 token 的训练里、数百万次的学习循环后,默默运转的结果。