硬核拆解!從GPT-2到gpt-oss,揭秘大模型進化關鍵密碼
8月5日,在GPT-5發布前兩天,OpenAI推出了它的兩款開源權重大語言模型:gpt-oss-120b、gpt-oss-20b。
這是自2019年GPT-2,近六年來OpenAI首次發布開放權重的模型。
得益于巧妙的優化技術,這些模型甚至可以在本地設備上運行。
Sebastian Raschka博士在《從GPT-2到gpt-oss:架構進步分析》一文中,將我們拉回硬核拆機現場,深度解析了從GPT-2到gpt-oss的LLM架構演進,并將gpt-oss與Qwen3進行了詳細對比。
以下是本文的核心內容速覽:
- 模型架構: GPT-2與gpt-oss模型架構對比;
- MXFP4優化技術: 如何將龐大的gpt-oss模型部署在單張GPU上;
- 寬度與深度的權衡: gpt-oss與Qwen3的設計思路對比分析;
- 注意力機制的細節: 注意力偏置(Attention Bias)與注意力池(Attention Sinks)解析;
- 性能基準: 全面評測并與GPT-5展望比較。
GPT-2與gpt-oss的模型架構比較
在深入討論架構細節之前,先看gpt-oss-20b和gpt-oss-120b的整體架構。

圖1:兩個gpt-oss模型的對比
也許你會覺得,這與近期看過的LLM架構相比,并無任何新奇之處。
這并不奇怪,因為頂尖的LLM開發者,往往采用相同的基礎架構,性能提升很可能來自數據與算法的調整,再做一些小幅微調。
背后原因可能包括:
1. 人才流動:這些頂級實驗室間的人才流動非常頻繁;
2. Transformer架構的霸主地位:至今還沒找到比Transformer架構更優秀的方案;
3. 性能提升可能來自數據處理和算法上的微調,而非重大的架構變革。
從GPT-2到gpt-oss,LLM模型的演化
先坐上「時光機」,回到GPT-2。

圖2:gpt-oss-20b與GPT-2 XL1.5B的比較
gpt-oss和GPT-2都是建立在2017年論文《Attention Is All You Need》提出的Transformer架構之上的僅解碼器(decoder-only)LLM。
1. 移除Dropout
Dropout是一種傳統的防止過擬合的技術,在訓練過程中隨機「丟棄」一部分網絡層的激活值或注意力分數(即將其設為零),GPT-2之后的多數現代LLM中很少再使用Dropout。

圖3:將Dropout應用于注意力得分矩陣的示意圖
GPT-2最初使用Dropout,可能是沿用了最早的Transformer架構設計。
研究者們發現,它并不能真正提升LLM的性能。
這很可能是因為LLM通常在海量的數據集上進行單輪訓練,這與當初Dropout誕生時所針對的那種動輒訓練數百輪的場景截然不同。
由于訓練中每個token只被看到一次,過擬合的風險原本就很小。
今年的一篇論文通過在Pythia 1.4B的實驗證實,在當前這種單輪訓練模式下,使用Dropout反而會導致模型在下游任務中的表現變差。
2. RoPE替代絕對位置編碼
在基于Transformer的大模型中,位置編碼是必要的,因為注意力機制本身默認把輸入的token視為無序。
在原始的GPT架構中,絕對位置嵌入通過為序列中的每個位置學習一個位置向量,并將其與token嵌入相加,從而注入位置信息。

圖4:絕對位置嵌入的說明
RoPE(旋轉位置嵌入)不是把位置信息作為獨立嵌入相加,而是依據每個token的位置,對query和key向量施加位置相關的旋轉來編碼。
RoPE最早于2021年被提出,但直到2023年Meta發布初代Llama模型后才被廣泛采用,并自此成為了LLM的標配。
3. 激活函數之爭:Swish/SwiGLU何以取代GELU?
激活函數的選擇曾是一個熱門話題,直到十多年前逐漸落定到ReLU。
此后研究者提出并嘗試了多種更「平滑」的ReLU變體,其中GELU和Swish被廣泛保留并沿用至今。

圖5:Swish和GELU激活的比較,它們都是ReLU的更平滑版本
早期的GPT架構使用GELU,其定義為:0.5·x·[1+erf(x/√2)]。
其中erf(誤差函數)與高斯積分相關,通常通過對高斯積分的多項式近似來計算。而Swish使用的是更簡單的sigmoid函數,它的形式是x·sigmoid(x)。
在實踐中,Swish的計算成本略低于GELU,這或許是它在多數新模型中取代GELU的主要原因。
至于建模性能,不同論文結論略各有差異,但這些差異往往落在統計標準誤差范圍內,最終優劣還高度依賴超參數調校。
如今,Swish已成為大多數架構的選擇。不過,GELU也并未被完全拋棄,例如谷歌今年發布的Gemma模型就仍然堅持使用GELU。
更重要的變化:GLU結構
更值得注意的是,比替換激活函數本身更值得注意的變化是,模型中的前饋網絡(feed-forward module)模塊的結構也發生了改變。
前饋模塊常被帶門控的GLU(Gated Linear Unit)變體取代。
具體而言,原本的兩層全連接會被三層全連接替換,其用法如下圖所示。

圖6:Swish與GELU,及其門控對應版本SwiGLU和GEGLU的比較
為便于說明,可對比常規FFN與GLU變體的具體代碼實現思路:

圖7:常規前饋模塊(頂部)和SwiGLU變體(底部)
假設embedding維度為1024。常規FFN中,隱藏維常取4×d_model=4096,因此有:
fc1:1024×4096=4,194,304
fc2:1024×4096=4,194,304
也就是說,fc1+fc2=8,388,608個參數。
GLU變體(SwiGLU)參數總量:
3×1,048,576=3,145,728
結論非常清晰:SwiGLU結構不僅性能更好,總參數量實際上還更少。
其優勢來自于門控帶來的額外的乘法交互,增強了模型的表達能力。在訓練得當的前提下,更深更窄的網絡往往勝過更淺更寬的網絡。
4. 混合專家模型 (MoE) 替代單個前饋網絡
除了上文提到的把前饋模塊升級為SwiGLU之外,gpt-oss還用多個前饋模塊替換了單個前饋模塊,并在每個token生成步驟中只啟用其中的一個子集。
這種做法稱為Mixture-of-Experts(MoE,專家混合),如下圖8所示。

圖8:前饋模塊被專家混合(MoE)模塊替代
因此,用多個前饋模塊取代單個前饋模塊(MoE的典型做法)會顯著增加模型的總參數量。
不過關鍵在于:我們不會對每個token激活所有專家,因此,MoE常被稱為稀疏模塊。與之相對,始終使用全部參數的稱為致密模塊。
MoE帶來的總參數量意味著在訓練中能「裝下」更多知識;稀疏性又能在推理階段保持較高的效率。
5. 分組查詢注意力(GQA)替代多頭注意力(MHA)
近年,分組查詢注意力(Grouped Query Attention, GQA) 已成為多頭注意力(Multi-Head Attention, MHA) 的一種計算和參數效率都更高的替代方案。
在多頭注意力(MHA)中,每個頭都擁有一套獨立的鍵和值向量。
GQA的核心思想則是通過分組來減少計算量:它讓多個查詢頭共享同一套鍵和值。
如(圖9)所示,假設有4個注意力頭和2個鍵值組(key-value groups),那么頭1和頭2可以共享一組鍵值,而頭3和頭4則共享另一組。
這種分組機制減少了鍵和值的總計算量,從而降低了內存使用并提升了效率。
在推理過程中,需要緩存(KV Cache)和讀取的鍵值張量變少了,這極大地降低了對內存帶寬的需求,從而加快了生成速度。

圖9:MHA與GQA的比較;此處,組大小為2,其中一對鍵和值在2個查詢中共享
GQA有如下兩個好處:
(1)降低參數量;
(2)在推理時減少K/V張量的帶寬占用,因為KVCache中需要存取的K/V更少。
6. 滑動窗口注意力 (Sliding Window Attention)
滑動窗口注意力(Sliding-window attention)見下圖10,這一技術最早由LongFormer論文(2020年)引入,后來被Mistral推廣。

圖10:常規注意力(左)與滑動窗口注意力(右)的比較
有趣的是,gpt-oss在每隔一層就應用一次滑窗注意力,可以把它視作MHA/GQA的一種變體。
其核心思想是將注意力計算的范圍限制在一個較小的窗口內,從而有效降低內存占用和計算成本。
gpt-oss在網絡中交替使用兩類GQA層:一種對全上下文做注意力,另一種使用僅128 token的滑動窗口。
根據消融研究,滑動窗口注意力對模型性能的影響很小。
需要注意的是,Gemma2的窗口為4096 tokens,而Gemma3將其降到1024 tokens。在gpt-oss中,窗口僅為128 tokens,可謂非常小。
GPT-3已經使用了類似的交替致密與局部帶狀稀疏注意力,而gpt-oss與GPT-3類似,也采用交替的致密與局部帶狀稀疏注意力模式。
回看了GPT-3論文,確實有相關描述:
我們使用與GPT-2相同的模型架構……不同之處在于,我們在Transformer的各層中采用了交替的致密與局部帶狀稀疏注意力模式,這與Sparse Transformer類似。
7. RMSNorm替代LayerNorm
最后,與GPT-2相比的最后一個小調整,是用RMSNorm取代LayerNorm。
與把GELU換成Swish,把FFN換成SwiGLU的做法類似,RMSNorm也是一種小而合理的效率提升。
RMSNorm和LayerNorm的目的都是對層激活值進行歸一化,如下圖所示。

圖11:一個小線性層中LayerNorm(左)與RMSNorm(右)的比較
在圖11中,LayerNorm和RMSNorm都將層輸出縮放到一個合理的范圍內。
LayerNorm會減去均值并除以標準差,使層輸出具有零均值與單位方差(方差為1、標準差為1)。
RMSNorm則將輸入除以RMS。這不會強制零均值與單位方差,但均值與方差仍會落在合理區間:均值約在-1到1,方差約在0到1。
盡管兩者都能起到穩定激活值、改善優化的作用,但LLM中,RMSNorm更受青睞,因為它計算成本更低。
與LayerNorm不同,RMSNorm沒有偏置(bias/shift)項,并把計算均值和方差兩個步驟簡化為RMS操作。
這使得跨特征維度的規約(reduction)操作從兩次減少到了一次,從而降低了GPU之間的通信開銷,提升了訓練效率。
下圖展示了它們在代碼實現上的區別:

圖12:LayerNorm和RMSNorm的代碼實現,顯示RMSNorm在計算上更簡單
8. GPT-2的價值傳承
學習LLM時,GPT-2是非常好的入門級架構。
從GPT-2入手,你可以把重心放在基礎要素上(注意力機制、位置嵌入、歸一化以及整體訓練流程),而不會被新架構里層出不窮的功能與微調細節「淹沒」。
gpt-oss與Qwen3的比較
在梳理了從GPT-2到gpt-oss的演進之后,Sebastian Raschka博士將gpt-oss與更近的架構Qwen3進行比較。
選擇Qwen3,主要基于兩點原因:
1. Qwen3在當前屬于頂尖開源權重(open-weight)模型;
2. Qwen3的某個MoE變體在可訓練參數規模上與gpt-oss相近,便于直接對比。
通過圖中的對比,可以看到:gpt-oss20B與Qwen3 30B-A3B在架構上非常相似。

圖13:gpt-oss-20b與Qwen3模型比較
主要差別在于gpt-oss使用了滑動窗口注意力機制,而Qwen3未使用該機制。
1. 寬度與深度權衡
Qwen3是一個更深的架構,它有48個Transformer Block,而不是24個(見下圖14)。

圖14:Qwen3的Transformer塊數量是gpt-oss-20b的兩倍
gpt-oss的架構要「寬」得多:
嵌入維度(embedding dimension)為2880,Qwen3為2048。
中間專家層(即前饋網絡)的投影維度也為2880,Qwen3為768。
gpt-oss的注意力頭數約為Qwen3兩倍,但這不會直接增加模型「寬度」,因為后者主要由embedding維度決定。
在參數總量固定的前提下,「更深」與「更寬」孰優?
一個經驗法則是:更深的模型表達更靈活,但訓練更易不穩(梯度爆炸/消失),這正是RMSNorm與殘差/捷徑連接試圖緩解的問題。
更寬的架構在推理時通常更快,因為并行度更好。代價是更高顯存占用。
2. 少量「大專家」vs 大量「小專家」
gpt-oss的專家數量更少(32 vs 128),且每個token激活專家更少(4 vs 8);但gpt-oss的單個專家更大,比Qwen3的專家「更寬」。
這點頗有意思,因為近來的趨勢傾向于「更多、更小」的專家。
DeepSeek有關MoE的論文中對此有很好的示例。

圖15:《DeepSeekMoE:邁向混合專家語言模型的終極專業化之路》論文注釋圖
與DeepSeek不同,gpt-oss與Qwen3均未采用「共享專家」設計。
客觀說,gpt-oss-20B的專家較少,可能只是因為它模型尺寸較小的緣故。
觀察gpt-oss-120B版本(見下圖16),確實在其他設置不變時增加了專家數與層數。

圖16:對比兩個gpt-oss架構,120B模型僅擴展了Transformer塊的數量和專家的數量
然而,僅在層數與專家數兩個維度上縮放的情況并不常見。
Qwen3的多檔MoE模型(見圖17)會在更多方面做更成比例的伸縮。

圖17:不同Qwen3模型中的架構差異
3. 注意力偏置(Attention Bias)與注意力池(Attention Sinks)
gpt-oss與Qwen3都采用GQA(分組查詢注意力)。
主要區別是gpt-oss在每隔一層使用滑動窗口注意力來限制上下文。
但有個細節引人注意:gpt-oss似乎在注意力權重里使用了偏置項。

圖18:gpt-oss模型在注意力層使用偏差單元
GPT-2之后,很少再看到偏置項用于此處,通常被視為冗余。
根據近期一篇論文,從數學上證明至少對k_proj來說確實如此;而實證也顯示有無偏置差別很小。

圖19:展示了在從頭開始訓練模型時,有和無偏差單元的平均測試損失。
還有一個細節是圖18的代碼里sinks的定義。
注意力池(Attention Sinks)通常指一些特殊的、安插在序列開頭的常被關注token。它們的作用是穩定注意力機制,在長上下文場景下尤其有用。
在gpt-oss的實現中,注意力匯并非真實token,而是按頭(per-head)學習的bias logits,直接加到注意力得分上。

圖20:gpt-oss中注意力匯流的使用;基于此處Hugging Face代碼
有趣的小知識
1. 訓練概述
關于gpt-oss訓練集規模與算法的信息不多。下面摘錄了模型卡(1)與公告(2)里最關鍵的線索:
gpt-oss使用了我們最先進的預訓練與后訓練技術進行訓練[…](1);
訓練耗時約210萬H100GPU小時,其中gpt-oss-20B少了近10倍(1);
流程包括有監督微調階段與高計算量的強化學習階段[…](2);
數據主要是英文、純文本,偏重STEM、編程與通用知識(2)。
由此可知,gpt-oss是推理型模型。其210萬H100小時的訓練量,與DeepSeek V3(278.8萬H800小時)大致同級。
可惜Qwen3的訓練時長尚未公開。
gpt-oss的訓練時長同時包含了指令跟隨的監督學習與推理的強化學習;而DeepSeek V3僅是預訓練基座,其上另行訓練了DeepSeek R1。
2. 推理力度
如上所述,gpt-oss是推理型模型。特別之處在于,它被訓練成可通過推理時伸縮,讓用戶調節推理強度。
具體來說,gpt-oss可以在系統提示中接受「Reasoning effort:low/medium/high」指令(見下圖21),并直接影響回復長度與準確度。

圖21:不同推理力度下gpt-oss模型的響應長度和質量(來自模型卡的標注圖)
這種可調性便于在成本、算力、準確度之間平衡。
3. MXFP4優化:小而關鍵的細節
一個有趣的驚喜是,OpenAI為MoE專家發布了MXFP4量化方案的gpt-oss模型。MXFP4的優化使模型能在單卡設備上運行。
它可以讓gpt-oss-120B放進單張80GBH100或更新的GPU;而20B小模型甚至可以放進16GB顯存。
gpt-oss模型,在舊硬件上也能跑,但不支持MXFP4,因此顯存占用更高。
4. 基準測試
從gpt-oss公告給出的推理類基準看,gpt-oss與OpenAI自研閉源以及Qwen3旗鼓相當(見下圖22)。

圖22:主要基準圖表來自官方gpt-oss公告帖子。"無工具"的gpt-oss-120b數據來自官方模型卡論文,Qwen3的數值來自官方Qwen3倉庫。
值得注意的是,gpt-oss-120B的規模幾乎只有Qwen3 A235B-A22B-Thinking-2507的一半,且可單卡運行。
當然,基準成績不等于真實可用性。據這幾天的試用,gpt-oss的能力不俗,但也存在不少人所觀察到的,幻覺傾向相對偏高(這點在模型卡中也有提及)。
這可能與其在數學、謎題、代碼等推理任務上的訓練重心有關,導致一定的「通識遺忘」。
但由于gpt-oss是面向工具使用設計,優先提升「推理力」而非「記憶量」,隨著開源LLM的工具集成成熟,這個短板未來或許影響漸小。
5. gpt-oss與GPT-5
OpenAI在gpt-oss之后,很快就發布了期待已久的GPT-5。
有趣的是,就基準表現(見圖23)而言,gpt-oss模型與OpenAI旗艦產品之間的接近程度令人驚喜。

圖23:gpt-oss數據來自官方模型卡論文和公告,Qwen3數據來自官方Qwen3-Coder倉庫。
當然,基準≠實用。由于目前使用樣本還少,結論為時尚早。但對喜愛開源與本地/私有化部署的人而言,這無疑是一個好時機。





































