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 Trainings 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 AWSSupport Center
Themen
Verwendung von SageMaker AI Distributed Data Parallel mit Amazon SageMaker Debugger und Checkpoints
Modellparameterschlüsseln wurde ein unerwartetes Präfix zugewiesen
Verteilter Trainingsjob auf SageMaker AI stagniert während der Initialisierung
Verteilter Trainingsjob auf SageMaker AI stagniert am Ende des Trainings
Beobachtete Verschlechterung der Skalierungseffizienz aufgrund von Amazon-FSx-Durchsatzengpässen
Ein verteilter SageMaker-AI-Trainingsjob mit PyTorch gibt Verfallswarnungen zurück
Verwendung von SageMaker AI Distributed Data Parallel mit Amazon SageMaker Debugger und Checkpoints
Verwenden Sie Amazon SageMaker Debugger, um Systemengpässe zu überwachen, Framework-Operationen zu profilieren und Modellausgabetensoren für Trainingsjobs mit parallel verteilten SageMaker-AI-Daten zu debuggen.
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 SDK den Debugger automatisch aus, indem es
debugger_hook_config=Falseübergibt, was dem folgenden Beispiel des Frameworksestimatorentspricht.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 den SageMaker Debugger verwenden möchten, besteht eine Problemumgehung darin, Ihrem Trainingsskript manuell Checkpointing-Funktionen hinzuzufügen, anstatt die Parameter
checkpoint_s3_uriundcheckpoint_local_pathaus dem Schätzer anzugeben. Weitere Informationen zum Einrichten von manuellem Checkpointing in einem Trainingsskript finden Sie unter Speichern von Prüfpunkten.
Modellparameterschlüsseln wurde ein unerwartetes Präfix zugewiesen
Bei verteilten PyTorch-Trainingsjobs kann ein unerwartetes Präfix (model z. B.) an state_dict Schlüssel (Modellparameter) angehängt werden. Die SageMaker-AI-Datenparallelbibliothek ändert oder stellt Modellparameternamen nicht direkt voran, wenn PyTorch-Trainingsjobs Modellartefakte speichern. Das verteilte Training von PyTorch ändert die Namen im state_dict, um über das Netzwerk zu gehen, wobei das Präfix vorangestellt wird. Wenn Sie bei der Verwendung der SageMaker-AI-Datenparallelbibliothek und Checkpointing 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 in dem Schritt zu entfernen, in dem 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 Präfixproblem finden Sie in einem Diskussionsthread unter Präfix-Parameternamen im gespeicherten Modell, wenn es von mehreren Grafikprozessoren trainiert wird?
Weitere Informationen über die PyTorch-Methoden zum Speichern und Laden von Modellen finden Sie in der PyTorch-Dokumentation unter Speichern und Laden von Modellen über Geräte hinweg
Verteilter Trainingsjob auf SageMaker AI stagniert während der Initialisierung
Wenn Ihr paralleler SageMaker-AI-Trainingsjob für verteilte Daten während der Initialisierung bei 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. EFA benötigt 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 an der AWS-Managementkonsole an und öffnen Sie die Amazon-VPC-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 über das Konfigurieren von Sicherheitsgruppen für VPC und EFA finden Sie unter Sicherheitsgruppen für Ihre VPC und Ihren Elastic Fabric Adapter.
Verteilter Trainingsjob auf SageMaker AI stagniert am Ende des Trainings
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 sie am Ende der Batch-Iteration über dieselbe Kopie des Modells verfügen. 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.
Beobachtete Verschlechterung der Skalierungseffizienz aufgrund von Amazon-FSx-Durchsatzengpässen
Eine mögliche Ursache für die verringerte Skalierungseffizienz ist das FSx-Durchsatzlimit. Wenn Sie beim Wechsel zu einem größeren Trainingscluster einen plötzlichen Rückgang der Skalierungseffizienz feststellen, versuchen Sie, ein größeres FSx for Lustre-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.
Ein verteilter SageMaker-AI-Trainingsjob mit PyTorch gibt Verfallswarnungen zurück
Seit Version 1.4.0 funktioniert die SageMaker-AI-Bibliothek für verteilte Datenparallelität als Backend von PyTorch Distributed. Aufgrund der bahnbrechenden Änderung bei der Verwendung der Bibliothek mit PyTorch wird möglicherweise eine Warnmeldung angezeigt, dass die smdistributed APIs für das verteilte PyTorch-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 v1.4.0 und höher muss die Bibliothek nur einmal oben in Ihrem Trainingsskript importiert und während der verteilten PyTorch-Initialisierung als Backend festgelegt werden. Mit der einzigen Zeile der Backend-Spezifikation können Sie Ihr PyTorch-Trainingsskript unverändert lassen und die verteilten PyTorch-Module direkt verwenden. Sehen Sie Die SMDDP-Bibliothek in Ihrem PyTorch-Trainingsskript verwenden, um mehr über die Änderungen und die neue Art, die Bibliothek mit PyTorch zu verwenden, zu erfahren.