AWS Proposes Three Code-Level Checks to Detect GPU Silent Data Corruption Bypassing Hardware Monitoring
Silent data corruption returns erroneous but plausible values without triggering any hardware alerts. ECC, Xid, DCGM, and NVLink checksums each guard different boundaries and cannot capture errors in the compute path. AWS embeds three checks within the PyTorch DistributedDataParallel (DDP) training loop, covering forward/backward passes, optimizer steps, and weight storage as failure points. The measured overhead is approximately 7%–10%, with an upper bound on the false-positive rate of about one in five thousand.
The fundamental reason silent data corruption (SDC) is difficult to detect is that it occurs internally within the compute path. A GPU's multiply-accumulate unit returns a wrong but plausible value—for example, 4.0001 instead of 4.0000—without triggering any error signal. Every existing integrity check guards a different boundary: ECC protects memory, Xid captures driver and hardware faults, DCGM deep health checks run on idle nodes, and NVLink and PCIe checksums verify whether transmission bytes arrived intact. Checkpoint checksums confirm storage round-trip consistency. None of these checks whether the output of the arithmetic logic path is correct, because there is no ECC or parity on that path.
This means detection must come from the training task itself. AWS adds three checks to the PyTorch DistributedDataParallel training loop, arranged by where faults are likely to land. The first is a non-finite gradient check: before gradient aggregation, GPUs are flagged if their local gradient norm is NaN or Inf; after aggregation, the reduced gradients are checked for NaN or Inf. The second is a ring replay audit: before the optimizer step, each GPU recomputes a micro-batch from another node's GPU, comparing loss values bit-for-bit and, under deterministic kernels, comparing gradient fingerprints. This can catch finite but incorrect computed values. The third is weight fingerprint comparison: after the optimizer step, fingerprints of all replicas' weights are compared, catching corruption in the update step or in stored weights.