本文详细比较了2024-2025年最新的大语言模型架构,包括DeepSeek V3/R1、OLMo 2、Gemma 3、Llama 4、Qwen3等。重点分析了各模型的关键技术创新,如多头潜在注意力(MLA)、混合专家(MoE)、滑动窗口注意力、规范化层放置策略等,以及这些技术如何提升模型性能和推理效率,为LLM开发者提供架构选择参考。

前排提示,文末有大模型AGI-CSDN独家资料包哦!

原文:https://magazine.sebastianraschka.com/p/the-big-llm-architecture-comparison

自最初的 GPT 架构开发以来,已经过去了七年。乍一看,回顾 GPT-2(2019 年),展望 DeepSeek-V3 和 Llama 4(2024-2025 年),人们可能会惊讶于这些模型在结构上仍然如此相似。

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

比较 LLM 以确定有助于其良好(或不太好)性能的关键因素是出了名的困难:数据集、训练技术和超参数差异很大,而且通常没有很好的记录。

然而,我认为研究架构本身的结构变化以了解 LLM 开发人员在 2025 年会做什么仍然很有价值。(其中的一部分如下图 1 所示。)

本文包含的几种架构图

  1. DeepSeek V3/R1

DeepSeek 的三种不同推理模型的开发过程

  • (1) DeepSeek-R1-Zero:该模型基于 2024 年 12 月发布的 671B 预训练 DeepSeek-V3 基础模型。研究团队使用强化学习 (RL) 和两种奖励类型对其进行训练。这种方法被称为“冷启动”训练,因为它不包含监督微调 (SFT) 步骤,而这通常是带人工反馈的强化学习 (RLHF) 的一部分
  • (2) DeepSeek-R1:这是 DeepSeek 的旗舰推理模型,基于 DeepSeek-R1-Zero 构建。团队通过增加 SFT 阶段和进一步的强化学习训练对其进行了进一步完善,从而在“冷启动”的 R1-Zero 模型上实现了改进
  • (3) DeepSeek-R1-Distill:利用前面步骤生成的 SFT 数据,DeepSeek 团队对 Qwen 和 Llama 模型进行了微调,以增强其推理能力。虽然此过程并非传统意义上的“蒸馏”,但它涉及使用较大的 DeepSeek-R1 671B 模型的输出来训练较小的模型(Llama 8B 和 70B,以及 Qwen 1.5B-30B)

在本节中,我将重点介绍 DeepSeek V3 中引入的两种关键架构技术,这些技术提高了其计算效率,并使其有别于许多其他 LLM:

  • 多头潜在注意力(MLA)
  • 混合专家(MoE)

1.1Multi-Head Latent Attention(MLA)

在讨论多头潜在注意力 (MLA) 之前,我们先简单回顾一下背景知识,解释一下它的应用。首先,我们来谈谈分组查询注意力 (GQA)。近年来,GQA 已成为多头注意力 (MHA) 的新标准替代者,它在计算和参数方面都更具效率。

MLA计算过程

与 MHA 不同,MHA 中的每个 head 都有自己的一组键和值,为了减少内存占用,GQA 将多个 head 分组以共享相同的键和值投影

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

GQA 的核心思想是通过在多个查询头之间共享键值头来减少键值头的数量。优点:

  • (1)可以降低模型的参数数量
  • (2) 还可以减少推理过程中键值张量的内存带宽占用,因为需要存储和从键值缓存中检索的键值更少

Group Query Attention计算过程

GQA代码实现


import torch
from torch import nn

class GroupQueryAttention(torch.nn.Module):
    def __init__(self, hidden_size, num_heads, group_num):
        super().__init__()
        self.num_heads = num_heads
        self.head_dim = hidden_size // num_heads
        self.group_num = group_num  # 组的数量

# 初始化 Q、K、V 投影矩阵,注意这里的 K V 做了折衷
        self.q_linear = nn.Linear(hidden_size, hidden_size)  # (hidden_size, hidden_size)
        self.k_linear = nn.Linear(hidden_size, self.group_num * self.head_dim)  # (hidden_size, group_num * head_dim)
        self.v_linear = nn.Linear(hidden_size, self.group_num * self.head_dim)  # (hidden_size, group_num * head_dim)

        self.o_linear = nn.Linear(hidden_size, hidden_size)  # (hidden_size, hidden_size)

    def forward(self, hidden_state, causal_mask=None, padding_mask=None):
        batch_size = hidden_state.size(0)

        query = self.q_linear(hidden_state)  # (batch_size, seq_len, hidden_size)
        key = self.k_linear(hidden_state)    # (batch_size, seq_len, group_num * head_dim)
        value = self.v_linear(hidden_state)  # (batch_size, seq_len, group_num * head_dim)

# 分割头部,将每个头的维度拆分出来
        query = self.split_head(query)  # (batch_size, num_heads, seq_len, head_dim)
        key = self.split_head(key, self.group_num)  # (batch_size, num_heads, seq_len, head_dim)
        value = self.split_head(value, self.group_num)  # (batch_size, num_heads, seq_len, head_dim)

# 计算注意力分数,自动广播,(batch_size, num_heads, seq_len, seq_len)
        attention_scores = torch.matmul(query, key.transpose(-1, -2)) / torch.sqrt(torch.tensor(self.head_dim, dtype=torch.float32))

if causal_mask is not None:
            attention_scores += causal_mask * -1e9

if padding_mask is not None:
            padding_mask = padding_mask.unsqueeze(1).unsqueeze(1)
            attention_scores += padding_mask * -1e9

        attention_probs = torch.softmax(attention_scores, dim=-1)  # (batch_size, num_heads, seq_len, seq_len)

        output = torch.matmul(attention_probs, value)  # (batch_size, num_heads, seq_len, head_dim)

# 对注意力输出进行拼接,形状: (batch_size, seq_len, hidden_size)
        output = output.transpose(1, 2).view(batch_size, -1, self.head_dim * self.num_heads)

# 通过线性层将拼接后的输出变换为所需的输出维度
        output = self.o_linear(output)  # (batch_size, seq_len, hidden_size)

return output

    def split_head(self, x, group_num=None):
        batch_size, seq_len = x.size()[:2]  # 获取批量大小和序列长度

if group_num is None:
return x.view(batch_size, -1, self.num_heads, self.head_dim).transpose(1, 2)
else:
# 将 hidden_size 分割为 group_num 和 head_dim
            x = x.view(batch_size, -1, group_num, self.head_dim).transpose(1, 2)
# 再将其手动 expand 到相同大小
            x = x[:, :, None, :, :].expand(batch_size, group_num, self.num_heads // group_num, seq_len, self.head_dim).view(batch_size, self.num_heads, seq_len, self.head_dim)
return x         
# 形状: (batch_size, num_heads, seq_len, head_dim)

虽然 GQA 主要是 MHA 的一种计算效率解决方法,但消融研究(例如原始 GQA 论文和Llama 2 论文中的研究)表明,就 LLM 建模性能而言,它的表现与标准 MHA 相当。

现在,Multi-Head Latent Attention (MLA) 提供了一种不同的内存节省策略,并且与键值缓存 (KV) 配合得非常好。MLA 不像 GQA 那样共享键值头,而是将键值张量压缩到低维空间,然后再将它们存储在键值缓存中

在推理时,这些压缩的张量会被投影回其原始大小,然后再使用,如下图所示。这增加了额外的矩阵乘法,但减少了内存使用量

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

(顺便说一句,查询也被压缩,但仅在训练期间,而不是推理期间。)

MLA 并非 DeepSeek V3 中的新特性,其前身 DeepSeek-V2也曾使用(甚至引入)过它。此外,V2 论文中包含一些有趣的消融研究,或许可以解释 DeepSeek 团队为何选择 MLA 而非 GQA(见下图 4)

图 4:DeepSeek-V2 论文中的注释表,https://arxiv.org/abs/2405.04434

如上图 4 所示,GQA 的性能似乎不如 MHA,而 MLA 的建模性能优于 MHA,这可能就是 DeepSeek 团队选择 MLA 而非 GQA 的原因.

总结:MLA 是一个巧妙的技巧,可以减少 KV 缓存内存的使用,同时在建模性能方面甚至略胜于 MHA。

1.2 混合专家(MoE)

DeepSeek 中另一个值得强调的主要架构组件是它对混合专家 (MoE) 层的使用。虽然 DeepSeek 并非 MoE 的发明者,但它在今年再次兴起,我们稍后将介绍的许多架构也都采用了它。

您可能已经熟悉 MoE,但快速回顾一下可能会有所帮助。

MoE 的核心思想是用多个专家层替换 Transformer 模块中的每个前馈模块,其中每个专家层本身也是一个前馈模块。这意味着我们将单个前馈模块替换为多个前馈模块,如下图 5 所示。

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

Transformer 模块内的 FeedForward 模块(如上图中深灰色模块所示)通常包含大量模型总参数。(请注意,Transformer 模块以及 FeedForward 模块在 LLM 中重复多次;在 DeepSeek-V3 中,重复了 61 次。)

因此,用多个前馈模块替换单个前馈模块(就像在 MoE 设置中所做的那样)会显著增加模型的总参数数量。然而,关键在于我们不会为每个 token 使用(“激活”)所有专家。相反,路由器只会为每个 token 选择一小部分专家。(出于时间或文章篇幅的考虑,我将在下次更详细地介绍路由器。)

由于每次只有少数专家处于活跃状态,因此 MoE 模块通常被称为稀疏模块,这与始终使用完整参数集的密集模块形成对比。然而,通过 MoE 获得的大量参数增加了 LLM 的容量,这意味着它可以在训练期间吸收更多知识。然而,稀疏性保持了推理的高效性,因为我们不会同时使用所有参数

例如,DeepSeek-V3 每个 MoE 模块有 256 位专家,总共 6710 亿个参数。然而,在推理过程中,每次只有 9 位专家处于活动状态(1 位共享专家加上 8 位由路由器选择的专家)。这意味着每个推理步骤仅使用 370 亿个参数,而不是全部 6710 亿个参数。

DeepSeek-V3 的 MoE 设计的一个显著特点是使用了一个共享专家。这是一个始终对每个 token 保持活跃的专家。这个想法并不新鲜,早在DeepSeek 2024 MoE和2022 DeepSpeedMoE 论文中就已提出。

“DeepSeekMoE:迈向混合专家语言模型中的终极专家专业化”的注释图

DeepSpeedMoE 论文首次提出了共享专家的优势,他们发现与没有共享专家相比,共享专家可以提升整体建模性能。这可能是因为多个专家无需学习常见或重复的模式,从而为它们提供了更多学习更专业模式的空间

1.3 DeepSeek总结

总而言之,DeepSeek-V3 是一个拥有 6710 亿个参数的庞大模型,在发布时,其性能优于其他开放权重模型,包括 405B 的 Llama 3。 尽管规模更大,但由于其混合专家 (MoE) 架构,它在推理时间上效率更高,该架构每个标记仅激活一小部分(仅 370 亿个)参数

DeepSeek-V3 的另一个关键区别在于它使用了多头潜注意力 (MLA) 算法,而非分组查询注意力 (GQA)。 MLA 和 GQA 都是标准多头注意力 (MHA) 的高效推理替代方案,尤其是在使用键值缓存时。虽然 MLA 的实现更为复杂,但 DeepSeek-V2 论文中的一项研究表明,MLA 的建模性能优于 GQA

2.OLMo 2

非营利机构艾伦人工智能研究所的OLMo系列模型值得关注,因为它在训练数据和代码方面非常透明,并且技术报告也相对详细。

虽然您可能不会在任何基准或排行榜的顶部找到 OLMo 模型,但它们非常干净,更重要的是,由于它们的透明度,它们是开发 LLM 的绝佳蓝图

在 1 月份发布时(Llama 4、Gemma 3 和 Qwen 3 之前),OLMo 2模型处于计算性能比的帕累托前沿,如下图 7 所示。

不同 LLM 的建模基准性能(越高越好)与预训练成本(FLOP;越低越好)的关系。此图来自 OLMo 2 论文(https://arxiv.org/abs/2501.00656),带注释

正如本文前面提到的,我旨在仅关注 LLM 架构细节(而非训练或数据),以使其保持在可控的篇幅内。那么,OLMo2 中有哪些有趣的架构设计选择呢?主要归结为规范化:RMSNorm 层的放置以及 QK 范数的添加,我将在下文讨论。

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

2.1 Normalization Layer Placement

与 Llama、Gemma 和大多数其他 LLM 类似,OLMo 2 从 LayerNorm 转换为 RMSNorm。

但由于 RMSNorm 已经过时(它本质上是 LayerNorm 的简化版本,可训练参数更少),我将跳过 RMSNorm 与 LayerNorm 的讨论。(RMSNorm 的代码实现。)

然而,RMNSorm 层的放置位置值得讨论。原始 Transformer(来自“ Attention is all you need ”论文)将两个规范化层分别放置在 Transformer 模块中的注意力模块和前馈模块之后。

这也称为 Post-LN 或 Post-Norm.

GPT 和之后出现的大多数 LLM 将归一化层置于注意力模块和前馈模块之前,这被称为 Pre-LN 或 Pre-Norm。下图展示了 Post-Norm 和 Pre-Norm 之间的对比

后规范、前规范和 OLMo 2 后规范风格的比较

2020年,Xiong 等人证明了 Pre-LN 在初始化时能够产生更良好的梯度。此外,研究人员还提到,Pre-LN 甚至无需仔细预热学习率就能很好地工作,而预热学习率是 Post-LN 的关键工具。

在 OLMo 2 中,规范化层不再位于注意力层和前馈层之前,而是位于其后,如上图所示。然而,请注意,与原始 Transformer 架构不同,规范化层仍然位于残差层内部(跳过连接)。

那么,他们为什么要移动归一化层的位置呢?原因是这有助于训练稳定性,如下图所示。

该图展示了 Pre-Norm(类似 GPT-2、Llama 3 等)与 OLMo 2 的 Post-Norm 的训练稳定性对比。此图为 OLMo 2 论文(https://arxiv.org/abs/2501.00656)中的注释图

这张图将重排序的结果与 QK-Norm 的结果放在一起展示,而 QK-Norm 是一个独立的概念。因此,很难判断归一化层重排序本身的贡献有多大。

2.2 QK-Norm

由于上一节已经提到了 QK-norm,并且我们稍后讨论的其他 LLM,例如 Gemma 2 和 Gemma 3,也使用了 QK-norm,我们来简单讨论一下这是什么。

QK-Norm 本质上是另一个 RMSNorm 层。它位于多头注意力 (MHA) 模块内部,并在应用 RoPE 之前应用于查询 (q) 和键 (k)

2.3 OLMo 2 总结

OLMo 2 架构设计决策主要是 RMSNorm 的放置:将 RMSNorm 放在注意力和前馈模块之后而不是之前(后范式的一种),以及在注意力机制内为查询和键添加 RMSNorm(QK-Norm),这两者共同有助于稳定训练损失

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

Llama 3 和 OLMo 2 的架构比较

  1. Gemma 3

Google 的 Gemma 型号一直都非常出色,我认为与其他流行型号(如 Llama 系列)相比,它们一直有点被低估。

Gemma 的一大特色是其词汇量相当大(以便更好地支持多种语言),并且更注重 27B 的规模(而非 8B 或 70B)。但请注意,Gemma 2 也有较小的规模:1B、4B 和 12B 27B 尺寸达到了一个非常好的最佳点:它比 8B 型号功能强大得多,但不像 70B 型号那样占用大量资源,并且它在我的 Mac Mini 上本地运行良好。

那么, Gemma 3还有什么有趣的地方呢?如前所述,其他模型(例如 Deepseek-V3/R1)使用混合专家 (MoE) 架构,在模型大小固定的情况下减少推理时的内存需求。(我们稍后将讨论的其他几个模型也采用了 MoE 方法。)

Gemma 3 使用不同的“技巧”来降低计算成本,即滑动窗口注意力

3.1 滑动窗口注意力机制

借助滑动窗口注意力机制(最初于 2020 年在 LongFormer 论文中提出,并且已被Gemma 2使用),Gemma 3 团队能够大幅减少 KV 缓存中的内存需求,如下图所示

Gemma 3 论文(https://arxiv.org/abs/2503.19786)中的注释图,显示滑动窗口注意力对 LLM 生成的输出困惑度几乎没有影响

虽然滑动窗口注意力是 Gemma 3 中最值得注意的架构方面,但作为上一节 OLMo 2 的后续,我还想简要介绍一下规范化层的放置

3.2 Gemma 3 中的规范化层放置

Gemma 3 在其分组查询注意模块的 Pre-Norm 和 Post-Norm 设置中使用 RMSNorm。

这与 Gemma 2 类似,但仍然值得强调,因为它不同于(1)原始 Transformer 中使用的 Post-Norm(“你只需要注意力”),(2)由 GPT-2 推广并在之后的许多其他架构中使用的 Pre-Norm,以及(3)我们之前看到的 OLMo 2 中的 Post-Norm 风格.

OLMo2 和 Gemma 3 之间的架构比较;请注意 Gemma 3 中的附加规范化层

这种归一化层放置方法相对直观,因为它兼顾了两种方法的优点:预归一化和后归一化。在我看来,增加一些额外的归一化操作总是好的。在最坏的情况下,如果额外的归一化操作是多余的,则会因冗余而导致效率低下。

3.3 Gemma 3 总结

Gemma 3 是一款性能良好的开放权重法学硕士 (LLM),但在我看来,它在开源圈中有点被低估了。它最有趣的部分是使用滑动窗口注意力机制来提高效率(未来将其与 MoE 结合起来会很有趣)。

此外,Gemma 3 具有独特的规范化层放置,将 RMSNorm 层放置在注意力和前馈模块之前和之后.

3.4 Gemma 3n

在 Gemma 3 发布几个月后,谷歌分享了Gemma 3n ,这是一款针对小型设备效率进行了优化的 Gemma 3 型号,目标是在手机上运行

Gemma 3n 中为了提高效率而做出的改进之一是所谓的“逐层嵌入 (PLE)”参数层。其核心思想是仅将模型参数的子集保存在 GPU 内存中。然后,特定于 token 层的嵌入(例如用于文本、音频和视觉模态的嵌入)将按需从 CPU 或 SSD 流式传输

下图展示了 PLE 内存节省情况,列出了标准 Gemma 3 模型的 54.4 亿个参数。这可能指的是 Gemma 3 的 40 亿个变体.

来自 Google 的 Gemma 3n 博客(https://developers.googleblog.com/en/introducing-gemma-3n/)的带注释的图表,说明了 PLE 内存节省

54.4 亿和 40 亿参数数量的差异,是因为谷歌在 LLM 中报告参数数量的方式很有意思。他们通常会排除嵌入参数,以使模型看起来更小,但在这种情况下,为了方便起见,可以添加嵌入参数来使模型看起来更大。这并非谷歌独有,因为这种方法已成为整个领域的普遍做法。

另一个有趣的技巧是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 推理延迟低于 Gemma 3 的原因很可能在于其自定义的分词器,以及缩减了键值缓存和层数。除此之外,它仍然是一个标准架构,如下图所示。

早期的 Mistral 模型曾使用过滑动窗口注意力机制,但在 Mistral Small 3.1 中似乎放弃了它。因此,由于 Mistral 使用的是常规的分组查询注意力机制,而不是像 Gemma 3 中那样使用带滑动窗口的分组查询注意力机制,或许由于能够使用更优化的代码(例如 FlashAttention),可以节省额外的推理计算成本。例如,我推测,虽然滑动窗口注意力机制可以减少内存使用量,但它并不一定能降低推理延迟,而这正是 Mistral Small 3.1 的重点所在

  1. LLama 4

Llama 4也采用了 MoE 方法,并且遵循与 DeepSeek-V3 非常相似的相对标准的架构,如下图所示。(Llama 4 包含原生的多模态支持,类似于 Gemma 和 Mistral 等模型。但是,由于本文重点关注语言建模,因此我们仅关注文本模型。)

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 都是非常庞大的架构,其中 DeepSeek-V3 的总参数数量大约比 Llama 4 Maverick 多 68%。然而,DeepSeek-V3 拥有 370 亿个活跃参数,是 Llama 4 Maverick(170 亿)的两倍多。

Llama 4 Maverick 采用了更经典的 MoE 设置,其专家数量更少但规模更大(2 名活跃专家,每名专家的隐藏层大小为 8,192),而 DeepSeek-V3 则使用了 9 名活跃专家,每名专家的隐藏层大小为 2,048。此外,DeepSeek 在每个转换器模块(前 3 个除外)中都使用了 MoE 层,而 Llama 4 则在每个转换器模块中交替使用 MoE 和密集模块

由于不同架构之间存在许多细微差异,因此很难确定它们对最终模型性能的确切影响。然而,值得关注的是,MoE 架构在 2025 年的受欢迎程度将显著上升。

6.Qwen3

现在,Qwen3 是又一个热门模型系列,在同尺寸类别中位居榜首。它包含 7 个高密度模型:0.6B、1.7B、4B、8B、14B 和 32B。此外,还有 2 个 MoE 模型:30B-A3B 和 235B-A22B.

6.1 Qwen3 Dense

0.6B 模型很可能是目前市面上最小的开放权重模型。根据我的个人经验,考虑到其小巧的体积,它的性能确实非常出色。如果您打算在本地运行它,它拥有很高的token/秒吞吐量和较低的内存占用。更重要的是,由于其体积小巧,它也很容易在本地进行训练(用于教育目的). Qwen3 0.6B 在大多数情况下已经取代了 Llama 3 1B。这两种架构的比较如下所示。

Qwen3 0.6B 和 Llama 3 1B 之间的架构比较;请注意,Qwen3 是一种更深的架构,具有更多的层,而 Llama 3 是一种更宽的架构,具有更多的注意力头

如果您对无需外部第三方 LLM 库依赖的人类可读的 Qwen3 实现感兴趣,我最近从头开始(纯 PyTorch)实现了 Qwen3 。

上图中的计算性能数据基于我在 A100 GPU 上运行的 PyTorch 实现。可以看出,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 代表“22B 活动参数”)和 DeepSeek-V3,后者的活动参数几乎是 Qwen3 235B-A22B 的两倍(37B)。

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 仍然保留着他们的共享专家。)

更新。Qwen3的开发者之一Junyang Lin对此做出了如下回应: 当时,我们并没有发现共享专家有足够显著的改进,我们担心共享专家会导致推理优化问题。说实话,这个问题没有直接的答案

  1. SmolLM3

SmolLM3可能不如本文介绍的其他 LLM 那么受欢迎,但我认为它仍然是一个有趣的模型,因为它在相对较小且方便的 30 亿参数模型大小下提供了非常好的建模性能,该模型大小介于 1.7B 和 4B Qwen3 模型之间,如下图所示。

而且,它还分享了很多训练细节,类似于OLMo.

来自 SmolLM3 公告帖 https://huggingface.co/blog/smollm3 的注释图,将 SmolLM3 的胜率与 Qwen3 1.7B 和 4B 以及 Llama 3 3B 和 Gemma 3 4B 进行了比较。

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

7.1 No Positional Embeddings (NoPE)

NoPE 是一个较旧的想法,可以追溯到 2023 年的一篇论文(位置编码对 Transformer 长度泛化的影响),旨在消除显式的位置信息注入(例如通过早期 GPT 架构中的经典绝对位置嵌入层或现在的 RoPE).

在基于 Transformer 的 LLM 中,位置编码通常是必需的,因为自注意力机制会独立于顺序来处理 token。绝对位置嵌入通过添加额外的嵌入层来解决这个问题,该嵌入层会将信息添加到 token 嵌入中

绝对位置编码过程

另一方面,RoPE 通过相对于其标记位置旋转查询和键向量来解决这个问题

然而,在 NoPE 层中,根本没有添加任何位置信号:不是固定的,不是学习到的,也不是相对的。什么都没有

即使没有位置嵌入,由于因果注意力掩码的存在,模型仍然知道哪些标记在前面。此掩码阻止每个标记关注后面的标记。因此,位置t处的标记只能看到位置≤ t处的标记,从而保持了自回归排序。

因此,虽然没有明确添加位置信息,但模型结构中仍然隐含着方向感,而 LLM 在常规的梯度下降训练中,如果发现方向感对优化目标有利,就可以学习利用它。(更多信息,请参阅 NoPE 论文的定理。)

所以,总体来说,NoPE 论文不仅发现不需要位置信息注入,而且还发现 NoPE 具有更好的长度泛化能力,这意味着随着序列长度的增加,LLM 应答性能下降得更少,如下图所示

NoPE 论文(https://arxiv.org/abs/2305.19466)中的注释图,显示 NoPE 具有更好的长度泛化能力

上述实验是使用一个相对较小的 GPT 类模型进行的,该模型包含约 1 亿个参数,上下文规模也相对较小。目前尚不清楚这些发现能否推广到更大规模的当代 LLM。

因此,SmolLM3 团队可能仅在每 4 层“应用”NoPE(或者更确切地说省略了 RoPE)。

  1. Kimi 2

Kimi 2最近在 AI 社区引起了轰动,因为它是一个性能卓越的开放权重模型。基准测试显示,它的性能堪比谷歌 Gemini、Anthropic 的 Claude 以及 OpenAI 的 ChatGPT 等顶级专有模型

它使用了相对较新的**Muon优化器的一个变体来替代 AdamW**。据我所知,这是 Muon 首次用于这种规模的生产模型,而非 AdamW(此前,它仅被证明可以扩展到 16B)。这带来了非常漂亮的训练损失曲线,这可能有助于该模型跃居上述基准测试的榜首

虽然有人评论说损失函数异常平滑(因为没有尖峰),但我认为它并非异常平滑(例如,参见下图中的 OLMo 2 损失曲线;此外,梯度的 L2 范数可能是追踪训练稳定性的更好指标)。然而,值得注意的是损失曲线衰减得如此之好.

来自 Kimi K2 公告博客文章(https://moonshotai.github.io/Kimi-K2/)和 OLMo 2 论文(https://arxiv.org/abs/2305.19466)的注释图

该模型本身有 1 万亿个参数,这确实令人印象深刻。

截至撰写本文时,它可能是这一代最大的 LLM(考虑到 Llama 4 Behemoth 尚未发布、专有 LLM 不算数以及谷歌的 1.6 万亿Switch Transformer是来自不同世代的编码器-解码器架构等限制)。

它也完成了一个循环,因为 Kimi 2 使用了我们在本文开头介绍过的 DeepSeek-V3 架构,只不过他们把它做得更大了,如下图所示。

DeepSeek V3 和 Kimi K2 的架构比较

Kimi 2.5 与 DeepSeek V3 基本相同,只是它在 MoE 模块中使用了更多的专家,而在多头潜在注意力 (MLA) 模块中使用了更少的头

Kimi 2 并非凭空而来。早期在《Kimi k1.5:使用 LLM 扩展强化学习》论文中讨论的 Kimi 1.5 模型也令人印象深刻。然而,不幸的是,DeepSeek R1 模型论文恰好在 1 月 22 日同一天发布。此外,据我所知,Kimi 1.5 的权重从未公开分享过

所以,Kimi K2 团队很可能牢记了这些教训,并在 DeepSeek R2 发布之前就将 Kimi K2 作为开放重量模型进行了分享。截至本文撰写时,Kimi K2 是最令人印象深刻的开放重量模型。

读者福利:倘若大家对大模型感兴趣,那么这套大模型学习资料一定对你有用。

针对0基础小白:

如果你是零基础小白,快速入门大模型是可行的。
大模型学习流程较短,学习内容全面,需要理论与实践结合
学习计划和方向能根据资料进行归纳总结

包括:大模型学习线路汇总、学习阶段,大模型实战案例,大模型学习视频,人工智能、机器学习、大模型书籍PDF。带你从零基础系统性的学好大模型!

😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓

请添加图片描述

👉AI大模型学习路线汇总👈

大模型学习路线图,整体分为7个大的阶段:(全套教程文末领取哈)

第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;

第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;

第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;

第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;

第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;

第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;

第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。

👉大模型实战案例👈

光学理论是没用的,要学会跟着一起做,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

在这里插入图片描述

👉大模型视频和PDF合集👈

这里我们能提供零基础学习书籍和视频。作为最快捷也是最有效的方式之一,跟着老师的思路,由浅入深,从理论到实操,其实大模型并不难

在这里插入图片描述

👉学会后的收获:👈

• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;

• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;

• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;

• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。

👉获取方式:

😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓

Logo

更多推荐