Datawhale 10小时前
从DeepSeek-V3到Kimi K2:八种现代 LLM 架构大比较
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

自GPT架构问世七年来,大型语言模型在结构上虽保持相似,但已引入多项关键技术革新。本文深入对比了DeepSeek V3/R1、OLMo 2、Gemma 3、Mistral Small 3.1、Llama 4、Qwen3、SmolLM3和Kimi 2等模型。重点解析了DeepSeek V3的多头潜在注意力(MLA)和混合专家(MoE)以优化效率;OLMo 2的后归一化(Post-Norm)和QK-Norm以提升训练稳定性;Gemma 3的滑动窗口注意力以减少内存占用;Mistral Small 3.1通过多方面优化实现快速推理;Llama 4则在MoE和密集模块间交替。同时,Qwen3在模型深度与宽度上各有侧重,SmolLM3的无位置嵌入(NoPE)展现了对长序列处理的优势,而Kimi K2则在优化器和MoE专家数量上进行了调整。这些演进共同推动了LLM在性能、效率和稳定性上的进步。

✨ **DeepSeek V3/R1引入MLA与MoE技术:** 多头潜在注意力(MLA)通过压缩键值张量显著降低了内存占用,而混合专家(MoE)则通过路由器选择少量专家模块进行计算,大幅提升了计算效率,为处理大规模模型提供了新思路。

🛡️ **OLMo 2采用后归一化与QK-Norm:** 后归一化(Post-Norm)策略和QK-Norm的结合,旨在提高训练过程的稳定性,减少数值不稳定性,尤其是在没有精心设计的学习率预热策略时,OLMo 2的训练损失曲线显示出更稳定的表现。

🪟 **Gemma 3的滑动窗口注意力与混合归一化:** 滑动窗口注意力通过限制上下文范围,有效减少了KV缓存的内存需求,特别适合处理长序列任务。同时,在注意力与前馈模块前后均放置RMSNorm层,结合了前、后归一化的优点,兼顾了训练稳定性和推理效率。

🚀 **Mistral Small 3.1多维度优化以求速:** 该模型通过自定义分词器、缩小KV缓存、减少层数以及采用FlashAttention技术,显著提升了推理速度,使其在需要快速响应的应用场景中表现突出。

💡 **SmolLM3的无位置嵌入(NoPE)展现长序列潜力:** SmolLM3摒弃了传统的位置嵌入,转而依赖因果注意力掩码来维持序列顺序。这种设计在处理长序列时表现出更优的长度泛化能力,性能下降更少。

2025-07-25 22:07 浙江

 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(23)
        # ...

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在训练过程中表现优异,训练损失曲线平滑且下降迅速。这可能有助于该模型跃居上述基准测试的榜首。

一起“三连

阅读原文

跳转微信打开

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

LLM架构 DeepSeek OLMo Gemma Llama
相关文章