Datenparallele Skalierung Rechner
Eingaben
| Geräte | 64 |
|---|---|
| Durchsatz je Gerät | 2.000 |
| Skalierungseffizienz | 90 % |
Datenparallele Skalierung Rechner
Schätzt den realen Trainingsdurchsatz über datenparallele Geräte aus dem Durchsatz je Gerät und der Skalierungseffizienz, samt idealem linearem Durchsatz und erreichtem Speedup gegenüber einem einzelnen Gerät.
Eingaben
Cluster
Ergebnisse
Geben Sie einen Wert ein, um die Ergebnisse zu sehen.
Details
Datenparallele Skalierung
Datenparallelität ist der häufigste Weg, ein Modell schneller zu trainieren: Es wird über viele Beschleuniger repliziert, jede Kopie erhält einen Ausschnitt des Batches, und ihre Gradienten werden in jedem Schritt gemittelt. In einer idealen Welt würde der Durchsatz genau proportional zur Gerätezahl steigen. In der Praxis tut er das nicht, weil die Gradienten-Mittelung, die die Kopien synchron hält, Zeit kostet, die mit dem Cluster wächst. Dieser Rechner trennt den idealen linearen Durchsatz vom realistischen Wert nach diesem Verlust und gibt den resultierenden Speedup aus.
Ideal gegenüber tatsächlich
Der ideale Durchsatz ist das, was perfekte Skalierung ergäbe: Jedes Gerät trägt seine volle Einzelrate ohne Overhead bei. Der tatsächliche Durchsatz ist dieser ideale Wert, abgewertet um eine Skalierungseffizienz — einen einzigen Anteil zwischen null und eins, der alle Unvollkommenheiten des parallelen Betriebs aufnimmt. Eine Effizienz von 0,9 bedeutet, dass der Cluster neunzig Prozent des theoretischen Maximums liefert, sodass sich ein Auftrag mit 64 Geräten wie 57,6 perfekt skalierende Geräte verhält.
Die Formel
Mit der Gerätezahl , dem Durchsatz je Gerät und der Skalierungseffizienz ergeben sich der ideale Durchsatz , der tatsächliche Durchsatz und der Speedup gegenüber einem Gerät als
IAS=d⋅v=I⋅E=d⋅EDer Speedup ist schlicht die Gerätezahl skaliert um die Effizienz, da ein einzelnes Gerät mit läuft und der Cluster mit .
Rechenbeispiel
Betrachtet seien 64 Geräte, jedes allein 2.000 Beispiele pro Sekunde haltend, mit einer gemessenen Skalierungseffizienz von 0,9:
IAS=64×2000=128000=128000×0.9=115200=64×0.9=57.6Der Cluster verarbeitet 115.200 Beispiele pro Sekunde — ein Speedup von 57,6× gegenüber einem einzelnen Gerät, nicht die 64×, die perfekte Skalierung bedeuten würde. Die rund 13.000 Beispiele pro Sekunde Unterschied sind der Preis dafür, die Kopien synchron zu halten.
Grenzen
Das Modell verdichtet jede Quelle von Skalierungsverlust in einen Effizienzwert, den der Nutzer angibt; es sagt diesen Wert nicht aus Verbindungsbandbreite, Modellgröße oder Batch voraus. Die Effizienz ist zudem selten konstant — sie fällt in der Regel mit hinzugefügten Geräten, da das Gradienten-All-Reduce wächst, während die Rechenleistung je Gerät fest bleibt —, sodass ein bei einer Cluster-Größe gemessener Wert nicht bei einer anderen angenommen werden sollte. Reine Datenparallelität wird hier vorausgesetzt; die Batch-Folgen dieser Replikation behandelt der Effektive Batch-Größe Rechner, und den eigenen Overhead des Aufteilens eines Modells über Pipeline-Stufen der Pipeline-Parallel-Bubble Rechner.
Häufig gestellte Fragen (FAQ)
Was ist die Skalierungseffizienz?
Die Skalierungseffizienz ist das Verhältnis des Durchsatzes, den ein Cluster tatsächlich erreicht, zu dem Durchsatz, den er erreichte, wenn jedes hinzugefügte Gerät seine volle Einzelrate beitrüge. Eine Effizienz von 0,9 bedeutet, dass sich 64 Geräte wie 57,6 ideale verhalten.
Sie fasst jede Quelle unvollkommener Skalierung — Gradienten-Kommunikation, Synchronisationswartezeiten und ungleiche Arbeit — in einem einzigen Anteil zwischen null und eins zusammen und ist die übliche Art anzugeben, wie gut ein Trainingsauftrag parallelisiert.
Warum ist die Skalierung nicht linear?
Jeder Optimierer-Schritt im datenparallelen Training erfordert ein All-Reduce, das Gradienten über alle Geräte austauscht und mittelt, und diese Kommunikation wächst mit dem Cluster, während die nützliche Rechenleistung je Gerät fest bleibt.
Kommen Synchronisationsbarrieren, Nachzügler, die die Gruppe aufhalten, und ein schrumpfendes Verhältnis von Rechenleistung zu Kommunikation mit zunehmender Gerätezahl hinzu, trägt das marginale Gerät weniger bei als das erste. Das Ergebnis ist sublineare Skalierung, hier durch eine Effizienz unter eins erfasst.
Wie lässt sich die Skalierungseffizienz verbessern?
Die üblichen Hebel sind, die zwischen den Kommunikationen geleistete Rechenarbeit zu erhöhen — größere Batches je Gerät oder Gradient Accumulation —, sodass die feste All-Reduce-Kosten über mehr Arbeit amortisiert werden, sowie schnellere Verbindungen oder topologiebewusste kollektive Algorithmen, um die Kommunikation selbst zu senken.
Die Gradienten-Kommunikation mit dem Rückwärtsdurchlauf zu überlappen und Nachzügler durch ausgewogene Datenaufteilung zu verringern, hilft ebenfalls. Eine Effizienz, die mit hinzugefügten Geräten stabil bleibt, ist das Zeichen einer gut abgestimmten parallelen Konfiguration.
Haftungsausschluss
Dies ist ein Modell erster Ordnung, das den Skalierungsverlust als einen vom Nutzer angegebenen Effizienzanteil erfasst. Es leitet diesen Anteil nicht aus Verbindungsbandbreite, Modellgröße oder Batch ab und setzt reine Datenparallelität voraus. Die Effizienz ist auf dem eigenen Cluster zu messen, statt einen festen Wert anzunehmen.