Failures, checkpoints and goodput
Why a cluster of reliable GPUs fails every few hours (system MTBF = per-GPU MTBF ÷ N, with Llama 3's 419 interruptions in 54 days), the Young/Daly checkpoint interval and the goodput it buys, checkpoint size at 12/14/16 bytes per parameter with synchronous and asynchronous stalls, and inference availability — hot, warm and cold standby and the blast radius of a replica layout.
Added
Works with
- Probability: dice, cards, Bayes Mathematicsopens the replica quorum as a k-of-n system
How to use it
Four tabs:
-
Failures at scale — from a per-GPU MTBF (≈ 50,000 hours for an H100), or from observed interruptions (Llama 3 405B: 419 unexpected in 54 days on 16,384 GPUs), get the cluster’s mean time between failures, failures per day, the chance a job runs clean, and a log–log chart of MTBF against GPU count.
-
Checkpoint interval — Young’s interval τ = √(2δM) for a system MTBF M and checkpoint stall δ, Daly’s refinement, the numerical optimum, and a goodput curve (useful work ÷ wall time) with an optional restart time and your own interval marked.
-
Checkpoint size — parameters × 12, 14 or 16 bytes, the synchronous stall at your storage bandwidth, the asynchronous stall (each GPU’s shard copied to host memory), and whether the background write drains before the next checkpoint. Use as δ carries a stall to the interval tab.
-
Inference availability — lay a pod (72 GPUs in a GB200 NVL72) out as replicas, see which requests one GPU fault takes down, how often that happens, the availability of k-of-n replicas (with a link into the probability tool’s reliability tab), and the failover time of hot, warm and cold standby for a request of a given context length.
Limits
Failures are modelled as independent and exponential (constant rate); real fleets have infant mortality, wear-out and correlated failures (a switch, a power feed, a bad driver) that make outages lumpier. The observed mode blames every interruption on the GPUs. Goodput counts checkpoint stalls, lost work and restarts only — not slow nodes, data stalls or evaluation. The asynchronous stall assumes the state is evenly sharded over every GPU and that the host copy runs at the given PCIe rate. Failover times are lower bounds: detection, scheduling and routing add to them.
Related: series, parallel and k-of-n reliability, training memory and parallelism planner, AI hardware calculator: training compute, latency numbers.
Companion to AI Acceleration: From Transistors to Trillion-Parameter Models: why large training runs fail, the checkpoint write-storm and fault tolerance at inference time.
Sources
-
Meta, The Llama 3 Herd of Models (2024), §3.3.4 — 466 interruptions (419 unexpected) in 54 days on 16,384 H100s.
-
J. W. Young, A first order approximation to the optimum checkpoint interval (CACM, 1974).
-
J. T. Daly, A higher order estimate of the optimum checkpoint interval for restart dumps (FGCS, 2006).
-
Wan et al., ByteCheckpoint (NSDI 2025) and Maurya et al., DataStates-LLM (2024) — asynchronous checkpointing.
-
Strati et al., DéjàVu (ICML 2024) and Qin et al., Mooncake (2024) — KV-cache replication and a shared cache tier.
Linking to an example
Links can be written by hand. Add the tab after #: mtbf, interval, size or serve.
Parameters you leave out take their defaults. Numbers may be written 100000, 1e5 or
100,000. In a URL + means a space, so write 1e%2B5 — or just 1e5; a 1e+5 typed into the
address bar also works.
| Parameter | Meaning | Example |
|---|---|---|
|
Failures tab: |
|
|
GPUs, and MTBF per GPU in hours (also used by the inference tab) |
|
|
Observed interruptions, over how many days, on how many GPUs |
|
|
Job length in days |
|
|
Interval tab: system MTBF (hours), checkpoint stall (s), restart (s), your interval (minutes) |
|
|
Size tab: parameters (billions), bytes per parameter ( |
|
|
Storage GB/s, GPUs sharing the state, GPU-to-host GB/s, interval (minutes) |
|
|
Inference tab: GPUs in the pod, GPUs per replica, requests per replica, replicas needed |
|
|
Context tokens, KV MB per token, fabric GB/s, prefill tokens/s, failover lag (ms), replica repair (min) |
|
|
One of the presets below; parameters given with it override the preset’s |
|
Presets:
example= |
Shows |
|---|---|
|
419 interruptions in 54 days on 16,384 GPUs: one every 3.1 h, ≈ 50,700 h per GPU (open) |
|
All 466 interruptions: one every 2.8 h (open) |
|
~16,000 GPUs at 50,000 h: a failure every 3 hours (open) |
|
104 GPUs: a failure every 5 hours (open) |
|
105 GPUs: a failure every 30 minutes (open) |
|
M = 3 h, δ = 60 s: checkpoint every ≈ 19 min, goodput ≈ 90% (open) |
|
The same with a 10-minute restart per failure (open) |
|
A 2 s asynchronous stall: every ≈ 3.5 min, ≈ 98% goodput (open) |
|
405B × 16 B = 6.5 TB; 13 s synchronous vs 16 ms asynchronous (open) |
|
70B: 980 GB at 14 B/param, 1.12 TB at 16 B (open) |
|
175B: 2.45 TB at 14 B, 2.8 TB at 16 B (open) |
|
72 GPUs as nine 8-GPU replicas: blast radius 1/9 (open) |
|
One model over all 72 GPUs: blast radius the whole pod (open) |
|
Hot, warm and cold failover for a 128K-token request (open) |
Feedback is a gift. Something to improve, a feature to add, or a bug? Tell me.
Runs entirely in your browser; nothing you type leaves this page.