Wie Netflix GPUs für wochenlange Trainings- und Inferenzjobs gesund hält
Netflix hat beschrieben, wie das Unternehmen defekte GPUs und Netzwerkhardware erkennt, fehlerhafte Maschinen automatisch ersetzt und lang laufende Trainingsjobs den Verlust von Hardware überleben lässt. Zuverlässigkeit sei wichtig, weil GPU-Kapazität zu den am schnellsten wachsenden und teuersten Teilen der Infrastruktur gehöre, so das Unternehmen.
- Netflix lässt Trainingsjobs wochenlang auf Hunderten GPUs laufen, und ein einziger Ausfall kann den gesamten Job zum Stillstand bringen.
- Cloud-Instanz-Checks und einfache Treiber-Checks übersehen fehlerhaften Speicher, beeinträchtigte Netzwerkverbindungen und defekte Diagnosewerkzeuge.
- Netflix nutzt vier Ebenen: Node-Gesundheit, Scheduler und Plattform, Trainingsschleife sowie Observability.
- Die Health-Checks laufen alle 30 Sekunden auf jeder GPU-Maschine und schlagen fehl (fail closed), wenn Treiber oder Werkzeug nicht antworten.
- Eine fehlende Binärdatei hatte einmal einen Netzwerk-Check stillschweigend außer Kraft gesetzt, daher schlagen Checks nun fehl, wenn eine Abhängigkeit fehlt.
Warum GPU-Ausfälle so teuer sind
Wie der Netflix Technology Blog schreibt, wird die Personalisierung auf dem Startbildschirm, von den angezeigten Zeilen bis zum Artwork für jeden Titel, von Machine-Learning-Modellen bestimmt, die darauf trainiert sind, wie Hunderte Millionen Mitglieder schauen. Diese Modelle werden auf GPUs trainiert und zunehmend auch live darauf ausgeliefert.
Ein einzelner großer Trainingsjob kann wochenlang auf Hunderten GPUs über viele Maschinen hinweg laufen. Netflix zufolge läuft ein solcher Job als Gang: Die Ranks bewegen sich im Gleichschritt und tauschen in jedem Schritt Daten aus. Der Job kommt deshalb nur so schnell voran wie sein langsamster Teilnehmer und stoppt komplett, wenn einer ausfällt. In dieser Größenordnung können einzelne GPUs und Netzwerkverbindungen während eines Laufs ausfallen, daher muss die Plattform Fehler ohne menschliches Eingreifen bewältigen.
Netflix sieht das als geschäftliche Frage an zwei Fronten. Die erste ist die Verfügbarkeit: Eine verlorene Maschine oder fehlende gesunde Inferenzkapazität verzögert Arbeit, auf die Mitglieder und Kreative angewiesen sind. Die zweite ist die Kosteneffizienz: Eine GPU, die hinter einem langsamen Nachbarn leerläuft, oder eine ganze Maschine, die wegen eines einzigen beeinträchtigten Geräts aus dem Betrieb genommen wird, ist bezahlte, aber ungenutzte Kapazität. Inferenz macht einen wachsenden Anteil des GPU-Bestands aus, weshalb dieselben Überlegungen zunehmend auch für den dauerhaften Live-Betrieb gelten.
Warum einfache Health-Checks nicht reichen
Netflix geht zunächst von den Prüfungen aus, die der Cloud-Anbieter auf virtuellen Maschinen durchführt: System- und Instanzstatus-Checks, ein Speicher-Check und geplante Wartungsereignisse. Sie erkennen Maschinen, die ausgefallen, nicht erreichbar oder für Wartung vorgesehen sind, enden aber auf Instanzebene. Ob jede GPU, ihr On-Chip-Speicher, ihre Interconnects und das Netzwerk-Fabric verteiltes Training tragen können, prüfen sie nicht.
Ein Check auf GPU-Ebene, der feststellt, ob der Treiber antwortet und die GPUs sichtbar sind, erkennt tote oder fehlende Geräte. Netflix nennt jedoch Fälle, die er übersieht:
- Eine GPU kann auf eine Statusabfrage antworten und trotzdem fehlerhaft sein, sobald eine Workload sie anspricht, etwa durch einen Fehler im On-Chip-Speicher oder in der Geräte-Firmware.
- Ein Netzwerkadapter zeigt womöglich weniger Links als erwartet. Kollektive Operationen laufen dann noch mit einem Bruchteil der Bandbreite, sodass der Job nur dahinkriecht, statt abzustürzen.
- Die Checks selbst können ausfallen. Ein Diagnosewerkzeug kann hängen bleiben, wenn der Treiber hängt, und nach einem Treiber-Upgrade kann eine Binärdatei fehlen, sodass der Check stillschweigend keine Ergebnisse mehr meldet.
Ein Check, der unbemerkt aufhören kann zu laufen, sei schlimmer als gar keiner, weil er falsche Sicherheit vermittle, argumentiert das Unternehmen. Seine Schlussfolgerung: Das Health-System muss davon ausgehen, dass die Hardware lügen und die Werkzeuge zu ihrer Überprüfung kaputtgehen können.
Vier Ebenen und wie die Checks funktionieren
Netflix versteht Zuverlässigkeit als vier Ebenen, von denen jede auffängt, was die darunterliegende nicht erkennen kann:
- Node- und Hardware-Gesundheit: defekte GPUs, Netzwerkadapter, Interconnects, Speicherfehler und thermische Probleme finden und die Maschine anschließend taint-markieren oder neu aufsetzen.
- Scheduler und Plattform: Wiederholungsversuche auf Task- und Job-Ebene, Validierung einer Maschine, bevor sie Arbeit übernimmt, sowie sicheres Entleeren und Recyceln von Maschinen.
- Trainingsschleife: Checkpoints und elastische Worker, damit ein Job den Verlust einer Maschine übersteht.
- Observability: Metriken, Service-Level-Objectives und Fehlerzuordnung über die anderen drei Ebenen hinweg.
Die ersten beiden Ebenen halten Hardwareprobleme von den Jobs fern, die dritte macht unvermeidbare Verluste billig, und die vierte zeigt, ob der Rest funktioniert.
Zu den Checks: Auf jeder GPU-Maschine läuft alle 30 Sekunden ein Agent auf Node-Ebene, der auf dem quelloffenen Kubernetes node-problem-detector basiert. Er wandelt Ergebnisse in Conditions am Kubernetes-Node um, anhand derer Controller entscheiden, ob die Maschine Arbeit annehmen kann. Die GPU-Geräte-Checks nutzen NVIDIAs DCGM für vom Treiber gemeldete Fehlercodes, nicht korrigierbare Speicherfehler, Interconnect-Integrität und thermischen Zustand. Die Netzwerk-Checks prüfen Anzahl und Link-Status der Elastic-Fabric-Adapter-Schnittstellen, die den Verkehr zwischen Maschinen transportieren.
Netflix hebt vier Designentscheidungen hervor:
- Fail closed: Reagiert der Treiber oder das Diagnosewerkzeug nicht, läuft der Check in ein Timeout und markiert die Maschine als nicht gesund.
- Ein Ausweichpfad: Ist das Werkzeug defekt, das die Treiber-Fehlercodes ausliest, liest Netflix das Kernel-Log dmesg direkt aus, sodass keine Xid- oder SXid-Fehler verloren gehen.
- Eine eigene Karte fataler Fehler: Die Fehlerkataloge der Hersteller hinken neueren GPU-Generationen hinterher, deshalb pflegt Netflix eine eigene Zuordnung, welche Codes pro GPU-Familie fatal sind. Eine Generation gibt bei jedem gesunden Boot eine Reihe von Codes aus, die normalerweise fatal sind, was Netflix inzwischen als Rauschen behandelt.
- Keine stillen No-ops: Ein Check schlägt fehl, wenn eine benötigte Abhängigkeit fehlt. Ein Upgrade ließ einmal eine Binärdatei wegfallen, auf die der Netzwerkadapter-Check angewiesen war, und Maschinen mit der falschen Adapterzahl wurden tagelang ausgeliefert, bis langsame Jobs auf sie zurückgeführt wurden.
Was das bedeutet
Der Beitrag, der vor dem Abschnitt zur automatischen Reparatur abbricht, zeigt eine Plattform, die von der Annahme ausgeht, dass Hardware ausfällt und dass auch Überwachungswerkzeuge versagen können. Der erklärte Gewinn für Netflix: mehr nutzbare Arbeit pro GPU, was das Unternehmen damit gleichsetzt, für dieselbe Arbeit weniger auszugeben. Die Details zu Fail closed, Ausweichpfaden und Fehlerkarten pro Generation sind praktische Erfahrungswerte für andere Teams, die große GPU-Flotten betreiben.
Netflix Technology Blog: Reliable GPU compute for large training & inference jobs

