Hardware, Laufzeitumgebungen und Entwicklerökosystem
Tensor Parallelism
Aufteilung von Tensoroperationen eines Modells auf mehrere Geräte.
Bei Tensorparallelität wird eine einzelne Rechenoperation auf mehrere Beschleuniger aufgeteilt. Eine große Matrixmultiplikation wird in Spalten oder Zeilen zerlegt, jede Karte rechnet ihren Teil, und die Teilergebnisse werden zusammengeführt. Das Modell selbst liegt damit verteilt vor, nicht als Kopie. Shoeybi et al.
Der Preis ist ständige Kommunikation
Weil die Teilergebnisse innerhalb jeder Schicht zusammengeführt werden müssen, tauschen die Karten bei jedem Schritt Daten aus, nicht nur am Ende. Das funktioniert nur mit sehr schneller Verbindung zwischen den Karten, üblicherweise innerhalb eines Servers. Über normale Netzwerkverbindungen bricht die Leistung ein.
Im Inferenzbetrieb ist das Verfahren die übliche Antwort auf Modelle, die nicht auf eine Karte passen. Serversoftware stellt dafür einen Parameter bereit, mit dem die Zahl der beteiligten Karten festgelegt wird. vLLM
So kannst du dir das vorstellen
Vier Personen, die gemeinsam an einer langen Tabelle rechnen, jede an ihrem Abschnitt, und nach jeder Zeile Zwischensummen austauschen. Im selben Raum geht das gut, über Telefon nicht mehr. Das Bild erklärt die Abhängigkeit von der Verbindung, es beschreibt keinen konkreten Aufbau.
Was es in der Praxis konkret bedeutet
Setze die Zahl der Karten so niedrig wie möglich: Wenn ein Modell auf zwei Karten passt, nimm zwei statt vier, denn jede zusätzliche Karte bringt mehr Abstimmungsaufwand als Rechenleistung. Achte außerdem darauf, dass die Karten im selben Server mit schneller Verbindung stecken. Über mehrere Server verteilt ist Tensorparallelität selten sinnvoll.
Wo es verwechselt wird
Tensorparallelität verteilt eine Operation, Pipelineparallelität verteilt aufeinanderfolgende Schichten. Beide werden kombiniert, lösen aber verschiedene Probleme. Und keine der beiden macht die Ausgabe für eine einzelne Anfrage stark schneller; sie machen große Modelle überhaupt ausführbar.
Verwandte Begriffe
Pipeline Parallelism, Data Parallelism, ZeRO, vLLM, VRAM, Sharded Weights.