DeepNVMe Upgrade: Effiziente I/O-Skalierung für Deep Learning Anwendungen
Die neueste Version von DeepNVMe erweitert die Unterstützung für Modell-Checkpointing und Inferenz-Workloads.
Einführung
Wir haben DeepNVMe im Sommer 2024 als eine Suite von Optimierungen zur Bekämpfung von I/O-Flaschenhälsen im Deep Learning (DL) eingeführt. DeepNVMe bietet signifikante Geschwindigkeitssteigerungen für I/O-gebundene DL-Workloads, indem es Speicherinnovationen wie lokale NVMe-SSDs, NVIDIA Magnum IO GPUDirect® Storage (GDS) und Linux Asynchronous I/O (AIO) nutzt. In diesem Update freuen wir uns, Verbesserungen in mehreren Bereichen anzukündigen: (i) Erweiterung der Anwendungsabdeckung auf FastPersist Modell-Checkpointing und SGLang Inferenz, (ii) I/O-Leistungssteigerung durch das Upgrade von PCIe Gen4 auf Gen5 NVMe-SSDs und (iii) Erweiterung der Benutzerfreundlichkeit auf CPU-only Umgebungen, offset-basierte I/O-Operationen und Tensor-Datentypumwandlung. Die in diesem Blogbericht dargestellten Ergebnisse sind in DeepSpeed Versionen >= 0.17.1 verfügbar.
Evaluierungsumgebungen
Unsere Experimente wurden auf einer Azure ND-H200-v5 VM durchgeführt. Die wichtigsten Softwarekonfigurationen sind in der folgenden Tabelle zusammengefasst.
- Software Version: Ubuntu 24.04.2
- PyTorch: 2.6.0
- CUDA: 12.6
- SGLang: 0.4.4.post4
Behebung von I/O-Flaschenhälsen im Deep Learning
Wir haben DeepNVMe verwendet, um FastPersist und ZeRO-Inference zu entwickeln, um I/O-Flaschenhälse im DL-Training und in der Inferenz anzugehen. Unsere Experimente wurden unter Verwendung einer einzelnen VM durchgeführt, in der wir die verfügbaren NVMe-SSDs in ein einzelnes RAID-0 (d.h. Festplattenstreifen) Volumen kombiniert haben, um die aggregierten Lese- und Schreibbandbreiten zu nutzen. Da DeepNVMe Tensoren mit CPU-Bounce-Puffern (auch bekannt als AIO) oder NVIDIA GPUDirect Storage (auch bekannt als GDS) auslagern kann, berichten wir über Ergebnisse für beide Modi.
FastPersist: Schnellere Modell-Checkpoint-Erstellung
Obwohl das Speichern von Modell-Checkpoints in persistenten Speicher entscheidend für das Modelltraining ist, stellt es auch ein großes Bottleneck aufgrund der Ineffizienzen bestehender Ansätze dar. Wir haben FastPersist entwickelt, um die Leistungsherausforderungen beim Checkpointing zu adressieren. FastPersist macht die Checkpointing-Overheads während des Trainings durch drei Schlüsseltechniken vernachlässigbar: (i) DeepNVMe, (ii) Datenparallelismus und (iii) Überlappung von I/O und Berechnung. Unser Ziel hier ist es, die Auswirkungen von DeepNVMe in FastPersist mithilfe von Mikrobenchmarks zu demonstrieren, die einen Modell-Checkpoint-Zustand von HBM zu lokalem NVMe serialisieren.
Schnelleres Speichern von PyTorch-Modellen auf lokalem NVMe-Speicher
Wir messen die Durchsatzrate der Serialisierung des Phi-3-Mini-Checkpoint-Zustands von HBM zu lokalem NVMe-Speicher. Die Ergebnisse zeigen signifikant schnellere Checkpointing-Zeiten mit FastPersist im Vergleich zur Basislinie. Wir sehen Geschwindigkeitssteigerungen von über 20X in den 8xGen5 NVMe-Einstellungen. FastPersist skaliert auch mit der erhöhten NVMe-Bandbreite von 8xGen5 im Vergleich zu 4xGen5.
ZeRO-Inference: Demokratisierung der generativen KI
ZeRO-Inference ist eine Technologie, die den Zugang zu modernen Modellen demokratisiert, indem sie die GPU-Kosten für die Modellerfassung reduziert. ZeRO-Inference ermöglicht Inferenzberechnungen von massiven Modellen (Hunderte von Milliarden von Parametern) auf so wenigen wie einer GPU, indem die Modellgewichte in DRAM und NVMe-Speicher ausgelagert werden. ZeRO-Inference ist für Offline- oder durchsatzorientierte Inferenzszenarien konzipiert. In diesem Blog teilen wir zwei Updates zu ZeRO-Inference. Erstens haben wir ZeRO-Inference in SGLang, ein modernes Modellservierungsframework, integriert. Zweitens haben wir beobachtet, dass die Leistung von ZeRO-Inference mit den schnelleren NVMe-SSDs in den neuesten Azure-SKUs skaliert.
Demokratisierung von SGLang durch ZeRO-Inference-Integrationen
SGLang ist ein modernes Servierungsframework für große Sprachmodelle (LLMs) und visuelle Sprachmodelle (VLMs). Unsere Integration von ZeRO-Inference in SGLang macht SGLang für budgetbewusste Benutzer verfügbar und bietet eine Kostenreduzierung für bestehende SGLang-Benutzer. Wir haben das Offline-Benchmarking-Tool von SGLang verwendet, um den Generierungsdurchsatz von LLAMA3-70B auf einem einzelnen H200 mit NVMe-Auslagerung zu messen.
Skalierung der HF Transformer-Generierung mit schnelleren NVMe-SSDs
ZeRO-Inference verbessert die HF Transformer-Inferenz durch effiziente Modell-Auslagerung in DRAM oder NVMe. Wir haben zuvor die Generierungsleistung von LLAMA-3-70B mit NVMe-Auslagerung auf einer einzelnen GPU und vier Gen4 NVMe-SSDs in einer Azure NC_A100_v4 VM bewertet. Wir haben die Generierungsgeschwindigkeit für einen Prompt von 512 Tokens, Ausgabe von 32 Tokens und eine Batch-Größe von 96 gemessen. Da die NVMe-Bandbreite das Hauptbottleneck war, wiederholen wir die Experimente auf Azure ND-H200-v5, das Gen5 NVMe-SSDs anbietet.
I/O-Leistungssteigerung
Wir haben unser ds_io Benchmarking-Tool verwendet, um zu demonstrieren, dass DeepNVMe die I/O-Leistung proportional zur verfügbaren NVMe-Bandbreite skaliert. Dies ermöglicht es Benutzern, I/O-gebundene DL-Anwendungen kostengünstig zu beschleunigen, indem sie mehr oder schnellere NVMe-SSDs verwenden. In unseren Experimenten messen wir die erreichte Lese- und Schreibbandbreite von 1GB-Datenübertragungen zwischen HBM und NVMe. Wir bewerten das Hochskalieren von NVMe von PCIe Gen4 auf Gen5 und das Hochskalieren von 4 auf 8 SSDs.
Erweiterung der Benutzerfreundlichkeit
Wir haben die Nutzungsszenarien von DeepNVMe erweitert, indem wir Einschränkungen hinsichtlich der Hardwareumgebungen und I/O-Operationen entfernt haben. Die Funktionalität von DeepNVMe wurde auf CPU-only Umgebungen ausgeweitet, und wir haben die bestehenden Lese-/Schreib-APIs erweitert, um ein benutzerdefiniertes Offset-Argument zu akzeptieren.
Zusammenfassung
Dieser Blogbeitrag hat Updates zu unserer fortlaufenden Entwicklung von DeepNVMe, einer I/O-Optimierungstechnologie zur Beschleunigung von DL-Anwendungen, bereitgestellt. Wir haben Verbesserungen in mehreren Aspekten angekündigt, einschließlich Anwendungsabdeckung, I/O-Leistungssteigerung und Benutzerfreundlichkeit.
Hinterlasse einen Kommentar
An der Diskussion beteiligen?Hinterlasse uns deinen Kommentar!