KRYPTO OHNE KYCGPU-Miete · 3, 7 oder 30 Tage
Capordia
Sprache: Deutsch
Menü
Betrieb / Parallelismus

Wählen Sie, was gemeinsam voranschreitet, bevor Sie die Karten zählen.

Parallele Verarbeitung deckt zwei unterschiedliche Bedürfnisse ab: mehr unabhängige Aufgaben abschließen oder dieselbe Arbeit auf mehrere GPUs aufteilen. Stellen Sie zuerst fest, was geteilt, synchronisiert oder zusammengeführt werden muss. Jede Karte behält ihren eigenen Speicher, und die Topologie des Servers ist noch zu prüfen. Die richtige Wahl hängt von der Software und vom erwarteten Ergebnis ab; mehr Karten versprechen weder einen einheitlichen Speicher noch eine halbierte Laufzeit.

01

Die Arbeitseinheit definieren, die sich trennen lässt

Schreiben Sie auf, was ein akzeptiertes Ergebnis ausmacht: ein Bild, ein verarbeitetes Dokument, eine Reihe von Simulationen oder ein finaler Trainingszustand. Fragen Sie anschließend, ob eine Einheit berechnet werden kann, ohne auf die anderen zu warten. Zwei Dokumente können während ihrer Verarbeitung unabhängig sein und danach von einem gemeinsamen Schritt zum Aufbau des Index abhängen. Die Aufteilung muss diesen zweiten Schritt beschreiben, statt ihn in einem Parallelisierungsversprechen zu vergessen.

Unterscheiden Sie technische Unabhängigkeit von fachlicher Unabhängigkeit. Eine Ausgabe kann ohne technischen Austausch entstehen und dennoch unbrauchbar bleiben, bis der gesamte Stapel validiert ist. Benennen Sie daher die Recheneinheit, die Lieferungseinheit und die Regel für die Zusammenführung. Diese gemeinsame Sprache verhindert, dass der Einkauf Karten zählt, während das Anwendungsteam Instanzen oder Fragmente desselben Modells zählt.

02

Zwischen unabhängigen Arbeiten und enger Zusammenarbeit wählen

Bei unabhängigen Aufgaben erhält jeder Prozess seine eigenen Eingaben und erzeugt eine eindeutig identifizierbare Ausgabe. Eine andere Karte kann eine andere Aufgabe ohne Synchronisation bei jedem Schritt ausführen. Dieser Modus ist interessant, wenn das Ziel die Menge ist, die in einem Zeitfenster abgeschlossen wird. Eine einzelne Aufgabe wird dadurch nicht automatisch beschleunigt, und die Konkurrenz um Daten, Speicher oder Lizenzen ist weiterhin zu prüfen.

Bei kooperativer Arbeit tauschen die Geräte Daten aus oder warten auf ein Zwischenergebnis. Das Programm muss diese Aufteilung bewältigen. Der CUDA-Leitfaden erklärt, dass die Nutzung mehrerer GPUs Kontexte, Datenverteilung, Starts und Kommunikation umfasst. Das sind Eigenschaften des Softwarepfads und des beobachteten Systems; der Name einer Karte aus dem Katalog belegt nicht, dass dieser Pfad bereits existiert.

Erst die Struktur wählen, dann die Anzahl der Karten
FrageUnabhängige ArbeitenKooperative Arbeit
Was erhält eine Karte?Eine vollständige, eigenständige AufgabeEinen Teil oder eine Replik der Arbeit
Was muss koordiniert werden?Zuweisung der Eingaben und Einsammeln der AusgabenAustausch, Reihenfolge und Synchronisationen
Welcher Nutzen ist zu prüfen?Anzahl akzeptierter Ergebnisse pro ZeitfensterIdentisches Ergebnis mit angepasster Dauer oder Kapazität
Welcher Fehler ist zu erwarten?Eine einzelne Aufgabe oder VeröffentlichungDie Auswirkung eines nicht verfügbaren Teilnehmers auf die Gruppe
03

Replikation und Speicheraufteilung nicht verwechseln

Mehrere Kopien eines Modells bedeuten nicht, dass seine Parameter zwischen den Karten aufgeteilt werden. PyTorch DistributedDataParallel synchronisiert die Gradienten zwischen Prozessen, die ihre lokalen Modelle trainieren. Dieser Ansatz erlaubt daher allein aufgrund seines Namens keine Schlussfolgerung, dass ein Modell, das für eine Karte zu groß ist, auf mehreren Platz findet. Ein Partitionierungsmechanismus erfordert seine eigene Dokumentation und seine eigene Validierung.

Der Speicher jeder Karte muss abdecken, was die Software tatsächlich dort ablegt: Daten, Modellzustand, temporäre Bereiche und eventuelle Austauschvorgänge. Die Spitze kann mit den Einstellungen und der Verarbeitungsphase variieren. Erfassen Sie sie pro Gerät. Eine Summe nominaler Kapazitäten verdeckt ein Ungleichgewicht, bei dem einer Karte der Speicher ausgeht, während die anderen welchen behalten. Die Gesamtkapazität des Stapels reicht nicht aus, um das Szenario zu akzeptieren.

04

Fiktives Beispiel: acht unabhängige Konvertierungen aufteilen

Das fiktive Team „Index der Werke“ bereitet acht Dokumentkonvertierungen vor. In seiner Arbeitshypothese belegt jede Konvertierung eine Karte für zwölf Minuten, einschließlich Laden und Ausgabe. Eine Aufgabe passt allein auf die Karte, und vor der finalen Zusammenführung ist kein Austausch nötig. Diese Zeiten dienen ausschließlich dem Aufbau der Überlegung: Sie beschreiben weder eine Ausführung noch eine von Capordia angebotene GPU-Leistung.

Mit einer Karte entsprechen acht aufeinanderfolgende Aufgaben 8 × 12 = 96 Minuten. Mit zwei Karten und einer ausgewogenen Aufteilung von je vier Aufgaben dauert der parallelisierbare Teil theoretisch 48 Minuten. Wenn die finale Montage zehn Minuten auf einem separaten Arbeitsplatz erfordert, beträgt der vollständige Pfad jeweils 106 bzw. 58 Minuten, ohne Wartezeit vor dem Start. Diese Berechnung setzt voraus, dass die beiden Karten ihre gegenseitigen Ladevorgänge nicht verlangsamen.

Illustrative Berechnung, nicht gemessen — acht Aufgaben von zwölf Minuten und zehn Minuten Montage
OrganisationParallelisierbarer TeilMontageBerechnete Dauer
Eine Karte, acht Aufgaben96 min10 min106 min
Zwei Karten, je vier Aufgaben48 min10 min58 min
05

Sichtbar machen, was diesen theoretischen Gewinn zunichtemachen kann

Im selben Beispiel sind die Dokumente möglicherweise nicht gleich groß. Wenn man die vier längsten einer Karte zuweist, wartet die andere am Ende des Ablaufs. Eine Verteilung nach Verfügbarkeit kann die Balance verbessern, erfordert aber einen zuverlässigen Zuweisungsmechanismus und eine Aufnahmerichtlinie. Der Leitfaden zur Warteschlange behandelt diese Organisation; die vorliegende Berechnung belegt nicht, dass sie bereits eingerichtet ist.

Auch der Speicher kann zur dominierenden gemeinsamen Ressource werden. Zwei Prozesse, die dieselben Daten lesen oder gleichzeitig große Ergebnisse schreiben, verfügen nicht zwangsläufig über den doppelten Durchsatz. Prüfen Sie ebenso die Nebenläufigkeitsgrenzen der Werkzeuge und Lizenzen. Wenn der nicht parallelisierbare Teil zunimmt, erstellen Sie den vollständigen Zeitplan neu. Der in einer Phase gewonnene Zeit darf nicht eine an anderer Stelle hinzugefügte Verzögerung verdecken.

06

Für verteilte Arbeit die tatsächliche Topologie erhalten

Fragen Sie, welche Karten sichtbar sind, wie sie kommunizieren und welche Host-Ressourcen ihre Prozesse teilen. Prüfen Sie die aus der verwendeten Umgebung zugänglichen Geräte, nicht nur aus einer Administratorkonsole. CUDA weist darauf hin, dass der Zugriff auf den Speicher einer anderen GPU unter anderem von der Topologie und den Fähigkeiten des Systems abhängt. Die Unterstützung einer Funktion durch ein Modell belegt nicht das Vorhandensein der erwarteten Verbindung auf der Maschine.

Behalten Sie ein einfaches Schema des Datenflusses bei: Eingabe, betroffene Karte oder betroffener Prozess, Austausch, finale Zusammenführung und Ausgabe. Bestimmen Sie für jeden Pfeil, ob er den Host-Speicher, eine Verbindung zwischen GPUs oder das Netzwerk durchläuft. Diese Ansicht dient der Auswahl der Empfangskontrollen. Sie erzwingt keine bestimmte Technologie und verwandelt eine Multi-GPU-Anfrage nicht in ein Versprechen einer bestimmten Topologie.

07

Zwei Organisationen vergleichen, ohne das erwartete Ergebnis zu verschieben

Bereiten Sie ein kleines repräsentatives Korpus vor und führen Sie auf Ihrem autorisierten Ziel zunächst eine Referenzorganisation und dann die Kandidatenorganisation aus. Behalten Sie Versionen, Einstellungen, erwartete Qualität und Montageregeln bei. Vergleichen Sie die Zeit bis zum akzeptierten Ergebnis, die Speicherspitze jeder Karte, die Fehler und den Verbrauch gemeinsamer Ressourcen. Trennen Sie Beobachtungen von Schätzungen; ein vorgeschlagener Befehl ist kein bereits erzieltes Ergebnis.

Prüfen Sie insbesondere, dass die Anzahl akzeptierter Ausgaben gleich bleibt und keine Eingabe ausgelassen wird. Wählen Sie für eine Berechnung, die empfindlich auf die Reihenfolge der Operationen reagiert, eine begründete Toleranz statt einer willkürlichen Gleichheit. Eine Organisation, die schneller fertig wird, aber eine andere Qualität liefert, beantwortet ein anderes Problem. Behalten Sie auch einen Fall bei, in dem die Aufteilung nicht vorteilhaft ist: Diese Grenze erklärt die Wahl besser als eine Rangfolge von Karten ohne gemeinsame Last.

08

Die Wahl in angeforderte Kapazität übersetzen

Schreiben Sie abschließend die Anzahl gleichzeitiger Aufgaben, die für jede erforderlichen Karten und die unverzichtbaren Bedingungen auf. Eine auf zwei Karten verteilte Aufgabe und zwei Aufgaben auf einer Karte stellen zwei verschiedene Organisationen dar, selbst wenn die Gesamtzahl der Karten gleich ist. Die gewählte Konfiguration muss die erforderliche Organisation ermöglichen; gehen Sie nicht von der nominellen Gesamtzahl aus, um ihr anschließend eine Verwendung anzudichten.

Der Katalog weist Kartenkontingente aus. Ein B200-Kontingent enthält zwei GPUs mit je 180 GB; diese Zusammensetzung garantiert nicht, dass eine Software sie als einen einzigen Speicher nutzt. Der nächste Schritt besteht darin, den Bedarf dem Kontingent zuzuordnen und dann die tatsächlich benötigten Eigenschaften zu übernehmen. Zeitplan, Kosten und Entscheidung bleiben vorläufig, solange die entscheidenden Bedingungen nicht geprüft sind.

Fragen zur Entscheidung

Sind zwei GPUs immer schneller als eine einzige?

Nein. Der Gewinn hängt vom parallelisierbaren Anteil, vom Austausch und von gemeinsamen Ressourcen ab. Bei einer isolierten, nicht aufteilbaren Aufgabe kann eine zweite Karte ungenutzt bleiben. Vergleichen Sie die Zeit bis zum selben akzeptierten Ergebnis anhand eines expliziten Protokolls.

Verdoppelt ein Kontingent aus zwei Karten den für mein Programm verfügbaren Speicher?

Nicht automatisch. Jedes Gerät besitzt seinen eigenen Speicher, und das Programm muss seinen Zustand oder seine Daten aufteilen. Die Replikation eines Modells kann dagegen einen großen Teil dieses Zustands duplizieren. Prüfen Sie den Softwaremechanismus und die Spitzenlast pro Karte.

Wann sollte man mit unabhängigen Aufgaben beginnen?

Wenn jede Einheit separat berechnet werden kann und der angestrebte Nutzen darin besteht, mehr Einheiten abzuschließen. Dennoch müssen die Zuweisung, der Lastausgleich und die abschließende Zusammenführung validiert werden, ohne anzunehmen, dass Speicher und Lizenzen automatisch mitziehen.

VORGANG FORTSETZENKonfigurationen prüfenHäufige Fragen ansehen