Deine GPU ist nicht zu klein… dein Setup ist das Problem

BBetter Stack
컴퓨터/소프트웨어자격증/평생교육AI/미래기술

Transcript

00:00:00Das ist DeepSpeed, Microsofts Open-Source-Library, die direkt in PyTorch integriert wird und das Speicherproblem löst.
00:00:07Damit lassen sich Modelle, die normalerweise sofort abstürzen, auf einer einzigen GPU trainieren, ohne sie zu überlasten. Große Modelle scheitern nicht an mangelnder Geschwindigkeit.
00:00:14Sie scheitern, weil Optimizer-Zustände, Gradienten und Parameter den VRAM sprengen. DeepSpeeds Geheimnis ist ZeRO, das die Trainingszustände aufteilt (sharding).
00:00:23So speichert man nicht überall die gleichen Daten doppelt. Wir veröffentlichen ständig neue Videos, also abonniert am besten den Kanal.
00:00:30Legen wir direkt los. Da ich an einem Mac mit M4 Pro sitze, lasse ich alles in Google Colab laufen.
00:00:40Mir fehlen hier also die Nvidia-GPUs, was es etwas schwieriger macht, aber über Colab geht es trotzdem.
00:00:46Zuerst prüfe ich kurz meine GPUs, dann können wir alle nötigen Pakete per Pip installieren.
00:00:51Ich installiere PyTorch, Hugging Face und DeepSpeed. Danach mache ich mit „ds_report“ einen Check von CUDA und dem Compiler.
00:00:59Noch ein paar weitere Installationen, damit alles reibungslos läuft.
00:01:02Dann erstellen wir unsere JSON-Konfigurationsdatei für DeepSpeed. Diese Datei ist das Herzstück des Ganzen.
00:01:09Wir beginnen mit ZeRO Stage 2, wodurch Optimizer-Zustände und Gradienten über die GPUs verteilt werden.
00:01:14Das reduziert den Speicherverbrauch massiv, während die Modellparameter repliziert bleiben. Zerbrecht euch nicht den Kopf darüber, mich hat das wahnsinnig gemacht.
00:01:22Haltet euch einfach an die offizielle Dokumentation, ändert immer nur eine Sache gleichzeitig und widersteht dem Drang, willkürliche Configs hinzuzufügen.
00:01:28Die passende Konfiguration findet ihr sowohl bei Hugging Face als auch in der DeepSpeed-Doku.
00:01:34Auch den Großteil meines Python-Skripts habe ich aus diesen Quellen übernommen.
00:01:37Ich habe jedoch ein paar Anpassungen vorgenommen, damit mein System – speziell das Mac-Setup – besser damit klarkommt.
00:01:42Falls dieser Schritt fehlschlägt, stoppt hier. Die meisten DeepSpeed-Probleme liegen an CUDA-Konflikten, nicht am Modell selbst.
00:01:48Wir lassen das jetzt alles laufen und schauen zu, wie es funktioniert.
00:01:51Für dieses Beispiel verwende ich einen kleinen Datensatz, damit es schneller geht.
00:01:58Und da haben wir es – nach ein paar Minuten sehen wir die einzelnen Schritte und auch die GPU-Speicherspitzen.
00:02:03Zugegeben, der Training-Loss ist bei diesem Durchlauf nicht wirklich gesunken.
00:02:08Aber für bessere Ergebnisse könnten wir das Ganze optimieren oder einen größeren Datensatz nutzen.
00:02:13Hier ist der Punkt, an dem viele denken, sie hätten es geschafft, aber dann doch eine „Out of Memory“-Fehlermeldung bekommen.
00:02:16ZeRO arbeitet in Stufen. Jede Stufe beantwortet die Frage: Was darf ich aufhören, auf einer einzelnen GPU zu speichern?
00:02:24Stage 1 verteilt die Optimizer-Zustände, Stage 2 macht dasselbe zusätzlich für die Gradienten.
00:02:30Damit spart man bereits massiv an den Daten, die heimlich euren Speicher fressen. Dann gibt es noch ZeRO Stage 3.
00:02:36Das ist die wichtigste Stufe: Sie verteilt Optimizer-Zustände, Gradienten UND Parameter.
00:02:40Das bringt den größten Speichergewinn, aber selbst das reicht manchmal nicht aus.
00:02:45Wenn das Modell immer noch nicht passt, kann ZeRO-Infinity Daten auf die CPU oder sogar auf NVMe auslagern.
00:02:50Man tauscht zwar Geschwindigkeit gegen Skalierbarkeit ein, aber oft ist der eigentliche Erfolg, das Modell überhaupt zum Laufen zu bringen.
00:02:56Vielleicht denkt ihr jetzt: „Schön und gut, aber Speicher ist nicht mein einziges Problem.“ Stimmt, DeepSpeed unterstützt auch 3D-Parallelismus.
00:03:04Das umfasst Daten-, Pipeline- und Tensor-Parallelismus sowie native Unterstützung für Mixture-of-Experts-Modelle.
00:03:09So fressen euch spärlich besetzte (sparse) Modelle nicht bei der Rechenleistung auf.
00:03:12Hier bekommt man also echte Optionen. DeepSpeed lässt sich hervorragend mit Hugging Face und Accelerate kombinieren.
00:03:19Man muss also nicht alles von Grund auf neu bauen.
00:03:21Im Grunde pickt man sich raus, was man braucht. Benchmarks hängen natürlich stark vom jeweiligen Setup ab.
00:03:27Traut also nicht blind jeder hohen Zahl. Ich habe es ein paar Mal versucht.
00:03:30Aber wie gesagt, auf meinem M4 Pro konnte ich mit diesem Basismodell keine weiteren Optimierungen erzielen.
00:03:36Es ist schwer zu sagen, aber andere DeepSpeed-Projekte haben enorme Durchsatzsteigerungen gezeigt.
00:03:41Besonders wenn der Speicher der Flaschenhals war, kann das unter Windows oder Linux einen riesigen Unterschied machen.
00:03:46Am besten probiert ihr es einfach selbst aus. Startet mit den offiziellen Konfigurationen.
00:03:51So habe ich es gemacht: Leicht an den Mac angepasst und dann die CUDA-Probleme behoben.
00:03:56Achtet auf den RAM der CPU, wenn ihr Offloading aktiviert, und falls ihr später auf Multi-GPU umsteigt.
00:04:01DeepSpeed ist im Grunde der „Ich weigere mich, heute kein Speicher mehr zu haben“-Knopf.
00:04:07Sobald man ZeRO und Offloading versteht, lassen sich riesige Modelle praktisch auf jeder Hardware nutzen.
00:04:14Die Einrichtung kann am Anfang definitiv verwirrend sein.
00:04:17Abonniert den Kanal, wenn euch das GPU-Zeit gespart hat oder wenn ihr solche Entwickler-Tools liebt. Bis zum nächsten Video!

Key Takeaway

DeepSpeed ermöglicht durch intelligente Speicherverteilung und Offloading das Training riesiger KI-Modelle auf Hardware, die normalerweise aufgrund von VRAM-Mangel kapitulieren würde.

Highlights

Einführung in DeepSpeed als Microsofts Open-Source-Lösung zur VRAM-Optimierung in PyTorch

Erklärung der ZeRO-Technologie (Zero Redundancy Optimizer) zur effizienten Verteilung von Trainingszuständen

Praktische Demonstration der Einrichtung in Google Colab trotz Hardware-Einschränkungen am Mac

Detaillierte Unterscheidung der ZeRO-Stufen (Stage 1 bis 3) für maximale Speichereinsparung

Vorstellung von ZeRO-Infinity für das Offloading von Daten auf CPU oder NVMe-Speicher

Hinweis auf 3D-Parallelismus und Unterstützung für Mixture-of-Experts-Modelle

Timeline

Einführung in DeepSpeed und das Speicherproblem

Der Sprecher stellt DeepSpeed als Microsofts Lösung für Speicherengpässe beim Training großer KI-Modelle vor. Er erklärt, dass Modelle oft nicht an mangelnder Rechenleistung, sondern an den massiven Anforderungen für Optimizer-Zustände und Parameter scheitern. Das Kernstück der Library ist die ZeRO-Technologie, welche diese Daten aufteilt, um Redundanzen im VRAM zu vermeiden. Durch dieses Sharding können Modelle, die sonst sofort abstürzen würden, stabil auf einer GPU laufen. Dieser Abschnitt verdeutlicht, warum effizientes Speichermanagement die Grundlage für modernes Deep Learning bildet.

Setup und Installation in Google Colab

Da die lokale Hardware eines Mac M4 Pro für Nvidia-basierte DeepSpeed-Workflows ungeeignet ist, wechselt der Creator zur Demonstration in Google Colab. Er führt die Zuschauer durch den Installationsprozess der notwendigen Pakete wie PyTorch, Hugging Face und DeepSpeed selbst. Ein wichtiger Schritt ist die Nutzung von "ds_report", um die Kompatibilität von CUDA und dem Compiler zu verifizieren. Dieser technische Vorlauf zeigt, dass die richtige Umgebung entscheidend für den Erfolg des Projekts ist. Ohne diese Pakete und die CUDA-Prüfung lässt sich die DeepSpeed-Konfiguration später nicht korrekt initialisieren.

Konfiguration der JSON-Datei und ZeRO Stage 2

Das Herzstück der DeepSpeed-Implementierung ist die JSON-Konfigurationsdatei, in der hier ZeRO Stage 2 aktiviert wird. Diese Stufe verteilt Optimizer-Zustände und Gradienten über verfügbare GPUs, während die Modellparameter repliziert bleiben. Der Sprecher warnt davor, die Konfiguration zu überladen, und empfiehlt, sich strikt an die offizielle Dokumentation zu halten. Er betont, dass die meisten Fehler durch CUDA-Konflikte und nicht durch das Modell selbst entstehen. Falls dieser Einrichtungsschritt fehlschlägt, ist eine Fehlersuche im Setup unumgänglich, bevor man mit dem Training fortfährt.

Praktischer Testlauf und Analyse der Ergebnisse

In diesem Abschnitt wird das Training mit einem kleinen Beispieldatensatz gestartet, um die Funktionsweise live zu demonstrieren. Man sieht die Fortschritte der einzelnen Trainingsschritte sowie die charakteristischen Speicherspitzen der GPU im Monitoring. Obwohl der Training-Loss in diesem kurzen Testlauf nicht signifikant sinkt, dient das Experiment als Proof-of-Concept. Der Sprecher erklärt, dass für produktive Ergebnisse eine weitere Feinabstimmung und größere Datenmengen nötig wären. Der Fokus liegt hier rein auf der erfolgreichen technischen Ausführung ohne "Out of Memory"-Fehler.

Die Stufen von ZeRO und Speicher-Offloading

Der Sprecher geht tiefer in die Theorie ein und erläutert die verschiedenen Stufen von ZeRO: Stage 1, 2 und die besonders effiziente Stage 3. Stage 3 verteilt zusätzlich zu den Gradienten auch die Modellparameter selbst, was den größten Speichergewinn ermöglicht. Wenn selbst der VRAM nicht ausreicht, kommt ZeRO-Infinity ins Spiel, das Daten auf den CPU-RAM oder sogar NVMe-Laufwerke auslagert. Man tauscht hierbei zwar wertvolle Rechengeschwindigkeit gegen Skalierbarkeit ein, kann dafür aber Modelle trainieren, die sonst unmöglich wären. Dieser Abschnitt ist essenziell, um die Flexibilität von DeepSpeed bei extrem großen Modellen zu verstehen.

Fortgeschrittene Features und Fazit

Zum Abschluss werden komplexe Funktionen wie der 3D-Parallelismus und die Unterstützung für Mixture-of-Experts (MoE) Modelle angesprochen. DeepSpeed harmoniert hervorragend mit etablierten Tools wie Hugging Face Accelerate, was die Integration in bestehende Workflows erleichtert. Der Sprecher gibt den Rat, bei Benchmarks vorsichtig zu sein und die CPU-Auslastung beim Offloading genau im Auge zu behalten. Letztlich bezeichnet er DeepSpeed als einen Rettungsanker, mit dem man sich weigert, keine Speicherressourcen mehr zu haben. Das Video endet mit einer Ermutigung, die offiziellen Konfigurationen als Startpunkt für eigene Experimente zu nutzen.

Community Posts

No posts yet. Be the first to write about this video!

Write about this video