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.
Fehlerbehebung für verteilte Schulungen in Amazon SageMaker AI
Wenn Sie Probleme bei der Ausführung eines Trainingsjobs haben, während Sie die Bibliothek verwenden, verwenden Sie die folgende Liste, um zu versuchen, diese zu beheben. Wenn Sie weitere Unterstützung benötigen, wenden Sie sich über das SageMaker AWS Support Center
Themen
- Verwendung von verteilten SageMaker KI-Daten parallel zu Amazon SageMaker Debugger und Checkpoints
- Ein unerwartetes Präfix, das an Modellparameterschlüssel angehängt wurde
- SageMaker KI verteilte Trainingsaufgaben, die während der Initialisierung ins Stocken geraten
- SageMaker KI verteilte Schulungen, Jobs, die am Ende der Schulung ins Stocken gerieten
- Beobachtung der Verschlechterung der Skalierungseffizienz aufgrund von FSx Durchsatzengpässen bei Amazon
- SageMaker Von KI verteilter Schulungsjob mit Hinweisen auf PyTorch veraltete Inhalte
Verwendung von verteilten SageMaker KI-Daten parallel zu Amazon SageMaker Debugger und Checkpoints
Verwenden Sie Amazon Debugger, um Systemengpässe zu überwachen, Framework-Operationen zu profilieren und Modellausgabetensoren für Trainingsaufgaben mit parallel verteilten SageMaker KI-Daten zu debuggen. SageMaker
Wenn Sie jedoch SageMaker Debugger, SageMaker AI Distributed Data Parallel und SageMaker AI-Checkpoints verwenden, wird möglicherweise ein Fehler angezeigt, der dem folgenden Beispiel ähnelt.
SMDebug Does Not Currently Support Distributed Training Jobs With Checkpointing Enabled
Dies ist auf einen internen Fehler zwischen Debugger und Checkpoints zurückzuführen, der auftritt, wenn Sie SageMaker AI Distributed Data parallel aktivieren.
-
Wenn Sie alle drei Funktionen aktivieren, schaltet SageMaker Python den Debugger SDK automatisch durch Übergabe aus
debugger_hook_config=False
, was dem folgendenestimator
Framework-Beispiel entspricht.bucket=sagemaker.Session().default_bucket() base_job_name="sagemaker-checkpoint-test" checkpoint_in_bucket="checkpoints" # The S3 URI to store the checkpoints checkpoint_s3_bucket="s3://{}/{}/{}".format(bucket, base_job_name, checkpoint_in_bucket) estimator = TensorFlow( ... distribution={"smdistributed": {"dataparallel": { "enabled": True }}}, checkpoint_s3_uri=checkpoint_s3_bucket, checkpoint_local_path="/opt/ml/checkpoints", debugger_hook_config=False )
-
Wenn Sie weiterhin sowohl SageMaker AI Distributed Data parallel als auch SageMaker Debugger verwenden möchten, besteht eine Problemumgehung darin, Ihrem Trainingsskript manuell Checkpoint-Funktionen hinzuzufügen, anstatt die
checkpoint_local_path
Parametercheckpoint_s3_uri
und aus dem Schätzer anzugeben. Weitere Informationen zum Einrichten von manuellem Checkpointing in einem Trainingsskript finden Sie unter Speichern von Prüfpunkten.
Ein unerwartetes Präfix, das an Modellparameterschlüssel angehängt wurde
Bei PyTorch verteilten Trainingsaufgaben kann state_dict
Schlüsseln (Modellparametern) model
beispielsweise ein unerwartetes Präfix zugewiesen werden. Die SageMaker KI-Datenparallelbibliothek ändert oder stellt Modellparameternamen nicht direkt voran, wenn PyTorch Trainingsjobs Modellartefakte speichern. PyTorchDas verteilte Training ändert die Namen in der, um über das Netzwerk state_dict
zu gehen, wobei das Präfix vorangestellt wird. Wenn Sie bei der Verwendung der SageMaker AI-Datenparallelbibliothek und des Checkpoints für das PyTorch Training auf ein Modellfehlerproblem stoßen, das auf unterschiedliche Parameternamen zurückzuführen ist, passen Sie den folgenden Beispielcode an, um das Präfix zu entfernen, wenn Sie Checkpoints in Ihr Trainingsskript laden.
state_dict = {k.partition('
model.
')[2]:state_dict[k] for k in state_dict.keys()}
Dabei wird jeder state_dict
Schlüssel als Zeichenkettenwert verwendet, die Zeichenfolge beim ersten Vorkommen von 'model.'
getrennt und das dritte Listenelement (mit Index 2) der partitionierten Zeichenfolge verwendet.
Weitere Informationen zum Problem mit dem Präfix finden Sie in einem Diskussionsthread unter Präfixparameternamen im gespeicherten Modell, wenn es von multi- trainiert wurde? GPU
Weitere Informationen zu den PyTorch Methoden zum Speichern und Laden von Modellen finden Sie in der PyTorchDokumentation unter Modell geräteübergreifend speichern und laden
SageMaker KI verteilte Trainingsaufgaben, die während der Initialisierung ins Stocken geraten
Wenn Ihr SageMaker AI-Trainingsjob für parallel Daten während der Initialisierung bei der Verwendung von EFA -fähigen Instances zum Stillstand kommt, kann dies an einer Fehlkonfiguration in der Sicherheitsgruppe des VPC Subnetzes liegen, das für den Trainingsjob verwendet wird. EFAerfordert eine korrekte Sicherheitsgruppenkonfiguration, um den Verkehr zwischen den Knoten zu ermöglichen.
So konfigurieren Sie eingehende und ausgehende Regeln für die Sicherheitsgruppe
Melden Sie sich bei der an AWS Management Console und öffnen Sie die VPC Amazon-Konsole unter https://console.aws.amazon.com/vpc/
. -
Klicken Sie im linken Navigationsbereich auf Sichewrheitsgruppen.
-
Wählen Sie die Sicherheitsgruppe aus, die mit dem VPC Subnetz verknüpft ist, das Sie für das Training verwenden.
-
Kopieren Sie im Abschnitt Details die Sicherheitsgruppen-ID.
-
Wählen Sie auf der Registerkarte Inbound rules (Regeln für eingehenden Datenverkehr) die Option Edt inbound rules (Regeln für eingehenden Datenverkehr bearbeiten) aus.
-
Führen Sie im Dialogfeld Edt inbound rules (Regeln für eingehenden Datenverkehr bearbeiten) die folgenden Schritte aus:
-
Wählen Sie Add rule.
-
Wählen Sie für Type (Typ) die Option All traffic (Gesamter Datenverkehr) aus.
-
Wählen Sie für Quelle die Option Benutzerdefiniert aus, fügen Sie die Sicherheitsgruppen-ID in das Suchfeld ein und wählen Sie die Sicherheitsgruppe aus, die angezeigt wird.
-
-
Wählen Sie Regeln speichern, um die Konfiguration der eingehenden Regel für die Sicherheitsgruppe abzuschließen.
-
Wählen Sie auf der Registerkarte Regeln für ausgehenden Datenverkehr die Option Regeln für ausgehenden Datenverkehr bearbeiten aus.
-
Wiederholen Sie die Schritte 6 und 7, um dieselbe Regel als ausgehende Regel hinzuzufügen.
Nachdem Sie die vorherigen Schritte zur Konfiguration der Sicherheitsgruppe mit den Regeln für eingehenden und ausgehenden Datenverkehr abgeschlossen haben, führen Sie den Trainingsjob erneut aus und überprüfen Sie, ob das Blockierungsproblem behoben ist.
Weitere Informationen zur Konfiguration von Sicherheitsgruppen für VPC und EFA finden Sie unter Sicherheitsgruppen für Ihren VPC und Elastic Fabric Adapter.
SageMaker KI verteilte Schulungen, Jobs, die am Ende der Schulung ins Stocken gerieten
Eine der Hauptursachen für Verzögerungen am Ende des Trainings ist eine Diskrepanz bei der Anzahl der Batches, die pro Epoche auf verschiedenen Rängen verarbeitet werden. Alle Worker (GPUs) synchronisieren ihre lokalen Farbverläufe im Rückwärtsgang, um sicherzustellen, dass am Ende der Batch-Iteration alle dieselbe Kopie des Modells haben. Wenn die Chargengrößen in der letzten Phase der Ausbildung ungleichmäßig verschiedenen Arbeitergruppen zugewiesen werden, gerät die Ausbildung ins Stocken. Während beispielsweise eine Gruppe von Arbeitern (Gruppe A) die Bearbeitung aller Chargen beendet und die Trainingsschleife beendet, beginnt eine andere Gruppe von Arbeitern (Gruppe B) mit der Verarbeitung eines weiteren Stapels und erwartet weiterhin, dass die Kommunikation von Gruppe A die Gradienten synchronisiert. Dies veranlasst Gruppe B, auf Gruppe A zu warten, die das Training bereits abgeschlossen hat und über keine zu synchronisierenden Farbverläufe verfügt.
Daher ist es bei der Einrichtung Ihres Trainingsdatensatzes wichtig, dass jeder Mitarbeiter dieselbe Anzahl von Datenproben erhält, damit jeder Mitarbeiter während des Trainings dieselbe Anzahl von Batches durchläuft. Stellen Sie sicher, dass jeder Rang die gleiche Anzahl von Chargen erhält, um dieses Problem zu vermeiden, dass es zu Verzögerungen kommt.
Beobachtung der Verschlechterung der Skalierungseffizienz aufgrund von FSx Durchsatzengpässen bei Amazon
Eine mögliche Ursache für eine verringerte Skalierungseffizienz ist die FSx Durchsatzbegrenzung. Wenn Sie beim Wechsel zu einem größeren Trainingscluster einen plötzlichen Rückgang der Skalierungseffizienz feststellen, versuchen Sie, ein FSx für Lustre größeres Dateisystem mit einer höheren Durchsatzgrenze zu verwenden. Weitere Informationen finden Sie unter Aggregierte Dateisystemleistung und Verwaltung der Speicher- und Durchsatzkapazität im Amazon FSx for Lustre-Benutzerhandbuch.
SageMaker Von KI verteilter Schulungsjob mit Hinweisen auf PyTorch veraltete Inhalte
Seit Version 1.4.0 funktioniert die SageMaker AI-Bibliothek für verteilte Datenparallelität als Backend von Distributed. PyTorch Aufgrund der bahnbrechenden Änderung bei der Verwendung der Bibliothek mit wird möglicherweise eine Warnmeldung angezeigt PyTorch, dass die smdistributed
APIs für das PyTorch verteilte Paket veraltet sind. Die Warnmeldung sollte in etwa wie folgt aussehen:
smdistributed.dataparallel.torch.dist is deprecated in the SageMaker AI distributed data parallel library v1.4.0+. Please use torch.distributed and specify 'smddp' as a backend when initializing process group as follows: torch.distributed.init_process_group(backend='smddp') For more information, see the library's API documentation at https://docs.aws.amazon.com/sagemaker/latest/dg/data-parallel-modify-sdp-pt.html
In Version 1.4.0 und höher muss die Bibliothek nur einmal am Anfang Ihres Trainingsskripts importiert und während der verteilten Initialisierung als Backend eingerichtet werden. PyTorch Mit der einzigen Zeile der Backend-Spezifikation können Sie Ihr PyTorch Trainingsskript unverändert lassen und die verteilten Module direkt verwenden. PyTorch Weitere Verwenden Sie die SMDDP Bibliothek in Ihrem Trainingsskript PyTorch Informationen über die wichtigsten Änderungen und die neue Art der Verwendung der Bibliothek finden Sie unter PyTorch.