大语言模型架构大比拼
图 1:本文所涵盖的部分架构。
自最初的 GPT 架构开发以来,已经过去了七年。乍一看,回顾 GPT-2(2019 年)并展望 DeepSeek-V3 和 Llama 4(2024-2025 年),人们可能会惊讶于这些模型在结构上仍然如此相似。当然,位置嵌入已从绝对位置嵌入演变为旋转位置嵌入(RoPE),多头注意力(Multi-Head Attention)已在很大程度上让位于分组查询注意力(Grouped-Query Attention),而更高效的 SwiGLU 也取代了像 GELU 这样的激活函数。但在这些微小的改进之下,我们是否真正看到了突破性的变化,还是我们仅仅在打磨相同的架构基础?
比较大语言模型以确定促成其良好(或不那么好)性能的关键因素是出了名的困难:数据集、训练技术和超参数差异巨大,且通常没有详细记录。然而,我认为,审视架构本身的结构性变化,看看大语言模型开发者在 2025 年都在做些什么,仍然具有很大的价值。(图 1 中展示了其中的一部分。)
所以,在本文中,我不会着重介绍基准性能或训练算法,而是将焦点放在定义当今旗舰开源模型的架构发展上。
1. DeepSeek V3/R1
1.1 Multi-Head Latent Attention (MLA)
所以,GQA 的核心思想是通过在多个查询头之间共享键头和值头,从而减少其数量。这样做有两点好处:(1) 降低了模型的参数量;(2) 减少了推理过程中键张量和值张量的内存带宽占用,因为需要从 KV 缓存中存储和检索的键和值变少了。
虽然 GQA 主要是一种旨在提升 MHA 计算效率的变通方案,但消融研究(例如原始 GQA 论文和 Llama 2 论文中的研究)表明,在 大语言模型建模性能方面,其表现与标准 MHA 不相上下。现在,多头潜在注意力 (Multi-Head Latent Attention, MLA) 提供了另一种不同的内存节省策略,该策略与 KV 缓存的结合效果也特别好。与 GQA 共享键头和值头的方式不同,MLA 在将键张量和值张量存入 KV 缓存之前,会先将它们压缩到一个更低维度的空间。
在推理期间,这些被压缩的张量在使用前会被投影回原始尺寸,如下图 3 所示。这个过程增加了一次额外的矩阵乘法,但减少了内存占用。
图 3:MLA(应用于 DeepSeek V3 和 R1)与常规 MHA 的对比。
(值得一提的是,查询也会被压缩,但仅在训练期间,而非推理期间。)
另外,MLA 在 DeepSeek V3 中并非新技术,因为其前代模型 DeepSeek-V2 已经使用(甚至首创)了该技术。此外,V2 的论文包含一些有趣的消融研究,这或许能解释为何 DeepSeek 团队选择了 MLA 而非 GQA(见下图 4)。
图 4:引自 DeepSeek-V2 论文的带注释表格
如上图 4 所示,GQA 的性能表现似乎不及 MHA,而 MLA 则提供了比 MHA 更优的建模性能,这很可能就是 DeepSeek 团队选择 MLA 而非 GQA 的原因。(要是能看到 MLA 和 GQA 在“每 Token 的 KV 缓存”节省量方面的对比,那就更有意思了!)
一个Transformer模块(上图中深灰色块所示)内部的前馈模块通常包含模型总参数的很大一部分。(请注意,Transformer 模块,以及其中的前馈模块,在一个大语言模型中会重复很多次;在 DeepSeek-V3 的案例中,重复了 61 次。)因此,用_多个_前馈模块替换_单个_前馈模块(如在混合专家模型 MoE 设置中所做的那样)会大幅增加模型的总参数数量。然而,关键的技巧是我们不为每个 Token使用(“激活”)所有专家。相反,一个路由器只为每个 Token 选择一小部分专家。
因为每次只有少数专家处于活动状态,MoE 模块通常被称为_稀疏_模块,与总是使用全部参数集的_密集_模块形成对比。然而,通过 MoE 带来的大量总参数增加了大语言模型的容量,这意味着它可以在训练期间吸收更多知识。不过,稀疏性保持了推理的效率,因为我们不是同时使用所有参数。例如,DeepSeek-V3 每个 MoE 模块有 256 个专家,总共有 6710 亿个参数。然而在推理期间,每次只有 9 个专家处于活动状态(1 个共享专家加上路由器选择的 8 个专家)。这意味着每个推理步骤只使用 370 亿个参数,而不是全部 6710 亿。
DeepSeek-V3 的 MoE 设计的一个显著特点是使用了共享专家。这是一个对每个 Token都始终保持激活的专家。这个想法并不新鲜,在 DeepSeek 2024 MoE 和 2022 DeepSpeedMoE 论文中已经介绍过。
图 6:摘自《DeepSeekMoE:在混合专家语言模型中实现终极专家专业化》的注释图
拥有共享专家的好处最早在 DeepSpeedMoE 论文中被注意到,他们发现与没有共享专家相比,它能提升整体建模性能。这可能是因为常见或重复的模式不必由多个独立专家学习,从而为它们留出更多空间来学习更专业的模式。
总而言之,DeepSeek-V3 是一个拥有 6710 亿参数的巨型模型,在发布时其性能超过了其他开源权重模型,包括拥有 4050 亿参数的 Llama 3。尽管参数量更大,但由于其混合专家(MoE)架构,它在推理时效率要高得多,该架构每个 Token只激活一小部分参数(仅 370 亿)。
DeepSeek-V3 的另一个关键区别特征是使用了多头潜在注意力(MLA)而不是分组查询注意力(GQA)。MLA 和 GQA 都是标准多头注意力(MHA)在推理上更高效的替代方案,尤其是在使用 KV 缓存时。虽然 MLA 实现起来更复杂,但 DeepSeek-V2 论文中的一项研究表明,它比 GQA 提供了更好的建模性能。
2. OLMo 2
由非营利组织艾伦人工智能研究所(Allen Institute for AI)推出的 OLMo 系列模型因其在训练数据和代码方面的透明度以及相对详细的技术报告而值得注意。
虽然你可能不会在任何基准测试或排行榜的顶部找到 OLMo 模型,但它们相当“干净”,更重要的是,由于其透明度,它们是开发大语言模型的一个很好的蓝图。
而且,虽然 OLMo 模型因其透明度而受欢迎,但它们的表现也并不差。事实上,在 1 月份发布时(在 Llama 4、Gemma 3 和 Qwen 3 之前),OLMo 2 模型正处于计算与性能的帕累托前沿,如下图 7 所示。
图7:对不同大语言模型的基准性能(越高越好)与预训练成本(FLOPs;越低越好)的建模。这是 OLMo 2 论文 中的一张带注释的图。正如本文前面所说,我旨在只关注大语言模型的架构细节(而非训练或数据),以将篇幅控制在可接受的范围内。那么,OLMo2 中有哪些有趣的架构设计选择呢?其核心主要在于归一化处理:RMSNorm 层的放置位置以及 QK-norm 的增加,我将在下文进行讨论。
另一件值得一提的事是,OLMo 2 仍然使用传统的多头注意力(MHA),而非 MLA 或 GQA。总的来说,OLMo 2 在很大程度上遵循了原始 GPT 模型的架构,与其它当代的语言模型相似。然而,也存在一些值得注意的偏差。让我们从归一化层说起。
与 Llama、Gemma 和大多数其它大语言模型类似,OLMo 2 从 LayerNorm 切换到了 RMSNorm。但由于 RMSNorm 已经是老生常谈(它基本上是 LayerNorm 的一个简化版本,可训练参数更少),我将跳过对 RMSNorm 与 LayerNorm 的讨论。
然而,讨论 RMSNorm 层的放置位置是值得的。原始的 Transformer(源于《Attention is all you need》这篇论文)将两个归一化层分别放置在 Transformer 块中的注意力模块和前馈模块_之后_。这也被称为 Post-LN 或后归一化。
GPT 及之后出现的大多数大语言模型则将归一化层放置在注意力模块和前馈模块_之前_,这被称为 Pre-LN 或预归一化。后归一化与预归一化的对比如下图所示。
图8:后归一化、预归一化与 OLMo 2 特有的后归一化形式的比较。在2020年,Xiong 等人的研究表明,Pre-LN 在初始化时能产生更稳定的梯度。此外,研究人员提到,即使没有仔细进行学习率预热,Pre-LN 也能很好地工作,而学习率预热对于 Post-LN 来说是一个至关重要的工具。
现在,我之所以提到这一点,是因为 OLMo 2 采用了一种 Post-LN 的形式(但使用的是 RMSNorm 而非 LayerNorm,所以我称之为_后归一化_)。在 OLMo 2 中,他们没有将归一化层放在注意力和前馈层之前,而是放在了它们之后,如上图所示。然而请注意,与原始 Transformer 架构不同的是,其归一化层仍然位于残差层(跳跃连接)的内部。
那么,他们为什么要移动归一化层的位置呢?原因是,这有助于提升训练的稳定性,如下图所示。
图9:展示预归一化(如 GPT-2、Llama 3 和许多其它模型中所用)与 OLMo 2 特有的后归一化形式在训练稳定性上的对比图。 但遗憾的是,这张图展示的是层重排与 QK-Norm 共同作用下的结果,而 QK-Norm 是一个独立的概念。因此,很难判断单单是归一化层的重排本身贡献了多少。
由于前一节已经提到了 QK-norm,并且我们稍后将讨论的其它大语言模型(如 Gemma 2 和 Gemma 3)也使用了 QK-norm,让我们简要讨论一下它是什么。QK-Norm 本质上是又一个 RMSNorm 层。它被放置在多头注意力(MHA)模块内部,并在应用 RoPE 之前作用于查询(q)和键(k)。
如前所述,QK-Norm与Post-Norm一起稳定了训练过程。请注意,QK-Norm并非由OLMo 2首创,而是源于2023年的《Scaling Vision Transformers》论文。
简而言之,OLMo 2值得注意的架构设计决策主要是RMSNorm的位置:将RMSNorm置于注意力模块和前馈模块之后而非之前(一种Post-Norm的变体),以及在注意力机制内部为查询和键添加RMSNorm(即QK-Norm),这两者共同帮助稳定了训练损失。下图进一步并排比较了OLMo 2和Llama 3;可以看出,除了OLMo 2仍使用传统的MHA而非GQA之外,两种架构在其他方面相对相似。(不过,OLMo 2团队在3个月后发布了一个使用GQA的32B变体。)
图10:Llama 3与OLMo 2的架构比较。
3. Gemma 3
谷歌的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使用了一种不同的“技巧”来降低计算成本,即滑动窗口注意力。通过使用滑动窗口注意力(最初在2020年的LongFormer论文中引入,并已被Gemma 2使用),Gemma 3团队能够大幅减少KV缓存中的内存需求,如下图所示。
图11:摘自Gemma 3论文的图示,展示了通过滑动窗口注意力节省的KV缓存内存。
那么,什么是滑动窗口注意力呢?如果我们将常规的自注意力看作是一种_全局_注意力机制,因为每个序列元素都可以访问所有其他序列元素,那么我们可以将滑动窗口注意力看作是_局部_注意力,因为在这里我们限制了当前查询位置周围的上下文大小。下图对此进行了说明。
图12:常规注意力(左)与滑动窗口注意力(右)的比较。
请注意,滑动窗口注意力可以与多头注意力和分组查询注意力一起使用;Gemma 3使用的是分组查询注意力。
如上所述,滑动窗口注意力也被称为_局部_注意力,因为局部窗口围绕着当前查询位置并随之移动。相比之下,常规注意力是_全局_的,因为每个Token都可以访问所有其他Token。此外,如上文简要提及,其前代架构Gemma 2也曾使用过滑动窗口注意力。Gemma 3的不同之处在于,他们调整了全局(常规)注意力和局部(滑动)注意力之间的比例。
例如,Gemma 2 采用了一种混合注意力机制,以 1:1 的比例结合了滑动窗口(局部)注意力和全局注意力。每个 Token 可以关注到附近一个 4k Token 窗口的上下文。Gemma 2 是每隔一层使用一次滑动窗口注意力,而 Gemma 3 的比例现在是 5:1,这意味着每 5 个滑动窗口(局部)注意力层才对应 1 个全局注意力层;此外,滑动窗口的大小也从 4096(Gemma 2)减小到了仅 1024(Gemma 3)。这使得模型的重心转向了更高效的局部化计算。
根据他们的消融研究,使用滑动窗口注意力对模型性能的影响微乎其微,如下图所示。
图 13:Gemma 3 论文中的一张带注释的图表,显示滑动窗口注意力对大语言模型生成的输出困惑度几乎没有影响。 尽管滑动窗口注意力是 Gemma 3 最显著的架构特点,但作为对上一节 OLMo 2 的补充,我还想简要探讨一下归一化层的布局问题。
一个虽小但有趣的细节是,Gemma 3 在其分组查询注意力模块周围,同时在 Pre-Norm 和 Post-Norm 两种设置中都使用了 RMSNorm。 这与 Gemma 2 相似,但仍值得强调,因为它不同于(1)原始 Transformer(《Attention is all you need》)中使用的 Post-Norm,(2)由 GPT-2 普及并在其后许多其他架构中使用的 Pre-Norm,以及(3)我们之前在 OLMo 2 中看到的 Post-Norm 形式。
我认为这种归一化层的布局是一种相对直观的方法,因为它集 Pre-Norm 和 Post-Norm 两者之长。在我看来,多一点归一化并无大碍。在最坏的情况下,如果额外的归一化是多余的,这会因冗余而导致效率略有下降。不过在实践中,由于 RMSNorm 从整体来看成本相对较低,这应该不会产生任何明显的影响。 Gemma 3 是一款性能出色的开放权重的大语言模型,但在我看来,它在开源社区中有些被低估了。其中最有趣的部分是它利用滑动窗口注意力来提升效率(未来将其与 MoE 结合会很有意思)。
此外,Gemma 3 的归一化层布局很独特,在注意力和前馈模块的前后都放置了 RMSNorm 层。 在 Gemma 3 发布几个月后,谷歌分享了 Gemma 3n,这是一款为提升小型设备效率而优化的 Gemma 3 模型,目标是在手机上运行。
为了实现更高的效率,Gemma 3n 的改动之一是所谓的逐层嵌入(Per-Layer Embedding, PLE)参数层。其核心思想是只在 GPU 内存中保留模型参数的一个子集。而特定于 Token 层的嵌入(例如文本、音频和视觉模态的嵌入)则根据需要从 CPU 或 SSD 中流式传输。
下图展示了 PLE 带来的内存节省,其中列出了一个标准 Gemma 3 模型的 54.4 亿个参数。这可能指的是 Gemma 3 的 40 亿参数变体。
图 15:谷歌 Gemma 3n 博客中的一张带注释的图表,展示了 PLE 的内存节省效果。
54.4亿与40亿参数的差异,源于谷歌在报告大语言模型参数数量方面有一种独特的做法。他们通常会排除嵌入参数以使模型显得更小,但在某些情况下,例如为了让模型显得更大时,他们又会方便地将这些参数包含在内。这并非谷歌独有,这种做法已成为整个领域的普遍惯例。另一个有趣的技巧是MatFormer概念(Matryoshka Transformer,即“套娃式 Transformer”的缩写)。例如,Gemma 3n 采用单一共享的大语言模型(Transformer)架构,该架构可被切分为多个更小的、能独立使用的模型。每个切片都经过训练以独立运行,因此在推理时,我们只需运行所需的部分(而非整个大模型)。
4. Mistral Small 3.1
Mistral Small 3.1 24B 于 Gemma 3 发布后不久的三月份发布,其值得注意之处在于,它在多个基准测试中(数学除外)表现优于 Gemma 3 27B,且速度更快。Mistral Small 3.1 相较于 Gemma 3 具有更低推理延迟的原因,很可能是由于其定制化的分词器,以及对 KV 缓存和层数的缩减。除此之外,它采用的是一种标准架构,如下图所示。
图 16:Gemma 3 27B 与 Mistral 3.1 Small 24B 的架构对比。
有趣的是,早期的 Mistral 模型曾采用滑动窗口注意力机制,但在 Mistral Small 3.1 中他们似乎放弃了这一设计。因此,由于 Mistral 使用的是常规的分组查询注意力(Grouped-Query Attention),而非 Gemma 3 中带滑动窗口的分组查询注意力,或许能够通过使用更优化的代码(如 FlashAttention)在推理计算上实现额外的节省。例如,我推测,尽管滑动窗口注意力能减少内存占用,但它不一定能降低推理延迟,而后者正是 Mistral Small 3.1 的优化重点。
本文前文对混合专家模型(MoE)的详尽介绍再次体现了其价值。Llama 4 也采用了 MoE 方法,并在其他方面遵循一种与 DeepSeek-V3 非常相似的相对标准架构,如下图所示。(Llama 4 包含原生的多模态支持,与 Gemma 和 Mistral 等模型类似。但由于本文聚焦于语言建模,我们仅关注其文本模型部分。)
图 17:DeepSeek V3(6710 亿参数)与 Llama 4 Maverick(4000 亿参数)的架构对比。
5. Llama 4
尽管 Llama 4 Maverick 的整体架构看起来与 DeepSeek-V3 非常相似,但仍有一些值得强调的有趣差异。首先,Llama 4 与其前代模型一样使用分组查询注意力,而 DeepSeek-V3 则使用我们在本文开头讨论过的多头潜在注意力(Multi-Head Latent Attention)。目前,DeepSeek-V3 和 Llama 4 Maverick 都是非常庞大的架构,DeepSeek-V3 的总参数量要大约多出 68%。然而,DeepSeek-V3 拥有 370 亿激活参数,是 Llama 4 Maverick(170 亿)的两倍以上。
Llama 4 Maverick 采用了一种更经典的 MoE 配置,其专家数量更少但规模更大(2 个激活专家,每个隐藏层大小为 8192),而 DeepSeek-V3 则拥有 9 个激活专家,每个隐藏层大小为 2048。此外,DeepSeek 在每个 Transformer 模块中都使用了 MoE 层(前 3 个除外),而 Llama 4 则是在每隔一个 Transformer 模块中交替使用 MoE 和密集模块。
鉴于这些架构之间存在诸多细微差异,我们很难确定它们对最终模型性能的确切影响。然而,一个主要趋势是,MoE 架构在 2025 年的受欢迎程度显著上升。
6. Qwen3
Qwen 团队持续推出高质量的开源权重大语言模型***。当我在 NeurIPS 2023 联合指导大语言模型***效率挑战赛时,我记得当时顶尖的获胜方案无一例外都基于 Qwen2。如今,Qwen3 成为了又一个在其同量级排行榜上名列前茅的爆款模型系列。该系列包含 7 个密集模型:0.6B、1.7B、4B、8B、14B 和 32B;以及 2 个 MoE 模型:30B-A3B 和 235B-A22B。
(顺便一提,“Qwen3”中间没有空格并非笔误;我只是想保留 Qwen 开发者选择的原始拼写。) 让我们先来探讨密集模型的架构。在撰写本文时,0.6B 模型很可能是市面上最小的新一代开源权重模型。根据我的个人经验,以其小巧的体积而言,它的性能非常出色。如果你计划在本地运行,它能提供极高的 Token/秒吞吐量和很低的内存占用。更重要的是,由于模型体积小,即便是出于教学目的,在本地训练也相当容易。
因此,在大多数用途上,Qwen3 0.6B 已经为我取代了 Llama 3 1B。这两种架构的对比如下所示。
图18:Qwen3 0.6B 与 Llama 3 1B 的架构对比;请注意,Qwen3 是一个层数更多的深度架构,而 Llama 3 则是一个注意力头更多的宽度架构。
上图中的计算性能数据,源自我基于纯 PyTorch 从零开始实现的版本,并在 A100 GPU 上运行所得。可以看出,Qwen3 的内存占用更小,因为它整体架构更小,同时使用了更小的隐藏层和更少的注意力头。然而,它比 Llama 3 使用了更多的 Transformer模块,这导致其运行时间更长(即 Token/秒的生成速度更低)。 如前所述,Qwen3 也提供了两种 MoE 变体:30B-A3B 和 235B-A22B。为什么像 Qwen3 这样的一些架构会同时提供常规(密集)和 MoE(稀疏)两种变体呢?
正如本文开头所提,MoE 变体有助于降低大型基础模型的推理成本。同时提供密集和 MoE 两种版本,能让用户根据自身目标和限制灵活选择。 通常,密集模型在不同硬件上的微调、部署和优化都更直接。
另一方面,MoE 模型则为规模化推理进行了优化。例如,在固定的推理预算下,它们能实现更高的整体模型容量(即因模型更大而在训练期间吸收更多知识),而推理成本却不会成比例增加。 通过发布这两种类型,Qwen3 系列能够支持更广泛的应用场景:密集模型适用于追求鲁棒性、简易性和微调的场景,而 MoE 模型则适用于高效的规模化服务。
为本节收尾,我们来看看 Qwen3 235B-A22B(注意 A22B 代表“22B 激活参数”)与 DeepSeek-V3 的对比,后者的激活参数(37B)几乎是前者的两倍。
图19:DeepSeek-V3 与 Qwen3 235B-A22B 的架构对比。 如图所示,DeepSeek-V3 和 Qwen3 235B-A22B 的架构惊人地相似。但值得注意的是,Qwen3 模型已不再使用共享专家(早期的 Qwen 模型,例如 Qwen2.5-MoE,是使用共享专家的)。
不幸的是,Qwen3 团队并未透露他们为何弃用共享专家的任何原因。如果非要我猜测,那或许是因为当他们将专家数量从 Qwen2.5-MoE 的 2 个增加到 Qwen3 的 8 个时,对于他们的训练设置而言,共享专家对于训练稳定性已非必要。于是,他们通过仅使用 8 个而非 8+1 个专家,节省了额外的计算和内存成本。(然而,这并不能解释为何 DeepSeek-V3 仍保留其共享专家。)
7. SmolLM3
SmolLM3 的知名度或许远不及本文介绍的其他大语言模型,但我认为它依然是一个值得收录的有趣模型。如下图所示,它以一个相对较小且易于使用的 30 亿参数模型规模,提供了非常出色的建模性能,其规模介于 Qwen3 的 17 亿和 40 亿参数模型之间。
此外,与 OLMo 类似,它也分享了大量训练细节,这一点非常难得,也总是令人赞赏!
图 20:引自 SmolLM3 发布文章的注释图,比较了 SmolLM3 与 Qwen3 1.7B 和 4B、Llama 3 3B 以及 Gemma 3 4B 的胜率。
从下方的架构对比图可以看出,SmolLM3 的架构看起来相当标准。不过,其最有趣的方面或许在于它使用了 NoPE(No Positional Embeddings,无位置嵌入)。
图 21:Qwen3 4B 与 SmolLM3 3B 的架构并排对比。
在大语言模型的背景下,NoPE 是一个较早的想法,可以追溯到 2023 年的一篇论文(《位置编码对 Transformer 长度泛化能力的影响》),其主张移除显式的位置信息注入(例如通过早期 GPT 架构中的经典绝对位置嵌入层或当今的 RoPE)。
在基于 Transformer 的大语言模型中,位置编码通常是必需的,因为自注意力机制处理 Token 时不考虑其顺序。绝对位置嵌入通过增加一个额外的嵌入层来为 Token 嵌入添加位置信息,从而解决了这个问题。
图 22:此图修改自我的著作《从零开始构建大语言模型》,用以阐释绝对位置嵌入。
另一方面,RoPE 则是通过相对于 Token 的位置来旋转查询向量和键向量来解决这个问题。
然而,在 NoPE 层中,完全不添加任何此类位置信号:无论是固定的、学习的还是相对的,一概没有。
尽管没有位置嵌入,但得益于因果注意力掩码,模型依然知道哪些 Token 在前。该掩码会阻止每个 Token 关注未来的 Token。因此,位于位置 t 的 Token 只能看到位置 ≤ t 的 Token,从而保留了自回归顺序。
所以,虽然没有明确添加任何位置信息,但模型结构中仍然内建了一种隐含的方向感。在常规的基于梯度下降的训练过程中,如果大语言模型发现利用这种方向感有助于实现优化目标,它便会学会这样做。(更多信息请查阅 NoPE 论文中的相关定理。)
所以,总的来说,NoPE 论文不仅发现无需注入位置信息,还发现 NoPE 具有更强的长度泛化能力,这意味着随着序列长度的增加,大语言模型的问答性能衰减得更少,如下图所示。
图 23:引自 NoPE 论文的一张带注释的图,展示了 NoPE 更强的长度泛化能力。 请注意,上述实验是采用一个约 1 亿参数、相对较小的 GPT 风格模型和较小的上下文窗口进行的。目前尚不清楚这些发现在多大程度上能泛化到更大型的当代大语言模型。
因此,SmolLM3 团队可能仅在每 4 层中“应用”了 NoPE(或者说省略了 RoPE)。
8. Kimi 2
Kimi 2 最近在 AI 社区引起了巨大轰动,因为它是一款性能卓越的开源权重模型。根据基准测试,它的表现与谷歌的 Gemini、Anthropic 的 Claude 以及 OpenAI 的 ChatGPT 模型等顶尖专有模型不相上下。
一个显著的特点是,它没有使用 AdamW,而是采用了相对较新的 Muon 优化器的一个变体。据我所知,这是首次在如此规模的生产模型中用 Muon 替代 AdamW(之前,它仅被证明可扩展至 160 亿参数规模)。其训练损失曲线因此表现得非常出色,这可能助力该模型登上了前述基准测试的榜首。 虽然有人评论说其损失曲线(因没有尖峰而)异常平滑,但我认为它并非特别平滑(例如,可参见下图中 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 k1.5:利用大语言模型扩展强化学习》论文 中讨论的早期 Kimi 1.5 模型同样令人瞩目。但不巧的是,DeepSeek R1 模型的论文在 1 月 22 日同一天发表了。此外,据我所知,Kimi 1.5 的模型权重从未公开发布过。
因此,Kimi K2 团队很可能吸取了这些教训,在 DeepSeek R2 发布前,将 Kimi K2 作为开源权重模型进行了分享。截至本文撰写之时,Kimi K2 是最令人印象深刻的开源权重模型。