Hardware, Laufzeitumgebungen und Entwicklerökosystem
Pipeline Parallelism
Verteilung aufeinanderfolgender Modellstufen auf mehrere Geräte.
Bei Pipelineparallelität wird das Modell der Länge nach aufgeteilt: Die ersten Schichten liegen auf der ersten Karte, die nächsten auf der zweiten und so fort. Die Daten wandern der Reihe nach durch. Huang et al.
Ohne Aufteilung der Daten stehen die meisten Karten still
Naiv umgesetzt arbeitet immer nur eine Karte, während die anderen warten. Die Lösung besteht darin, jeden Datenstapel in kleinere Portionen zu zerlegen: Sobald die erste Karte ihre Portion fertig hat, gibt sie sie weiter und beginnt mit der nächsten. Dadurch sind alle Stufen gleichzeitig beschäftigt, ähnlich einem Fließband.
Ganz vermeiden lässt sich der Leerlauf nicht, weil das Band am Anfang gefüllt und am Ende geleert werden muss. Der Vorteil gegenüber der Aufteilung einzelner Operationen: Zwischen den Stufen fließen nur die Zwischenergebnisse, also deutlich weniger Daten. Deshalb funktioniert das Verfahren auch über langsamere Verbindungen. Shoeybi et al.
So kannst du dir das vorstellen
Ein Fließband mit vier Stationen. Wenn nur ein Werkstück unterwegs ist, arbeitet immer nur eine Station. Erst mit mehreren Werkstücken hintereinander läuft das Band ausgelastet. Das Bild erklärt die Rolle der Portionierung, es beschreibt keinen konkreten Aufbau.
Was es in der Praxis konkret bedeutet
Im Inferenzbetrieb ist dieses Verfahren die Wahl, wenn Karten über mehrere Server verteilt sind oder die Verbindung zwischen ihnen langsam ist. Innerhalb eines Servers mit schneller Verbindung ist die Aufteilung einzelner Operationen meist besser. Beide lassen sich kombinieren, und Serversoftware bietet dafür getrennte Parameter.
Wo es verwechselt wird
Pipelineparallelität hat nichts mit der Verarbeitungsschleife eines Agenten zu tun, auch wenn beide Pipeline heißen. Und sie beschleunigt eine einzelne Anfrage nicht, sondern erlaubt größere Modelle und höheren Durchsatz.
Verwandte Begriffe
Tensor Parallelism, Data Parallelism, ZeRO, Continuous Batching, VRAM, Compute.