热搜词:

从 DeepSeek-V3 到 Kimi K2 , 一文看懂 LLM 主流架构

选自AheadofAI

机器之心编译

自首次提出GPT架构以来,转眼已经过去了七年。

如果从2019年的GPT-2出发,回顾至2024–2025年的DeepSeek-V3和LLaMA4,不难发现一个有趣的现象:尽管模型能力不断提升,但其整体架构在这七年中保持了高度一致。

当然,细节上仍有不少演进。例如,位置编码从最初的绝对位置(AbsolutePositionalEncoding)发展为旋转位置编码(RoPE);注意力机制也从标准的多头注意力(Multi-HeadAttention)逐步过渡为更高效的分组查询注意力(Grouped-QueryAttention);而激活函数方面,则从GELU被更高效的SwiGLU所取代。

然而,这些变化中究竟有没有「颠覆性创新」?七年间,大语言模型的架构是否真正迎来了质的飞跃,还是仍在原有框架上不断精雕细琢?

本文博客来自于SebastianRaschka,知名AI研究者和博主、《Python机器学习》作者。

博客详细列举了8个主流大语言模型,包含DeepSeek和Kimi等国产大模型,硬核拆解了每个大模型的架构设计和革新思路,深度介绍了现代最新大语言模型的架构设计以及大模型的架构演进趋势。

图1:本文所涵盖的部分LLM架构示意图。

DeepSeekV3/R1

DeepSeekR1在2025年1月发布时引起了巨大反响。

DeepSeekR1是一个以DeepSeekV3架构为基础构建的推理模型,而DeepSeekV3最初于2024年12月推出。尽管本文重点讨论2025年发布的架构,但作者认为应当将DeepSeekV3纳入其中。

本节将重点介绍DeepSeekV3引入的两项关键架构技术,这些技术提升了其计算效率,也使其在众多大型语言模型中脱颖而出。

若对DeepSeekV3关键技术感兴趣,请参照技术报告:

论文标题:DeepSeek-V3TechnicalReport

论文链接:https://arxiv.org/abs/2412.19437

多头潜在注意力机制(MLA)

在讨论多头潜在注意力机制之前,应从近年来被广泛采用的分组查询注意力机制(GQA)说起,它已成为相较于传统多头注意力机制(Multi-HeadAttention,MHA)更具计算与参数效率的新标准替代方案。

下面是对GQA的简要说明:与MHA中每个注意力头都有自己的一组键(key)和值(value)不同,GQA的做法是将多个注意力头分组,让它们共享相同的key和value投影,从而降低内存使用。

如下图2所示,假设有2组key-value和4个注意力头,那么注意力头1和2可以共享第一组key和value,而注意力头3和4共享第二组。这种做法减少了总的key和value计算量,降低了内存使用,提高了效率。

图2:多头注意力机制(MHA)与分组查询注意力机制(GQA)的对比示意图。

GQA的核心思想是:通过让多个query头共享一组key和value,从而减少key和value的总数。这带来了两个主要好处:

1.降低模型参数总量;

2.在推理时减少KV缓存中key和value张量的内存带宽使用,因为需要存取的键值对变少了。

接下来介绍的多头潜在注意力机制(MLA),则提供了一种不同的内存节省策略,并且它与KV缓存机制的配合更加紧密。

与GQA通过「共享键值头」不同,MLA是将key和value张量压缩到一个低维潜在空间后再存入KV缓存。而在推理过程中,这些压缩张量会被重新投影回原始维度再使用(如图3所示)。这一过程中虽然引入了一次额外的矩阵乘法,但大大节省了内存使用。

图3:多头潜在注意力机制(MLA,应用于DeepSeekV3和R1)与常规多头注意力机制(MHA)的对比。

值得说明的是,MLA并不是DeepSeekV3首创的技术,它的前代模型DeepSeekV2就已经使用(甚至首次提出)了该机制。

MLA是一种非常巧妙的技术手段,能够在提升模型表现的同时,大幅降低KV缓存的内存占用。相比之下,它甚至略优于传统的MHA。接下来将进入下一个架构模块的分析。

Mixture-of-Experts(MoE)

DeepSeek架构中另一个值得重点关注的重要组成部分是它对MoE(Mixture-of-Experts,专家混合)层的应用。虽然MoE并非由DeepSeek首创,但这一技术在2025年迎来了回归,在后文介绍的许多架构中也能看到它的身影。

MoE的核心思想是:将Transformer中的每个前馈模块(FeedForward)替换为多个「专家层」(每个专家层本质上也是一个前馈网络)。也就是说,原本单一的前馈结构被替换为多个并行的前馈子模块,具体如图5所示。

图5:右图展示了DeepSeekV3/R1中Mixture-of-Experts(MoE)模块的结构,对比左图中标准LLM所使用的普通前馈模块。

在Transformer块内部的前馈模块(上图中的深灰色块)通常占据了模型总参数量的很大一部分。

因此,将一个前馈模块替换为多个前馈模块(即构建MoE结构)会显著增加模型的总参数量。不过,关键的技巧在于:并不为每个token启用所有的专家模块(experts),而是由一个「路由器(router)」为每个token挑选出其中一小部分进行激活。MoE的这种设计使得模型拥有极大的参数容量,在训练阶段能吸收更多知识;但在推理时由于稀疏激活,大幅降低了计算开销。

举个例子:DeepSeek-V3每个MoE模块中拥有256个专家,总参数量高达6710亿。但在推理时,每个token实际只激活其中9个专家(1个共享专家+路由选出的8个专家)

关于DeepSeekMoE的更多细节,请参阅以下论文:

论文标题:DeepSeekMoE:TowardsUltimateExpertSpecializationinMixture-of-ExpertsLanguageModels

论文链接:https://arxiv.org/abs/2401.06066

在DeepSpeedMoE论文中首次指出,引入「共享专家」(sharedexpert)可以显著提升模型整体的建模性能。其原理很可能是:对于通用或重复性强的模式,不需要多个专家分别学习;只需由共享专家统一处理,从而释放出其他专家的容量,专注于学习更加专业的知识模式。

OLMo2

由非营利机构AllenInstituteforAI发布的OLMo系列模型,因其在训练数据、代码和技术报告方面的高度透明而备受关注。

OLMo模型结构清晰、设计规范,更重要的是,由于极高的透明度,它们为大语言模型的开发提供了极佳的参考范式。

在OLMo2中有哪些值得注意的架构设计选择呢?

主要集中在归一化策略上:包括RMSNorm层的位置安排,以及QK-norm(Query-Key归一化)的引入。

另一个值得一提的是,OLMo2仍采用传统的多头注意力机制(MHA),并未采用MLA或GQA等新型注意力结构。

关于更多OLMo2的细节信息,请参照论文:

论文标题:2OLMo2Furious

论文链接:https://arxiv.org/abs/2501.00656

归一化层位置选择

总体而言,OLMo2在架构上大体沿用了最初GPT模型的设计,与当前多数主流大型语言模型相似。但它也存在一些值得关注的不同之处,先从归一化层的设计说起。

与Llama、Gemma以及大多数现代LLM一样,OLMo2将归一化方法从LayerNorm替换为RMSNorm。

真正值得讨论的是RMSNorm的位置选择。在最初的Transformer架构中,两个归一化层分别位于注意力模块和前馈模块之后,这种结构被称为Post-LN或后归一化(Post-Norm)。

而GPT及其后大多数的LLM模型,则将归一化层放在注意力模块和前馈模块的之前,这种做法称为Pre-LN或前归一化(Pre-Norm)。

下图展示了Post-Norm与Pre-Norm的结构对比:

图8:Post-Norm、Pre-Norm以及OLMo2采用的Post-Norm变体的对比图。

早在2020年,Xiong等人就指出Pre-LN在模型初始化时可以带来更稳定的梯度。此外,研究人员还提到,Pre-LN即使在不使用学习率预热的情况下也能正常训练,而这是Post-LN通常难以做到的。

在OLMo2中,归一化层并不是放在注意力层和前馈网络之前,而是放在之后,如上图所示。然而,与最初Transformer架构不同的是,这些归一化层仍然嵌套在残差层内部。

那么,他们为何要调整归一化层的位置呢?

原因在于这种设计有助于提升训练的稳定性,这一点将在下图中进行展示。

图9:展示了Pre-Norm(如GPT-2、Llama3等所采用)与OLMo2所采用的Post-Norm变体在训练稳定性方面的对比。

不过遗憾的是,这张图展示的结果同时包含了归一化顺序调整和QK-Norm两个因素,而后者是一个独立的概念。因此很难明确判断,归一化位置的改变对训练稳定性的提升到底贡献了多少。

QK-Norm

QK-Norm本质上是另一个RMSNorm层,它被放置在多头注意力模块内部,在应用旋转位置编码(RoPE)之前,对Query和Key进行归一化处理。

如前所述,QK-Norm与Post-Norm结合使用,有助于稳定训练过程。关于QK-Norm更多细节,请参阅以下论文:

论文标题:ScalingVisionTransformers

论文链接:https://arxiv.org/abs/2106.04560

简而言之,OLMo2架构中的主要设计亮点是RMSNorm的放置方式:将RMSNorm放置在注意力模块和前馈模块之后(属于Post-Norm的一种变体),并在注意力机制中对query和key引入额外的RMSNorm(即QK-Norm)。这两项改动结合使用,有助于稳定训练损失。

下图展示了OLMo2与Llama3的架构对比;可以看到,除了OLMo2仍使用传统的MHA而非GQA外,二者在整体结构上相对接近。

图10:Llama3与OLMo2的架构对比图。

Gemma3

谷歌的Gemma系列模型一直表现非常出色,但相比于Llama系列等热门模型,它们的关注度似乎总是略显不足。

Gemma3在架构上使用了另一种「技巧」来降低计算成本:滑动窗口注意力(slidingwindowattention)。

借助滑动窗口注意力机制,Gemma3团队成功大幅降低了KV缓存的内存需求,具体效果如下图所示。

图11:Gemma3的KV缓存内存节省效果。

如果把常规的自注意力看作一种「全局」注意力机制,因为序列中的每个元素都可以访问其他所有元素,那么滑动窗口注意力则可以看作是一种「局部」注意力机制,因为它限制了当前查询位置周围的上下文范围。下图展示了这一机制的原理。

图12:常规注意力机制(左)与滑动窗口注意力机制(右)的对比图。

需要注意的是,滑动窗口注意力机制既可以与多头注意力配合使用,也可以与分组查询注意力(GQA)一起使用;Gemma3就采用了GQA。

如上所述,滑动窗口注意力也被称为「局部注意力」,因为其关注的上下文仅限于围绕当前查询位置的一个局部窗口,并且该窗口会随着查询位置的移动而滑动。相对地,常规注意力机制则是「全局」的,每个token都可以访问所有其他token。

虽然滑动窗口注意力是Gemma3架构中最显著的特点,但作为对前文OLMo2部分的补充,在此简要介绍一下Gemma3中归一化层的放置方式。

一个小但有趣的细节是:Gemma3在其GQA模块周围同时使用了RMSNorm的Pre-Norm和Post-Norm形式。

这与Gemma2的做法类似,但依然值得强调,因为它不同于以下几种主流做法:

1.原始Transformer架构使用的Post-Norm;

2.由GPT-2推广、并被许多后续架构采用的Pre-Norm;

3.前文在OLMo2中看到的、特殊的Post-Norm变体。

Gemma3的这种双重归一化策略展示了一种不同寻常的归一化设计选择,可能与其在推理效率和训练稳定性之间的权衡有关。

图14:OLMo2与Gemma3的架构对比;请注意Gemma3中额外的归一化层。

这种归一化层的放置方式相对直观,因为它结合了Pre-Norm和Post-Norm的优势。

作者认为,多加一点归一化并无坏处。

关于Gemma3的更多细节,请参阅技术报告:

论文标题:Gemma3TechnicalReport

论文链接:https://arxiv.org/abs/2503.19786

MistralSmall3.1

MistralSmall3.124B于今年3月发布,紧随Gemma3之后。它值得关注的一个原因是,在多个基准测试中,其表现优于Gemma327B,同时推理速度更快。

造成MistralSmall3.1推理延迟低于Gemma3的主要原因,可能在于其定制的分词器(tokenizer),以及更小的KV缓存和更少的层数。除此之外,它整体上采用的是标准架构,如下图所示。

图16:Gemma327B与Mistral3.1Small24B的架构对比图。

有趣的是,早期的Mistral模型曾使用滑动窗口注意力机制,但在MistralSmall3.1中似乎放弃了这一设计。

与使用滑动窗口的Gemma3不同,Mistral采用了常规的GQA。

作者推测,尽管滑动窗口注意力可以降低内存使用,但它并不一定能降低推理延迟,而这正是MistralSmall3.1所优先关注的性能指标。

Llama4

前文对专家混合模型(MoE)的详细介绍又派上用场了。

Llama4同样采用了MoE架构,其余部分则延续了较为标准的设计,整体架构与DeepSeek-V3非常相似,如下图所示。

图17:DeepSeekV3(6710亿参数)与Llama4Maverick(4000亿参数)架构对比图。

尽管Llama4Maverick的整体架构看起来与DeepSeek-V3非常相似,但其中仍有一些值得注意的差异。

首先,Llama4采用了与其前代模型相同的GQA,而DeepSeek-V3则使用了MLA。

这两款模型都是非常庞大的架构,DeepSeek-V3的总参数量大约比Llama4Maverick多出68%。但从实际推理中参与计算的参数数量来看,DeepSeek-V3启用的参数达370亿,是Llama4Maverick(170亿)的两倍多。

在MoE设置方面,Llama4Maverick使用的是更为传统的架构:每次仅激活2个专家,每个专家的隐藏层维度为8192;而DeepSeek-V3每次激活9个专家,每个专家的隐藏层维度为2048。此外,DeepSeek在除了前3层外的每个TransformerBlock中都插入了MoE层,而Llama4则是交替使用MoE模块和密集(Dense)模块,即每隔一个Block加一次MoE。

可以明确的一点是,MoE架构在2025年迎来了显著的发展与普及。

Qwen3

Qwen团队一直以来都在稳定输出高质量的开源大语言模型。在NeurIPS2023的LLM效率挑战赛时,最终获胜的方案全部基于Qwen2构建。

而如今,Qwen3系列再次成为各自参数规模下的榜单冠军,表现依旧亮眼。

Qwen3(Dense)

先来看看Qwen3Dense模型架构。截至目前,Qwen30.6B可能是当前世代中体量最小的开源权重模型之一。

在本地运行时,它具有很高的每秒生成token数(token/sec)和很低的显存占用,非常适合轻量部署。而且因为参数量小,对于想在本地进行训练实验(例如教学用途)的人来说,也非常友好。

图18:Qwen30.6B与Llama31B架构对比图。可以看到,Qwen3架构更深(有更多的transformer层),而Llama3架构更宽(具有更多的注意力头)。

Qwen3(MoE)

如前所述,Qwen3系列还包括两个MoE(Sparse)变体。那么,为什么像Qwen3这样的架构会同时发布普通(Dense)和MoE(Sparse)版本呢?

正如本文开头所提到的,MoE变体旨在降低大规模基础模型的推理成本。提供Dense和MoE两种版本,可以让用户根据不同的目标与资源约束灵活选择。

通过同时发布这两类模型,Qwen3系列能够覆盖更广泛的应用场景:致密模型强调鲁棒性、简单性和可微调性;MoE模型则面向大规模部署中的推理效率。

图19:DeepSeek-V3与Qwen3235B-A22B架构对比。

如上图所示,DeepSeek-V3和Qwen3235B-A22B在架构上非常相似。不过值得注意的是,Qwen3模型取消了共享专家(此前的Qwen2.5-MoE等模型采用了共享专家机制)。

遗憾的是,Qwen3团队并未公开说明他们放弃共享专家的原因。

作者猜测,可能是因为在将专家数量从Qwen2.5-MoE的2个增加到Qwen3的8个之后,训练稳定性已经不再依赖共享专家。因此,他们选择省略共享专家,以节省额外的计算和显存开销(避免从8个增加到8+1个专家)。不过,这并不能解释为何DeepSeek-V3至今仍保留共享专家机制。

SmolLM3

SmolLM3或许不像本文其他提到的大模型那样广为人知,但作者认为它依然值得纳入讨论,因为该模型在仅有约30亿参数的体量下,展现出非常出色的建模性能,定位介于Qwen3的17亿参数模型与40亿参数模型之间,如下图所示。

此外,SmolLM3也像OLMo一样公开了大量训练细节,这在业内并不常见,因此尤为值得称赞。

图20:SmolLM3相较于Qwen31.7B和4B,以及Llama33B和Gemma34B的胜率比较。

如下面的架构对比图所示,SmolLM3的整体结构相对标准。不过,其中最有趣的一点或许是它采用了无位置嵌入(NoPE)机制。

图21:Qwen34B与SmolLM33B的并排架构对比图。

在LLM的背景下,NoPE是一种较早提出的理念,该方法旨在移除显式的位置编码信息注入机制,例如早期GPT架构中常用的绝对位置嵌入,或当前主流的RoPE(旋转位置编码)。

在基于Transformer的语言模型中,位置编码通常是必要的,因为自注意力机制默认对输入序列中的token顺序不敏感,即每个token被独立处理。为了解决这一问题,绝对位置嵌入通过添加一个额外的嵌入层,将位置信息与token嵌入相加,从而为模型提供序列顺序感知能力。

图22:展示了绝对位置嵌入的机制。

相比之下,RoPE通过将Query和Key向量按token的位置进行旋转来注入位置信息。

而在NoPE层中,则完全不加入任何位置编码信息:没有固定的、没有可学习的,也没有相对位置编码——什么都没有。

即使没有显式的位置编码,模型依然可以通过因果注意力掩码知道哪些token是在前面。这个掩码会阻止每个token访问其后的token,从而保证了自回归顺序的正确性。也就是说,位于位置t的token只能「看到」位置小于等于t的token。

总结来说,NoPE不仅不需要注入位置编码,还在序列长度泛化方面更具优势。也就是说,随着输入序列长度的增加,模型的表现下降幅度更小。如下图所示:

图23:展示了NoPE在长度泛化上的优势表现。

正因如此,SmolLM3团队在实际应用中,并未在每一层都使用NoPE,而是选择在每4层中使用一次NoPE(或说每4层省略一次RoPE),作为一种折中策略。

关于NoPE的更多细节,请参阅以下论文:

论文标题:TheImpactofPositionalEncodingonLengthGeneralizationinTransformers

论文链接:https://arxiv.org/abs/2305.19466

KimiK2

KimiK2最近因其出色的性能在AI社区引起了巨大反响。作为一个开源权重模型,它在多个基准测试中表现堪比Google的Gemini、Anthropic的Claude和OpenAI的ChatGPT等顶级闭源模型。

一个值得注意的方面是,它在训练中首次在此规模的生产级模型中使用了Muon优化器的变体,而非传统的AdamW。

据作者所知,这是Muon优化器首次在超大模型中应用(此前仅在最多160亿参数规模上展示过可扩展性)。这一选择带来了极为理想的训练损失曲线,很可能正是KimiK2能在上述各项基准测试中脱颖而出的重要原因。

KimiK2的参数规模达到了1万亿(1T),这无疑令人印象深刻。它可能是目前这一代中最大的LLM(截至本文撰写时),在不考虑尚未发布的Llama4Behemoth、闭源模型以及架构不同的Google1.6万亿SwitchTransformer(其为编码器-解码器模型)前提下,KimiK2几乎是无出其右的。

从架构上看,KimiK2基于本文开头提到的DeepSeek-V3架构,但进行了更大规模的扩展和增强,如下图所示(图略)。这也标志着一种「循环回归」:KimiK2将DeepSeek-V3的设计理念推向了极致。

如上图所示,KimiK2在整体架构上基本与DeepSeekV3保持一致,主要的差异在于:

KimiK2在MoE模块中使用了更多的专家,

在MLA模块中使用了更少的注意力头(heads)。

在历经数年之后,LLM的发布依然充满惊喜与期待。新技术永远让人心潮澎湃,永远期待更多的大模型架构改进的出现。