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.
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 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 Speicherplatz
batch_size
in den GPU-Speicher aufnehmen können. Die Verwendung eines größerenbatch_size
führt zu einer besseren GPU-Auslastung und reduziert die Gesamttrainingsdauer.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 Faktork
erhöhen, müssen Sie sielearning_rate
linear 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_size
finden Sie unter Getestete Modelle. -
Um den mit Hilfe des Compilers beschleunigten Trainingsauftrag zu debuggen, aktivieren Sie die Markierung
debug
im Parametercompiler_config
. Auf diese Weise kann SageMaker KI die Debugging-Protokolle in die Protokolle der SageMaker Trainingsjobs aufnehmen.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 Modellspeicherfunktion von PyTorch /XLA verwenden, um Ihr Modell ordnungsgemäß zu überprüfen. Weitere Informationen zu dieser Funktion finden Sie
torch_xla.core.xla_model.save
in der Dokumentation zu XLA PyTorch Devices. 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 /XLA TPUs: 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 8ml.p3.2xlarge
Instances. -
Verwenden Sie Instances 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 mit SageMaker Training Compiler 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 Mehraufwand 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 APIs /XLA bei direkter Verwendung PyTorch
PyTorch/XLA definiert einen Satz von, der einige der APIs vorhandenen Schulungen ersetzen soll. PyTorch APIs 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 Operatoren und Tensoren zurückzuführen. Um ein PyTorch Modell korrekt 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 Schulungen. APIs 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).