Incident Library

IL-0427 BigScience · 2021-08-12ai-infra

A GPU with uncorrectable ECC errors crashed tr1-13B training, and Slurm's next job went to the same node and crashed too

BigScience trained the tr1-13B model with Megatron-DeepSpeed on the JZ cluster, running it as a chain of Slurm jobs in a job array so that each job started as soon as the previous one ended. One job crashed after many hours of training with an uncorrectable ECC error from CUDA. Nobody was around to notice, and the Slurm scheduler started the next job in the array, which was given the same node and crashed immediately during startup with a CUDA out-of-memory error at a torch.distributed barrier.

The team concluded that one of the GPUs had a hardware fault and contacted the JZ administrators, who confirmed that one of the nodes was faulty. The next training job did not land on that node and training continued. At that point the team had no way to match an exception to the hostname of the node that raised it, so a faulty node could keep being allocated and keep crashing the training. As a workaround the team added %N to the Slurm output file name, which gives every node its own log file and shows which node has the corrupt GPU, so the node can then be left out with sbatch --exclude.

Severity
–
Scope
The tr1-13B training run crashed twice in a row on the same faulty node and stopped until the next job landed on other nodes
Users affected
–
Region
–
Time to detect
–
Time to resolve
–

Symptoms

After many hours of training, one job of the tr1-13B Slurm job array crashed at iteration 43680 of 311541 during the backward pass. The next job in the array started by itself and crashed right away, before training began.

The first crash ended in "RuntimeError: transform: failed to synchronize: cudaErrorECCUncorrectable: uncorrectable ECC error encountered", followed by "terminate called after throwing an instance of 'c10::Error'" and "what(): CUDA error: uncorrectable ECC error encountered", raised from torch.autograd.backward inside DeepSpeed's pipeline engine.

The second job, started at 2021-08-12 08:19:28 by the Slurm scheduler, initialized tensor model parallel size 2 and pipeline model parallel size 4, then failed while compiling and loading fused kernels: torch.distributed.barrier() in _compile_dependencies raised "RuntimeError: CUDA error: out of memory".

Nobody was watching when the first crash happened, and the logs gave no way to tie an exception to the hostname of the node it came from, so the faulty node could not be picked out and excluded.

Symptom Training job failureGPU unavailable

Root cause

Trigger
One GPU on one node of the allocation developed a hardware problem that produced uncorrectable ECC errors.

Detection

Nobody was around to notice the first crash, and the Slurm scheduler started the next job in the array on its own, which crashed too.

Remediation

Action items

Lessons

Without a way to link an exception to the hostname of the node that raised it, the scheduler can keep placing the training on the faulty node and the training keeps crashing; per-node log files make the faulty node visible so it can be excluded.

Sources

Related cases

Check your cluster for this

kubegap audits a Kubernetes cluster for conditions like the ones in this case, GPU hardware and memory, Slurm job scheduler among them, read-only, from Claude Code or Codex. Its checks cite public reports like this one.

For AI tools and scripts

The API needs no key. The MCP server offers search_incidents, get_incident, list_incidents, get_topic and vocab; both are explained on API and MCP.