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) kündigt an, dass es keine neuen Versionen oder Versionen von SageMaker Training Compiler geben wird. Sie können den SageMaker Training Compiler weiterhin über die vorhandenen AWS Deep Learning Container (DLCs) für Schulungen verwenden. SageMaker Bitte beachten Sie, dass die vorhandenen DLCs zwar weiterhin zugänglich sind, aber gemäß der Support-Richtlinie für das AWS Deep Learning Containers Framework keine Patches oder Updates mehr von AWS erhalten.
Lesen Sie die folgenden bewährten Methoden und Überlegungen bei der Verwendung des SageMaker Training Compilers.
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 in Ihrem Trainingsskript einen Tokenizer für ein NLP-Modell mithilfe der Hugging Face Transformers-Bibliothek erstellen, achten Sie darauf, eine statische Eingangstensorform zu verwenden, indem Sie
padding='max_length'angeben. Verwenden Sie nichtpadding='longest', da das Padding bis zur längsten Sequenz im Stapel die Tensorform für jede Trainings-Batch verä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ürzenin der Dokumentation zu Hugging Face Transformers. -
Messen Sie die GPU-Speicherauslastung, damit Sie die maximale Batch-Größe verwenden, die der GPU-Speicher aufnehmen kann. Amazon SageMaker Training Compiler reduziert den Speicherbedarf Ihres Modells während des Trainings, sodass Sie in der Regel einen größeren Speicher
batch_sizein den GPU-Speicher einbauen können. Die Verwendung eines größerenbatch_sizeführt zu einer besseren GPU-Auslastung und reduziert die Gesamttrainingsdauer.Wenn Sie die Batch-Größe anpassen, müssen Sie auch die
learning_rateentsprechend anpassen. Wenn Sie z. B. die Batch-Größe um den Faktorkerhöhen, müssen Sie sielearning_ratelinear anpassen (einfache Multiplikation mitk) oder Multiplikation mit der Quadratwurzel vonk. Dies dient dazu, in weniger Trainingszeit dasselbe oder ein ähnliches Konvergenzverhalten zu erreichen. Weitere Informationen zu den für gängige Modelle getestetenbatch_sizefinden Sie unter Getestete Modelle. -
Um den mit Hilfe des Compilers beschleunigten Trainingsauftrag zu debuggen, aktivieren Sie die Markierung
debugim Parametercompiler_config. Auf diese Weise kann SageMaker KI die Debugging-Protokolle in die SageMaker Trainingsauftragsprotokolle aufnehmen.from sagemaker.core.training_compiler import TrainingCompilerConfig from sagemaker.train import ModelTrainer from sagemaker.core import image_uris training_image = image_uris.retrieve( framework="huggingface", region=region, version="4.21.1", py_version="py38", instance_type="ml.p3.2xlarge", image_scope="training", training_compiler_config=TrainingCompilerConfig(debug=True) ) model_trainer=ModelTrainer( training_image=training_image, ... )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 Modellspeicherfunktion verwenden PyTorch/XLA, um Ihr Modell ordnungsgemäß zu überprüfen. Weitere Informationen zu dieser Funktion finden Sie
torch_xla.core.xla_model.savein der Dokumentation zu PyTorch XLA-Geräten. Informationen zum Hinzufügen der Änderungen zu Ihrem PyTorch Skript finden Sie unterPyTorch Direkte Verwendung großer Sprachmodelle (ohne die Hugging Face Transformers Trainer API).
Weitere Informationen zur tatsächlichen Anwendung der Modellspeicherfunktion finden Sie unter Checkpoint Writing and Loading
in the Hugging Face auf PyTorch/XLA TPUs: Schnellerer und billigerer Trainingsblog. -
Beachten Sie Folgendes, um die optimale Trainingszeit für das verteilte Training zu erreichen.
-
Verwenden Sie Instances mit mehreren GPUs anstatt Einzel-GPU-Instances. Eine einzelne
ml.p3dn.24xlargeInstance hat z. B. eine kürzere Trainingszeit als 8ml.p3.2xlargeInstances. -
Verwenden Sie Instances mit EFA-Unterstützung wie
ml.p3dn.24xlargeundml.p4d.24xlarge. Diese Instance-Typen verfügen über eine höhere Netzwerkgeschwindigkeit und verringern die Trainingsdauer. -
Passen Sie die
preprocessing_num_workersParameter für Datensätze so an, dass das Modelltraining nicht durch eine langsame Vorverarbeitung verzögert wird.
-
Überlegungen
Beachten Sie bei der Verwendung des Training Compilers Folgendes. SageMaker
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+dEin Compiler interpretiert den Code wie folgt und reduziert den Speicherbedarf für die Variable
a:e = b+c+dStellen Sie sich nun den folgenden Fall vor, wo der Code so verändert wird, dass eine Druckfunktion für die Variable
ahinzugefügt wird.a = b+c e = a+d print(a)Der Compiler bewertet die Variable
awie 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 dennoch regelmäßig während des Trainings evaluieren möchten, während Sie den SageMaker Training Compiler verwenden, empfehlen wir, Logging und Checkpoints mit einer niedrigeren Frequenz durchzuführen, um den Aufwand für explizite Evaluationen 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 der PyTorch/XLA APIs bei direkter Verwendung PyTorch
PyTorch/XLA definiert eine Reihe von APIs, um einige der vorhandenen PyTorch Schulungs-APIs zu ersetzen. Wenn sie nicht richtig verwendet werden, schlägt das PyTorch Training fehl.
-
Einer der häufigsten Fehler beim Kompilieren eines PyTorch Modells ist auf einen falschen Gerätetyp für Bediener und Tensoren zurückzuführen. Um ein PyTorch Modell richtig zu kompilieren, stellen Sie sicher, dass Sie XLA-Geräte (
xm.xla_device()) verwenden, anstatt CUDA zu verwenden oder CUDA-Geräte und XLA-Geräte zu mischen. -
mark_step()ist ein Hindernis nur für XLA. Falsch eingestellt, stürzt der Trainingsauftrag ab. -
PyTorch/XLA bietet zusätzliche verteilte Trainings-APIs. Wenn die APIs nicht korrekt programmiert werden, werden Steigungen falsch erfasst. Das führt zu einem Fehler bei der Konvergenz des Trainings.
Informationen zur ordnungsgemäßen Einrichtung Ihres PyTorch Skripts und zur Vermeidung der oben genannten falschen API-Verwendungen finden Sie unterPyTorch Direkte Verwendung großer Sprachmodelle (ohne die Hugging Face Transformers Trainer API).