Bewährte Methoden zur Parallelität verteilter Modelle von SageMaker - Amazon SageMaker KI

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.

Bewährte Methoden zur Parallelität verteilter Modelle von SageMaker

Beachten Sie die folgenden Richtlinien, wenn Sie einen verteilten Trainingsjob mit der SageMaker-Modellparallelbibliothek v2 (SMP v2) ausführen.

Einrichtung der richtigen Konfiguration für verteiltes Training

Sehen Sie sich die folgende Liste an, um den besten Ausgangspunkt für die Anwendung verteilter Trainingstechniken, die SMP v2 bietet, abzuschätzen und zu finden. In jedem Listenelement werden die Vorteile der Verwendung von Kernfunktionen der SageMaker Modellparallelitätsbibliothek v2 sowie mögliche Kompromisse erörtert.

Konfigurationstipps

Dieser Abschnitt enthält Richtlinien zur Auswahl der besten Modellkonfigurationen für einen optimalen Durchsatz bei globalen Anforderungen an die Batchgröße.

Zunächst empfehlen wir unabhängig von der Größe Ihres Modells die folgenden Konfigurationen.

  1. Verwenden Sie den leistungsstärksten Instance-Typ, den Sie verwenden können.

  2. Lassen Sie die gemischte Genauigkeit durchgehend aktiviert, da dies erhebliche Vorteile in Bezug auf Leistung und Speicherreduzierung bietet. Wir empfehlen Ihnen, bfloat16 zu verwenden, da es genauer als float16 ist.

  3. Aktivieren Sie die SageMaker-Bibliothek für verteilte Datenparallelität (statt NCCL zu verwenden), wann immer dies möglich ist, wie unter Kompatibilität mit der für die Infrastruktur optimierten SMDDP-Bibliothek AWS gezeigt. Eine Ausnahme bilden Anwendungsfälle, in denen ausschließlich Tensorparallelität verwendet wird (hybrid_shard_degree = 1 und tensor_paralle_degree > 1).

  4. Wenn Ihr Modell mehr als etwa 60 Milliarden Parameter hat, empfehlen wir die Verwendung von Verzögerte Parameterinitialisierung. Sie können auch die verzögerte Parameterinitialisierung verwenden, um die Initialisierung für jedes Modell zu beschleunigen.

  5. Wir empfehlen Ihnen, Checkpointing bei der Aktivierung zu aktivieren.

Abhängig von der Größe Ihres Modells empfehlen wir Ihnen, mit den folgenden Anweisungen zu beginnen.

  1. Verwenden Sie die Parallelität fragmentierter Daten.

    1. Abhängig von der Batchgröße, die Sie in den GPU-Speicher aufnehmen möchten, wählen Sie den entsprechenden Grad der Parallelität fragmentierter Daten aus. Normalerweise sollten Sie mit dem niedrigsten Grad beginnen, damit Ihr Modell in den GPU-Speicher passt, wobei Sie gleichzeitig den durch die Netzwerkkommunikation verursachten Overhead minimieren. Wenn eine Warnung angezeigt wird, die besagt, dass Cache-Löschungen durchgeführt werden, empfehlen wir Ihnen, den Grad der Fragmentierung zu erhöhen.

    2. Ermitteln Sie world_size anhand der maximalen lokalen Batchgröße und der erforderlichen globalen Batchgröße, falls vorhanden.

    3. Sie können mit dem Entladen der Aktivierung experimentieren. Je nach Szenario kann es Ihren Speicherbedarf decken, ohne dass der Fragmentierungsgrad erhöht werden muss, was weniger Kommunikation bedeutet.

  2. Verwenden Sie die Parallelität fragmentierter Daten von PyTorch FSDP und die Tensorparallelität von SMP v2 gleichzeitig, wie in Tensor-Parallelität dargestellt.

    1. Beim Training auf großen Clustern mit FSDP allein kann die globale Batchgröße zu groß werden, was zu Konvergenzproblemen für das Modell führen kann. In der Regel wird bei den meisten Forschungsarbeiten die Batchgröße unter 4 Millionen Token gehalten. In diesem Fall können Sie das Problem lösen, indem Sie PyTorch FSDP mit der Tensorparallelität von SMP v2 erstellen, um die Batchgröße zu reduzieren.

      Wenn Sie beispielsweise 256 Knoten und eine Sequenzlänge von 4096 haben, führt selbst eine Batchgröße von 1 pro GPU zu einer globalen Batchgröße von 8 Millionen Token. Wenn Sie jedoch die Tensorparallelität mit Grad 2 und einer Batchgröße von 1 pro Tensorparallelgruppe verwenden, wird daraus 1/2 Batchgröße pro GPU, was 4 Millionen Token entspricht.

    2. Beim Training mit langen Kontextlängen wie 8.000 oder 16.000 kann der Aktivierungsspeicher sehr hoch werden. FSDP fragmentiert Aktivierungen nicht und Aktivierungen können dazu führen, dass GPUs nicht mehr genügend Speicher haben. In solchen Szenarien können Sie effizient trainieren, indem Sie PyTorch FSDP mit der Tensorparallelität von SMP v2 erstellen.

Referenzkonfigurationen

Das SageMaker-Modellparallelitäts-Trainingsteam stellt die folgenden Referenzpunkte zur Verfügung, die auf Experimenten mit dem Llama-2-Modell basieren, das unter Verwendung von torch.sagemaker.transform und auf ml.p4d.24xlarge-Instance(s) mit einer Sequenzlänge von 4096 und gemischter Genauigkeit (FP16 oder BF16) in das SMP-Transformer-Modell transformiert wurde.

Modell Modellgröße (die Anzahl der Modellparameter) Die Anzahl der -Instances Parallelitätsgrad der fragmentierten Daten Tensor-Parallelgrad Checkpointing bei der Aktivierung Aktivierung, Entladung Batch-Größe
Llama 2 7B 1 8 1 TRUE FALSE 4
70B 32 256 1 TRUE FALSE 2
175B 64 128 4 TRUE TRUE 6

Sie können aus den vorherigen Konfigurationen extrapolieren, um die GPU-Speicherauslastung für Ihre Modellkonfiguration zu schätzen. Wenn Sie beispielsweise die Sequenzlänge für ein Modell mit 10 Milliarden Parametern oder die Größe des Modells auf 20 Milliarden erhöhen, möchten Sie möglicherweise zuerst die Batchgröße verringern. Wenn das Modell immer noch nicht passt, versuchen Sie, den Grad der Tensorparallelität zu erhöhen.

Überwachung und Protokollierung eines Trainingsjobs mithilfe der SageMaker-AI-Konsole und Amazon CloudWatch

Verwenden Sie die über die SageMaker-AI-Konsole bereitgestellte Visualisierung, um Metriken auf Systemebene wie CPU-Speicherauslastung, GPU-Speicherauslastung und GPU-Auslastung zu überwachen.

  1. Wählen Sie im linken Navigationsbereich die Option Training aus.

  2. Wählen Sie Training Jobs (Trainingsaufträge) aus.

  3. Wählen Sie im Hauptbereich den Namen des Trainingsjobs aus, für den Sie weitere Details anzeigen möchten.

  4. Durchsuchen Sie den Hauptbereich und suchen Sie den Abschnitt Monitor, um sich die automatisierte Visualisierung anzusehen.

  5. Um die Protokolle der Trainingsjobs einzusehen, wählen Sie im Bereich Monitor die Option Protokolle anzeigen aus. Sie können in CloudWatch auf die verteilten Trainingsjob-Logs des Trainingsjobs zugreifen. Wenn Sie ein verteiltes Training mit mehreren Knoten gestartet haben, sollten Sie mehrere Protokollstreams mit Tags im Format algo-n-1234567890 sehen. Der Algo-1-Protokollstream verfolgt Trainingsprotokolle vom Hauptknoten (0.).

Weitere Informationen finden Sie unter Amazon-CloudWatch-Metriken zur Überwachung und Analyse von Trainingsjobs.

Berechtigungen

Um einen SageMaker-Trainingsjob mit Modellparallelität auszuführen, stellen Sie sicher, dass Sie über die richtigen Berechtigungen in Ihrer IAM-Rolle verfügen, z. B. die folgenden: