从GPT-2到gpt-oss:架构演进分析
摘要
OpenAI本周发布了全新的开源权重大语言模型:gpt-oss-120b和gpt-oss-20b,这是自GPT-2以来,OpenAI首次分享大型、完全开源权重的模型。早期的GPT模型展示了Transformer架构如何扩展。2022年ChatGPT的发布通过展示其在写作、知识(以及后来的编码)任务中的实际效用,使这些模型成为主流。现在,他们分享了一些期待已久的权重模型,其架构具有一些有趣的细节。
以下是本文内容的快速预览。为便于导航,建议使用文章页面左侧的目录。
- 与GPT-2的模型架构比较
- MXFP4优化使gpt-oss模型能在单个GPU上运行
- 宽度与深度的权衡(gpt-oss与Qwen3)
- 注意力偏差和sink机制
- 基准测试与GPT-5的比较
希望您能从中获得有价值的信息!
1 模型架构概述
在深入讨论架构细节之前,让我们先概览一下图1中所示的两个模型:gpt-oss-20b和gpt-oss-120b。
如果您之前看过最近的LLM架构图,或阅读过我之前的《大模型架构比较》文章,您可能会注意到乍看之下没有什么新颖或不寻常的地方。
这并不奇怪,因为领先的LLM开发者往往使用相同的基线架构,然后进行较小的调整。这纯属我个人推测,但我认为这是因为:
- 这些实验室之间存在显著的员工流动。
- 我们仍未找到比Transformer架构更好的替代方案。尽管状态空间模型和文本扩散模型存在,但据我所知,没有人证明它们在此规模上表现优于Transformer。(我发现的大多数比较仅关注基准测试性能。这些模型在处理现实世界、多轮次写作和编码任务方面的表现仍不清楚。撰写本文时,LM Arena排名最高的非纯Transformer模型是Jamba,它是一种Transformer-状态空间模型混合体,排名第96位。)
- 大多数收益可能来自数据和算法调整,而非主要架构变更。
尽管如此,他们的设计选择仍有许多有趣之处。图中展示了一些(而其他一些则未展示,但我们将在后面讨论)。在本文其余部分,我将逐一突出这些特点,并将其与其他架构进行比较。
我还应该说明,我与OpenAI没有任何关系。我的信息来自审查已发布的模型代码和阅读其技术报告。如果您想了解如何在本地使用这些模型,最好的起点是OpenAI的官方模型中心页面:
https://huggingface.co/openai/gpt-oss-20b
https://huggingface.co/openai/gpt-oss-120b
20B模型可以在具有最多16GB RAM的消费级GPU上运行。120B模型可以在单个具有80GB RAM的H100或更新硬件上运行。我稍后会回到这一点,因为有一些重要的注意事项。
2 从GPT-2出发
在我们深入比较gpt-oss与更近期的架构之前,让我们坐上时光机,看看GPT-2(图2),了解技术已经走了多远。
gpt-oss和GPT-2都是基于2017年《Attention Is All You Need》论文中介绍的Transformer架构构建的仅解码器LLM。多年来,许多细节已经演变。
然而,这些变化并非gpt-oss独有。正如我们稍后将看到的,它们出现在许多其他LLM中。由于我在之前的《大模型架构比较》文章中已经讨论了其中许多方面,我将尽量使每个小节简短且重点突出。
2.1 移除Dropout
Dropout(2012年)是一种通过在训练期间随机"丢弃"(即设置为零)一部分层激活或注意力分数(图3)来防止过拟合的传统技术。然而,Dropout在现代LLM中很少使用,GPT-2之后的大多数模型都已放弃它(无意双关)。
我推测Dropout最初在GPT-2中使用是因为它继承了原始Transformer架构。研究人员可能注意到它实际上并不能改善LLM性能(我在小规模GPT-2复制运行中也观察到这一点)。这可能是因为LLM通常仅在一个epoch内对海量数据集进行训练,这与最初引入Dropout时的数百epoch训练方案形成对比。因此,由于LLM在训练期间每个标记只看到一次,过拟合风险很小。
有趣的是,尽管Dropout在LLM架构设计中多年来被忽视,但我发现了一篇2025年的研究论文,其中对小规模LLM(Pythia 1.4B)的实验确认,在这种单epoch训练制度下,Dropout会导致下游性能下降。
2.2 RoPE取代绝对位置嵌入
在基于Transformer的LLM中,位置编码是必要的,因为注意力机制默认将输入标记视为无序的。在原始GPT架构中,绝对位置嵌入通过为序列中的每个位置添加学习的嵌入向量(图4)来解决这个问题,然后将其添加到标记嵌入中。
RoPE(旋转位置嵌入)引入了一种不同的方法:它不是将位置信息作为单独的嵌入添加,而是通过旋转查询和键向量来编码位置,旋转方式取决于每个标记的位置。(RoPE是一个优雅的想法,但解释起来有点棘手。我计划有一天单独详细讨论。)
虽然RoPE在2021年首次提出,但随着2023年原始Llama模型的发布而被广泛采用,并自此成为现代LLM的标准配置。
2.3 Swish/SwiGLU取代GELU
早期GPT架构使用GELU。为什么现在使用Swish而非GELU?我认为Swish在计算上略便宜,这可能就是全部原因。根据您查看的论文,您会发现一种在建模性能方面略优于另一种。在我看来,这些微小差异可能在标准误差范围内,您的实际效果将取决于超参数敏感性。
激活函数曾是辩论的热点话题,直到深度学习社区在十多年前基本确定使用ReLU。此后,研究人员提出了许多具有更平滑曲线的ReLU类似变体,而GELU和Swish(图5)是其中留存下来的。
早期GPT架构使用GELU,定义为0.5x * [1 + erf(x / sqrt(2))]。这里,erf(误差函数)是高斯积分,使用高斯积分的多项式近似计算,这使得它比Swish中使用的sigmoid等更简单函数计算成本更高,其中Swish简单定义为x * sigmoid(x)。
实际上,Swish在计算上比GELU略便宜,这可能是它在大多数新模型中取代GELU的主要原因。根据我们查看的论文,一种可能在建模性能方面略好一些。但我认为这些收益通常在标准误差范围内,赢家将高度依赖于超参数调整。
Swish是当今大多数架构中使用的。然而,GELU并未被完全遗忘;例如,Google的Gemma模型仍在使用GELU。
更值得注意的是,前馈模块(一个小型多层感知器)被门控"GLU"对应物取代,其中GLU代表门控线性单元,是在2020年的一篇论文中提出的。具体来说,2个全连接层被3个全连接层取代,如图6所示。
乍一看,GEGLU/SwiGLU变体可能因为额外的层而有更多参数,因此可能优于常规前馈层。但这具有误导性,因为在实践中,SwiGLU/GEGLU中的W和V权重层通常选择为传统前馈层中W_1层大小的一半。
为了更好地说明这一点,考虑常规和GLU变体的具体代码实现:
假设我们有1024的嵌入维度。在常规前馈情况下,这将是:
fc1: 1024 × 4096 = 4,194,304
fc2: 1024 × 4096 = 4,194,304
即fc1 + fc2 = 8,388,608个参数。
对于GLU变体,我们有:
fc1: 1024 × 2048 = 2,097,152
fc2: 1024 × 2048 = 2,097,152
fc3: 2048 × 1024 = 2,097,152
即3 × 2,097,152 = 6,291,456个权重参数。
因此,总体而言,使用GLU变体导致参数更少,且性能也更好。这种更好性能的原因是这些GLU变体提供了额外的乘法交互,提高了表达能力(这也是深度且窄的神经网络比浅层且宽的神经网络表现更好的原因,前提是训练良好)。
2.4 专家混合模型取代单一前馈模块
除了将前馈模块升级为SwiGLU(如前一节所述)外,gpt-oss还用多个前馈模块替换单一前馈模块,每次令牌生成步骤仅使用其中的一个子集。这种方法被称为专家混合模型(MoE),如图8所示。
因此,用多个前馈模块替换单个前馈模块(如MoE设置中所做的)显著增加了模型的总参数数量。然而,关键技巧是我们不为每个令牌使用(“激活”)所有专家。相反,路由器为每个令牌选择一小部分专家。
由于每次只有少数专家处于活动状态,MoE模块通常被称为稀疏的,与始终使用完整参数集的密集模块形成对比。然而,通过MoE增加的大量总参数提高了LLM的容量,这意味着它可以在训练中吸收更多知识。尽管如此,稀疏性使推理保持高效,因为我们不会同时使用所有参数。
(有趣的是:在大多数MoE模型中,专家权重占总模型参数的90%以上。)
2.5 分组查询注意力取代多头注意力
正如我在之前的文章中提到的,分组查询注意力(GQA)近年来已成为多头注意力(MHA)的一种更计算和参数高效的替代方案。
在MHA中,每个头都有自己的键和值集。GQA通过让多个头共享相同的键和值投影来减少内存使用。
例如,如图9所示,如果有2个键-值组和4个注意力头,头1和2可能共享一组键和值,而头3和4共享另一组。这种分组减少了键和值计算的总数,导致内存使用降低和效率提高——根据消融研究,这不会明显影响建模性能。
因此,GQA的核心思想是通过在多个查询头之间共享键和值来减少键和值头的数量。这(1)降低了模型的参数数量,(2)减少了推理期间键和值张量的内存带宽使用,因为在KV缓存中需要存储和检索的键和值更少。
虽然GQA主要是MHA的计算效率解决方案,但消融研究(如原始GQA论文和Llama 2论文中的研究)表明,它在LLM建模性能方面与标准MHA表现相当。
2.6 滑动窗口注意力
滑动窗口注意力(图10)最初在LongFormer论文(2020年)中引入,后来被Mistral普及。有趣的是,gpt-oss在每隔一层应用它。您可以将其视为多头注意力(或在此情况下为分组查询注意力(GQA))的一种变体,其中注意力上下文被限制在较小的窗口内,从而减少内存使用和计算成本。
具体来说,gpt-oss在关注完整上下文的GQA层和将滑动窗口限制为128个令牌的GQA层之间交替。
正如我在之前的文章中讨论的,Gemma 2(2024年)使用了类似的1:1比例。今年早些时候的Gemma 3进一步推进,转向5:1比例,这意味着每五个滑动窗口(局部)注意力层只有一个完整注意力层。
根据Gemma的消融研究,滑动窗口注意力对建模性能的影响很小,如图所示。请注意,Gemma 2中的窗口大小为4096个令牌,Gemma 3将其减少到1024。在gpt-oss中,窗口仅为128个令牌,这非常小。
作为有趣的事实,官方公告文章指出滑动窗口注意力实际上已在GPT-3中使用:
“这些模型使用交替的密集和局部带状稀疏注意力模式,类似于GPT-3”
谁会想到!?我回到原始GPT-3论文,确实在其中提到了:
“我们使用与GPT-2相同的模型和架构[RWC+19],包括其中描述的修改初始化、预归一化和可逆标记化,只是我们在Transformer层中使用了交替的密集和局部带状稀疏注意力模式,类似于Sparse Transformer[CG RS19]。”
2.7 RMSNorm取代LayerNorm
最后,从GPT-2出发的最后一个微小调整是用RMSNorm(2019年)取代LayerNorm(2016年),这在近年来已成为一种常见趋势。
类似于用Swish和SwiGLU替换GELU,RMSNorm是这些较小但合理的效率改进之一。RMSNorm与LayerNorm的目的相似,都是归一化层激活,如图11所示。
您可能还记得,不久前,BatchNorm是执行此任务的首选。它已经失宠,主要是因为它难以高效并行化(由于均值和方差批统计),并且在小批量大小下表现不佳。
如图11所示,LayerNorm和RMSNorm都将层输出缩放到合理范围。
LayerNorm减去均值并除以标准差,使层输出具有零均值和单位方差(方差为1,标准差为1)。
RMSNorm将输入除以均方根。这不强制零均值和单位方差,但均值和方差在合理范围内:均值为-1到1,方差为0到1。在图11所示的这个特定示例中,均值为0.77,方差为0.41。
LayerNorm和RMSNorm都稳定激活规模并改善优化,但RMSNorm在大规模LLM中通常更受青睐,因为它计算成本更低。与LayerNorm不同,RMSNorm没有偏置(偏移)项,并将昂贵的均值和方差计算简化为单个均方根操作。这将跨特征归约的数量从两个减少到一个,降低了GPU上的通信开销,提高了训练效率。
图12展示了代码中的样子:
2.8 GPT-2的遗产
我认为GPT-2仍然是学习LLM的绝佳入门架构。它足够简单,不会在层层优化技巧中迷失,但又足够复杂,能让你扎实掌握现代Transformer模型的工作原理。
从GPT-2开始,您可以专注于基础知识(注意力机制、位置嵌入、归一化和整体训练流程),而不会被新架构中发现的额外功能和调整所淹没。
事实上,我认为在尝试堆叠新变化之前,先学习甚至实现GPT-2是值得的。您不仅会更容易理解这些变化,而且可能会更欣赏它们,因为您会更好地理解它们试图解决的限制或问题。
例如,从我的GPT-2代码出发,我最近从头实现了Qwen3架构,它与gpt-oss非常相似,这将我们带到了下一个主题:将gpt-oss与更近期的架构进行比较。
3 将gpt-oss与近期架构(Qwen3)进行比较
现在我们已经走过了从GPT-2到GPT OSS的演变过程,我们可以迈出下一步,将GPT OSS与更近期的架构Qwen3进行比较,Qwen3于2025年5月早些时候发布。
我在此选择Qwen3的原因是,截至撰写本文时,它是顶级开源权重模型之一。此外,Qwen3的一个MoE模型由于其在可训练参数方面的相对相似总体大小,与GPT OSS大致可比。
图13将gpt-oss-20b与大小相当的Qwen3模型进行了比较。
我们可以看到,gpt-oss 20B和Qwen3 30B-A3B在它们的架构组件方面非常相似。这里的主要区别,除了维度外,是gpt-oss采用了滑动窗口注意力(如第2.6节所述,图中未显示),而Qwen3没有。
让我们逐一讨论以下小节中的值得注意的细节。
3.1 宽度与深度
如果我们仔细查看这两个模型,我们会发现Qwen3是一个更深的架构,有48个Transformer块而不是24个(图14)。
另一方面,gpt-oss是一个更宽的架构:
- 嵌入维度为2880而不是2048
- 中间专家(前馈)投影维度为5760而不是768
值得注意的是,gpt-oss使用的注意力头数量是Qwen3的两倍,但这并不直接增加模型的宽度。宽度由嵌入维度决定。
在固定参数数量的情况下,一种方法是否比另一种方法更有优势?作为经验法则,更深的模型具有更大的灵活性,但由于爆炸和消失梯度等不稳定性问题,可能更难训练(RMSNorm和快捷连接旨在缓解这些问题)。
更宽的架构在推理期间具有更快的优势(每秒令牌吞吐量更高),因为并行化更好,但内存成本更高。
关于建模性能,据我所知,没有很好的苹果对苹果比较(保持参数大小和数据集不变),除了Gemma 2论文中的消融研究(表9),该研究发现对于9B参数架构,更宽的设置略优于更深的设置。在4个基准测试中,更宽的模型平均得分为52.0,更深的模型平均得分为50.8。
3.2 少数大专家与众多小专家
如上图14所示,值得注意的是gpt-oss的专家数量出奇地少(32个而不是128个),并且每个令牌仅使用4个而不是8个活动专家。然而,每个专家比Qwen3中的专家大得多。
这很有趣,因为最近的趋势和发展表明,更多、更小的模型是有益的。在恒定总参数大小下,这种变化在图15中得到了很好的说明,该图来自DeepSeekMoE论文。
值得注意的是,与DeepSeek的模型不同,gpt-oss和Qwen3都不使用共享专家。
公平地说,gpt-oss中专家数量少可能是20B大小的副作用。查看下面的120B模型,他们确实增加了专家数量(和Transformer块),同时保持其他一切不变,如图16所示。
20B和120B模型如此相似的乏味解释可能是120B模型是主要焦点。创建较小模型的最简单方法是使其略短(更少的Transformer块)并减少专家数量,因为那里集中了大部分参数。然而,有人可能会猜测他们是否开始训练120B模型,然后切掉一些Transformer块和专家进行继续预训练(而不是从随机权重开始)。
无论如何,仅扩展这两个(Transformer块和专家数量)相当不寻常。例如,查看多个尺寸的Qwen3 MoE模型(图17),它们在更多方面被更成比例地扩展。
3.3 注意力偏差和注意力sink
gpt-oss和Qwen3都使用分组查询注意力。主要区别是gpt-oss在每隔一层通过滑动窗口注意力限制上下文大小,如前所述。
然而,有一个有趣的细节引起了我的注意。似乎gpt-oss在注意力权重中使用了偏差单元,如图所示。
自从GPT-2时代以来,我还没有看到这些偏差单元被使用,它们通常被认为是多余的。事实上,我发现了一篇近期论文,从数学上证明了这对键变换(k_proj)至少是正确的。此外,实证结果表明,有无偏差单元之间几乎没有区别(见图19)。
您可能注意到的另一个细节是图18代码截图中定义的sinks。在一般模型中,注意力sinks是放置在序列开头的特殊"始终关注"令牌,用于稳定注意力,这在长上下文场景中特别有用。也就是说,如果上下文变得非常长,序列开头的这个特殊关注令牌仍然会被关注,并且可以学习存储关于整个序列的一些有用信息。(我认为它最初是在《高效流式语言模型与注意力sinks》论文中提出的。)
在gpt-oss实现中,注意力sinks不是输入序列中的实际令牌。相反,它们是附加到注意力分数的每头学习偏差logits(图20)。目标与上述注意力sinks相同,但不修改标记化的输入。
3.4 许可证
最后,与Qwen3类似,gpt-oss模型采用Apache 2.0开源许可证,这很好(这是我对自己开源项目的首选许可证)。这意味着模型可以被提炼成其他模型或在商业产品中使用,没有限制。
开源权重LLM与开源LLM。这一区别多年来一直存在争议,但值得澄清以避免对此次发布及其工件产生混淆。一些模型开发者仅发布模型权重和推理代码(例如Llama、Gemma、gpt-oss),而其他人(例如OLMo)则发布包括训练代码、数据集和权重在内的所有内容,作为真正的开源。
根据这一更严格定义,gpt-oss是一个开源权重模型(与Qwen3一样),因为它包含权重和推理代码,但不包含训练代码或数据集。然而,行业中的术语使用不一致。
我假设"gpt-oss"中的"oss"代表开源软件;然而,我很惊讶地发现OpenAI自己在官方公告文章中明确将gpt-oss描述为开源权重模型。
4 其他有趣细节
虽然前面的部分描述了架构自GPT-2以来的演变,并讨论了它与Qwen3(以及大多数其他近期模型)的相似之处,但还有一些额外但值得注意的细节我尚未提及。这些是不适合前面部分但仍然值得一提的要点。
4.1 训练概述
遗憾的是,关于训练集大小和算法的可用信息不多。我在下面添加了来自模型卡报告(1)和公告帖子(2)的最有趣拼图:
“gpt-oss模型使用我们最先进的预训练和后训练技术进行训练[…](1)”
“[…]需要210万H100小时才能完成,gpt-oss-20b需要的几乎少10倍。(1)”
“[…]包括监督微调阶段和高计算RL阶段[…](2)”
“我们在主要以英语为主的纯文本数据集上训练模型,重点关注STEM、编码和通用知识。(2)”
因此,我们知道gpt-oss模型是推理模型。210万H100 GPU小时的训练计算量大致与训练约5.6倍更大的DeepSeek V3模型所需的278.8万H800 GPU小时相当。遗憾的是,目前尚无关于Qwen3训练时间的信息。
有趣的是,GPT-oss训练小时估计包括用于指令遵循的监督学习和用于推理的强化学习,而DeepSeek V3只是一个预训练基础模型,DeepSeek R1在此基础上单独训练。
4.2 推理努力程度
如前一节所述,gpt-oss模型是推理模型。然而,特别有趣的是,它们经过训练,用户可以通过推理时间缩放轻松控制推理程度。
具体来说,gpt-oss模型可以接收"Reasoning effort: low/medium/high"(推理努力:低/中/高)指令作为系统提示的一部分,这直接影响响应长度和准确性,如图21所示。
这种级别的可调整性很有用,因为它让我们可以在成本、计算和准确性之间取得平衡。例如,如果任务很简单,例如回答一个直接的知识问题或修复一个小错别字,我们可以跳过扩展推理。这节省了时间和资源,同时避免了不必要的长响应和冗长的推理跟踪。
OpenAI没有像Qwen3或OLMo那样发布基于强化学习推理训练之前的基线模型,这有点遗憾。基线模型对于从事推理方法研究的研究人员来说是特别有价值的起点(这是我目前喜欢使用Qwen3 Base的原因之一)。我猜测OpenAI的决定更多是出于行业和生产用例的考虑,而非研究考虑。
请注意,原始Qwen3模型也有一个开关,用于启用/禁用思考(推理)模式(通过tokenizer中的enable_thinking=True/False设置,只需添加 标签即可禁用推理行为)。然而,Qwen3团队在过去几周更新了他们的模型,放弃了混合模式,转向专用的Instruct/Thinking/Coder变体。
原因是混合模式导致性能低于单独模型:
“在与社区讨论并反思此事后,我们决定放弃混合思考模式。我们现在将分别训练Instruct和Thinking模型,以实现最佳质量。”
4.3 MXFP4优化:一个小但重要的细节
一个有趣的惊喜是OpenAI发布了带有MXFP4量化方案的gpt-oss模型,用于MoE专家。
量化格式曾经是一个小众话题,主要与移动或嵌入式AI相关,但随着向更大模型的推进,这种情况已经改变。在这种情况下,MXFP4优化使模型能够在单个GPU设备上运行。
以下是实际效果:
-
大型模型(120B)可以适应单个80GB H100或更新GPU。虽然不是消费级硬件,但租用1-H100机器比租用多H100机器便宜得多。此外,我们不必担心在GPU之间分配模型并增加通信开销。AMD MI300X卡从第一天起就得到支持,这真的很棒!
-
较小的20B模型甚至可以适应16GB VRAM;需要注意的是,它必须是RTX 50系列GPU或更新版本才能支持MXFP4。
请注意,模型也可以在较旧硬件上运行,但没有MXFP4支持,因此会消耗更多RAM。没有MXFP4优化,bfloat16中的模型将消耗约48GB(gpt-oss-20b)和240GB(gpt-oss-120b)。
顺便说一下,我可以在Mac Mini上使用ollama舒适地运行gpt-oss-20b模型。它使用约13.5GB内存,这非常合理。
4.4 基准测试
这些模型对于独立基准测试来说还太新。检查LM Arena排行榜,我发现gpt-oss尚未列出。因此,根据LM Arena上的用户,Qwen3-Instruct目前仍是顶级开源权重模型(图22)。
查看gpt-oss公告帖子中提供的推理基准测试,我们可以看到gpt-oss模型与OpenAI的专有模型以及Qwen3相当(图23)。
然而,需要注意的是,gpt-oss-120b几乎是Qwen3 A235B-A22B-Thinking-2507模型大小的一半,并且可以在单个GPU上运行。
然而,基准测试性能并不总是反映现实世界中的可用性。在我过去几天的有限使用中,我发现gpt-oss相当能干。也就是说,正如其他人观察到的,它似乎有相对较高的幻觉倾向(模型卡中也提到了这一点)。
这可能源于其对数学、谜题和代码等推理任务的大量训练重点,这可能导致一些"通用知识遗忘"。不过,由于gpt-oss是为工具使用而设计的,随着工具集成在开源LLM中逐渐成熟,这一限制可能变得不那么相关。随着时间的推移,我们可能会越来越多地让模型在回答事实或基于知识的查询时咨询外部来源(如搜索引擎)。
如果发生这种情况,优先考虑推理能力而非记忆可能是明智的。这很像学校(或生活中)的人类学习,解决问题的技能通常比记忆事实更重要。
5 gpt-oss和GPT-5
OpenAI本周很忙,在gpt-oss之后不久发布了期待已久的GPT-5模型。GPT-5的发布很有趣。如果我要在这里说一件事,那就是我真的很惊讶他们的开源模型与他们最好的产品在基准测试性能方面的表现(图24)。
总的来说,尽管有些人认为此次发布被过度炒作,但我很高兴我们有一套新的真正强大的开源权重模型,它们与最佳专有模型相比并不落后太多。当然,基准测试通常不能准确反映现实世界中的使用,而且基于有限的使用,现在下结论还为时过早。但我认为,对于喜欢使用开源权重和本地(或私有托管)模型的人来说,这是个好时代。
文章:https://magazine.sebastianraschka.com/p/from-gpt-2-to-gpt-oss-analyzing-the