MXFP4 vs NVFP4
Same 4-bit number, different scale: MXFP4 spends 0.25 bit/elem on a power-of-two scale per 32 values; NVFP4 spends 0.5 bit/elem on a fractional scale per 16 values. That extra quarter bit is worth +5.4 points on Llama-3.1-8B W4A4 (RTN) and 36 % fewer training tokens at 8B scale.
At a glance
| MXFP4 | NVFP4 | |
|---|---|---|
| Owner | OCP MX spec v1.0 — AMD, Arm, Intel, Meta, Microsoft, NVIDIA, Qualcomm (Sep 2023) | NVIDIA, with Blackwell (2025) |
| Element | FP4 E2M1 | FP4 E2M1 |
| Block size | 32 | 16 |
| Block scale | E8M0 — 8-bit exponent, powers of two only, 2−127…2127 | E4M3 — FP8 with 3 mantissa bits |
| Tensor scale | — | one FP32 per tensor |
| Bits per element | 4 + 8/32 = 4.25 | 4 + 8/16 = 4.5 |
| Scale rounding error | up to one binade lost on the block max | block max kept at near-FP8 precision |
| Who ships weights in it | OpenAI gpt-oss MoE layers | NVIDIA DeepSeek-R1 / Llama NVFP4 checkpoints |
| Native tensor-core path | Blackwell, AMD MI350/MI355X | Blackwell only |
Block anatomy
The element is identical
Both formats store an OCP FP4 E2M1 value: 1 sign, 2 exponent, 1 mantissa, exponent bias 1, no Inf, no NaN. Eight magnitudes, mirrored.
The scale is where the error lives
An E8M0 scale is an exponent only: the block is multiplied by 2n, nothing in between. The OCP spec’s reference conversion sets the scale to the largest power of two ≤ the block max, divided by 4 (E2M1’s largest power of two), then clamps anything above 6. An E4M3 scale has 3 mantissa bits, so the block max can be set to land near 6.
Accuracy — measured by three groups
| Setup | Baseline | MXFP4 | NVFP4 | Gap | Source |
|---|---|---|---|---|---|
| Llama-3.1-8B-Instruct, W4A4 RTN, avg of MMLU-CoT · GSM8k · HellaSwag · WinoGrande | FP16 78.93 | 69.32 | 74.73 | +5.4 | Egiazarian et al., ICLR 2026 |
| same, W4A4 GPTQ | 78.93 | 70.62 | 75.72 | +5.1 | same |
| same, W4A4 MR-GPTQ (block-wise Hadamard) | 78.93 | 73.65 | 75.84 | +2.2 | same |
| Llama-3.1-8B-Instruct, W4A4 direct cast, avg of 6 tasks | BF16 70.53 | 61.25 | 67.02 | +5.8 | Chhugani et al., 2026 |
| Qwen3-8B, W4A4 direct cast, avg of 6 tasks | BF16 73.47 | 65.50 | 71.48 | +6.0 | same |
| 8B hybrid Mamba-Transformer pretraining, 1T tokens, loss vs BF16 | — | ~2.5 % rel. error | ~1.5 % | MXFP4 needs +36 % tokens to match | NVIDIA, 2025 |
Every row is weights and activations in 4-bit; weight-only numbers would be closer. The Hadamard row shows most of the MXFP4 gap is the scale, and is recoverable in software at the cost of a rotation.
Hardware
| GPU | FP4 tensor cores | MXFP4 | NVFP4 | Dense FP4 peak | Source |
|---|---|---|---|---|---|
| NVIDIA H100 / H200 (Hopper) | ✗ | software kernel (Triton, gpt-oss) | ✗ | — | Blackwell microbenchmarks · vLLM gpt-oss |
| NVIDIA B200 / GB200 (Blackwell) | ✓ | ✓ ue8m0 × 32 | ✓ ue4m3 × 16 | 9 PFLOPS/GPU (72 ÷ 8, DGX B200) | CUTLASS Blackwell docs · DGX B200 |
| NVIDIA GB10 (DGX Spark) | ✓ | ✓ | ✓ | “up to 1 PFLOP FP4” — the sparse figure, dense is ~500 | DGX Spark |
| NVIDIA RTX 50 (consumer Blackwell) | ✓ | ✓ | ✓ | 3,352 AI TOPS sparse → ~1,676 dense (RTX 5090) | RTX 50 launch · RTX 5090 specs |
| AMD MI355X (CDNA 4) | ✓ | ✓ | not listed | 10.1 PFLOPS MXFP4 | AMD MI355X |
On Blackwell both formats run through the same tcgen05.mma kind, mxf4nvf4; the instruction takes either a ue8m0 scale per 32 or a ue4m3 scale per 16, so there is no throughput penalty for choosing MXFP4 — only the accuracy one. NVFP4 is NVIDIA-only; MXFP4 is the format that runs on both vendors’ silicon, which is why gpt-oss ships its MoE weights in it (120b: 117B params in 80 GB; 20b: 21B in 16 GB).
When to pick which
- NVFP4 — Blackwell-only deployment, you quantize the model yourself, you want the smallest accuracy loss at 4 bits. Pairs with the INT4 vs NVFP4 comparison.
- MXFP4 — you need one checkpoint for NVIDIA and AMD, or the vendor already shipped it (gpt-oss). Budget a rotation-based recipe (MR-GPTQ, OAS/MBS) to recover most of the scale error.
- Either, on a memory-bound box — the 5.9 % byte difference is noise next to the dense vs 2:4 sparse ladder; pick on accuracy.
TL;DR: MXFP4 and NVFP4 share the E2M1 element. MXFP4 scales 32 values by a power of two (E8M0, 4.25 b/elem); NVFP4 scales 16 values by an FP8 E4M3 fraction plus an FP32 per tensor (4.5 b/elem). The power-of-two scale costs ~5 points in W4A4 on 8B models and 36 % more tokens in 4-bit pretraining. Blackwell runs both at the same speed; AMD and gpt-oss speak only MXFP4.
Sources
- OCP Microscaling Formats (MX) Specification v1.0 — Open Compute Project, Sep 2023
- Introducing NVFP4 for Efficient and Accurate Low-Precision Inference — NVIDIA
- Pretraining Large Language Models with NVFP4 — NVIDIA, arXiv 2509.25149
- Bridging the Gap Between Promise and Performance for Microscaling FP4 Quantization — Egiazarian et al., arXiv 2509.23202
- Unveiling the Potential of Quantization with MXFP4 — Chhugani et al., arXiv 2603.08713
- Dissecting the NVIDIA Blackwell Architecture with Microbenchmarks — arXiv 2507.10789
- Blackwell functionality — NVIDIA CUTLASS docs
- vLLM Now Supports gpt-oss — vLLM blog
- openai/gpt-oss-120b model card — Hugging Face
- DGX B200 — NVIDIA
- DGX Spark — NVIDIA
- GeForce RTX 50 Series announcement — NVIDIA
- GeForce RTX 5090 specifications — NVIDIA
- AMD Instinct MI355X — AMD