已经过去七年了,从初代 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(2, 3) # ...
如前所述,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
Sebastian Raschka 图书推荐
《从零构建大模型》
塞巴斯蒂安·拉施卡|著
覃立波,冯骁骋,刘乾 | 译
豆瓣评分 9.5,从零开始构建大模型的最佳指南,由畅销书作家塞巴斯蒂安•拉施卡撰写,通过清晰的文字、图表和实例,逐步指导读者创建自己的大模型。在本书中,读者将学习如何规划和编写大模型的各个组成部分、为大模型训练准备适当的数据集、进行通用语料库的预训练,以及定制特定任务的微调。
此外,本书还将探讨如何利用人工反馈确保大模型遵循指令,以及如何将预训练权重加载到大模型中。还有惊喜彩蛋 DeepSeek,作者深入解析构建与优化推理模型的方法和策略。
《大模型技术30讲》
塞巴斯蒂安·拉施卡|著
叶文滔 | 译
GitHub 项目 LLMs-from-scratch(star数44k)作者、大模型独角兽公司 Lightning AI 工程师倾力打造,全书采用独特的一问一答式风格,探讨了当今机器学习和人工智能领域中最重要的 30 个问题,旨在帮助读者了解最新的技术进展。
内容共分为五个部分:神经网络与深度学习、计算机视觉、自然语言处理、生产与部署、预测性能与模型评测。每一章都围绕一个问题展开,不仅针对问题做出了相应的解释,并配有若干图表,还给出了练习供读者检验自身是否已理解所学内容。
其他大模型图书推荐
《大模型应用开发极简入门:基于GPT-4和ChatGPT(第2版)》
奥利维耶·卡埃朗,[法] 玛丽–艾丽斯·布莱特 | 著
何文斯 | 译
深受读者喜爱的大模型应用开发图书升级版,作者为初学者提供了一份清晰、全面的“最小可用知识”,带领你快速了解 GPT-4 和 ChatGPT 的工作原理及优势,并在此基础上使用流行的 Python 编程语言构建大模型应用。
升级版在旧版的基础上进行了全面更新,融入了大模型应用开发的最新进展,比如 RAG、GPT-4 新特性的应用解析等。随书赠 DeepSeek × Dify 应用开发案例,书中还提供了大量简单易学的示例,帮你理解相关概念并将其应用在自己的项目中。
《图解大模型:生成式AI原理与实战》
[沙特] 杰伊·阿拉马尔,[荷] 马尔滕·格鲁滕多斯特 | 著
李博杰 | 译
备受关注的大模型“袋鼠书”,全书通过 300 幅全彩插图,以极致视觉化的方式呈现大模型的核心原理与工程实现,覆盖从底层机制、应用开发到性能优化的完整链条。内容结合真实数据集、实用项目与典型场景,注重实操性。
特别收录 18 幅图精解 DeepSeek 底层原理,紧跟前沿。配套资源包括一键运行代码、200 道大模型面试题及大量拓展视频/文章资料,助你全面掌握大模型理论与实践,是入门进阶与求职备战的理想之选。
《图解DeepSeek技术》
[沙特] 杰伊·阿拉马尔, [荷] 马尔滕·格鲁滕多斯特 | 著
李博杰 孟佳颖 | 译
2 小时搞懂 DeepSeek 底层技术。近 120 幅全彩插图通俗解读,内容不枯燥。从推理模型原理到 DeepSeek-R1 训练,作者是大模型领域知名专家 Jay & Maarten, 袋鼠书《图解大模型》同系列,广受欢迎。
《百面大模型》
包梦蛟,刘如日,朱俊达 | 著
本书按“二星到五星”难度体系,精选约 100 道大模型面试高频真题,覆盖 MoE、预训练、SFT、PEFT、RLHF、DPO、RAG、智能体等核心考点,配套题目目录,便于高效查漏补缺。
由 AI 领域大 V“包包大人”领衔,美团技术专家与北航新生代强强联合编写,内容专业权威。获 ACL Fellow 刘群、周明,《深度强化学习》作者王树森和黎彧君等 8 位业内大咖联合推荐,是大模型求职者的实战宝典。
《RAG极简入门:原理与实践》
张其来,徐思琪 | 著
一本注重 RAG 上手实践的书,没有堆术语,而是把整套 RAG 技术拆解得明明白白。
全书共 7 章内容,作者从背景原理讲起,到怎么搭框架、怎么处理数据、怎么做检索、生成、优化,每一块都有图、有例子,逻辑也特别清晰。甚至最后还贴心地加了个完整实战项目,让你从头跑一遍系统都不带卡壳的。
大模型学习不再孤单,如果你不想一个人孤军奋战,快来扫码加入共学营一起学习吧👇
入营流程:
扫码付款后扫码添加小助手
发送手机号 / 订单截图验证入群
入群后查看公告,开启共学之旅
常见问题:
没有 AI 背景可以学吗?可以,只需基础 Python 知识
直播错过怎么办?有回放,节奏自由,随看随学
图书是电子版吗?全部都是实体书,并且全国包邮
读过部分图书了还适合加入吗?当然适合,核心是社群、项目和系统性