Wie Yandex QoS in InfiniBand für ML-Cluster implementiert hat 🚦🧠

Yandex hat praktische Erfahrungen geteilt, wie sie gelernt haben, ML-Traffic in InfiniBand-Netzwerken von GPU-Clustern zu priorisieren, damit wichtige Aufgaben nicht durch benachbarte Starts in der Geschwindigkeit einbrechen.

Wichtige Punkte:

InfiniBand verwendet einen zentralisierten Subnet Manager (OpenSM), der Adressierung, Routing und QoS-Richtlinien über die Kombination von Service Level (SL) und Virtual Lanes (VL) verwaltet.

QoS funktioniert so: Traffic verschiedener Typen wird in verschiedene SL „eingefärbt“, die auf VL mit unterschiedlicher Priorität und Gewichtung abgebildet werden; im Testschema erhält SL1 80% der Bandbreite, SL0 20%.

In den YATI-Clustern teilen sich mehrere Trainings verschiedener Benutzer eine InfiniBand-Fabric, daher werden große und kritische Trainings ohne QoS leicht von parallelen Aufgaben „überflutet“.

Bei einem FatTree-Cluster mit HDR sahen sie zunächst keine Wirkung, bis sie künstlich eine Überzeichnung erzeugten (Deaktivierung einiger Spine-Switches), woraufhin der SL1-Traffic bei Konkurrenz tatsächlich begann, SL0 zu verdrängen.

Bei DragonFly+ ist es komplizierter: Dort verwendet das Routing verschiedene VL für den direkten Pfad und +1/+3 Hop, um Credit-Loop-Deadlocks in einem verlustfreien Netzwerk zu vermeiden, daher wird die SL→VL-Abbildung Teil der Control Plane und die verfügbare Anzahl an „Farben“ reduziert sich faktisch.

Letztendlich hat Yandex QoS zu einem produktiven Mechanismus gemacht: Der Trainingsplaner markiert große Trainings (nach GPU-Schwellenwert pro Cluster, für jeden Cluster konfigurierbar) als priorisiert, ein Agent auf dem Host färbt deren Traffic in SL1 um, der Rest geht in SL0 – selbst wenn der Benutzer versucht hat, eigene SL zu setzen.

Als nächstes planen sie, denselben Ansatz zur Trennung von Training und Multi-Host-Inferenz zu verwenden, wobei Echtzeit-Inferenz über das Netzwerk priorisiert wird.

QoS in InfiniBand ist nicht nur „Warteschlangen am Port“, sondern eine enge Verknüpfung mit Topologie und Routing-Engine (insbesondere bei DragonFly+), sonst erhält man leicht entweder keine Wirkung oder das Risiko von Deadlocks.

#yandex #infiniband #qos #gpu #ml #mlops #networking #dragonflyplus #cloud #infrastructure