点击下方卡片,关注“AI生成未来

如您有工作需要分享,欢迎联系:aigc_to_future


转载自:图灵编辑部
如有侵权,联系删稿

已经过去七年了,从初代 GPT 架构诞生,到 2019 年 GPT-2 诞生,再到 2024–2025 年的 DeepSeek-V3 和 Llama 4,这些模型在结构上仍如此相似,不免令人惊讶。

确实,位置编码从绝对位置进化到旋转位置(RoPE),多头注意力机制大多被分组查询注意力取代,激活函数也换成了更高效的 SwiGLU。但这些都算是小修小补。真有重大突破吗?还是说我们只是在不断打磨同一套架构底子?

想要比较不同 LLM 的表现,找出哪些因素带来了效果差异,其实是非常难的。其中训练模型用的数据、方法和超参数差异太大,而且很多细节也没有被公开。

不过我认为,仔细研究这些架构本身的结构变化(如下图 1 所示),对于洞察 2025 年大模型开发者的技术动向仍极具价值。

图片

图 1:本文讨论的部分模型架构

这篇文章不会讨论模型跑分或训练技巧,而是专注于当下主流开源模型在架构设计上的演变。

如果你还记得,我不久前写过一篇关于多模态 LLM 的文章,这次我们只关注文本模型,多模态的事以后再说。

提示:万字长文,干货预警,建议收藏后,耐心研读。


DeepSeek V3 / R1

你大概已经不止一次听说过,DeepSeek R1 在 2025 年 1 月发布时引起了巨大反响。它是一个专注推理能力的模型,架构上基于 2024 年 12 月推出的 DeepSeek V3。

虽然本文重点是 2025 年发布的架构,但把 DeepSeek V3 一起纳入也很合理——毕竟直到 R1 火了之后,V3 才真正引起广泛关注和使用。

如果你对 R1 的训练细节感兴趣,我年初写过一篇相关的文章可以参考:LLM 推理优化进度大揭秘,自 DeepSeek R1 后推理时计算扩展有何新突破?

本节我会重点讲讲 DeepSeek V3 引入的两项关键架构设计,它们提升了计算效率,也让这个模型在一众 LLM 中脱颖而出:

  • 多头潜在注意力(MLA)

  • 混合专家(MoE)

1.1 多头潜在注意力(MLA)

在说 MLA 之前,先补点背景,方便理解它的意义。先从近几年越来越常见的分组查询注意力(GQA)讲起,这是一个比传统多头注意力(MHA)更节省计算和参数的替代方案。

GQA 跟 MHA 最大的区别在于键值(key/value)的共享机制:MHA 中每个头有自己的一套 key 和 value,而 GQA 会让多个注意力头共享同一组 key/value,从而减少内存开销。

比如下图所示(图 2),假设有 4 个注意力头和 2 组键值,那么头 1 和 2 用的是同一组 key/value,头 3 和 4 用的是另一组。这种方式减少了 key/value 的计算量,节省内存,同时消融实验也显示对建模效果几乎没有影响。

图片

图 2:MHA 和 GQA 对比示意图。每两个查询头共享一组 key/value

GQA 的核心思路是通过共享 key/value 来减少总数:模型的总参数变少了;
推理时的 KV 缓存占用更小了,读取速度更快了。

如果你想看看 GQA 的代码实现,我在 GPT-2 转换到 Llama 3 的那篇文章里写过,包括不带 KV 缓存和带 KV 缓存的两种版本。

虽然 GQA 本质上是为了解决 MHA 在计算和内存上的问题,但包括它最初的论文和 Llama 2 的研究都表明,在建模效果上它跟 MHA 基本持平。

MLA 的出现则是另辟蹊径。它也能节省内存,特别适合搭配 KV 缓存。不同于 GQA 的共享策略,MLA 会先把 key 和 value 压缩到低维度再存进缓存,推理时再投影回原始维度使用(如图 3 所示)。虽然多了一次矩阵乘法,但大幅减少了缓存用量。

图片

图 3:MLA(用于 DeepSeek V3 / R1)与传统 MHA 的对比

顺便一提,query 也会被压缩,但只发生在训练阶段,推理时不会。

其实 MLA 并不是 V3 才用的,早在 DeepSeek-V2 就已经引入并使用了。V2 的论文里还有一些挺有意思的消融实验,解释了 DeepSeek 团队为何最终选择 MLA 而非 GQA。

图片

图 4:来自 DeepSeek-V2 论文的实验数据(arxiv.org/abs/2405.04434)

图中可以看出,GQA 表现反而比 MHA 差,而 MLA 的效果则优于 MHA,这很可能是团队选择 MLA 的主要原因。(虽然没比较 MLA 和 GQA 在每个 token 上节省多少 KV 缓存,也挺可惜的。)

总结一下:MLA 是个挺巧的设计,能有效减少 KV 缓存占用,同时在建模表现上还略强于 MHA。

1.2 混合专家(MoE)

另一个值得重点讲讲的架构模块就是 DeepSeek 用的混合专家(MoE)。虽然这个概念不是他们发明的,但今年 MoE 又火了起来,后面我们会看到越来越多模型在用。

你对 MoE 可能已经有所了解,但我还是简单回顾一下:

MoE 的核心思想是,把 Transformer 中的每个 FeedForward 模块替换成多个专家层,它们本质上还是 FeedForward 模块,只是数量不止一个,如下图所示(图 5)。

图片

图 5:MoE 模块(右) vs 普通 FeedForward(左)

通常一个 Transformer 块里的 FeedForward 部分就占了模型绝大多数参数,而这些块会在 LLM 中重复很多次(比如 DeepSeek-V3 就有 61 层)。

所以如果把原本的一个 FeedForward 换成多个,模型的总参数量自然会暴涨。但 MoE 的关键点是每个 token 并不会用到所有专家而是由一个路由器动态挑选其中一小部分激活。

正因如此,MoE 通常被称为“稀疏模型”(只激活部分参数),与始终使用全部参数的“密集模型”相对。但总参数的增加带来了更大的模型容量,训练时可以学到更多的知识,而推理时只需用少量参数就能保持效率。

举个例子:DeepSeek-V3 的每层 MoE 有 256 个专家,总参数 6710 亿,但推理时每次只激活 9 个专家(包括 1 个共享专家和 8 个由路由器选出的),也就是说,实际只用了约 370 亿参数——远低于全部启用时的 6710 亿。

DeepSeek-V3 的 MoE 设计还有个特别之处,就是引入了一个“共享专家”——它对所有 token 都始终启用。这不是新点子,早在 2024 年的 DeepSeekMoE 和 2022 年的 DeepSpeedMoE 就提过。
图片

图 6:来自论文 DeepSeekMoE: Towards Ultimate Expert Specialization in Mixture-of-Experts Language Models 的示意图

DeepSpeedMoE 首次提出“共享专家”的好处,研究发现它能提升整体效果。原因是,通用的模式可以由这个共享专家学习,其他专家就不用重复做这件事,可以专注于更特化的内容。

1.3 DeepSeek 总结

简单来说,DeepSeek-V3 是一个参数量高达 6710 亿 的超大模型,在发布时就超越了包括 405B 的 Llama 3 在内的其他开源模型。虽然体量更大,但它在推理阶段异常高效,这得益于它的混合专家(MoE)架构,每次只激活一小部分(仅 370 亿)参数进行计算。

另一个重要的区别点是:它采用了多头潜在注意力(MLA),而不是如今更常见的分组查询注意力(GQA)。这两者都是为了让推理阶段更高效、特别是在用到 KV 缓存时。虽然 MLA 在实现上更复杂,但根据 DeepSeek-V2 的研究,MLA 在建模效果上优于 GQA,因此成为 DeepSeek 团队的首选。


2. OLMo 2

OLMo 系列由非营利机构 Allen Institute for AI 发布,最大的亮点是训练数据和代码都极为透明,技术报告也写得很详尽。

虽然你在各种榜单上可能看不到 OLMo 拿第一,但它的结构很干净,更重要的是,它为 LLM 开发提供了一个清晰可参考的模板,这在如今并不多见。

虽然 OLMo 受欢迎主要是因为它的开放性,但它本身表现也不差。事实上,在今年 1 月发布时(也就是 Llama 4、Gemma 3 和 Qwen 3 发布前),OLMo 2 在算力投入与性能之间达到了帕累托最优如下图所示:

图片

图 7:不同 LLM 在建模性能(越高越好)和预训练成本(FLOPs,越低越好)之间的对比图。图引自 OLMo 2 论文:https://arxiv.org/abs/2501.00656

正如本文一开始所说,这里重点关注架构本身,不涉及训练细节或数据。所以 OLMo 2 在架构上有哪些值得一提的设计?主要有两个方向:

  • RMSNorm 的放置位置(在注意力和前馈层之后)

  • 引入 QK-Norm(对 query 和 key 做归一化)

另外值得一提的是,OLMo 2 仍然使用传统的多头注意力(MHA)没有采用 MLA 或 GQA。

2.1 归一化层放置

整体上,OLMo 2 的架构仍然与 GPT 系列类似,但有几个关键点不一样。先说归一化(Normalization)层的放置。

和 Llama、Gemma 等大多数当代模型一样,OLMo 2 使用的是 RMSNorm 而不是 LayerNorm。

但 RMSNorm 本身并不新(它是 LayerNorm 的简化版本,参数更少),所以我们跳过对它本身的讨论。

重点在于 RMSNorm 放在哪:

  • 最早的 Transformer(Attention is All You Need)将归一化层放在注意力和前馈模块之后,叫 Post-LN

  • GPT 之后的主流做法是将归一化层放在注意力和前馈模块之前,叫 Pre-LN

图片

图 8:Post-Norm、Pre-Norm 以及 OLMo 2 所采用变种的对比

研究发现,Pre-LN 可以改善初始化时的梯度表现,也更不依赖学习率预习策略。

但 OLMo 2 反其道而行,采用了一种 Post-Norm 变种(不过用的是 RMSNorm 而不是 LayerNorm),也就是将归一化放在模块之后,但仍然放在残差连接内部

为什么要这么做?因为这样能显著提升训练稳定性(如下图9所示)。

图片

图 9:Pre-Norm(如 GPT-2、Llama 3 等)与 OLMo 2 的 Post-Norm 方案在训练稳定性上的对比

不过需要注意的是,图中效果不仅来自归一化位置变化,还包含了 QK-Norm 的引入,因此无法分辨各自单独的影响。

2.2 QK-Norm 

由于上一节已经提到 QK-Norm,而我们之后将讨论的其他大模型如 Gemma 2 和  Gemma 3 也都采用了 QK-Norm,因此这里简单介绍一下它的含义。

QK-Norm 本质上是另一种 RMSNorm 层。它被放置在多头注意力(MHA)模块内部,在应用 RoPE 之前,用于对查询向量和键向量进行归一化。

为了说明这一点,下面是一段我在从零实现 Qwen3 时编写的 Grouped-Query Attention(GQA)层代码片段,其中 QK-Norm 在 GQA 中的应用方式与 OLMo 中的 MHA 相似:

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

如前所述,QK-Norm 与 Post-Norm 一起有助于稳定训练。需要注意的是,QK-Norm 并非 OLMo 2 首创,其最早可追溯到 2023 年的 Scaling Vision Transformers 论文。

2.3 OLMo 2 总结

简而言之,OLMo 2 架构中值得注意的设计决策主要体现在 RMSNorm 的放置位置:它将 RMSNorm 放在注意力模块和前馈模块之后,而不是之前(这是一种 Post-Norm 的变体),并在注意力机制内部为查询(query)和键(key)引入了额外的 RMSNorm(即 QK-Norm)。这两者结合,有助于稳定训练过程更稳定

下图进一步将 OLMo 2 与 Llama 3 做了并排比较;可以看到,除了 OLMo 2 仍使用传统的多头注意力(MHA)而非 GQA 这一点外,两者的架构整体上相对类似。不过,OLMo 2 团队在三个月后也发布了一个采用 GQA 的 32B 变体。

图片

图 10:Llama 3 和 OLMo 2 的架构对比图


3. Gemma 3

Google 推出的 Gemma 系列一直表现非常出色,不过和像 Llama 这样的热门模型比起来,Gemma 似乎一直没被充分关注。

Gemma 的一个显著特点是其词汇表规模较大,同时也更注重在 27B 模型上的优化。不过需要注意的是,Gemma 2 也提供了小模型版本:1B、4B 和 12B。

27B 模型处于一个非常理想的平衡点,比 8B 模型强大得多,同时不如 70B 那样吃资源,在我自己的 Mac Mini 上也能跑得很好。

那么,Gemma 3 还有哪些架构上的亮点?前面提到,一些模型如 Deepseek-V3/R1 采用 Mixture-of-Experts(MoE)架构,在保持模型规模的同时降低推理时的内存开销。而 Gemma 3 则使用了另一种技巧滑动窗口注意力(Sliding Window Attention) 来降低计算成本。

3.1 滑动窗口注意力

滑动窗口注意力最早在 2020 年的 LongFormer 论文中提出,Gemma 2 就已经在用,Gemma 3 延续了这一机制,并进一步优化,大幅减少了 KV 缓存的内存需求,如下图所示:

图片

图 11:来自 Gemma 3 论文的图示(https://arxiv.org/abs/2503.19786),展示了使用滑动窗口注意力后 KV 缓存的节省

那么,什么是滑动窗口注意力呢?如果我们将常规的自注意力看作一种全局注意力机制,因为序列中的每个元素都可以访问其他所有元素,那么滑动窗口注意力则可以被视为一种局部注意力机制,因为它限制了当前查询位置周围的上下文范围。下图对此进行了示意说明。

图片

图 12:左为常规注意力,右为滑动窗口注意力的对比图

请注意,滑动窗口注意力既可以与多头注意力(MHA)结合使用,也可以与分组查询注意力(GQA)配合使用,Gemma 3 就采用了分组查询注意力。

如上所述,滑动窗口注意力也被称为局部注意力,因为局部窗口会围绕当前查询位置并随之移动。相比之下,常规注意力是全局的,因为每个 token 都可以访问序列中的所有其他 token。

正如前文简要提到的,Gemma 3 的前代架构 Gemma 2 也使用了滑动窗口注意力。不同之处在于,Gemma 3 对全局(常规)与局部(滑动)注意力之间的比例进行了调整。

例如,Gemma 2 使用一种混合注意力机制,将滑动窗口(局部)与全局注意力以 1:1 的比例结合使用,每个 token 能够关注到一个长度为 4k 的邻近上下文窗口。

而在 Gemma 3 中,不再是每隔一层使用一次滑动窗口注意力,而是采用了 5:1的比例,也就是说,每 5 层局部注意力(滑动窗口)层中只穿插 1 层全局注意力层;此外,滑动窗口的大小也从 Gemma 2 的 4096 缩小到了 1024。这种变化使模型更加偏向高效的局部计算。

根据他们的消融实验研究,滑动窗口注意力对建模性能的影响非常小,如下图所示:

图片

图 13:Gemma 3 论文中展示的图示表明,滑动窗口注意力对语言模型的困惑度几乎没有影响

尽管滑动窗口注意力是 Gemma 3 最显著的架构特点,但还有一个细节值得一提:归一化层的位置,这是与 OLMo 2 对比时的重要点。

3.2 归一化层放置

Gemma 3 使用 RMSNorm,但不同于其他模型,它在 Grouped-Query Attention 模块的前后都放置了 RMSNorm 层,兼顾了 Pre-Norm 和 Post-Norm 两种机制。

虽然 Gemma 2 也这么做了,但仍然值得强调,因为它与以下几种主流做法不同:

  • 原始 Transformer 的 Post-Norm(Attention is All You Need 论文中的方式)

  • GPT-2 普及的 Pre-Norm

  • OLMo 2 中特有的 Post-Norm 变体

图片

图 14:OLMo 2 与 Gemma 3 的架构对比图,注意 Gemma 3 中额外的归一化层

这种做法其实挺直观:结合 Pre-Norm 和 Post-Norm 的优点就算多加一点层归一化没什么用,也只是增加了极少量的冗余计算,因为 RMSNorm 的计算开销本身就很小。

3.3 Gemma 3 小结

Gemma 3 是一个表现优秀的开源权重大模型,在开源圈内被低估了。它最值得注意的是使用了滑动窗口注意力优化效率,未来如果能和 MoE 结合会更有意思。

此外,Gemma 3 还有独特的归一化层布局,在注意力和前馈模块的前后都使用RMSNorm

3.4 补充:Gemma 3n

Gemma 3 发布几个月后,Google 又推出了 Gemma 3n,这是一个面向小设备优化的版本,目标是在手机上运行。

其中一个关键优化是引入了逐层嵌入(Per-Layer Embedding, PLE)的概念。其核心思路是:

  • 只将模型的一部分参数保留在 GPU 中;

  • 嵌入(如文本、音频、图像等模态)则按需从 CPU 或 SSD 流式加载。

下图展示了 PLE 的显存节省情况,其中列出的标准 Gemma 3 模型参数量为 54.4 亿。这很可能指的是 Gemma 3 的 40 亿参数变体。

图片

图 15:来自 Google Gemma 3n 官方博客(https://developers.googleblog.com/en/introducing-gemma-3n/)的图示,展示了 PLE 的节省效果

5.44 亿与 40 亿参数之间的差异,源于 Google 在大模型参数统计方式上的一个有趣做法。他们通常会在参数量统计中排除嵌入层(embedding)参数,从而使模型看起来更小,但在某些时候,例如本例中,又会将其包含进去,以使模型看起来更大。这种做法并非 Google 独有,事实上,这已经成为整个行业内的一种常见做法。

另一个有趣的技巧是 MatFormer(Matryoshka Transformer 的缩写)概念。例如,Gemma 3n 使用的是一个共享的 LLM(Transformer)架构,该架构可以被切分成多个较小的、可独立使用的模型。每个切片都被训练成可以单独运行的子模型,因此在推理时,我们可以只运行所需部分,而不必加载整个大模型。


4. Mistral Small 3.1

Mistral Small 3.1 24B 于 3 月发布,紧随 Gemma 3 之后,其在多个基准测试中表现优于 Gemma 3 27B(数学除外),且速度更快。

Mistral Small 3.1 推理延迟较低的原因很可能归功于其定制的分词器,以及缩减了 KV 缓存和层数。除此之外,其架构较为标准,如下图所示。

图片

图 16:Gemma 3(27B)与 Mistral 3.1 Small(24B)的架构对比图

有趣的是,早期的 Mistral 模型其实用过滑动窗口注意力,但在 Mistral Small 3.1 中他们放弃了这一机制。换句话说 Gemma 3 使用的是带滑动窗口的 Grouped-Query Attention(GQA),Mistral Small 3.1 则使用了标准的 GQA。

这种改变的一个可能好处是标准 GQA 更容易使用高度优化的推理实现,比如 FlashAttention,从而进一步提升推理速度。

我推测虽然滑动窗口注意力确实能节省内存,但它未必真的能减少推理延迟。而 Mistral Small 3.1 的设计目标显然是优先优化速度,而不是单纯追求内存压缩。


5. Llama 4

前文对 Mixture-of-Experts(MoE,混合专家模型)的介绍在这里再次派上用场。Llama 4 同样采用了 MoE 架构,其余部分则遵循了一个相对标准的设计,整体结构和 DeepSeek-V3 非常相似,如下图所示。(Llama 4 也原生支持多模态,与 Gemma 和 Mistral 等模型类似。不过由于本文重点讨论语言建模,因此这里只关注其文本模型部分。)

图片

图 17:DeepSeek V3(总参数 6710 亿)与 Llama 4 Maverick(总参数 4000 亿)的架构对比图

尽管 Llama 4 Maverick 的整体架构看起来和 DeepSeek-V3 非常接近,但其中还是有一些值得注意的差异。

首先,Llama 4 沿用了前几代中的 Grouped-Query Attention,而 DeepSeek-V3 使用的是本文开头提到的 Multi-Head Latent Attention。两者本身都是超大规模架构,其中 DeepSeek-V3 的总参数量大约比 Llama 4 Maverick 多 68%。但在实际推理过程中,DeepSeek-V3 的激活参数为 370 亿,远多于 Llama 4 Maverick 的 170 亿,几乎是后者的两倍。

Llama 4 Maverick 采用的是更经典的 MoE 结构,使用更少但更大的专家(每次激活 2 个,每个专家的隐藏层大小为 8192),而 DeepSeek-V3 则是每次激活 9 个专家,每个隐藏层大小为 2048。此外,DeepSeek 在除前 3 层之外的每个 Transformer block 中都使用 MoE 层,而 Llama 4 则是在每两个 block 中交替使用 MoE 和 Dense 模块。

考虑到两者在架构上的诸多细节差异,我们很难判断这些设计对最终模型性能的具体影响。不过,最值得注意的是,MoE 架构在 2025 年已经流行起来。


6. Qwen3

Qwen 团队一直在持续发布高质量的开源大模型。我记得在 NeurIPS 2023 的 LLM 效率挑战赛上,我作为联合顾问参与时,所有获奖方案都是基于 Qwen2 的。

现在,Qwen3 又是一款表现突出的新模型系列,在各自的模型规模等级中都处于排行榜前列。这一代一共有 7 个 dense 模型,分别是 0.6B、1.7B、4B、8B、14B 和 32B。还有 2 个 MoE 模型,分别是 30B-A3B 和 235B-A22B。

顺带一提,"Qwen3" 中间没有空格不是打错了,而是我特意保留了 Qwen 开发者选择的原始拼写方式。

6.1 Qwen3 (Dense)

先来聊聊 dense 模型架构。截至目前,0.6B 版本很可能是当下体积最小的现有开源模型。根据我个人的使用经验,考虑到它的体积,它的表现非常不错。它拥有很高的每秒处理 token 数量和较低的内存占用,非常适合本地运行。更重要的是,由于体积小,它也方便本地训练,非常适合教学用途。

所以,Qwen3 0.6B 在我看来已经在大多数场景下取代了 Llama 3 1B。下面展示了这两者架构的对比。

图片

图18:Qwen3 0.6B 与 Llama 3 1B 的架构对比图;可以看到 Qwen3 拥有更深的架构和更多的层数,而 Llama 3 拥有更宽的架构和更多的注意力头

如果你对一个无需依赖外部第三方大模型库、易于阅读的人类友好版 Qwen3 实现感兴趣,我最近用纯 PyTorch 从零实现了 Qwen3。

(https://github.com/rasbt/LLMs-from-scratch/tree/main/ch05/11_qwen3)

上图中的计算性能数据来自于我的这个从零实现的 PyTorch 版本,在 A100 GPU 上测试获得。可以看到,Qwen3 的内存占用更小,因为整体架构更紧凑,隐藏层更小,注意力头数量也更少。但它使用的 Transformer 层数比 Llama 3 多,因此运行速度较慢,生成 token 的速度也相对较低。

6.2 Qwen3 (MoE)

如前所述,Qwen3 也有两种 MoE 版本:30B-A3B 和 235B-A22B。为什么有些架构,比如 Qwen3,会同时提供普通(稠密)和 MoE(稀疏)两种版本呢?

正如本文开头提到的,MoE 版本有助于降低大模型的推理成本。提供稠密和 MoE 两种版本,可以让用户根据自己的需求和限制灵活选择。

稠密模型通常更容易进行微调、部署和在各种硬件上优化。

而 MoE 模型则针对推理扩展进行了优化。例如,在固定的推理预算下,它们可以实现更高的整体模型容量(即由于模型更大,训练时能吸收更多知识),而推理成本并不会按比例增加。

通过同时发布这两种版本,Qwen3 系列可以支持更广泛的应用场景。稠密模型注重稳健性、简单性和微调能力,MoE 模型则注重大规模高效推理。

总结本节,我们来看一下 Qwen3 235B-A22B(其中 A22B 指“220亿激活参数”)和 DeepSeek-V3,它的激活参数几乎是前者的两倍(370亿)。

图片

图19:DeepSeek-V3 与 Qwen3 235B-A22B 架构对比图

如上图所示,DeepSeek-V3 和 Qwen3 235B-A22B 的架构非常相似。但值得注意的是,Qwen3 模型放弃了使用共享专家(而早期的 Qwen 模型,如 Qwen2.5-MoE,是使用共享专家的)。

遗憾的是,Qwen3 团队没有透露他们放弃共享专家的原因。如果让我猜测,可能是因为当他们将专家数量从 2(Qwen2.5-MoE)增加到 8(Qwen3)后,训练稳定性不再依赖共享专家了,因此他们通过只用 8 个专家而不是 8+1 个专家,节省了额外的计算和内存开销。不过,这也无法解释为什么 DeepSeek-V3 仍然保留了共享专家。


7. SmolLM3

SmolLM3 可能不像本文介绍的其他大模型那样受欢迎,但我觉得它依然值得关注,因为它在相对小巧、便于使用的 30 亿参数规模下,展现了很好的建模性能,介于 Qwen3 的 1.7 亿和 4 亿参数模型之间,如下图所示。

此外,SmolLM3 也公开了大量训练细节,类似于 OLMo,这种透明度在业界比较少见,也非常值得赞赏!

图片

图20:摘自 SmolLM3 发布公告(https://huggingface.co/blog/smollm3)的带注释图,比较了 SmolLM3 的胜率与 Qwen3 1.7B、4B 以及 Llama 3 3B 和 Gemma 3 4B 的表现

从下图 21 的架构对比来看,SmolLM3 的架构相对标准,或许最有趣的地方在于它采用了 NoPE(无位置编码)。

图片

图21:Qwen3 4B 与 SmolLM3 3B 的架构并列对比图

7.1 无位置编码(NoPE)

NoPE 在大模型中是一个较早的概念,可以追溯到 2023 年的一篇论文 The Impact of Positional Encoding on Length Generalization in Transformers,其核心思想是不注入任何显式的位置编码信息,比如早期 GPT 架构中经典的绝对位置嵌入层,或者现在常用的 RoPE(旋转位置编码)。

在基于 Transformer 的大模型中,位置编码通常是必要的,因为自注意力机制并不区分序列中 token 的顺序。传统的绝对位置编码通过增加额外的嵌入层,将位置信息加入到 token 嵌入中。

图片

图22:摘自我的新书《从零构建大模型》中,展示了绝对位置编码的示意

而 RoPE 则通过根据 token 的位置对查询向量和键向量进行旋转,从而解决了这个问题。

然而,在 NoPE 层中,根本不会添加任何位置相关的信息,既没有固定的,也没有学习得到的,更没有相对位置编码,完全没有任何位置信号。

尽管没有显式的位置编码,模型仍然能知道 token 的先后顺序,这是因为因果注意力掩码的作用。该掩码阻止每个 token 关注未来的 token,因此位置为 t 的 token 只能看到位置小于等于 t 的 token,从而保持了自回归的顺序。

所以,尽管没有明确注入位置信息,模型结构本身隐式地保留了顺序感,而且在常规的基于梯度下降的训练过程中,大型语言模型可以学会利用这一点,如果这对优化目标有利的话。

总体来说,NoPE 论文不仅发现不注入位置信息也是可行的,而且还发现 NoPE 在长度泛化上表现更好,也就是说随着序列长度增加,模型回答性能的下降幅度更小,如下图 23 所示。

图片

图23:摘自NoPE论文(https://arxiv.org/abs/2305.19466)的一张带注释图,展示了NoPE在长度泛化能力上的提升

需要注意的是,上述实验是在一个参数规模大约 1 亿、上下文长度较小的 GPT 风格模型上进行的,目前尚不清楚这些发现能否推广到规模更大、更现代的大模型上。

因此,SmolLM3 团队很可能仅在每第四层应用了 NoPE(或者更准确地说,是省略了 RoPE)。


8. Kimi 2

Kimi 2 最近在 AI 社区引起了很大关注,因为它是一款开源权重模型,表现非常出色。根据各类基准测试,它的性能可与谷歌的 Gemini、Anthropic 的 Claude 以及 OpenAI 的 ChatGPT 等顶级专有模型相媲美。

一个显著的特点是它采用了一种相对较新的 Muon 优化器变体,取代了 AdamW。据我所知,这是 Muon 优化器首次在如此规模的生产模型中被应用,此前仅在最大 16 亿参数规模的模型中展示过其可扩展性。这一改进带来了非常理想的训练损失曲线,也很可能帮助该模型在上述基准测试中跃居榜首。

虽然有人评论说该损失曲线异常平滑(因为没有明显的波动),但我认为它并非特别平滑(例如,下图中的 OLMo 2 损失曲线就有波动;另外,梯度的 L2 范数可能是跟踪训练稳定性的更好指标)。不过,值得称赞的是损失曲线的衰减表现非常出色。

不过,正如本文开头所提到的,训练方法学的问题留待以后再深入讨论。

图片
该模型规模达到惊人的 1 万亿参数。
就目前来看,它可能是这一代中最大的大模型(考虑到 Llama 4 Behemoth 尚未发布,专有模型不计算在内,以及谷歌的 1.6 万亿参数 Switch Transformer 属于不同世代的编码器-解码器架构)。
此外,Kimi 2 采用了我们在本文开头介绍过的 DeepSeek-V3 架构,不过规模更大,如下图所示。
图片
图25:DeepSeek V3 与 Kimi K2 的架构对比图

如上图所示,Kimi 2.5 基本上与 DeepSeek V3 相同,只是在 MoE 模块中使用了更多专家,在多头潜在注意力(MLA)模块中使用了更少的头数。

Kimi 2 并非凭空出现。早期的 Kimi 1.5 模型在论文 Kimi k1.5: Scaling Reinforcement Learning with LLMs 中也表现不俗,不过它有些“倒霉”,因为 DeepSeek R1 模型论文正好在同一天(1 月 22 日)发布。此外,据我所知,Kimi 1.5 的模型权重从未公开分享过。

因此,很可能 Kimi K2 团队吸取了这些教训,在 DeepSeek R2 发布之前,将 Kimi K2 以开源权重的形式发布。截至目前,Kimi K2 是最令人印象深刻的开源权重模型。

经过这么多年,LLM 的发布依然令人兴奋,我也很期待接下来会会更新的动态!

原文地址:

https://sebastianraschka.com/blog/2025/the-big-llm-architecture-comparison.html


技术交流

加入「AI生成未来社区」群聊,一起交流讨论,涉及 图像生成、视频生成、3D生成、具身智能等多个不同方向,备注不同方向邀请入群!可添加小助手备注方向加群!