View a markdown version of this page

Problembehandlung für verteilte Schulungen in Amazon SageMaker AI - Amazon SageMaker KI

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.

Problembehandlung 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 oder die AWS Entwicklerforen für Amazon Amazon SageMaker AI an das KI-Team.

Mithilfe von SageMaker KI werden Daten parallel zu Amazon SageMaker Debugger und Checkpoints verteilt

Verwenden Sie Amazon Debugger, um Systemengpässe zu überwachen, Framework-Operationen zu profilieren und Modellausgabetensoren für Trainingsjobs mit parallel verteilten SageMaker KI-Daten zu debuggen. SageMaker

Wenn Sie jedoch SageMaker Debugger, parallele KI-Datenverteilung und SageMaker SageMaker KI-Checkpoints verwenden, wird möglicherweise ein Fehler angezeigt, der wie im folgenden Beispiel aussieht.

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 die parallele Verteilung von SageMaker KI-Daten aktivieren.

  • Wenn Sie alle drei Funktionen aktivieren, schaltet das SageMaker Python SDK den Debugger automatisch durch Übergeben ausdebugger_hook_config=False, was dem folgenden Framework-Beispiel entspricht. ModelTrainer

    bucket=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) model_trainer = ModelTrainer( ... 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 KI-verteilte Daten als auch SageMaker Debugger parallel verwenden möchten, können Sie das Problem umgehen, indem Sie Ihrem Trainingsskript manuell Checkpoint-Funktionen hinzufügen, anstatt die Parameter checkpoint_s3_uri und checkpoint_local_path aus dem anzugeben. ModelTrainer 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 PyTorch verteilten Trainingsjobs kann ein unerwartetes Präfix (modelzum Beispiel) an state_dict Schlüssel (Modellparameter) angehängt werden. Die SageMaker KI-Datenparallelbibliothek ändert die Namen der Modellparameter nicht direkt und fügt ihnen keine Voranschläge hinzu, wenn in PyTorch Trainingsjobs Modellartefakte gespeichert werden. Beim PyTorch verteilten Training werden die Namen im Netzwerk geändertstate_dict, wobei das Präfix vorangestellt wird. Wenn bei der Verwendung der SageMaker KI-Datenparallelbibliothek und Checkpoints für das PyTorch Training aufgrund unterschiedlicher Parameternamen ein Modellfehler auftritt, passen Sie den folgenden Beispielcode an, um das Präfix beim Laden der Checkpoints in Ihrem Trainingsskript zu entfernen.

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äfix-Problem finden Sie in einem Diskussionsthread unter Präfixparameternamen im gespeicherten Modell, wenn es mit mehreren GPUs trainiert wird? im PyTorch Diskussionsforum.

Weitere Informationen zu den PyTorch Methoden zum Speichern und Laden von Modellen finden Sie in der PyTorch Dokumentation unter Geräteübergreifendes Speichern und Laden von Modellen.

SageMaker Durch KI verteiltes Training kommt es während der Initialisierung zum Stillstand

Wenn Ihr paralleler Trainingsjob mit SageMaker KI-verteilten Daten während der Initialisierung bei der Verwendung von EFA-enabled 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
  1. Melden Sie sich bei der an AWS-Managementkonsole und öffnen Sie die Amazon VPC-Konsole unter. https://console.aws.amazon.com/vpc/

  2. Klicken Sie im linken Navigationsbereich auf Sichewrheitsgruppen.

  3. Wählen Sie die Sicherheitsgruppe aus, die mit dem VPC-Subnetz verknüpft ist, das Sie für das Training verwenden.

  4. Kopieren Sie im Abschnitt Details die Sicherheitsgruppen-ID.

  5. 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.

  6. Führen Sie im Dialogfeld Edt inbound rules (Regeln für eingehenden Datenverkehr bearbeiten) die folgenden Schritte aus:

    1. Wählen Sie Add rule.

    2. Wählen Sie für Type (Typ) die Option All traffic (Gesamter Datenverkehr) aus.

    3. 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.

  7. Wählen Sie Regeln speichern, um die Konfiguration der eingehenden Regel für die Sicherheitsgruppe abzuschließen.

  8. Wählen Sie auf der Registerkarte Regeln für ausgehenden Datenverkehr die Option Regeln für ausgehenden Datenverkehr bearbeiten aus.

  9. 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.

SageMaker KI: verteilte Schulung, Arbeitsstau am Ende der Ausbildung

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.

SageMaker Durch KI verteilter Trainingsjob mit Warnmeldungen zur PyTorch Rückgabe und Abwertung

Seit Version 1.4.0 fungiert die SageMaker KI-Bibliothek für verteilte Datenparallelität als Backend von Distributed. PyTorch Aufgrund der grundlegenden Ä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 oben in Ihrem Trainingsskript importiert und während der verteilten Initialisierung als Backend eingerichtet werden. PyTorch Mit der einzeiligen Backend-Spezifikation können Sie Ihr PyTorch Trainingsskript unverändert lassen und die verteilten Module direkt verwenden. PyTorch Weitere Informationen Verwenden Sie die SMDDP-Bibliothek in Ihrem Trainingsskript PyTorch zu den wichtigsten Änderungen und der neuen Art, die Bibliothek zu verwenden, finden Sie unter PyTorch.