GPT-OSS 深度解析:OpenAI 最新大语言模型(LLM)架构

发布于:2025-09-10 ⋅ 阅读:(19) ⋅ 点赞:(0)

大规模多任务语言理解(MMLU)基准测试结果

距离 OpenAI 首次公开其大语言模型(LLM)的工作原理已有数年时间。尽管名称中带有“open”(开放)一词,但 OpenAI 尚未披露 GPT-4 和 GPT-5 的内部运作机制。

不过,随着开源权重模型 GPT-OSS 的发布,我们终于获得了有关 OpenAI LLM 设计流程的新信息。若想了解当前最先进的 LLM 架构,建议深入研究 OpenAI 的 GPT-OSS。

LLM 模型整体架构

要全面理解 LLM 架构,需回顾 OpenAI 关于 GPT-1、GPT-2、GPT-3 以及 GPT-OSS 的论文。

LLM 模型的整体架构可总结如下:

GPT-OSS 基础 Transformer 架构

根据该图,我们从最底部的示例输入句子“The quick brown fox”(敏捷的棕色狐狸)开始。LLM 的目标是预测下一个token,此处可能是“jumps”(跳跃)。

分词(Tokenization)

首先,分词器会将输入句子转换为包含 N 个 token 的列表。o200k_harmony 分词器基于字节对编码(BPE)算法 ,其词汇表包含 201,088 个 token。

这意味着每个 token 都是一个维度为 |V| = 201,088 的独热向量(仅一个元素为 1,其余均为 0)。因此,输入句子会转化为一个形状为 [N x 201,088] 的矩阵。

Token 嵌入(Token Embeddings)

嵌入矩阵会将 token 列表转换为形状为 [N x D] 的密集矩阵。对于 GPT-OSS,模型维度 D = 2,880。最终,我们得到一个形状为 [N x 2,880] 的 token 嵌入矩阵 X。

Transformer 块(Transformer Blocks)

Transformer 模型由多层 Transformer 块组成:

单个 Transformer 块

Token 嵌入会依次经过这些垂直堆叠的 Transformer 块层。其中,GPT-OSS-20B 包含 L = 24 层,而 GPT-OSS-120B 包含 L = 36 层。

每个 Transformer 块都包含两个层归一化块,这两个块采用 RMSNorm 算法,以确保流经 Transformer 的数值保持在合理范围内。

每个 Transformer 块还配有 H = 64 个并行注意力头(attention heads)以及一个混合专家(Mixture of Experts, MoE)神经网络。后续我们将对此展开更详细的介绍。

每个 Transformer 块的输入和输出都是一个形状为 [N x 2,880] 的矩阵 H。

语言模型头(Language Model Head)

语言模型头由解嵌入矩阵(unembedding matrix)和最终的 softmax 层组成。解嵌入矩阵会将嵌入向量转换回 token 空间。解嵌入后,得到的矩阵维度为 [N x 201,088]。

softmax 层会将 N 个 token 向量(称为 logits,对数几率)中的每一个都转换为概率。若要预测下一个 token,我们只需使用最后一个 logit。

最终输出是一个维度为 201,088(即分词器词汇表大小)的概率向量,该向量可能会显示“jumps”这个 token 的概率为 98%。

混合专家模型(Mixture of Experts, MoE)

近年来,涌现出了众多大型MoE模型,例如Qwen 3、Llama 4、DeepSeek V3以及Grok 3。因此,GPT-OSS同样属于MoE模型也就不足为奇了。

MoE层会替代Transformer块中的标准神经网络,它由一个路由组件(router)和多个神经网络(即“专家网络,experts”)组成。

路由组件本质上是一个小型神经网络,其作用是决定由哪个专家网络处理每个输入token。不过,路由组件并非只选择一个专家网络,而是会选择多个专家网络,并为它们分配不同的权重。例如:A = 0.7 × 神经网络2 + 0.3 × 神经网络4。

MoE层的工作原理。在此示例中,会从4个专家网络中选用排名前2的专家网络。

在GPT-OSS中,两款模型(GPT-OSS-20B与GPT-OSS-120B)均会激活排名前4的专家网络。专家网络的总数会根据模型规模有所不同:例如,GPT-OSS-120B共有128个专家网络,而GPT-OSS-20B则有32个。

这也是MoE模型会区分“活跃参数(active parameters)”与“总参数(total parameters)”的原因。在推理过程中,模型在每个MoE层中仅会使用少数几个活跃的神经网络。

量化(Quantization)

由于MoE参数占总参数数量的90%以上,因此在训练后处理流程中,这些参数会被量化为4位浮点数。

具体而言,OpenAI为GPT-OSS采用了MXFP4格式,该格式每个参数占用4位;同时,每32个参数会共享同一个缩放因子(scaling factor) 。缩放因子为8位数值,这意味着每个参数会额外占用8/32 = 0.25位。因此,包含缩放因子在内,每个参数总共占用4.25位。

注意力机制(Attention)

分组查询注意力(GQA Attention)

GPT-OSS并未采用标准的自注意力头,而是使用了分组查询注意力(Grouped-Query Attention, GQA)。

在标准多头注意力中,每个注意力头都配有一个查询矩阵(W_Q)、一个键矩阵(W_K)和一个值矩阵(W_V)。

因此,对于一个拥有H个注意力头的模型,需要3H个矩阵来计算查询(queries)、键(keys)和值(values)。随着注意力头数量的增加,这一过程的资源消耗会愈发显著,在大型LLM中表现得尤为突出。

H=4个并行注意力头场景下的标准多头注意力与分组查询注意力对比。

为提升效率,GQA中多个查询头会共享同一个键头和值头。

在GPT-OSS中,每个注意力层包含64个查询头和8个键值头(key-value heads)。

长上下文注意力(Long Context Attention)

最初,Transformer架构会在嵌入向量中添加位置编码(positional encoding) ;但如今,包括GPT-OSS在内的许多现代LLM都改用了旋转位置编码(Rotary Positional Encodings, RoPE)。

RoPE会在注意力机制内部对查询向量和键向量进行旋转,以此融入token的位置信息。输入序列中某个token的位置可通过整数k表示:第一个token的k=0,第二个token的k=1,以此类推。

RoPE会将给定向量按与token位置相关的角度进行逆时针旋转。

二维嵌入向量会按与输入序列中token位置k相关的角度进行逆时针旋转。

GPT-OSS采用并扩展了RoPE,使其支持的上下文长度最高可达131,072个token。

此外,GPT-OSS还针对长上下文输入采用了一种名为带状窗口注意力(banded window attention)的技术。

在标准掩码自注意力(standard masked self-attention)中,每个token都能“看到”自身以及所有之前的token。若输入序列包含N个token,就会生成一个N×N的注意力矩阵。LLM的上下文长度越长,这一机制带来的问题就越明显。

而在稀疏注意力机制(sparse attention mechanism)中,token能“回溯查看”的范围存在限制。在GPT-OSS中,这一限制(即注意力窗口)的长度为128个token。

标准注意力机制与稀疏注意力机制对比。查询(query)只能查看其之前的键(key)(黑色与灰色部分)。

GPT-OSS会在两种注意力机制间交替:一种是全注意力(full attention) ,可考虑整个全局上下文;另一种是“带状窗口注意力”,仅关注文本中较小的局部部分。

结论

继GPT-3之后,我们终于迎来了OpenAI的最新动态——这一动态让我们得以一窥其当前LLM的架构。

GPT-OSS并无令人意外或新颖之处。事实证明,它与近期发布的其他LLM(例如Qwen 3)其实非常相似。事实上,GPT-OSS-20B的架构与Qwen3–30B-A3B的架构几乎完全一致。

我们有理由推测,GPT-4和GPT-5也采用类似架构,只是规模大幅扩大。当然,也不排除OpenAI掌握了一些未通过GPT-OSS披露的隐藏技术——不过,我认为这种可能性并不大。

模型的性能并非仅受LLM架构影响;训练数据和训练流程同样发挥着重要作用。或许,这才是OpenAI模型真正的优势所在。


网站公告

今日签到

点亮在社区的每一天
去签到