GPT-OSS 20B (MoE) needs 20.9 GB of VRAM for its weights at FP8 (E4M3) — 21.1 GB once a KV cache is loaded. Below is the full breakdown: which GPUs fit, how many you need, what it serves, and what it costs per million tokens. Every figure comes from tokcalc's open-source capacity model.
| Quantization | Weights | With KV cache | Smallest single GPU |
|---|---|---|---|
| FP16 | 41.8 GB | 42.0 GB | L40S 48GB (48 GB) |
| FP8 (E4M3)recommended | 20.9 GB | 21.1 GB | A10G 24GB (24 GB) |
| AWQ 4-bit | 11.5 GB | 11.7 GB | T4 16GB (16 GB) |
| GPU | GPUs | Total VRAM | Decode tok/s | Aggregate tok/s | Cost / 1M tokens |
|---|---|---|---|---|---|
| RTX 3080 10GB | 4× | 40 GB | 699.8 | 33592 | $0.006615 |
| RTX 4080 16GB | 2× | 32 GB | 330.1 | 7923 | $0.0210 |
| RTX 5090 32GB | 1× | 32 GB | 485.3 | 5824 | $0.0238 |
| RTX 3090 24GB | 1× | 24 GB | 253.5 | 2472 | $0.0281 |
| RTX A4000 16GB | 2× | 32 GB | 206.3 | 4950 | $0.0337 |
| RTX 4090 24GB | 1× | 24 GB | 273.0 | 3276 | $0.0339 |
| AMD MI300X 192GB | 1× | 192 GB | 1435 | 17225 | $0.0403 |
| V100 SXM2 32GB | 1× | 32 GB | 243.8 | 2925 | $0.0475 |
| T4 16GB | 2× | 32 GB | 147.3 | 2250 | $0.0494 |
| A100 40GB SXM4 | 1× | 40 GB | 419.8 | 5038 | $0.0496 |
| AMD MI325X 288GB | 1× | 288 GB | 1625 | 19500 | $0.0499 |
| A100 80GB SXM4 | 1× | 80 GB | 541.7 | 6500 | $0.0513 |
RTX 3080 10GB has no NVLink, so 4-way tensor parallelism runs over PCIe. tokcalc applies a flat 0.85× multi-GPU efficiency factor for this, which is realistic for NVLink-equipped datacenter cards but optimistic for PCIe scale-out — treat the throughput and cost figures for this configuration as an upper bound, and measure before committing.
| Context | Concurrent users | KV per request | Fits? |
|---|---|---|---|
| 4K | 183 | 206.2 MB | ✓ fits |
| 8K | 93 | 412.3 MB | ✓ fits |
| 33K | 23 | 1.61 GB | ✓ fits |
| 66K | 11 | 3.22 GB | ✓ fits |
| 131K | 5 | 6.44 GB | ✓ fits |
Yes. At FP8 (E4M3) the model needs 21.1 GB of VRAM, so it fits on a single A10G 24GB or anything with more VRAM. At full FP16 it needs 42.0 GB, which fits on one L40S 48GB or larger.
At FP8 (E4M3) with 8,192-token context and 8 concurrent users, the cheapest configuration that fits is 4× RTX 3080 10GB (40 GB total VRAM). $0.006615 per 1M output tokens.
On 1× Cerebras CS-3 (WSE-3) at FP8 (E4M3), the aggregate throughput is 65000 tokens/sec with continuous batching. That hardware has no published rental price, so its cost per million tokens is not comparable.
Weights alone: 41.8 GB at FP16, 20.9 GB at FP8 (E4M3). Add KV cache for your context length and concurrency — every concurrent request at 8,192 tokens costs extra VRAM, so budget headroom above the weight figure.
FP8 halves the weight footprint (42 GB → 21 GB) and is faster than FP16 on Hopper and Blackwell, where it has native kernels. FP16 remains the reference quality bar; FP8 loses a small amount of accuracy in exchange for roughly doubling the batch size you can serve per GPU.
GPT-OSS 20B (MoE) is a mixture-of-experts model: 4B parameters are active per token, but all 21B experts must stay resident in VRAM. Capacity is bounded by the resident set, while decode throughput is bounded by the active set — so it serves fast per token but needs the full footprint.
At 4× RTX 3080 10GB the marginal cost is $0.006615 per 1M output tokens, before you add idle capacity, ops staff, or egress. That is typically cheaper than frontier API pricing at sustained volume, but API calls win when your load is bursty or too small to keep a GPU busy. The Build vs Buy tab on tokcalc prices this against a specific provider for you.
The calculator uses the exact same formulas as this page — change the workload and watch every number update.
| Total parameters | 20.91B |
| Active parameters per token | 3.60B |
| Architecture | Mixture-of-Experts |
| Attention layout | Hybrid: 12 full + 12 sliding |
| Transformer layers | 24 |
| Hidden dimension | 2880 |
| Attention heads | 64 query / 8 KV (GQA) |
| Head dimension | 64 |
| Vocabulary size | 201,088 |
| Max context (catalog) | 131K |
| Native context | 4K |
| Context extension | RoPE scaling (yarn) |
| KV cache per token @ 8K | 24.4 KB |
| Native checkpoint size | 13.76 GB |
| Native weight format | mxfp4 |
| License | apache-2.0 |
sliding layers stop growing once the context passes their window, so long-context cost is bounded.