Canary: Eine neue Methode für Allreduce-Operationen
Canary verbessert die Allreduce-Performance, indem es sich dynamisch an die Netzwerküberlastung anpasst.
― 6 min Lesedauer
Inhaltsverzeichnis
Die Allreduce-Operation spielt eine wichtige Rolle in vielen verteilten Anwendungen, wie z.B. beim Training von Deep-Learning-Modellen und wissenschaftlichem Rechnen. Bei einer Allreduce werden Daten von verschiedenen Computern gesammelt, kombiniert und dann an alle teilnehmenden Computer zurückgeschickt. Durch die direkte Kombination der Daten im Netzwerk kann diese Operation viel schneller werden. Bei traditionellen Methoden muss jedes Netzwerkgerät wissen, woher die Daten kommen, was zu Verzögerungen führen kann, wenn einige Geräte zu beschäftigt sind.
Um dieses Problem anzugehen, haben wir eine neue Methode entwickelt, die wir Canary genannt haben. Sie kann Congestion während der Allreduce-Operationen bewältigen. Statt immer einen festen Pfad zu verwenden, nutzt unser Ansatz intelligentes Load Balancing, um die Daten über die am wenigsten belasteten Routen zu senden. So können Netzwerkgeräte, die nicht wissen, woher die Daten kommen, diese trotzdem effizient verarbeiten. Wir haben unsere Methode mit einem speziellen Schalter getestet und Simulationen durchgeführt, die bis zu 40% bessere Leistung im Vergleich zu bestehenden Methoden zeigten.
Bedeutung von Allreduce
Je mehr Computer zusammenarbeiten, desto wichtiger wird, wie gut sie Informationen teilen. Bei einer Allreduce-Operation hat jeder Computer eine Liste von Daten, und all diese Listen müssen basierend auf bestimmten Regeln zusammengeführt werden. Sobald sie kombiniert sind, müssen die Daten an jeden Computer zurückgeschickt werden.
Forschungsergebnisse zeigen, dass Allreduce während des Trainings von Deep Learning einen grossen Teil der Zeit in Anspruch nehmen kann, manchmal geschätzt bei rund 50% in langsameren Netzwerken. Da die Geschwindigkeit der Computer schneller steigt als die der Netzwerke, wird es mit der Zeit noch wichtiger, Daten effizient zu teilen.
Es wurden bereits viele Techniken vorgeschlagen, um Allreduce zu beschleunigen. Einige konzentrieren sich darauf, die Menge der übertragenen Daten zu reduzieren oder effizientere Kommunikationsmuster zu verwenden. Unser Fokus liegt jedoch darauf, wie die Daten direkt im Netzwerk verarbeitet werden.
Traditionelle Methoden und ihre Grenzen
Bestehende Methoden für Allreduce richten normalerweise eine Struktur ein, die als Reduktionsbaum bezeichnet wird, wo die Daten von Computern an den Enden kommen und über bestimmte Switches reisen, um kombiniert zu werden. Diese Einrichtung erfordert, dass die Switches den genauen Pfad im Voraus kennen, was zu Problemen führen kann, wenn der Pfad überlastet ist. Wenn z.B. ein Teil des Netzwerks beschäftigt ist, kann das den gesamten Datenübertragungsprozess verlangsamen, weil die Daten warten müssen, bis es frei wird.
Der einfache Weg, mit Congestion umzugehen, wäre, den Allreduce-Verkehr separat von anderen Arten zu senden. Allerdings löst das das Problem nicht, wenn mehrere Allreduce-Operationen zur gleichen Zeit starten. Da die Anzahl der gleichzeitigen Operationen oft die verfügbaren Pfade übersteigen kann, ist das keine zuverlässige Lösung.
Canary: Ein neuer Ansatz
Um die Situation zu verbessern, haben wir Canary entwickelt, die erste Methode, die auf Congestion während der Allreduce-Operationen achtet. Statt an einer festen Baumstruktur festzuhalten, passt sie die Pfade basierend auf den aktuellen Netzwerkbedingungen mithilfe von intelligentem Load Balancing an. Diese Methode ist dynamisch, was bedeutet, dass sie den Pfad für die Daten ändern kann, während sie gesendet werden, je nachdem, wie beschäftigt die verschiedenen Teile des Netzwerks sind.
Wir haben Simulationen durchgeführt, um zu sehen, wie gut Canary funktioniert. In einem grossen Netzwerk fanden wir heraus, dass bei fehlender Congestion sowohl unsere Methode als auch ältere Methoden ähnlich gut abschneiden. Allerdings konnte unsere Methode bei Congestion im Netzwerk die Leistung aufrechterhalten, während ältere Methoden stark litten.
Designprinzipien von Canary
Das Design von Canary umfasst drei Hauptideen: auf Congestion achten, Ressourcen intelligent verwalten und einen Plan zur Behandlung potenzieller Fehler haben.
Congestion-Bewusstsein
Canary nutzt bestehende Techniken, die viele Netzwerke bereits verwenden, um Daten zu verteilen und überlastete Bereiche zu vermeiden. Statt einfach Pfade nach festen Regeln auszuwählen, sucht es nun die am wenigsten beschäftigten Routen. Das macht es viel effektiver, wenn das Netzwerk unter Druck steht.
Dynamisches Ressourcenmanagement
Traditionelle Methoden reservieren oft eine bestimmte Menge an Speicher, wenn sie eine Allreduce starten, was Ressourcen verschwenden kann, wenn nicht all dieser Speicher verwendet wird. Canary dagegen weist Speicher nur dann zu, wenn er benötigt wird. Das bedeutet, dass mehr Anwendungen gleichzeitig laufen können, ohne auf Ressourcenprobleme zu stossen.
Dynamische Fehlertoleranz
Wenn in bestehenden Systemen ein Switch oder eine Verbindung ausfällt, kann der Prozess zum Stillstand kommen. Canary bietet eine Möglichkeit, weiterzumachen, auch wenn ein Problem auftritt. Durch die Flexibilität und schnellere Fehlererkennung ermöglicht es Canary, dass Operationen fortgesetzt werden, anstatt neu gestartet zu werden.
Implementierung und Test
Wir haben einen Prototyp von Canary mit einer Art programmierbarem Switch gebaut und eine Reihe von Tests durchgeführt. Das half uns, seine Grenzen zu verstehen und gleichzeitig seine Stärken zu zeigen. Die Ergebnisse zeigten, dass Canary mehr Operationen gleichzeitig durchführen konnte als frühere Methoden, ohne langsamer zu werden.
Leistungsanalyse
Wir führten eine weitere Testreihe in einem umfangreicheren Setup durch, indem wir ein simuliertes grosses Netzwerk mit mehreren Computern und Switches verwendeten. Das half uns zu messen, wie Canary im Vergleich zu anderen Methoden abschneidet.
Goodput Ergebnisse
Der erste Test bewertete, wie viel Daten effektiv verarbeitet werden konnten. Wenn es keine Störungen im Netzwerk gab, schnitten alle Methoden vergleichbar gut ab. Als wir jedoch absichtlich Congestion hinzufügten, hielt Canary einen viel höheren Goodput aufrecht, was seine Effektivität im Umgang mit realen Bedingungen zeigt.
Allreduce-Laufzeit bei verschiedenen Datengrössen
Wir schauten uns auch an, wie lange es dauerte, die Allreduce-Operation für verschiedene Datenmengen abzuschliessen. Wir stellten fest, dass Canary selbst bei kleineren Datensätzen schneller war, insbesondere als die Grösse wuchs. Das hebt hervor, dass seine Wirkung insbesondere bei grösseren Datenmengen deutlicher wird.
Allreduces
Mehrere gleichzeitigeIn Umgebungen, in denen mehrere Allreduce-Operationen gleichzeitig ablaufen, haben traditionelle Methoden Schwierigkeiten, die Last zu bewältigen, was zu erheblichen Verzögerungen führt. Canary sticht in diesem Szenario hervor und ermöglicht mehr gleichzeitige Operationen, während die Leistung hoch bleibt.
Herausforderungen und Verbesserungen
Trotz seiner Vorteile hat Canary auch Herausforderungen. Beispielsweise kann es gelegentlich unnötigen Netzwerkverkehr erzeugen, wenn es auf bestimmte Bedingungen stösst. Anpassungen in der Art und Weise, wie es Daten und Routen handhabt, könnten die Effizienz weiter verbessern.
Fazit
Zusammenfassend lässt sich sagen, dass Canary eine reaktionsschnelle und effiziente Möglichkeit ist, Allreduce-Operationen in stark frequentierten Netzwerken zu verwalten. Durch die dynamische Anpassung der Pfade, die Daten nehmen, kann es Verzögerungen durch Congestion vermeiden und gleichzeitig Ressourcen effizient nutzen. Die Ergebnisse aus unserem Prototyp und umfangreichen Simulationen zeigen, dass Canary eine signifikante Verbesserung gegenüber bestehenden Methoden darstellt und gut für zukünftige Computersysteme geeignet ist.
Durch diese Arbeit haben wir gezeigt, dass das Achten auf die aktuellen Netzwerkbedingungen und die dynamische Anpassung der Datenrouten zu einer besseren Leistung führen können, insbesondere in Umgebungen, die hohe Effizienz erfordern. Mit dem technologischen Fortschritt werden Methoden wie Canary wahrscheinlich eine entscheidende Rolle dabei spielen, dass verteilte Anwendungen reibungslos und effektiv laufen können.
Titel: Canary: Congestion-Aware In-Network Allreduce Using Dynamic Trees
Zusammenfassung: The allreduce operation is an essential building block for many distributed applications, ranging from the training of deep learning models to scientific computing. In an allreduce operation, data from multiple hosts is aggregated together and then broadcasted to each host participating in the operation. Allreduce performance can be improved by a factor of two by aggregating the data directly in the network. Switches aggregate data coming from multiple ports before forwarding the partially aggregated result to the next hop. In all existing solutions, each switch needs to know the ports from which it will receive the data to aggregate. However, this forces packets to traverse a predefined set of switches, making these solutions prone to congestion. For this reason, we design Canary, the first congestion-aware in-network allreduce algorithm. Canary uses load balancing algorithms to forward packets on the least congested paths. Because switches do not know from which ports they will receive the data to aggregate, they use timeouts to aggregate the data in a best-effort way. We develop a P4 Canary prototype and evaluate it on a Tofino switch. We then validate Canary through simulations on large networks, showing performance improvements up to 40% compared to the state-of-the-art.
Autoren: Daniele De Sensi, Edgar Costa Molero, Salvatore Di Girolamo, Laurent Vanbever, Torsten Hoefler
Letzte Aktualisierung: 2023-09-28 00:00:00
Sprache: English
Quell-URL: https://arxiv.org/abs/2309.16214
Quell-PDF: https://arxiv.org/pdf/2309.16214
Lizenz: https://creativecommons.org/licenses/by/4.0/
Änderungen: Diese Zusammenfassung wurde mit Unterstützung von AI erstellt und kann Ungenauigkeiten enthalten. Genaue Informationen entnehmen Sie bitte den hier verlinkten Originaldokumenten.
Vielen Dank an arxiv für die Nutzung seiner Open-Access-Interoperabilität.