epoch.training← the field guide

Field Guide · Part I — The machine · 08

// silent data corruption

Silent data corruption is real at scale

Hardware doesn't only fail loudly. Sometimes it computes the wrong answer and tells you nothing — no crash, no error, no log line. At the scale of a modern cluster this is not a theoretical worry; it happens continuously, and the frightening ones are the failures you never see. A machine that lies quietly is worse than one that dies.

The comforting assumption behind most software is fail-stop: a component either works correctly or halts. Memory follows this most of the time because of ECC — error-correcting codes add redundant bits so a single flipped bit is corrected on the fly and a double flip is at least detected and reported. The interconnect does the same with CRC checksums on every packet. This machinery is the reason you can trust a memory read at all.

Bit flips are not rare

How often does a bit actually flip? Schroeder, Pinheiro and Weber instrumented Google's entire server fleet for 2.5 years and found DRAM errors are far more common than lab studies had predicted — a large fraction of DIMMs saw correctable errors every year, at rates of thousands to tens of thousands of errors per DIMM per year on affected modules. Crucially, errors were dominated by hard (recurring) faults, not random cosmic-ray hits, and once a DIMM started erroring it tended to keep erroring. ECC caught the vast majority. But ECC has limits: it corrects one bit and detects two, so a triple-bit flip in the wrong place can slip through as a wrong value that looks perfectly valid.

The ones that don't announce themselves

ECC and CRC protect data at rest and in flight. They do nothing about data being computed. If a CPU or GPU executes a multiply and silently returns the wrong product, no checksum flags it — the corruption is born inside the arithmetic unit. This is silent data corruption (SDC), and two 2021 papers dragged it into the open:

Both papers land on the same uncomfortable point: as feature sizes shrink and chips grow more complex, a nonzero fraction of cores in any large fleet will quietly produce wrong answers, and you will only find them if you go looking.

# end-to-end verification: don't trust the hardware,
# check the result against something you can recompute.

checksum_before = crc32(tensor)        # producer
send(tensor)
assert crc32(tensor) == checksum_before  # consumer verifies

# fleet defense against mercurial cores:
# run the SAME op on the SAME data on two cores,
# compare — a mismatch means one core is lying.
You cannot correct what you cannot detect. End-to-end checksums and redundant recomputation are how large fleets surface corruption the hardware won't report.

Defense is end-to-end, not per-component

The lesson from decades of distributed-systems work is the end-to-end argument: a checksum on each hop doesn't guarantee correctness, because corruption can happen in the gaps between checks — in a register, in a bus, in an ALU. The only real guarantee is verifying the final result against something independently derived: application-level checksums that travel with the data, periodic re-execution of critical computations, and fleet-wide screening that runs known workloads and flags any core whose answer disagrees with the rest.

Why it matters: a frontier training run touches astronomical numbers of floating-point operations across tens of thousands of accelerators for weeks. A single silently-wrong gradient can nudge the model in a bad direction, and because it's silent you get no crash to tell you — just a run that mysteriously diverges or a loss curve that quietly gets worse, wasting millions of dollars of compute before anyone suspects the hardware. This is why hyperscalers now run continuous SDC-screening fleets, checkpoint aggressively (page 07) so a suspect segment can be replayed, and increasingly build verification into the training loop itself. "Trust the hardware" stopped being a safe assumption the moment we started running one computation across a whole datacenter.

Sources & where to go deeper

B. Schroeder, E. Pinheiro & W.-D. Weber, "DRAM Errors in the Wild: A Large-Scale Field Study", ACM SIGMETRICS 2009 (DOI 10.1145/1555349.1555372) — 2.5 years of real DRAM error data across Google's fleet.
H. D. Dixit et al. (Meta), "Silent Data Corruptions at Scale", arXiv:2102.11245, 2021 — a defective core corrupting production data, and the debug flow to find it.
P. H. Hochschild et al. (Google), "Cores that don't count", HotOS 2021 (DOI 10.1145/3458336.3465297) — mercurial cores that miscompute silently.

This is one page of twenty.

The workshops go deep on the real thing — scheduling, storage, interconnect, GPUs — hands-on, on real infrastructure, from someone who's run these machines at national scale.

See the trainings →