每一场AI革命背后,都有一张不断迭代的架构蓝图。今天,我们用最通俗的语言,拆解LLM从“地基”到“摩天大楼”的每一层设计。
如果你关注AI领域超过两年,一定会有这种感觉:模型参数从几亿涨到几千亿,上下文长度从512飙到128K甚至更长,而推理速度却越来越快。这背后不是魔法,而是一场持续数年的架构工程革命。
从2017年《Attention Is All You Need》提出Transformer,到2025年DeepSeek-V3、Llama 4、Qwen 3等模型纷纷采用稀疏MoE架构,大语言模型(LLM)的骨架经历了怎样的进化?每一项看似微小的改动——比如把LayerNorm换成RMSNorm,把绝对位置编码换成旋转位置编码(RoPE),把MHA换成GQA或MLA——都蕴含着工程师对计算效率、显存占用、训练稳定性的极致追求。
本文将带你层层拆解LLM的核心架构,从输入到输出,从注意力到前馈网络,从归一化到位置编码,最后盘点当前主流开源模型的设计选择。全文不写一行代码,只讲清楚“为什么”和“怎么做到的”,让没有算法背景的读者也能看懂大模型的内功心法。
一、LLM的“三层骨架”:输入 → 计算 → 输出
现代大语言模型(主要指GPT风格的Decoder‑only模型)无论多么庞大,都可以抽象为三个部分:输入层、Transformer Block堆叠层和输出层。这三层像人体的神经系统,负责接收信号、深度思考、发出指令。
1.1 输入层:把文字变成数学
模型不认识汉字或英文单词,它只认识数字。输入层要完成两件事:
- 分词 + 词嵌入
:首先,原始文本被切成一个个token(可以是单词、子词或字符)。每个token通过一个巨大的词嵌入矩阵映射成一个向量(比如768维或4096维的浮点数数组)。这个向量捕捉了token的语义——例如“国王”和“王后”的向量在空间中离得很近,而“苹果”(水果)和“苹果”(公司)的向量会根据上下文有所区分。
- 位置编码
:Transformer的自注意力机制本身是“无序”的,它会把“我打你”和“你打我”看成一样的集合,因为单词一样只是顺序不同。为了让模型知道顺序,必须给每个token的位置加入信号。早期Transformer用固定的正弦余弦函数给每个位置生成一个唯一编码,直接加到词向量上。现在更流行的做法是旋转位置编码(RoPE),它不改变词向量,而是直接旋转Query和Key向量的角度,让模型天然能感知相对距离。
1.2 Transformer Block:大脑的“思考层”
这是LLM最核心的部分,通常由几十层甚至上百层堆叠而成。每一层包含两个子模块:多头注意力和前馈网络,外加残差连接和归一化。
- 多头注意力
:让每个token能够“看到”序列中其他所有token,并决定哪些历史信息对当前预测最重要。比如在“他因为__,所以没去上班”中,模型需要关注“因为”后面的原因。多个“头”意味着模型从不同角度(语法、语义、指代等)同时捕捉关系。
- 前馈网络(FFN)
:对每个token的表示独立地进行非线性变换,相当于每个位置都有一个小型神经网络。通常先把维度放大4倍(比如从4096维放大到16384维),经过激活函数(如SwiGLU),再压缩回原维度。这一步让模型学习复杂的特征组合。
- 残差连接
:把子模块的输入和输出直接相加,像一条“高速公路”,让梯度在反向传播时可以绕过非线性层直达浅层,解决了深层网络梯度消失的问题。
- 归一化
:对每一层的输出进行缩放和平移,稳定训练过程。早期用LayerNorm,现在主流用更简单的RMSNorm。
1.3 输出层:预测下一个词
最后一层Transformer Block输出的向量,通过一个线性层(矩阵乘法)映射到词表大小(比如129k维),再经过Softmax函数变成概率分布。概率最高的token就是模型预测的下一个词。
然后,这个新token会被拼接到输入序列末尾,重复上述过程,直到生成结束符或达到最大长度——这就是自回归生成。
一个小细节:很多现代模型会把输入层的词嵌入矩阵和输出层的线性投影矩阵共享权重。这样做既能减少参数量,又能让语义空间保持一致,训练更高效。
二、注意力机制的进化:从MHA到MLA,一场“KV缓存”的瘦身革命
如果你只关注大模型的一个技术点,那一定要看注意力机制的演进。因为它直接决定了模型能处理多长的上下文、推理时占多少显存、生成速度快不快。
2.1 先搞懂“KV缓存”是什么
假设模型正在生成第100个词。为了计算当前词的注意力,它需要和前面99个历史词的Key、Value做交互。最笨的办法是每生成一个新词,就把前面99个词的K、V全部重新算一遍——这显然不可行,因为计算量会随长度平方级增长。
聪明的做法是:第一次遇到每个词时,就把它的K和V算好并保存下来,后面生成新词时直接读取。这就是KV缓存。
KV缓存极大地减少了重复计算,但代价是显存占用。以一个60层、4096维、32个注意力头的模型为例,处理8K个token时,KV缓存需要超过30GB的显存。随着上下文窗口扩展到128K甚至1M,KV缓存会成为推理的最大瓶颈。因此,减少KV缓存的大小成了注意力机制创新的核心目标。
2.2 MHA(多头注意力):一切的基础
原始Transformer提出的MHA为每个注意力头独立生成一套K、V。假设有32个头,每个头的维度是128,那么每个token需要缓存 32 * 128 * 2(K和V) = 8192 个浮点数。乘以层数和序列长度,显存开销巨大。
MHA的优势是表达能力最强,因为每个头都有独立的参数。缺点也是显而易见的:KV缓存太大。
2.3 MQA(多查询注意力):所有人共享一套K、V
2019年,Google提出MQA。它的想法很激进:所有注意力头共用同一份K和V,只有Q保持多头独立。
这样,KV缓存的大小直接从“头数×头维度”变为“1×头维度”,减少了H倍(H是头数)。对于32头的模型,KV缓存瞬间缩小到原来的1/32。
代价呢?表达能力略有下降,因为所有头看到的上下文信息是一样的。但论文实验表明,性能损失非常小(BLEU分数从28.4降到28.2),而推理速度提升数倍。因此MQA在当时很受欢迎,尤其适合对速度要求极高的场景。
2.4 GQA(分组查询注意力):折中的艺术
MQA虽然快,但表达能力损失让一些团队不满意。Google后来提出GQA:把注意力头分成若干组,每组内部共享K和V,组之间独立。
如果组数=头数,就是MHA(完全独立,最大表达力)
如果组数=1,就是MQA(完全共享,最快)
如果组数=4或8,就是折中
GQA的优势在于,它可以从已经训练好的MHA模型通过少量继续训练(up-training)转换而来,只需约5%的原始训练算力,就能在保留大部分表达力的同时,大幅减少KV缓存。因此,LLaMA 2/3、Qwen等主流模型都采用GQA。
2.5 MLA(多头潜在注意力):DeepSeek的降维魔法
2024年,DeepSeek提出了MLA,进一步刷新了KV缓存的压缩记录。它的核心思想不再是“共享”,而是低秩压缩。
想象一下:原本每个头的K、V都是高维向量(比如128维),但实际信息可能只集中在一个更低的维度(比如16维)上。MLA引入一个可学习的压缩矩阵,把K、V投影到一个低维的“潜在向量”中,推理时只缓存这个紧凑的向量(大小仅为原来的1/8甚至1/32)。等到需要计算注意力时,再通过另一个解压矩阵恢复出每个头的K、V。
这种“压缩→缓存→解压”的过程,使得MLA在保持MHA级别表达力(因为解压后每个头仍然独立)的同时,将KV缓存减少了93.3%!DeepSeek-V2论文中的对比表格显示,同样规模下,MLA的KV缓存每token仅需15.6K个元素,而MHA需要110.6K。更令人惊讶的是,MLA在多项基准测试中的表现甚至超过了MHA——低秩压缩不仅没有损失信息,反而可能起到了去噪和正则化的作用。
目前,DeepSeek-V3是使用MLA的代表模型,能够以128K上下文窗口高效运行,很大程度上归功于MLA。
三、前馈网络(FFN)的进化:从ReLU到SwiGLU再到MoE
如果把注意力机制比作模型的眼睛(观察全局),那么FFN就是模型的大脑皮层(深度加工)。FFN的结构很简单:线性升维 → 激活函数 → 线性降维。但激活函数的选择和整体架构的扩展,却经历了多次迭代。
3.1 激活函数:从“硬截断”到“软门控”
- ReLU
:max(0, x)。优点是计算简单,梯度不衰减。缺点是负区间完全失活,可能导致“神经元死亡”——有些神经元再也不会被激活。浅层网络问题不大,但深层大模型训练不稳定,所以现在几乎不用。
- GELU
:x * Φ(x),其中Φ是高斯分布的累积分布函数。它不像ReLU那样硬截断,而是对负值进行平滑衰减。GPT-2、BERT等早期模型广泛使用。缺点是计算涉及误差函数,稍慢。
- SiLU / Swish
:x * σ(x),其中σ是sigmoid。曲线形状与GELU非常相似,但计算更简单。当Swish的可学习参数β固定为1时,Swish就等于SiLU。现在两者通常混用。
- GLU及其变体
:GLU不是激活函数,而是一种门控结构。它将输入分成两路,一路经过激活函数(门),另一路直接通过,然后两路逐元素相乘。这样,模型可以动态决定哪些信息保留、哪些过滤。常用的变体有:
- GLU
:门用sigmoid
- GEGLU
:门用GELU
- SwiGLU
:门用SiLU
- GLU
实践证明,SwiGLU效果最好,训练最稳定。因此,LLaMA、Qwen、DeepSeek等模型全部采用SwiGLU作为FFN的激活部分。
3.2 MoE(混合专家模型):用“多个小脑”代替“一个大脑袋”
MoE不是修改单个FFN,而是把FFN层变成多个并行的专家网络,外加一个路由器。
工作流程:
每个token进入MoE层后,路由器计算所有专家的得分。
选取得分最高的k个专家(通常k=1~4)。
对选中专家的得分做softmax,得到权重。
只有被选中的专家执行前向计算(其他专家闲着)。
将各专家的输出按权重加权求和,得到最终结果。
为什么MoE好?
- 容量大但计算少
:DeepSeek-V3总参数671B,但每次只激活37B(约5.5%)。这意味着模型可以拥有巨大的知识容量,而推理成本只相当于一个小模型。
- 专家自动分工
:训练中,不同专家会自然学会处理不同类型的任务——有的擅长代码,有的擅长数学,有的擅长常识推理。路由器像项目经理,把合适的任务分配给合适的专家。
- 易于分布式
:每个专家可以放在不同的GPU上,相互独立,训练和推理都可以大规模并行。
如今,几乎所有顶级开源模型(DeepSeek-V3、Llama 4、Qwen 3、GPT-OSS)都采用了MoE架构。有的还加入了共享专家(比如DeepSeek和Llama 4),即一个所有token都会经过的专家,用来吸收通用模式,让其他专家更专注于专业领域。
四、归一化与残差:让千层网络也能稳定训练
当你堆叠100层Transformer时,梯度不是消失就是爆炸。归一化和残差连接是解决这个问题的两大法宝。
4.1 残差连接:梯度的“高速公路”
残差连接的公式:y = x + F(x)。其中x是输入,F(x)是注意力或FFN的计算。反向传播时,梯度会经过两条路径:一条直接“抄近道”传回x(系数为1),另一条经过F(x)的变换。这条恒等路径保证梯度永远不会消失,即使网络再深也能有效训练。
4.2 归一化的位置:Pre‑Norm成了主流
归一化有两种放置方式:
- Post‑Norm
(原始Transformer):y = Norm(x + F(x))。归一化放在残差之后,会破坏恒等路径,导致深层训练不稳定。现在基本弃用。
- Pre‑Norm
(现代主流):y = x + F(Norm(x))。先归一化再进入子模块,残差连接依然保留纯净的恒等路径。梯度流动顺畅,训练稳定。LLaMA、Qwen、DeepSeek等都采用Pre‑Norm。
- Post‑Norm in Residual
:y = x + Norm(F(x)),归一化只作用在F(x)上,不作用在x上。同样保留了恒等路径,但实践中用得较少。
4.3 RMSNorm:去掉均值,更轻量
LayerNorm的计算需要均值和方差,公式较复杂。RMSNorm发现:均值项对深层Transformer的稳定性贡献很小,可以省略。它只计算均方根(RMS):
RMSNorm(x) = (x / RMS(x)) * γ其中RMS(x) = sqrt(mean(x²) + ε)。计算量减少,效果不变甚至更好。现在RMSNorm已成标配。
五、位置编码:如何让Transformer知道顺序?
Transformer的自注意力本身是“无序”的,如果不加位置信息,模型会把“我爱你”和“你爱我”当成一样的。所以必须显式注入位置信息。
5.1 正余弦编码(Sinusoidal)
原始Transformer使用固定函数生成每个位置的编码,然后加到词向量上。其特点:
无需训练参数
可以外推(推理时遇到比训练更长的序列也能处理)
理论上内积能反映相对位置,但因为后面接的可学习矩阵会打乱这种结构,实际效果不如预期。
5.2 可学习位置编码
为每个位置分配一个可训练的向量,与词向量一起更新。优点是灵活,能适应训练数据。缺点是不能外推——如果训练时最大长度是2048,推理时遇到2049的位置就没有对应的编码。GPT-1/2、BERT早期使用,现在已较少见。
5.3 旋转位置编码(RoPE)——当前王者
RoPE由国内研究者苏剑林提出,原理优雅:不对词向量加任何东西,而是对Query和Key向量的每一对维度进行旋转,旋转的角度与位置成正比。
数学上,RoPE使得注意力分数的内积结果中,天然包含一个(n-m)的项,即相对位置差。而且整个操作不需要额外参数,可以自然地外推到更长序列。实验证明,RoPE在长文本任务上远优于前两种编码。
如今,LLaMA、Qwen、DeepSeek、GPT-OSS等所有主流模型全部采用RoPE。
六、主流开源模型架构一览(截至2025年)
下面我们盘点四款具有代表性的开源LLM,看看它们如何组合上述组件。
6.1 DeepSeek V3
- 发布时间
:2024年12月
- 架构
:MoE,总参数量671B,激活37B
- 注意力
:MLA(独家)
- 激活专家
:每token激活9个专家(含1个共享专家)
- 位置编码
:RoPE
- 上下文长度
:128K
- 亮点
:KV缓存压缩93.3%,推理极高效
6.2 Llama 4 Maverick
- 发布时间
:2025年4月
- 架构
:MoE,总参数量400B,激活17B
- 注意力
:GQA
- 激活专家
:每token激活2个专家(含1个共享专家)
- 位置编码
:RoPE
- 亮点
:极致的稀疏激活(仅激活4.25%的参数),速度飞快
6.3 Qwen 3-235B
- 发布时间
:2025年4月
- 架构
:MoE,总参数量235B,激活22B
- 注意力
:GQA
- 激活专家
:每token激活8个专家(无共享专家)
- 位置编码
:RoPE
- 上下文长度
:128K
- 亮点
:Dense和MoE层交替,灵活平衡
6.4 GPT-OSS 120B
- 发布时间
:2025年8月
- 架构
:MoE,总参数量117B,激活5.1B
- 注意力
:GQA
- 激活专家
:每token激活4个专家
- 位置编码
:RoPE
- 上下文长度
:131K
- 亮点
:OpenAI的首个开源MoE,激活参数占比极低(约4.4%)
从表中可以看出一个清晰的趋势:
- 注意力
:除了DeepSeek用MLA,其他都用GQA。MLA是更前沿的压缩方案,但目前只有DeepSeek系列采用。
- MoE
:已经成为绝对主流,而且各家的“激活参数/总参数”比例越来越低(从DeepSeek的5.5%到GPT-OSS的4.4%),说明稀疏化程度在提高。
- 归一化/激活/位置编码
:高度统一,RMSNorm + Pre‑Norm + SwiGLU + RoPE 是事实上的行业标准。
七、总结与展望:从“大一统”到“精细化”
回顾LLM架构的演进,我们可以总结出三条核心主线:
- 注意力机制的极致瘦身
MHA → MQA → GQA → MLA,每一步都在追求更少的KV缓存。MLA通过低秩压缩实现了前所未有的93.3%压缩率,同时不牺牲表达能力。这为超长上下文(1M+ token)的实用化铺平了道路。
- FFN的稀疏化革命
从单个FFN到MoE,从激活全部专家到仅激活少数专家,模型容量和推理成本的矛盾被巧妙化解。未来的MoE可能会引入更灵活的路由策略(比如token可激活不同数量的专家),甚至动态决定专家数量。
- 基础组件的标准化
尽管模型层出不穷,但Pre‑Norm、RMSNorm、SwiGLU、RoPE这些组件已经高度趋同。这意味着架构创新正从“全局大改”转向“局部深挖”,工程师可以在稳定的基座上做更精细的优化。
展望未来:Transformer架构本身正在逼近其数学极限,一些研究者开始探索“后Transformer”时代,比如Google的Titans模型引入了动态记忆机制,MIT的液态神经网络等。但可以确定的是,本文所讲解的每一个组件——注意力、FFN、归一化、位置编码——都将继续在新的架构中以某种形式存在。理解它们的原理,是每一位AI从业者的基本功。
最后,送上一句话:大模型架构的进化,本质是一场计算效率与模型能力的精妙博弈。每一次微小的改动,都可能带来推理速度的数倍提升,或显存占用的指数级下降。希望这篇文章能帮你理清LLM的骨架,也让你在面对下一个“爆款模型”时,能一眼看穿它的设计取舍。