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.
Ändern Ihres Trainingsskripts zum Zuweisen von Instance-Gruppen
Mit der heterogenen Cluster-Konfiguration in den vorherigen Abschnitten haben Sie die SageMaker-Trainingsumgebung und die Instances für Ihre Trainingsaufgabe vorbereitet. Um die Instance-Gruppen weiter bestimmten Trainings- und Datenverarbeitungsaufgaben zuzuweisen, müssen Sie im nächsten Schritt Ihr Trainingsskript ändern. Standardmäßig erstellt der Trainingsauftrag einfach Trainingsskriptreplikate für alle Knoten, unabhängig von der Größe der Instance, was zu Leistungsverlusten führen kann.
Wenn Sie beispielsweise CPU-Instances und GPU-Instances in einem heterogenen Cluster mischen und gleichzeitig ein Trainingsskript für tiefe neuronale Netzwerke an das entry_point-Argument des SageMaker-AI-Schätzers übergeben, wird das entry_point-Skript auf jede Instance repliziert. Das bedeutet, dass CPU-Instances ohne korrekte Aufgabenzuweisungen auch das gesamte Skript ausführen und den Trainingsauftrag starten, der für verteiltes Training auf GPU-Instances konzipiert ist. Daher müssen Sie Änderungen an bestimmten Verarbeitungsfunktionen vornehmen, die Sie auslagern und auf den CPU-Instances ausführen möchten. Sie können die SageMaker-AI-Umgebungsvariablen verwenden, um die Informationen des heterogenen Clusters abzurufen und bestimmte Prozesse entsprechend ausführen zu lassen.
Wenn Ihr Trainingsauftrag gestartet wird, liest Ihr Trainingsskript Informationen zur SageMaker-Trainingsumgebung, einschließlich der heterogenen Cluster-Konfiguration. Die Konfiguration enthält Informationen wie die aktuellen Instance-Gruppe, die aktuellen Hosts in jeder Gruppe und die Gruppe, in der sich der aktuelle Host befindet.
Sie können Instance-Gruppeninformationen während der Initialisierungsphase eines SageMaker-AI-Trainingsjobs abfragen.
(Empfohlen) Lesen von Instance-Gruppeninformationen mit dem SageMaker-Trainingstoolkit
Verwenden Sie das Python-Umgebungsmodul, das die Bibliothek des SageMaker-Trainings-Toolkits
from sagemaker_training import environment env = environment.Environment()
Umgebungsvariablen im Zusammenhang mit allgemeinem SageMaker-Training und heterogenen Clustern:
-
env.is_hetero– Gibt ein boolesches Ergebnis zurück, unabhängig davon, ob ein heterogener Cluster konfiguriert ist oder nicht. -
env.current_host– Gibt den aktuellen Host zurück. -
env.current_instance_type– Gibt den Instance-Typ des aktuellen Hosts zurück. -
env.current_instance_group– Gibt den Namen der aktuellen Instance-Gruppe zurück. -
env.current_instance_group_hosts– Gibt eine Liste der Hosts in der aktuellen Instance-Gruppe zurück. -
env.instance_groups– Gibt eine Liste von Instance-Gruppennamen zurück, die für das Training verwendet werden. -
env.instance_groups_dict– Gibt die gesamte heterogene Clusterkonfiguration des Trainingsauftrages zurück. -
env.distribution_instance_groups– Gibt eine Liste von Instance-Gruppen zurück, die demdistribution-Parameter der SageMaker-AI-Schätzerklasse zugewiesen sind. -
env.distribution_hosts– Gibt eine Liste von Hosts der Instance-Gruppen zurück, die demdistribution-Parameter der SageMaker-AI-Schätzerklasse zugewiesen sind.
Betrachten Sie zum Beispiel das folgende Beispiel für einen heterogenen Cluster, der aus zwei Instance-Gruppen besteht.
from sagemaker.instance_group import InstanceGroup instance_group_1 = InstanceGroup( "instance_group_1", "ml.c5.18xlarge", 1) instance_group_2 = InstanceGroup( "instance_group_2", "ml.p3dn.24xlarge", 2)
Die Ausgabe des env.instance_groups_dict heterogenen Beispielclusters sollte folgendermaßen oder ähnlich aussehen.
{ "instance_group_1": { "hosts": [ "algo-2" ], "instance_group_name": "instance_group_1", "instance_type": "ml.c5.18xlarge" }, "instance_group_2": { "hosts": [ "algo-3", "algo-1" ], "instance_group_name": "instance_group_2", "instance_type": "ml.p3dn.24xlarge" } }
(Optional) Lesen von Instance-Gruppeninformationen aus der JSON-Datei mit der Ressourcenkonfiguration
Wenn Sie die Umgebungsvariablen lieber im JSON-Format abrufen möchten, können Sie die JSON-Datei für die Ressourcenkonfiguration direkt verwenden. Die JSON-Datei in einer SageMaker-Trainings-Instance befindet sich standardmäßig unter /opt/ml/input/config/resourceconfig.json.
file_path = '/opt/ml/input/config/resourceconfig.json' config = read_file_as_json(file_path) print(json.dumps(config, indent=4, sort_keys=True))