<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>OpenAI on Jiang Yi(姜祎)'s Homepage</title><link>https://jiangyigithub.github.io/ai.github.io/tags/openai/</link><description>Recent content in OpenAI on Jiang Yi(姜祎)'s Homepage</description><generator>Hugo -- gohugo.io</generator><language>en</language><lastBuildDate>Wed, 08 Apr 2026 21:44:44 +0800</lastBuildDate><atom:link href="https://jiangyigithub.github.io/ai.github.io/tags/openai/index.xml" rel="self" type="application/rss+xml"/><item><title>Notes on gpt-oss</title><link>https://jiangyigithub.github.io/ai.github.io/p/notes-on-gpt-oss/</link><pubDate>Tue, 19 Aug 2025 16:14:56 +0800</pubDate><guid>https://jiangyigithub.github.io/ai.github.io/p/notes-on-gpt-oss/</guid><description>&lt;p&gt;openAI 发布了 gpt-oss 大语言模型，包含 120B-A5.1B 以及 20.9B-A3.6B 两个 size, 作者强调了模型的 instruction following, tool use, 以及 adaptive thinking 能力&lt;/p&gt;
&lt;h2 id="method"&gt;&lt;a href="#method" class="header-anchor"&gt;&lt;/a&gt;Method
&lt;/h2&gt;&lt;h3 id="architecture"&gt;&lt;a href="#architecture" class="header-anchor"&gt;&lt;/a&gt;Architecture
&lt;/h3&gt;&lt;p&gt;gpt-oss 系列是一个基于 MoE transformer 架构的 LLM. 架构中交替使用 sliding window attention 和 full attention, sliding window size 为 128 token, 架构图如下所示&lt;/p&gt;
&lt;p&gt;&lt;img src="https://jiangyigithub.github.io/ai.github.io/p/notes-on-gpt-oss/gpt-oss-architecture.png"
width="876"
height="789"
loading="lazy"
alt="gpt-oss-architecture"
class="gallery-image"
data-flex-grow="111"
data-flex-basis="266px"
&gt;&lt;/p&gt;
&lt;p&gt;模型的配置如下表所示&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Model&lt;/th&gt;
&lt;th&gt;120B&lt;/th&gt;
&lt;th&gt;20B&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Date&lt;/td&gt;
&lt;td&gt;2025/8/5&lt;/td&gt;
&lt;td&gt;2025/8/5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;# Total Parameters&lt;/td&gt;
&lt;td&gt;116B&lt;/td&gt;
&lt;td&gt;20B&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;# Activated Parameters&lt;/td&gt;
&lt;td&gt;5.13B&lt;/td&gt;
&lt;td&gt;3.61B&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;# MoE Layers&lt;/td&gt;
&lt;td&gt;36&lt;/td&gt;
&lt;td&gt;24&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Hidden Dim&lt;/td&gt;
&lt;td&gt;2880&lt;/td&gt;
&lt;td&gt;2880&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MoE Intermediate Dim&lt;/td&gt;
&lt;td&gt;2880&lt;/td&gt;
&lt;td&gt;2880&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Attention&lt;/td&gt;
&lt;td&gt;GQA+sliding window&lt;/td&gt;
&lt;td&gt;GQA+sliding window&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Attention Head Dim&lt;/td&gt;
&lt;td&gt;64&lt;/td&gt;
&lt;td&gt;64&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Attention bias&lt;/td&gt;
&lt;td&gt;True&lt;/td&gt;
&lt;td&gt;True&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;# Attention Heads&lt;/td&gt;
&lt;td&gt;64&lt;/td&gt;
&lt;td&gt;64&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;# Key-Value Heads&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;# Experts (total)&lt;/td&gt;
&lt;td&gt;128&lt;/td&gt;
&lt;td&gt;32&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;# Experts Active Per Token&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;# Shared Experts&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;QK-Norm&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;在架构上，gpt-oss 做的主要改变有：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Q, K, V projection layer, expert layer, routing layer 都使用了 bias&lt;/li&gt;
&lt;li&gt;修改了 expert layer 中 SwiGLU 的定义&lt;/li&gt;
&lt;li&gt;attention 中额外使用了一个 attention sink&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 id="swiglu"&gt;&lt;a href="#swiglu" class="header-anchor"&gt;&lt;/a&gt;SwiGLU
&lt;/h4&gt;&lt;p&gt;大多数模型使用的基于 SwiGLU 的 MLP 定义如下&lt;/p&gt;
$$
y = W_2(W_3x \odot \mathrm{SwiGLU}(W_1x))
$$&lt;p&gt;其中 $\mathrm{SwiGLU}(x)=x\odot\mathrm{sigmoid}(x)$, 在 gpt-oss 模型中，作者首先定义了两个常数 $\alpha=1.702$, $\mathrm{limit}=7.0$, 然后 SwiGLU MLP 的定义如下&lt;/p&gt;
$$
\begin{aligned}
o_1&amp;=W_1x+b_1,\\
o_3&amp;=W_3x+b_3\\
o_1&amp;=\mathrm{clamp}(o_1,\max=\mathrm{limit})\\
o_3&amp;=\mathrm{clamp}(o_3,\min=-\mathrm{limit},\max=\mathrm{limit})\\
o_3&amp;= o_3\odot \mathrm{sigmoid}(\alpha\cdot o_3)\\
o_3&amp;= (o_1+1)\odot o_3\\
y &amp;= W_2o_3
\end{aligned}
$$&lt;h4 id="attention-sink"&gt;&lt;a href="#attention-sink" class="header-anchor"&gt;&lt;/a&gt;Attention Sink
&lt;/h4&gt;&lt;p&gt;作者使用了 &lt;a class="link" href="https://maosong.website/p/notes-on-streamingllm/" target="_blank" rel="noopener"
&gt;attention sink&lt;/a&gt; 来避免 window attention 在超过 kv cache size 之后，表现大幅度下降的问题。&lt;/p&gt;
&lt;h3 id="quantization"&gt;&lt;a href="#quantization" class="header-anchor"&gt;&lt;/a&gt;Quantization
&lt;/h3&gt;&lt;p&gt;为了降低模型的内存占用量，作者使用了 PTQ 来训练 MoE 的权重，使用的精度为 MXFP4, 这样每个参数由 4.25 bits 来表示。最终，模型的参数存储格式如下：&lt;/p&gt;
&lt;p&gt;&lt;img src="https://jiangyigithub.github.io/ai.github.io/p/notes-on-gpt-oss/gpt-oss-precision-format.png"
width="1152"
height="1235"
loading="lazy"
alt="precision format of gpt-oss"
class="gallery-image"
data-flex-grow="93"
data-flex-basis="223px"
&gt;&lt;/p&gt;
&lt;p&gt;通过这个流程，gpt-oss-120B 可以部署在 80GB 内存的 GPU 上，gpt-oss-20B 可以部署在 16GB 内存的 GPU 上。模型各部分参数量如下表所示&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Component&lt;/th&gt;
&lt;th&gt;120b&lt;/th&gt;
&lt;th&gt;20b&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;MLP&lt;/td&gt;
&lt;td&gt;114.71B&lt;/td&gt;
&lt;td&gt;19.12B&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Attention&lt;/td&gt;
&lt;td&gt;0.96B&lt;/td&gt;
&lt;td&gt;0.64B&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Embed + Unembed&lt;/td&gt;
&lt;td&gt;1.16B&lt;/td&gt;
&lt;td&gt;1.16B&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Active Parameters&lt;/td&gt;
&lt;td&gt;5.13B&lt;/td&gt;
&lt;td&gt;3.61B&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Total Parameters&lt;/td&gt;
&lt;td&gt;116.83B&lt;/td&gt;
&lt;td&gt;20.91B&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Checkpoint Size&lt;/td&gt;
&lt;td&gt;60.8GiB&lt;/td&gt;
&lt;td&gt;12.8GiB&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;这里在计算激活参数的时候，没有没有考虑 embedding 的参数量。&lt;/p&gt;
&lt;h3 id="pre-training"&gt;&lt;a href="#pre-training" class="header-anchor"&gt;&lt;/a&gt;Pre-training
&lt;/h3&gt;&lt;p&gt;预训练细节不多，主要是使用了 &lt;a class="link" href="https://maosong.website/p/notes-on-flashattention/" target="_blank" rel="noopener"
&gt;flash attention&lt;/a&gt; 进行加速计算，使用了 Triton 进行了 kernel 的优化，gpt-oss-120b 训练了 120M H100-hours, gpt-oss-20B 的训练时间是 gpt-oss-120Bd 的十分之一左右&lt;/p&gt;
&lt;h3 id="post-training"&gt;&lt;a href="#post-training" class="header-anchor"&gt;&lt;/a&gt;Post-training
&lt;/h3&gt;&lt;p&gt;post-training 的数据包括 coding, math 以及 science 等，主要使用 RL 进行训练&lt;/p&gt;
&lt;p&gt;作者介绍了以下 post-training 使用的格式，即 &lt;code&gt;harmony chat format&lt;/code&gt;. 角色的优先级如下所示&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;System &amp;gt; Developer &amp;gt; User &amp;gt; Assistant &amp;gt; Tool
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;作者还加入了 channels 来限制可以使用的信息，比如使用 &lt;code&gt;analysis&lt;/code&gt; 来表示 CoT tokens, 使用 &lt;code&gt;commentary&lt;/code&gt; 来表示 function calling 等，一个具体的例子如下：&lt;/p&gt;
&lt;p&gt;&lt;img src="https://jiangyigithub.github.io/ai.github.io/p/notes-on-gpt-oss/gpt-oss-chat-template.png"
width="1351"
height="821"
loading="lazy"
alt="gpt-oss-chat-template"
class="gallery-image"
data-flex-grow="164"
data-flex-basis="394px"
&gt;&lt;/p&gt;
&lt;h2 id="evaluation"&gt;&lt;a href="#evaluation" class="header-anchor"&gt;&lt;/a&gt;Evaluation
&lt;/h2&gt;&lt;p&gt;gpt-oss 系列的表现如下表所示&lt;/p&gt;
&lt;p&gt;&lt;img src="https://jiangyigithub.github.io/ai.github.io/p/notes-on-gpt-oss/gpt-oss-performance.png"
width="1179"
height="1106"
loading="lazy"
alt="performance of gpt-oss"
class="gallery-image"
data-flex-grow="106"
data-flex-basis="255px"
&gt;&lt;/p&gt;
&lt;h2 id="conclusion"&gt;&lt;a href="#conclusion" class="header-anchor"&gt;&lt;/a&gt;Conclusion
&lt;/h2&gt;&lt;p&gt;作者提出了 gpt-oss 系列大语言模型，gpt-oss 在架构上与已有的主流模型架构如 &lt;a class="link" href="https://maosong.website/p/notes-on-qwen3/" target="_blank" rel="noopener"
&gt;Qwen3&lt;/a&gt;, &lt;a class="link" href="https://maosong.website/p/notes-on-deepseek-v3/" target="_blank" rel="noopener"
&gt;DeepSeek-V3&lt;/a&gt; 等都有一定区别&lt;/p&gt;
&lt;h2 id="references"&gt;&lt;a href="#references" class="header-anchor"&gt;&lt;/a&gt;References
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://openai.com/index/introducing-gpt-oss/" target="_blank" rel="noopener"
&gt;technical report&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item></channel></rss>