SageMaker Bewährte Methoden und Überlegungen zum Training Compiler - 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.

SageMaker Bewährte Methoden und Überlegungen zum Training Compiler

Wichtig

Amazon Web Services (AWS) gibt bekannt, dass es keine neuen Releases oder Versionen von SageMaker Training Compiler geben wird. Sie können SageMaker Training Compiler weiterhin über die vorhandenen AWS Deep Learning Containers (DLCs) für SageMaker Schulungen verwenden. Es ist wichtig zu beachten, dass auf die vorhandenen DLCs Dateien zwar weiterhin zugegriffen werden kann, sie jedoch gemäß der Support-Richtlinie für AWS Deep Learning Containers Framework keine Patches oder Updates mehr erhalten. AWS

Lesen Sie die folgenden bewährten Methoden und Überlegungen zur Verwendung von SageMaker Training Compiler.

Bewährte Methoden

Verwenden Sie die folgenden Richtlinien, um die besten Ergebnisse zu erzielen, wenn Sie Trainingsjobs mit SageMaker Training Compiler ausführen.

Allgemeine bewährte Methoden
  • Achten Sie darauf, dass Sie Unterstützte Instance-Typen bzw. Getestete Modelle verwenden.

  • Wenn Sie mithilfe der Hugging Face Transformers-Bibliothek in Ihrem Trainingsskript einen Tokenizer für ein NLP Modell erstellen, stellen Sie sicher, dass Sie eine statische Eingangstensorform verwenden, indem Sie Folgendes angeben. padding='max_length' Verwenden Sie padding='longest' nicht, da das Auffüllen der längsten Sequenz im Batch die Tensorform für jeden Trainingsstapel ändern kann. Die dynamische Eingabeform kann eine Neukompilierung des Modells einleiten und die Gesamttrainingsdauer verlängern. Weitere Informationen zu den Padding-Optionen der Transformers-Tokenizer finden Sie unter Padding und Abkürzen in der Dokumentation zu Hugging Face Transformers.

  • Messen Sie die GPU Speicherauslastung, um sicherzustellen, dass Sie die maximale Batchgröße verwenden, die in den Speicher passt. GPU Amazon SageMaker Training Compiler reduziert den Speicherbedarf Ihres Modells während des Trainings, sodass Sie batch_size in der Regel einen größeren GPU Speicherplatz verwenden können. Die Verwendung einer größeren batch_size Größe führt zu einer besseren GPU Auslastung und reduziert die gesamte Trainingszeit.

    Wenn Sie die Batch-Größe anpassen, müssen Sie auch die learning_rate entsprechend anpassen. Wenn Sie z. B. die Batch-Größe um den Faktor k erhöhen, müssen Sie sie learning_rate linear anpassen (einfache Multiplikation mit k) oder Multiplikation mit der Quadratwurzel von k. Dies dient dazu, in weniger Trainingszeit dasselbe oder ein ähnliches Konvergenzverhalten zu erreichen. Weitere Informationen zu den für gängige Modelle getesteten batch_size finden Sie unter Getestete Modelle.

  • Um den mit Hilfe des Compilers beschleunigten Trainingsauftrag zu debuggen, aktivieren Sie die Markierung debug im Parameter compiler_config. Auf diese Weise können SageMaker die Debugging-Protokolle in die Protokolle der SageMaker Trainingsjobs aufgenommen werden.

    huggingface_estimator=HuggingFace( ... compiler_config=TrainingCompilerConfig(debug=True) )

    Beachten Sie, dass es zu zusätzlichem Arbeitsaufwand führen kann, wenn Sie das vollständige Debuggen des Trainingsauftrags mit dem Compiler aktivieren.

Bewährte Methoden für PyTorch
  • Wenn Sie ein PyTorch Modell mitbringen und es überprüfen möchten, stellen Sie sicher, dass Sie die Funktion zum Speichern XLA des Modells von PyTorch/verwenden, um Ihr Modell ordnungsgemäß zu überprüfen. Weitere Informationen zu dieser Funktion finden Sie torch_xla.core.xla_model.savein der Dokumentation zu den PyTorch XLAGeräten.

    Informationen zum Hinzufügen der Änderungen zu Ihrem PyTorch Skript finden Sie unter PyTorch Direkte Verwendung großer Sprachmodelle (ohne die Hugging Face Transformers Trainer-API).

    Weitere Informationen zur tatsächlichen Anwendung der Modellspeicherfunktion finden Sie im Trainingsblog Checkpoint Writing and Loading in the Hugging Face on PyTorch/XLATPUs: Schneller und billiger.

  • Beachten Sie Folgendes, um die optimale Trainingszeit für das verteilte Training zu erreichen.

    • Verwenden Sie Instanzen mit mehreren GPUs statt Einzel-GPU-Instanzen. Eine einzelne ml.p3dn.24xlarge Instance hat z. B. eine kürzere Trainingszeit als 8 ml.p3.2xlarge Instances.

    • Verwenden Sie Instanzen mit EFA Unterstützung wie ml.p3dn.24xlarge undml.p4d.24xlarge. Diese Instance-Typen verfügen über eine höhere Netzwerkgeschwindigkeit und verringern die Trainingsdauer.

    • Passen Sie die preprocessing_num_workers Parameter für Datensätze so an, dass das Modelltraining nicht durch eine langsame Vorverarbeitung verzögert wird.

Überlegungen

Beachten Sie bei der Verwendung von SageMaker Training Compiler Folgendes.

Leistungseinbußen aufgrund von Protokollierung, Prüfpunkte und Profiling

  • Vermeiden Sie Protokollierung, Prüfpunkte und Profilerstellung von Modelltensoren, die zu expliziten Bewertungen führen. Sehen Sie sich das folgende Beispiel zur Codekompilierung an, um zu verstehen, was eine explizite Bewertung ist.

    a = b+c e = a+d

    Ein Compiler interpretiert den Code wie folgt und reduziert den Speicherbedarf für die Variable a:

    e = b+c+d

    Stellen Sie sich nun den folgenden Fall vor, wo der Code so verändert wird, dass eine Druckfunktion für die Variable a hinzugefügt wird.

    a = b+c e = a+d print(a)

    Der Compiler bewertet die Variable a wie folgt explizit.

    e = b+c+d a = b+c # Explicit evaluation print(a)

    Vermeiden Sie PyTorch beispielsweise die Verwendung von torch.tensor.items (), da dies zu expliziten Auswertungen führen könnte. Beim Deep Learning können solche expliziten Bewertungen zu Mehraufwand führen, da sie verschmolzene Operationen in einem Kompilierungsgraphen eines Modells unterbrechen und zu einer Neuberechnung der Tensoren führen.

    Wenn Sie das Modell während des Trainings während der Verwendung des SageMaker Training Compilers dennoch regelmäßig evaluieren möchten, empfehlen wir, die Protokollierung und das Checkpointen mit einer geringeren Frequenz durchzuführen, um den durch explizite Evaluierungen verursachten Aufwand zu reduzieren. Protokollieren Sie z. B. nur alle 10 Epochen anstatt bei jeder Epoche.

  • Die Kompilierung des Grafen erfolgt in den ersten Trainingsschritten. Daher ist davon auszugehen, dass die ersten Schritte außergewöhnlich langsam erfolgen. Dies sind jedoch einmalige Kompilierungskosten, die sich bei längerem Training ggf. wieder amortisieren, da die Kompilierung zukünftige Schritte erheblich beschleunigt. Der anfängliche Kompilierungsaufwand hängt von der Größe des Modells, der Größe der Eingangstensoren und der Verteilung der Eingangstensorformen ab.

Falsche Verwendung von PyTorch/XLAAPIsbei direkter Verwendung PyTorch

PyTorch/XLAdefiniert einen Satz vonAPIs, der einige der vorhandenen PyTorch Schulungen ersetzen sollAPIs. Wenn sie nicht richtig eingesetzt werden, scheitert das PyTorch Training.

  • Einer der häufigsten Fehler beim Kompilieren eines PyTorch Modells ist auf einen falschen Gerätetyp für Operatoren und Tensoren zurückzuführen. Um ein PyTorch Modell korrekt zu kompilieren, stellen Sie sicher, dass Sie XLA devices (xm.xla_device()) verwenden, anstatt Geräte und CUDA XLA Geräte zu verwenden CUDA oder zu mischen.

  • mark_step()ist eine Barriere nur fürXLA. Falsch eingestellt, stürzt der Trainingsauftrag ab.

  • PyTorch/XLAbietet zusätzliche verteilte Schulungen anAPIs. Wenn das nicht APIs richtig programmiert wird, werden Gradienten falsch erfasst, was zu einem Fehler bei der Trainingskonvergenz führt.

Informationen zur korrekten Einrichtung Ihres PyTorch Skripts und zur Vermeidung der oben genannten falschen API Verwendungen finden Sie unter PyTorch Direkte Verwendung großer Sprachmodelle (ohne die Hugging Face Transformers Trainer-API).