Einführung in die Bibliothek für SageMaker verteilte Datenparallelität - Amazon SageMaker

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Einführung in die Bibliothek für SageMaker verteilte Datenparallelität

Die Bibliothek für SageMaker verteilte Datenparallelität (SMDDP) ist eine kollektive Kommunikationsbibliothek, die die Rechenleistung des parallelen Trainings verteilter Daten verbessert. Die SMDDP-Bibliothek bewältigt den Kommunikationsaufwand der wichtigsten kollektiven Kommunikationsvorgänge, indem sie Folgendes anbietet.

  1. Die Bibliothek ist für AllReduce optimiert AWS. AllReduce ist ein wichtiger Vorgang, der zum Synchronisieren von Gradienten zwischen GPUs am Ende jeder Trainingsiteration während des verteilten Datentrainings verwendet wird.

  2. Die Bibliothek ist für AllGather optimiert AWS. AllGather ist eine weitere wichtige Operation, die beim parallelen Training mit Sharding-Daten verwendet wird. Dabei handelt es sich um eine speichereffiziente Datenparallelitätstechnik, die von gängigen Bibliotheken wie der SageMaker Model Parallelism (SMP)-Bibliothek, DeepSpeed Zero Redundancy Optimizer (ZeRO) und PyTorch Fully Sharded Data Parallelism (FSDP) angeboten wird.

  3. Die Bibliothek führt eine optimierte node-to-node Kommunikation durch, indem sie die AWS Netzwerkinfrastruktur und die Amazon EC2-Instance-Topologie vollständig nutzt.

Die SMDDP-Bibliothek kann die Trainingsgeschwindigkeit erhöhen, indem sie bei der Skalierung Ihres Trainingsclusters eine Leistungsverbesserung mit nahezu linearer Skalierungseffizienz bietet.

Anmerkung

Die SageMaker verteilten Trainingsbibliotheken sind über die AWS Deep-Learning-Container für PyTorch und Hugging Face innerhalb der SageMaker Trainingsplattform verfügbar. Um die Bibliotheken verwenden zu können, müssen Sie das SageMaker Python-SDK oder die SageMaker APIs über SDK for Python (Boto3) oder verwenden AWS Command Line Interface. In der gesamten Dokumentation konzentrieren sich Anweisungen und Beispiele auf die Verwendung der verteilten Trainingsbibliotheken mit dem SageMaker Python SDK.

Kollektive SMDDP-Kommunikationsvorgänge, die für AWS Rechenressourcen und Netzwerkinfrastruktur optimiert sind

Die SMDDP-Bibliothek bietet Implementierungen der AllGatherkollektiven Operationen AllReduce und , die für AWS Rechenressourcen und Netzwerkinfrastruktur optimiert sind.

SMDDP-AllReduceKollektiver Vorgang

Die SMDDP-Bibliothek erreicht eine optimale Überlappung der AllReduce Operation mit dem Rückwärtsdurchlauf, wodurch die GPU-Auslastung erheblich verbessert wird. Es erreicht nahezu lineare Skalierungseffizienz und schnellere Trainingsgeschwindigkeit, indem Kerneloperationen zwischen CPUs und GPUs optimiert werden. Die Bibliothek funktioniert AllReduce parallel, während die GPU Gradienten berechnet, ohne zusätzliche GPU-Zyklen zu benötigen, wodurch die Bibliothek schneller trainiert werden kann.

  • Nutzt CPUs: Die Bibliothek verwendet CPUs, umAllReduce Gradienten zu erzeugen, und entlädt diese Aufgabe von den GPUs .

  • Verbesserte GPU-Nutzung: Die GPUs des Clusters konzentrieren sich auf die Berechnung von Gradienten und verbessern so ihre Auslastung während des gesamten Trainings.

Im Folgenden finden Sie den allgemeinen Workflow der SMDDP-AllReduceOperation.

  1. Die Bibliothek weist GPUs (Workern) Ränge zu.

  2. Bei jeder Iteration teilt die Bibliothek jeden globalen Stapel durch die Gesamtzahl der Arbeiter (Weltgröße) und weist den Arbeitern kleine Chargen (Batch-Shards) zu.

    • Die Größe des globalen Batches ist (number of nodes in a cluster) * (number of GPUs per node) * (per batch shard).

    • Ein Batch-Shard (kleiner Batch) ist eine Teilmenge von Datensätzen, die jeder GPU (Worker) pro Iteration zugewiesen wird.

  3. Die Bibliothek startet für jeden Worker ein Trainingsskript.

  4. In der Bibliothek werden am Ende jeder Iteration Kopien der Modellgewichte und -verläufe von den Workern verwaltet.

  5. Die Bibliothek synchronisiert die Gewichte und Farbverläufe der Modelle der einzelnen Worker, um ein einziges trainiertes Modell zu aggregieren.

Das folgende Architekturdiagramm zeigt ein Beispiel dafür, wie die Bibliothek Datenparallelität für einen Cluster von 3 Knoten einrichtet.

Architekturdiagramm für SMDDP AllReduce und Datenparallelität

SMDDP-AllGatherKollektiver Vorgang

AllGather ist eine kollektive Operation, bei der jeder Worker mit einem Eingabepuffer beginnt und dann die Eingabepuffer von allen anderen Workern zu einem Ausgabepuffer verkettet oder sammelt.

Anmerkung

Der AllGatherkollektive SMDDP-Vorgang ist in smdistributed-dataparallel>=2.0.1 und AWS Deep Learning Containers (DLC) für PyTorch v2.0.1 und höher verfügbar.

AllGather wird stark in verteilten Trainingstechniken wie der Parallelität fragmentierter Daten verwendet, bei denen jeder einzelne Auftragnehmer einen Bruchteil eines Modells oder eine fragmentierte Ebene enthält. Die Auftragnehmer rufen auf, AllGather bevor sie vorwärts und rückwärts übergehen, um die fragmentierten Ebenen zu rekonstruieren. Die Vorwärts- und Rückwärtsdurchläufe werden fortgesetzt, nachdem alle Parameter erfasst wurden. Während des Rückwärtsdurchlaufs ruft jeder Worker auch auf, ReduceScatter um Gradienten zu erfassen (reduzieren) und sie in Gradienten-Shards aufzuteilen (zu verteilen), um die entsprechende fragmentierte Ebene zu aktualisieren. Weitere Informationen zur Rolle dieser kollektiven Operationen bei der Parallelität fragmentierter Daten finden Sie in der Implementierung der SMP-Bibliothek zu der Parallelität fragmentierter Daten, ZeRO in der DeepSpeed -Dokumentation und im -Blog über PyTorch vollständige Parallelität fragmentierter Daten.

Da kollektive Operationen wie in jeder Iteration aufgerufen AllGather werden, tragen sie am meisten zum GPU-Kommunikationsaufwand bei. Eine schnellere Berechnung dieser kollektiven Operationen bedeutet direkt eine kürzere Trainingszeit ohne Nebenwirkungen auf die Konvergenz. Um dies zu erreichen, bietet die SMDDP-Bibliothek AllGather optimierte für P4d-Instances an.

SMDDP AllGather verwendet die folgenden Techniken, um die Rechenleistung auf P4d-Instances zu verbessern.

  1. Es überträgt Daten zwischen Instances (inter-node) über das Elastic Fabric Adapter (EFA)-Netzwerk mit einer Mesh-Topologie. EFA ist die Netzwerklösung AWS mit niedriger Latenz und hohem Durchsatz. Eine Mesh-Topologie für die Netzwerkkommunikation zwischen Knoten ist besser auf die Merkmale von EFA und AWS Netzwerkinfrastruktur zugeschnitten. Im Vergleich zur NCCL-Round- oder Baumtopologie, die mehrere Paket-Hops umfasst, vermeidet SMDDP das Ansammeln der Latenz von mehreren Hops, da es nur einen Hop benötigt. SMDDP implementiert einen Algorithmus zur Steuerung der Netzwerkrate, der die Workload mit jedem Kommunikations-Peer in einer Mesh-Topologie ausgleicht und einen höheren globalen Netzwerkdurchsatz erreicht.

  2. Es führt eine GPU-Speicherkopierbibliothek mit niedriger Latenz ein, die auf der NVIDIA GPUDirect RDMA-Technologie (GDRCopy) basiert, um den lokalen NVLink- und EFA-Netzwerkverkehr zu koordinieren. GDRCopy , eine von NVIDIA angebotene GPU-Speicherkopierbibliothek mit niedriger Latenz, bietet Kommunikation mit niedriger Latenz zwischen CPU-Prozessen und GPU-CUDA-Kerneln. Mit dieser Technologie ist die SMDDP-Bibliothek in der Lage, die Datenverschiebung innerhalb und zwischen Knoten zu Pipelines zu erstellen.

  3. Es reduziert die Verwendung von GPU-Streaming-Multiprozessoren, um die Rechenleistung für die Ausführung von Modellkerneln zu erhöhen. P4d- und P4de-Instances sind mit NVIDIA A100 GPUs ausgestattet, die jeweils 108 Streaming-Multiprozessoren haben. Während NCCL bis zu 24 Streaming-Multiprozessoren benötigt, um kollektive Operationen auszuführen, verwendet SMDDP weniger als 9 Streaming-Multiprozessoren. Modellverarbeitungskernel nehmen die gespeicherten Streaming-Multiprozessoren auf, um die Berechnung zu beschleunigen.