Engineering Guide

gpt-oss-120B Requirements: VRAM, RAM & How to Run It

Most guides give you one VRAM number for gpt-oss-120b and stop. The honest answer is a range, because it depends on your setup. The model ships natively quantized to MXFP4 — its Mixture-of-Experts weights are packed at ~4.25 bits per parameter — so the checkpoint is only about 60.8 GiB and fits on a single 80 GB GPU. And because it is MoE with just 5.1B of 116.8B parameters active per token, it runs far faster than a dense 120B would at the same size. This guide gives you the VRAM-by-setup table, the realistic consumer-GPU offload options, and the self-host-vs-API cost math — every number sourced to a primary reference.

gpt-oss-120b memory requirements — VRAM by setup, consumer-GPU options, and self-host vs API cost

gpt-oss-120b requirements at a glance

gpt-oss-120b needs an 80 GB GPU to run comfortably in its native MXFP4 format, but it is a Mixture-of-Experts model — so its real-world footprint and speed are unlike a dense 120B. Here are the load-bearing specs, each from a primary source:

Specgpt-oss-120bgpt-oss-20b
Total parameters116.8B (marketed 117B)20.9B (marketed 21B)
Active params / token5.1B3.6B
ArchitectureMoE, 36 layersMoE, 24 layers
Experts (per MoE layer)128, top-4 active32, top-4 active
Native quantizationMXFP4 (~4.25 bit)MXFP4 (~4.25 bit)
Checkpoint size~60.8 GiB~12.8 GiB
Fits onSingle 80GB GPUWithin 16GB
Context length131,072 (128k)131,072 (128k)
Response formatharmony (required)harmony (required)
LicenseApache 2.0Apache 2.0

The single most important fact: gpt-oss-120b ships already quantized. Its MoE weights are natively in MXFP4 at 4.25 bits per parameter, with attention layers, routers, and embeddings excluded. You are not applying a lossy after-market quant — this is the format OpenAI released and trained the deployment around.

VRAM by setup: the table competitors skip

There is no single VRAM number — it depends on whether you fit the whole model in GPU memory or offload experts to system RAM. Here is the honest breakdown, with each figure attributed to its source and confidence flagged:

SetupMemory neededSpeedSource / confidence
Native MXFP4 checkpoint size~60.8 GiBarXiv model card (high)
Practical MXFP4 footprint~63 GBIndependent explainer (medium)
Single 80GB GPU (H100 / MI300X)80 GB VRAMFull speedOpenAI / HF (high)
Recommended for 6+ tok/s~66 GB VRAM+RAM combinedUsableUnsloth vendor (medium)
Consumer GPU + CPU offloade.g. 24GB GPU + RAMMuch slowerUnsloth vendor (low)
Same weights at BF16/FP16~240 GBIndependent explainer (medium)

Read this top to bottom and the strategy is obvious. The MXFP4 checkpoint is ~60.8 GiB, so with runtime and KV-cache overhead an 80GB GPU fits it whole — that is the clean, fast path OpenAI designed for. Drop below 80GB and you enter offload territory: the model still loads, but expert layers live in slower system RAM. And the ~240 GB BF16 figure is what makes MXFP4 remarkable — quantization is the difference between one GPU and a multi-GPU rig.

How this is sourced. The 60.8 GiB checkpoint and MXFP4 spec are from the official arXiv model card; the 80GB-fit claim from the Hugging Face model card. The ~63 GB and ~240 GB figures come from an independent MXFP4 explainer (medium confidence), and the ~66GB recommendation from Unsloth (vendor). Consumer-GPU offload is not endorsed by any official source — treat it as low-confidence.

Why gpt-oss-120b is faster than a dense 120B

Because only 5.1B of its 116.8B parameters are active on any given token — a dense 120B activates all of them. That is the Mixture-of-Experts trick, and it is why the "120B" in the name is misleading about speed. Each of the model's 36 layers has 128 experts, of which a router picks the top 4 per token. So the memory cost is set by the total parameters (you must store all 128 experts), but the compute cost per token is set by the active parameters (you only run 4).

This decoupling is the whole point:

Dense 120B — every token uses all parameters ~120B active per token gpt-oss-120b (MoE) — stores 116.8B, activates 5.1B 116.8B stored (memory cost) ↑ only 5.1B active per token (compute cost) Memory is set by stored params; speed by active params. That gap is why an MoE 120B generates far faster than a dense model of the same total size.
MoE decouples memory from compute. Params from OpenAI's arXiv model card & config.json, 2026.

The practical upshot: do not budget latency as if this were a dense 120B. Its throughput profile is much closer to a mid-size model, which is exactly why it is a viable open-weight workhorse. If you are picking among open models, our best open-source LLM roundup puts it in context against the field.

Running gpt-oss-120b on consumer GPUs

You can load it on a single 24GB consumer card by offloading MoE expert layers to system RAM — but expect a real speed penalty, and note no official source endorses a specific consumer config. The MoE architecture is what makes this even possible: because only a few experts fire per token, tools like llama.cpp can keep attention and hot layers on the GPU while parking the bulk of the expert weights in CPU/RAM. The GPU handles the always-on compute; RAM holds the rarely-touched experts.

What to actually expect:

If your card is smaller than that, the smaller sibling below is the better fit — or you skip the hardware question entirely with an API.

gpt-oss-20b: when the 120b is too big

gpt-oss-20b runs within 16GB of memory and keeps the same architecture family, context, and license — it is the model to reach for on a consumer GPU. Same MoE design, smaller everything:

Attributegpt-oss-20b
Total / active params20.9B total, 3.6B active per token
ArchitectureMoE, 24 layers, 32 experts, top-4
MXFP4 checkpoint~12.8 GiB
Runs within16GB of memory
Recommended (Unsloth)~14GB VRAM+RAM combined
Context length131,072 (128k)
License / formatApache 2.0, harmony

A ~12.8 GiB checkpoint that runs within 16GB lands squarely inside a 16GB or 24GB consumer card — no offload gymnastics required. You trade capability for a much easier deployment. See its full model page for details, and the 120b page here when you want the bigger one via API.

How to run gpt-oss-120b locally

Pick a runtime that understands MXFP4 and the harmony format — vLLM, Ollama, or llama.cpp — and the rest is a download. Both models use the harmony response format and will not work correctly without it, so the runtime matters. The good news: mainstream runtimes handle harmony and MXFP4 for you.

A few non-negotiables when you set up:

  1. Use a harmony-aware runtime. vLLM, Ollama, and llama.cpp apply harmony server-side. Only a raw inference loop forces you to format it yourself.
  2. Budget for KV cache at 128k context. The 131,072-token context is powerful but its KV cache eats memory on top of the ~60.8 GiB of weights — size your GPU with headroom if you use long context.
  3. Set reasoning effort. Both models support configurable low / medium / high reasoning effort and native function calling, so you can dial compute to the task.

The pragmatic alternative is to skip local hosting and hit the model through an OpenAI-compatible endpoint — same request shape you already use, no MXFP4 or harmony plumbing on your side. Point your existing client at a gateway base URL:

from openai import OpenAI

client = OpenAI(
    base_url="https://www.datallmlab.com/v1",
    api_key="YOUR_KEY",
)

resp = client.chat.completions.create(
    model="openai/gpt-oss-120b",
    messages=[{"role": "user", "content": "Explain MXFP4 in one line."}],
)
print(resp.choices[0].message.content)

The gateway applies harmony and MXFP4 server-side, so the same code runs the 20b by swapping the model string. No GPU required on your end.

Self-host vs API: the cost math

Self-hosting only wins at sustained high utilization; for bursty or low-volume traffic a per-token API is almost always cheaper. The trap is comparing token prices to zero. Self-hosting is not free — an 80GB GPU costs whether or not it is answering a request, and it sits idle between them. Here is the decision framework:

FactorSelf-host (80GB GPU)Per-token API
Cost modelFixed (GPU always on)Variable (pay per token)
Idle costYou pay for idle timeZero when not calling
Best forHigh, steady utilizationBursty / low / spiky load
Ops overheadGPU, drivers, runtime, scalingNone
Data localityFully on-prem possibleLeaves your network
Time to first token liveHours to daysMinutes

A worked way to think about it: an 80GB GPU running 24/7 has a fixed hourly cost regardless of throughput. If your traffic keeps that GPU near-continuously busy, dividing that fixed cost across a high token volume yields a low effective per-token rate — self-host wins. If your GPU is busy 10% of the day, you are paying full price for 100% of the time to serve 10% of the work, and a per-token API that charges only for the tokens you actually generate is dramatically cheaper. The break-even is a utilization question, not a price-per-token question.

Because gpt-oss-120b is Apache 2.0 and open-weight, you genuinely have both doors open — a rare luxury. The right move is usually to start on an API, measure your real utilization, and only build the self-host rig once the numbers prove a dedicated GPU stays busy. Our cheapest-LLM cost guide and best-LLM-API roundup lay out per-token options for that first phase.

When not to self-host at all

If your load is bursty, your team is small, or you need more than one model, self-hosting a single 80GB GPU is usually the wrong tool. Concrete signals to stay on an API:

Self-hosting an open-weight model is a great option — but it is an optimization, earned by proven, steady demand, not a default. Until then, hitting gpt-oss-120b through an OpenAI-compatible gateway gives you the same open model with none of the hardware.

Run gpt-oss-120b without buying an 80GB GPU

DataLLM Lab serves gpt-oss-120b and gpt-oss-20b on one OpenAI-compatible key — pay per token, no MXFP4 or harmony plumbing, and fail over across 300+ models when you need to.

FAQ

How much VRAM does gpt-oss-120b need?

The MXFP4 checkpoint is ~60.8 GiB, and OpenAI states it fits on a single 80GB GPU (H100 or MI300X). An independent explainer puts the practical footprint near 63 GB, vs ~240 GB at BF16. Below 80GB you offload experts to RAM, which is slower.

Can I run it on a 24GB consumer GPU?

Technically yes — the MoE design lets llama.cpp offload expert layers to CPU/RAM so a 24GB card loads it, but inference slows significantly and no official source endorses a specific 24GB config. Unsloth recommends ~66GB combined VRAM+RAM for 6+ tok/s.

Why is it faster than a dense 120B?

It is MoE: 128 experts per layer, top-4 active, so only ~5.1B of 116.8B parameters run per token. A dense 120B activates all of them. Less compute per token means much faster generation.

What is MXFP4?

A 4-bit float format at 4.25 bits/param. OpenAI natively quantizes the MoE weights to MXFP4 (attention, routers, embeddings excluded), shrinking the checkpoint to ~60.8 GiB so a 116.8B model fits on one 80GB GPU instead of ~240 GB at BF16.

How much memory does gpt-oss-20b need?

Its MXFP4 checkpoint is ~12.8 GiB and OpenAI states it runs within 16GB; Unsloth recommends ~14GB combined. It has 20.9B total / 3.6B active params, 32 experts (top-4), 24 layers, 128k context, Apache 2.0.

Self-host or use an API?

Volume decides. An 80GB GPU costs whether busy or idle, so bursty/low traffic favors a per-token API. Self-hosting wins only at sustained high utilization. Start on an API, measure, then self-host if a dedicated GPU proves it stays busy.

Do I need the harmony format?

Yes — both models require OpenAI's harmony response format. vLLM, Ollama, llama.cpp, and any OpenAI-compatible API apply it for you, so it only matters if you build a raw inference loop yourself.

Written by
Kevin Fan

Founder of DataLLM Lab, the unified LLM gateway. Kevin tests models the boring way — same prompts, real costs, unedited outputs — and writes up what the runs actually show.

One API for every model

One API, every model.

Get a single API key for Claude Opus 4.7, GPT-5.4, and 300+ more — with automatic price comparison and routing to the best model for every request.