When OpenAI released gpt-oss-120b and gpt-oss-20b in early August 2025, the headlines fixated on the license. The model card is more interesting for the engineering: two Mixture-of-Experts (MoE) reasoning models that OpenAI claims push the frontier of accuracy and inference cost, shipped as text-only weights with reference code, tool harnesses, and tokenizers under Apache 2.0.
Two sizes, one sparse architecture
Both models are autoregressive MoE transformers that build upon the GPT-2 and GPT-3 architectures. The big one, gpt-oss-120b, has 36 layers with116.8B total parameters but only 5.1B active per token per forward pass; gpt-oss-20b has 24 layers with 20.9B total and 3.6B active. The sparsity lives in the MLP: 114.71B of the 120b model's parameters sit in MoE layers, versus 19.12B for the 20b model.
Each MoE block holds a fixed expert pool —128 experts for the 120b and 32 for the 20b— plus a linear router that scores them. Both route each token to thetop-4 experts, weighting outputs by the softmax over only the selected experts, using gated SwiGLU activations. Attention follows GPT-3's hybrid pattern: banded-window and fully dense layers alternate, with a 128-token bandwidth. Every layer has 64 query heads of dimension 64 and uses Grouped Query Attention with just 8 key-value heads; rotary embeddings plus YaRN extend the dense layers' context to131,072 tokens. Both share a residual-stream dimension of 2880, use RMSNorm with Pre-LN placement, and give each attention head a learned bias in the softmax denominator that lets the model attend to nothing.
The memory story depends on quantization. OpenAI post-trained with the MoE weights — responsible for most of the total parameter count — quantized toMXFP4, about 4.25 bits per parameter. That shrinks the 120b checkpoint to 60.8 GiB (a single 80GB GPU) and the 20b to 12.8 GiB (16GB of memory). Everything else stays BF16, and OpenAI recommends temperature 1.0 and top_p 1.0.
How it was trained
The abstract names the recipe plainly: large-scale distillation and reinforcement learning. Pretraining used a text-only dataset of trillions of tokens weighted toward STEM, coding and general knowledge, with a June 2024 knowledge cutoff and CBRN filters reused from GPT-4o. The 120b run consumed2.1 million H100-hourson PyTorch with expert-optimized Triton kernels, with the 20b needing almost 10x fewer; both used Flash Attention.
Post-training applied similar chain-of-thought RL techniques as OpenAI o3, teaching reasoning and tool use on coding, math and science problems. Because of that shared RL lineage, OpenAI notes the models have a personality similar to models served in its first-party products. A second lever isvariable reasoning effort— low, medium and high, selected by keywords such as a Reasoning directive in the system prompt. Raising the level lengthens the chain of thought, and OpenAI reports smooth test-time scaling with roughly log-linear returns.
Harmony, channels and tools
The models are trained on a bespokeharmony chat formatwhose special tokens mark message boundaries and whose keyword arguments carry author and recipient. The card stresses this is not optional: models should only be used with this format, otherwise they will not work correctly. Roles form an explicit conflict order —System, then Developer, then User, then Assistant, then Tool— which is how OpenAI implements an instruction hierarchy so that providers can set guardrails above users.
The format also introduceschannels: analysis for chain-of-thought, commentary for function and tool calls, and final for user-visible answers. Prompts are bracketed by start, message and end tokens, with tool schemas declared in a functions namespace inside the developer message. Channels are what allow interleaving tool calls within the chain of thought, and preambles that sketch longer action plans.
Three agentic capabilities are trained in: abrowsing toolexposing search and open, aPython toolthat runs code in a stateful Jupyter-style environment, andarbitrary developer functionsspecified by schema, mirroring the OpenAI API. The models can toggle these via the system prompt, and OpenAI ships basic reference harnesses.
What Apache 2.0 actually covers
OpenAI releases the model weights, inference implementations, tool environments, and tokenizers under an Apache 2.0 license. The official repository breaks that into concrete pieces:
- Weights:openai/gpt-oss-120b and openai/gpt-oss-20b on Hugging Face.
- Inference implementations:reference torch (educational, needs multiple H100s), triton (optimized, single 80GB GPU) and metal (Apple Silicon), plus a terminal chat client and a Responses-API-compatible server.
- Tool environments:a Python tool and a browser tool that calls external search backends, with scrollable page windows, citations and request caching.
- Tokenizers:the o200k_harmony BPE — the o200k tokenizer extended with harmony tokens,201,088 tokens total— open-sour
What you can actually do — and where it breaks
Locally, the pitch is real: the 120b fits one H100 or MI300X, the 20b runs in 16GB, and OpenAI points users to tools such as Ollama and LM Studio for consumer hardware. The models are fine-tunable and support full chain-of-thought and structured outputs.
The limits are documented just as plainly. The models are text-only. On OpenAI's hallucination evaluations they trail its hosted small model badly: SimpleQA accuracy is 0.168 (120b) and 0.067 (20b) versus 0.234, with hallucination rates of 0.782 and 0.914 versus 0.750. On instruction hierarchy they also underperform — prompt-injection hijacking scores are 0.780 and 0.639 against 0.917 — meaning a system-prompt guardrail is a weaker defense here than in the hosted model, with fine-tuning offered as the remedy. OpenAI deliberately imposed no optimization pressure on the chain of thought, so reasoning traces can contain hallucinated, policy-violating text and should not be shown to users without filtering.
On raw capability, gpt-oss-120b is genuinely competitive: at high reasoning with tools it hits 96.6% on AIME 2024 and 97.9% on AIME 2025, 62.4% on SWE-bench Verified, and a 2,622 Codeforces Elo. The 20b is close on those tasks largely by buying long chains of thought. Where it lags is knowledge: GPQA Diamond drops to 71.5 (20b) from 80.1 (120b). The practical read: these are strong, cheap reasoning and coding engines you host yourself, whose real weak points are factual depth, jailbreak resistance, and single-message instruction obedience.
Sources: gpt-oss model card (arXiv:2508.10925); openai/gpt-oss repository; openai/harmony.