Incident Library

IL-0411 Meta · 2024-10-29 (published)ai-infra

Lemon nodes in Meta's RSC-1 and RSC-2 GPU clusters failed job after job without being caught by health checks

The paper, by engineers of FAIR at Meta, analyses 11 months of data from Meta's two research clusters, RSC-1 (16k GPUs, general ML) and RSC-2 (8k GPUs, mostly vision), covering 4 million jobs and over 150 million A100 GPU hours. Both are bare-metal DGX clusters with eight A100 80GB GPUs per server, scheduled by Slurm, and the paper views failures through Slurm job states and node health checks. Health checks run every five minutes, and a node that fails a high-severity check is removed and its jobs rescheduled; the design goal is that a bad node never fails a second job. Meta found that some job failures were tied to particular nodes, from misconfiguration, aging or hardware defects, and that health checks did not catch them.

Meta built lemon detection to identify, isolate and replace such nodes in Slurm. Of the tens of signals available on each node, those most correlated with lemon nodes were excl_jobid_count, xid_cnt (unique XID errors), tickets (repair tickets), out_count (times the node was taken out of scheduling), multi_node_node_fails, single_node_node_fails and single_node_node_failure_rate; the thresholds were tuned by hand from a 28-day snapshot of RSC-1. The mechanism identified 40 faulty nodes, 24 on RSC-1 and 16 on RSC-2, with more than 85% accuracy, and more than 85% of the identified nodes failed one of the tests. The paper states that these nodes represent 1.2% of RSC-1's footprint, 13% of daily jobs, and 1.7% of RSC-2's footprint. Their root causes were GPU 28.2%, DIMM 20.5%, PCIE 15.4%, EUD 10.3%, NIC 7.7%, BIOS 7.7%, PSU 5.1%, CPU 2.6% and optics 2.6%. Failures of large jobs on 512 or more GPUs fell from 14% to 4%, which the paper reports as a 10% reduction.

Severity
–
Scope
Jobs placed on lemon nodes in RSC-1 and RSC-2; before lemon detection 14% of jobs on 512+ GPUs failed
Users affected
Researchers running ML jobs on RSC-1 and RSC-2
Region
–
Time to detect
–
Time to resolve
–

Symptoms

In Meta's RSC-1 and RSC-2 research GPU clusters, certain nodes had above-average rates of job failures. After each failure the same nodes kept attracting new jobs and failing them too, while health checks and repair workflows did not flag them. Meta calls these servers lemon nodes.

The paper ties lemon nodes to NODE_FAIL, the catch-all status Slurm gives through its heartbeats when a node stops responding to the health checks running on it, and names NODE_FAIL as one of the most important factors behind training job failures. Large jobs were hit hardest: before lemon detection, 14% of jobs on 512 or more GPUs failed.

Before the detection was automated, researchers excluded nodes by hand when those nodes had made their jobs fail, based on past experience. That did not scale, and excluding nodes too aggressively risked starving the cluster of capacity. The count of distinct jobs that had excluded a node (excl_jobid_count) did not correlate strongly with node failures, even though a large number of nodes had been excluded by at least one job. Finding a lemon node takes failure history over a long period before the pattern is statistically significant.

Symptom Training job failure

Root cause

Trigger
–

Detection

Meta's lemon detection flags nodes from their history in per-node signals such as excl_jobid_count, xid_cnt, tickets, out_count and node failure counts, because the periodic health checks and repair workflows did not catch them.

Remediation

Action items

–

Lessons

Finding defective nodes needs historic data, and lemon node detection can improve the completion rate of large jobs by over 30%. A defective node that cannot be removed from capacity leads to restart loops that make large gang-scheduled jobs impossible to run, so recovery from random failures only works once defective nodes are reliably rotated out.

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.