Pipeline-Parallel-Bubble Rechner
Eingaben
| Pipeline-Stufen | 8 |
|---|---|
| Microbatches | 32 |
Pipeline-Parallel-Bubble Rechner
Berechnet den Anteil der Pipeline-Bubble und die daraus folgende Recheneffizienz für Pipeline-paralleles Training aus der Zahl der Pipeline-Stufen und der Zahl der Microbatches je Batch.
Eingaben
Pipeline
Ergebnisse
Geben Sie einen Wert ein, um die Ergebnisse zu sehen.
Pipeline-Parallel-Bubble
Pipeline-Parallelität teilt ein Modell in aufeinanderfolgende Stufen und platziert jede auf einer anderen Gerätegruppe, sodass ein Schichtblock auf dem ersten Gerät seine Ausgabe an das nächste übergibt und so weiter. Sie erlaubt einem Modell, das für einen Beschleuniger zu groß ist, sich über mehrere zu erstrecken, doch sie zahlt eine charakteristische Abgabe: Die Stufen können nicht alle zugleich beschäftigt sein. Zu Beginn eines Batches stehen die späteren Stufen leer und warten, bis die Daten sie erreichen, und am Ende fallen die früheren Stufen leer, während die letzten Microbatches auslaufen. Dieses leere Intervall ist die Pipeline-Bubble, und dieser Rechner quantifiziert sie.
Woher die Bubble stammt
Man stelle sich ein Fließband mit acht Stationen vor. Das erste Stück muss die Stationen eins bis sieben durchlaufen, bevor Station acht etwas zu tun hat; bis dahin sind sieben Schritte vergangen, in denen das Band nicht voll ausgelastet war. Dasselbe geschieht umgekehrt, wenn sich das Band leert. Für eine Pipeline mit Stufen kostet dieses Aufwärmen und Abkühlen Schritte, unabhängig davon, wie viel Arbeit folgt. Ob diese feste Kosten ins Gewicht fällt, hängt davon ab, wie viele Microbatches dahinter durchströmen.
Die Formel
Mit Pipeline-Stufen und Microbatches ergeben sich der Bubble-Anteil und die ergänzende Effizienz für einen üblichen synchronen Zeitplan als
BE=m+p−1p−1=m+p−1mDer Nenner ist die Gesamtzahl der Pipeline-Schritte — die nützlichen Microbatches plus die Schritte Füllen und Leeren. Die beiden Brüche ergeben stets zusammen eins, da jeder Schritt entweder nützliche Arbeit oder Bubble ist.
Rechenbeispiel
Betrachtet sei eine 8-stufige Pipeline, gespeist mit 32 Microbatches je Batch:
BE=32+8−18−1=397≈0.179=17.9%=3932≈0.821=82.1%Fast achtzehn Prozent des Zeitplans gehen an die Bubble verloren, was etwa zweiundachtzig Prozent für nützliche Rechenleistung übrig lässt. Eine Anhebung der Microbatch-Zahl auf 64 würde die Bubble auf rund elf Prozent senken, da das feste Füllen über sieben Schritte nun über mehr Arbeit verteilt wird.
Grenzen
Die Formel setzt den üblichen synchronen Zeitplan, gleich teure Stufen und eine Kommunikation zwischen den Stufen voraus, die klein genug ist, um sie zu vernachlässigen. Verschachtelte Zeitpläne, die jedem Gerät mehrere nicht zusammenhängende Stufenblöcke zuweisen, senken die Bubble unter diesen Wert, während ungleiche Stufenkosten oder schwere Übertragungen zwischen den Stufen die reale Effizienz verschlechtern können. Die Microbatch-Zahl hier ist zudem dieselbe Größe, die über den globalen Batch das Optimierer-Verhalten bestimmt — siehe den Effektive Batch-Größe Rechner —, und Pipeline-Parallelität wird meist mit Datenparallelität kombiniert, deren eigenen Skalierungsverlust der Datenparallele Skalierung Rechner behandelt.
Häufig gestellte Fragen (FAQ)
Was ist die Pipeline-Bubble?
Bei der Pipeline-Parallelität wird das Modell in aufeinanderfolgende Stufen auf unterschiedlichen Geräten aufgeteilt, und Microbatches fließen wie an einem Fließband durch sie hindurch. Zu Beginn jedes Batches hat nur die erste Stufe Arbeit, während die übrigen auf eintreffende Daten warten, und am Ende fallen die frühen Stufen leer, während die letzten fertig werden. Diese leere Füll- und Leerzeit ist die Bubble.
Bei einem synchronen Zeitplan mit gleich vielen Vorwärts- und Rückwärtsdurchläufen ist die Bubble die Stufen-minus-eins Schritte Aufwärmen, verteilt über den ganzen Zeitplan.
Wie wird die Bubble verringert?
Der unmittelbare Hebel ist, den Batch in mehr Microbatches zu teilen: Die Füll- und Leerkosten sind auf Stufen-minus-eins Schritte festgelegt, sodass eine feinere Aufteilung des Batches sie über mehr nützliche Arbeit amortisiert und den Bubble-Anteil schrumpfen lässt.
Verschachtelte und andere fortgeschrittene Zeitpläne senken sie weiter, indem sie jedem Gerät mehrere nicht zusammenhängende Stufen zuweisen. Der Abtausch ist, dass mehr Microbatches eine kleinere Größe je Microbatch bedeuten, was die Kernel-Effizienz beeinträchtigen kann, sodass die Bubble verringert und nicht beseitigt wird.
Wie wirken Stufen und Microbatches zusammen?
Mehr Stufen vertiefen die Pipeline, was die Füll- und Leerkosten erhöht und so die Bubble bei fester Microbatch-Zahl vergrößert. Mehr Microbatches bewirken das Gegenteil und verdünnen diese feste Kosten.
Eine nützliche Faustregel ist, die Microbatch-Zahl deutlich über der Stufenzahl zu halten — oft um den Faktor vier oder mehr —, damit die Bubble klein bleibt. Der Bubble-Anteil und die Effizienz ergeben stets zusammen eins, sodass eine Verbesserung des einen das andere verbessert.
Haftungsausschluss
Dies verwendet die übliche Formel für die synchrone Pipeline-Bubble, die gleich teure Stufen, einen einfachen Füll- und Leer-Zeitplan und vernachlässigbare Kommunikation zwischen den Stufen voraussetzt. Verschachtelte Zeitpläne und ungleiche Stufenkosten verändern das Ergebnis. Es ist als Planungsschätzung zu verstehen, nicht als Garantie für die gemessene Effizienz.