MFU (Model FLOPs Utilization)

Definition

MFU (Model FLOPs Utilization) is the fraction of aggregate peak FLOP/s spent on the useful model FLOPs (the math that defines the model), ignoring redundant work. It is the hardware- and recompute-agnostic efficiency number that maps directly to tokens-per-dollar — distinct from HFU (Hardware FLOPs Utilization), which counts all FLOPs executed including activation recomputation. Popularized by PaLM (Chowdhery et al., 2022).

Key math


= non-embedding params, = number of GPUs, = dense peak per GPU in the training precision.

The rule (Kaplan 2020; Chinchilla 2022): total training compute of a dense transformer is

= params, = tokens. The 6 = 2 (forward: one multiply-add per param per token) + 4 (backward: grad w.r.t. input + w.r.t. weight, ~2× forward). Ignores attention’s term (small unless sequences are very long).

Deriving cost: effective per-GPU throughput , so

Typical MFU: ~35–55% on well-tuned large-scale training (PaLM 46% @ 540B; strong Megatron/H100 runs in the 40s–low 50s). >60% is a red flag — usually a wrong , double-counted embeddings, or a sparse-peak . What drags it down: memory-bound ops (softmax, LayerNorm, elementwise), un-overlapped communication, pipeline bubbles, small GEMMs, launch overhead, and recompute (the MFU/HFU gap).

Why it matters

Don’t confuse MFU and HFU — HFU ≥ MFU always. With activation recomputation you might see HFU 60% but MFU 45%; the extra 15 points are wasted forward passes that trade compute for activation memory. MFU is the number for training efficiency and cost; reporting HFU as MFU flatters your run.

MFU + is the calculation for planning a training run: cost, time, cluster sizing, and carbon all derive from it, and it’s a 10-second sanity check on any training log.

Taught in

See also