从DeepSeek-V3到Kimi K2:八种现代 LLM 架构大比较

 Datawhale干货 

作者:Sebastian Raschka

编译:PaperAgent

距离最初的 GPT 架构问世,已经过去了七年。乍看之下,回溯到 GPT-2(2019 年),再展望 DeepSeek-V3 和 Llama 4(2024-2025 年),人们或许会惊讶于这些模型在结构上竟依然如此相似。

当然,位置嵌入已经从绝对位置编码演变为旋转位置编码(RoPE),多头注意力机制已基本被分组查询注意力机制所取代,更高效的 SwiGLU 激活函数也取代了 GELU 等传统激活函数。但在这些细微的改进背后,我们是真正看到了突破性的变化,还是仅仅在对相同的架构基础进行打磨?


架构示意图:DeepSeek V3/R1、OLMo 2、Gemma 3、Mistral Small 3.1、Llama 4、Qwen3、SmolLM3和Kimi 2

原文地址:https://sebastianraschka.com/blog/2025/the-big-llm-architecture-comparison.html

一、DeepSeek V3/R1

DeepSeek V3 中引入的两种关键架构技术,这些技术提高了其计算效率,并使其有别于许多其他 LLM:多头潜在注意力(MLA)、混合专家(MoE):

1.1 多头潜在注意力(MLA)

MLA旨在解决传统多头注意力(MHA)在大规模模型中内存占用过高的问题。与分组查询注意力(GQA)相比,MLA通过压缩键和值张量来进一步减少内存使用。

MHA 与 GQA 的比较。此处,组大小为 2,其中两个查询共享一个键值对。

在MLA中,键和值张量在存储到KV缓存之前会被压缩到一个低维空间。在推理时,这些压缩的张量会被重新投影回原始大小。这种设计虽然增加了额外的矩阵乘法操作,但显著降低了内存占用。  

MLA(用于 DeepSeek V3 和 R1)与常规 MHA 的比较。

1.2 混合专家(MoE) 

MoE将传统的前馈模块替换为多个专家层,每个专家层也是一个前馈模块。在推理时,一个路由器会选择一小部分专家进行激活。例如,DeepSeek V3有256个专家,但每次推理仅激活9个专家(1个共享专家和8个由路由器选择的专家)。

 V3/R1 中的混合专家 (MoE) 模块(右)与具有标准前馈块的 LLM(左)的比较图。

二、OLMo 2

2.1 归一化层放置

OLMo 2采用后归一化(Post-Norm)策略,与大多数LLM采用的前归一化(Pre-Norm)不同。这种设计旨在提高训练稳定性。

在OLMo 2中,归一化层被放置在注意力模块和前馈模块之后,而不是之前。这种设计与原始Transformer架构中的Post-LN类似,但使用了RMSNorm而非LayerNorm。

Post-Norm、Pre-Norm和OLMo 2的Post-Norm变体的对比图。

研究表明,后归一化有助于训练稳定性,尤其是在不使用精心设计的学习率预热策略时。OLMo 2的训练损失曲线表明,这种设计在训练过程中表现更为稳定。

Pre-Norm(如GPT-2、Llama 3和许多其他模型中使用的)与OLMo 2的Post-Norm变体的训练稳定性对比图。

2.2 QK-Norm

QK-Norm是在多头注意力模块中引入的额外RMSNorm层,应用于查询(q)和键(k)之前。这种设计有助于在应用RoPE之前对输入进行归一化,从而减少训练过程中的数值不稳定。

class GroupedQueryAttention(nn.Module):    def __init__(        self, d_in, num_heads, num_kv_groups,        head_dim=None, qk_norm=False, dtype=None    ):        # ...        if qk_norm:            self.q_norm = RMSNorm(head_dim, eps=1e-6)            self.k_norm = RMSNorm(head_dim, eps=1e-6)        else:            self.q_norm = self.k_norm = None    def forward(self, x, mask, cos, sin):        b, num_tokens, _ = x.shape        # Apply projections        queries = self.W_query(x)        keys = self.W_key(x)        values = self.W_value(x)        # ...        # Optional normalization        if self.q_norm:            queries = self.q_norm(queries)        if self.k_norm:            keys = self.k_norm(keys)        # Apply RoPE        queries = apply_rope(queries, cos, sin)        keys = apply_rope(keys, cos, sin)        # Expand K and V to match number of heads        keys = keys.repeat_interleave(self.group_size, dim=1)        values = values.repeat_interleave(self.group_size, dim=1)        # Attention        attn_scores = queries @ keys.transpose(2, 3)        # ...

OLMo 2 和 Llama 3;可以看出,除了 OLMo 2 仍然使用传统的 MHA 而非 GQA 之外,它们的架构在其他方面相对相似。

Llama 3 和 OLMo 2 的架构比较。

三、Gemma 3

3.1 滑动窗口注意力

滑动窗口注意力旨在减少KV缓存的内存需求,同时保持模型的性能。这种设计特别适用于需要处理长序列的任务。

通过滑动窗口注意力实现的KV缓存内存节省。

滑动窗口注意力限制了每个查询位置的上下文范围,使其仅关注局部窗口内的内容。与传统的全局注意力机制相比,这种设计显著减少了KV缓存的内存占用。例如,Gemma 3将滑动窗口大小从Gemma 2的4096减少到1024,并调整了全局与局部注意力的比例。

常规注意力(左)和滑动窗口注意力(右)的对比图。

研究表明,滑动窗口注意力对模型的建模性能影响极小,但在内存使用上带来了显著的优化。这种设计使得Gemma 3在处理长序列时更加高效。

常规注意力(左)和滑动窗口注意力(右)的对比图。

3.2 归一化层放置

Gemma 3在注意力模块和前馈模块前后都放置了RMSNorm层。这种设计结合了前归一化和后归一化的优点,既保持了训练稳定性,又提高了推理效率。

OLMo 2和Gemma 3的架构对比图;注意Gemma 3中额外的归一化层。

四、Mistral Small 3.1

Mistral Small 3.1通过自定义分词器、缩小KV缓存和减少层数来优化模型。此外,它放弃了滑动窗口注意力,转而使用更高效的FlashAttention技术。

这些优化使得Mistral Small 3.1在推理延迟上优于Gemma 3,同时保持了较高的性能。这种设计特别适合需要快速推理的应用场景。

OLMo 2和Gemma 3的架构对比图;注意Gemma 3中额外的归一化层。

五、Llama 4

Llama 4采用了与DeepSeek V3类似的架构,但在某些细节上进行了优化,以提高模型的性能和效率。

DeepSeek V3(6710亿参数)和Llama 4 Maverick(4000亿参数)的架构对比图。

Llama 4使用了分组查询注意力(GQA)而非多头潜在注意力(MLA),并且在MoE模块中使用了更少但更大的专家。此外,Llama 4在每个Transformer块中交替使用MoE模块和密集模块。

六、Qwen3

6.1 密集模型

Qwen3 0.6B和Llama 3 1B的架构对比图

Qwen3的密集模型采用了较深的架构(更多Transformer块),具有更多的层,而 Llama 3 是一种更宽的架构,具有更多的注意力头。Qwen3 的内存占用较小,但生成速度较慢。

6.2 MoE模型

DeepSeek-V3 和 Qwen3 235B-A22B 的架构比较。

Qwen3的MoE模型采用了与DeepSeek V3类似的架构,但在某些细节上有所不同,例如不使用共享专家。这种设计使得模型在训练时能够学习更多知识,而在推理时保持高效。

七、SmolLM3

SmolLM3 架构看起来相当标准。不过,最有趣的一点或许是它使用了 NoPE(无位置嵌入)。

 Qwen3 4B 和 SmolLM3 3B 的架构比较。

7.1 无位置嵌入(NoPE)

NoPE不使用任何位置嵌入(绝对位置嵌入或旋转位置嵌入),而是依赖因果注意力掩码来保持序列的自回归顺序。这种设计使得模型在训练过程中能够学习到隐式的位置信息。

绝对位置嵌入示例

研究表明,NoPE在长度泛化方面表现更好,即在处理更长序列时性能下降较少。这种设计使得SmolLM3在处理长序列任务时表现优异。

八、Kimi K2

Kimi K2采用了DeepSeek V3的架构,并进行了扩展。它使用了Muon优化器而非AdamW,这可能是其训练损失曲线表现优异的原因之一。此外,Kimi K2在MoE模块中使用了更多的专家,在MLA模块中使用了更少的头。

DeepSeek V3 和 Kimi K2 的架构比较。

这些设计使得Kimi 2在训练过程中表现优异,训练损失曲线平滑且下降迅速。这可能有助于该模型跃居上述基准测试的榜首。

图片一起“赞”三连

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值