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.
Wie Amazon SageMaker AI Trainingsinformationen bereitstellt
In diesem Abschnitt wird erläutert, wie SageMaker AI Trainingsinformationen wie Trainingsdaten, Hyperparameter und andere Konfigurationsinformationen für Ihren Docker-Container bereitstellt.
Wenn Sie eine CreateTrainingJob-Anfrage an SageMaker AI senden, um die Modelltraining zu starten, geben Sie den Amazon Elastic Container Registry (Amazon ECR)-Pfad des Docker-Images an, das den Trainingsalgorithmus enthält. Sie geben auch den Speicherort des Amazon Simple Storage Service (Amazon S3) an, in dem die Trainingsdaten gespeichert werden, sowie algorithmusspezifische Parameter. SageMaker AI stellt diese Informationen dem Docker-Container zur Verfügung, damit Ihr Trainingsalgorithmus diesen nutzen kann. In diesem Abschnitt wird erklärt, wie wir diese Informationen Ihrem Docker-Container verfügbar machen können. Informationen zum Erstellen eines Trainingsauftrags finden Sie unter CreateTrainingJob. Weitere Informationen darüber, wie SageMaker-AI-Container Informationen organisieren, finden Sie unter SageMaker-Training- und -Inferenz-Toolkits.
Themen
Hyperparameter
SageMaker AI stellt die Hyperparameter in einer CreateTrainingJob-Anfrage im Docker-Container in der /opt/ml/input/config/hyperparameters.json-Datei zur Verfügung.
Im Folgenden finden Sie ein Beispiel für eine Hyperparameter-Konfiguration in hyperparameters.json zur Angabe der num_round und eta Hyperparameter bei der CreateTrainingJob Operation für XGBoost.
{ "num_round": "128", "eta": "0.001" }
Eine vollständige Liste der Hyperparameter, die für den in SageMaker AI integrierten XGBoost-Algorithmus verwendet werden können, finden Sie unter XGBoost-Hyperparameter.
Die Hyperparameter, die Sie einstellen können, hängen vom Algorithmus ab, den Sie trainieren. Eine Liste der Hyperparameter, die für einen integrierten SageMaker-AI-Algorithmus verfügbar sind, finden Sie unter Hyperparameter unter dem Algorithmus-Link unter Verwenden von in Amazon SageMaker AI integrierten Algorithmen oder vortrainierten Modellen.
Umgebungsvariablen
SageMaker AI legt die folgenden Umgebungsvariablen in Ihrem Container fest:
-
TRAINING_JOB_NAME – Wird im Parameter
TrainingJobNameder AnforderungCreateTrainingJobangegeben. -
TRAINING_JOB_ARN – Der Amazon Resource Name (ARN) des Trainingsjobs, der als
TrainingJobArnin derCreateTrainingJob-Antwort zurückgegeben wird. -
Alle Umgebungsvariablen, die im Parameter Environment in der Anforderung
CreateTrainingJobangegeben sind.
Eingabedatenkonfiguration
SageMaker AI stellt die Datenkanalinformationen im InputDataConfig-Parameter aus Ihrer CreateTrainingJob-Anforderung in der /opt/ml/input/config/inputdataconfig.json-Datei in Ihrem Docker-Container zur Verfügung.
Angenommen, Sie geben drei Datenkanäle (train, evaluation und validation) in Ihrer Anforderung an. SageMaker AI stellt das folgende JSON zur Verfügung:
{ "train" : {"ContentType": "trainingContentType", "TrainingInputMode": "File", "S3DistributionType": "FullyReplicated", "RecordWrapperType": "None"}, "evaluation" : {"ContentType": "evalContentType", "TrainingInputMode": "File", "S3DistributionType": "FullyReplicated", "RecordWrapperType": "None"}, "validation" : {"TrainingInputMode": "File", "S3DistributionType": "FullyReplicated", "RecordWrapperType": "None"} }
Anmerkung
SageMaker AI liefert nur relevante Informationen über jeden Datenkanal (z. B. den Kanalnamen und den Inhaltstyp) an den Container, wie im vorherigen Beispiel gezeigt. S3DistributionType wird als FullyReplicated gesetzt, wenn Sie EFS oder FSxLustre als Eingabedatenquellen angeben.
Trainingsdaten
Der TrainingInputMode Parameter in AlgorithmSpecification der CreateTrainingJobAnfrage gibt an, wie der Trainingsdatensatz Ihrem Container zur Verfügung gestellt wird. Die folgenden Eingabemodi sind verfügbar.
-
FileModusWenn Sie
Filemode alsTrainingInputModeWert verwenden, legt SageMaker AI die folgenden Parameter in Ihrem Container fest.-
Ihr
TrainingInputModeParameter wirdinputdataconfig.jsonals „Datei“ geschrieben. -
Ihr Datenkanalverzeichnis wird in
/opt/ml/input/data/geschrieben.channel_name
Wenn Sie den
File-Modus verwenden, erstellt SageMaker AI für jeden Kanal ein Verzeichnis. Wenn Sie zum Beispiel drei Kanäle mit den Namentraining,validation, undtestinghaben, erstellt SageMaker AI die folgenden drei Verzeichnisse in Ihrem Docker-Container:-
/opt/ml/input/data/training -
/opt/ml/input/data/validation -
/opt/ml/input/data/testing
FileModus unterstützt auch die folgenden Datenquellen:-
Amazon Simple Storage Service (Amazon-S3)
-
Amazon Elastic File System (Amazon EFS)
-
Amazon FSx für Lustre
Anmerkung
Kanäle, die Dateisysteme wie Amazon EFS und Amazon FSx als Datenquellen nutzen, müssen den
File-Modus verwenden. In diesem Fall wird der im Kanal angegebene Verzeichnispfad unter/opt/ml/input/data/bereitgestellt.channel_name -
-
FastFileModusWenn Sie den
FastFileModus als IhrenTrainingInputNodeParameterverwenden, legt SageMaker AI die folgenden Parameter in Ihrem Container fest.-
Ähnlich wie im
FileModus wird im ModusFastFileIhr ParameterTrainingInputModeiminputdataconfig.jsonals „Datei“ geschrieben. -
Ihr Datenkanalverzeichnis wird in
/opt/ml/input/data/geschrieben.channel_name
FastFileunterstützt die folgenden Datenquellen:-
Amazon S3
Wenn Sie den
FastFileModus verwenden, wird das Kanalverzeichnis nur mit Lesezugriff bereitgestellt.Historisch gesehen ging der
FileModus dem ModusFastFilevoraus. Um die Abwärtskompatibilität zu gewährleisten, können Algorithmen, die denFileModus unterstützen, auch problemlos mit demFastFileModus arbeiten, sofern derTrainingInputModeParameter aufFileininputdataconfig.json.gesetzt ist.Anmerkung
Kanäle, die den
FastFileModus verwenden, müssen einS3DataTypevom „S3Prefix“ verwenden.FastFilemode präsentiert eine Ordneransicht, die den Schrägstrich (/) als Trennzeichen für die Gruppierung von Amazon S3-Objekten in Ordnern verwendet.S3UriPräfixe dürfen keinem Teil des Ordnernamens entsprechen. Wenn ein Amazon S3-Datensatz beispielsweises3://amzn-s3-demo-bucket/train-01/data.csventhält, dann sind weders3://amzn-s3-demo-bucket/trainnochs3://amzn-s3-demo-bucket/train-01Präfixe noch alsS3UriPräfixe zulässig.Ein abschließender Schrägstrich wird empfohlen, um einen Kanal zu definieren, der einem Ordner entspricht. Zum Beispiel der
s3://amzn-s3-demo-bucket/train-01/Kanal für dentrain-01Ordner. Ohne den abschließenden Schrägstrich wäre der Kanal mehrdeutig, wenn es einen anderen Ordners3://amzn-s3-demo-bucket/train-011/oder eine andere Dateis3://amzn-s3-demo-bucket/train-01.txt/gäbe. -
-
PipeModus-
TrainingInputModeParameter geschrieben ininputdataconfig.json: „Pipe“ -
Datenkanal-Verzeichnis im Docker-Container:
/opt/ml/input/data/channel_name_epoch_number -
Unterstützte Datenquellen: Amazon S3
Sie müssen für jeden Kanal aus einer separaten Pipe lesen. Wenn Sie beispielsweise über drei Kanäle mit den Namen
training,validationundtestingverfügen, müssen Sie aus den folgenden Pipes lesen:-
/opt/ml/input/data/training_0, /opt/ml/input/data/training_1, ... -
/opt/ml/input/data/validation_0, /opt/ml/input/data/validation_1, ... -
/opt/ml/input/data/testing_0, /opt/ml/input/data/testing_1, ...
Lesen Sie die Pipes sequenziell. Wenn Sie beispielsweise über einen Kanal mit dem Namen
trainingverfügen, lesen Sie die Pipes in dieser Reihenfolge:-
Öffnen Sie
/opt/ml/input/data/training_0im Lesemodus und lesen Sie es bis zum Ende der Datei (EOF) oder, wenn Sie mit der ersten Epoche fertig sind, schließen Sie die Pipe-Datei vorzeitig. -
Nachdem Sie die erste Pipe-Datei geschlossen haben, suchen Sie nach
/opt/ml/input/data/training_1und lesen Sie sie bis zum Ende der zweiten Epoche usw.
Wenn die Datei für eine bestimmte Epoche noch nicht existiert, muss Ihr Code möglicherweise erneut versuchen, bis die Pipe erstellt ist. Sie können zum Beispiel mehrere Epochen für den
training-Kanal lesen und erst dann mit dem Lesen desvalidation-Kanals beginnen, wenn Sie bereit sind. Oder Sie können sie gleichzeitig lesen, wenn Ihr Algorithmus dies erfordert.Ein Beispiel für ein Jupyter Notebook, das zeigt, wie Sie den Pipe-Modus verwenden, wenn Sie Ihren eigenen Container mitbringen, finden Sie unter Bring your own pipe-mode algorithm to Amazon SageMaker AI
. -
Das Modelltraining von SageMaker AI unterstützt leistungsstarke Verzeichnis-Buckets von S3 Express One Zone als Dateneingabeort für den Dateimodus, den Schnelldateimodus und den Pipe-Modus. Um S3 Express One Zone zu verwenden, geben Sie den Speicherort des Verzeichnis-Buckets von S3 Express One Zone anstelle eines Allzweck-Buckets von Amazon S3 ein. Stellen Sie den ARN für die IAM-Rolle mit den erforderlichen Zugriffskontroll- und Berechtigungsrichtlinien bereit. Einzelheiten finden Sie unter AmazonSageMakerFullAccessPolicy. Sie können Ihre SageMaker-AI-Ausgabedaten in Verzeichnis-Buckets nur mit serverseitiger Verschlüsselung mit von Amazon S3 verwalteten Schlüsseln (SSE-S3) verschlüsseln. Die serverseitige Verschlüsselung mit AWS KMS-Schlüsseln (SSE-KMS) wird derzeit für das Speichern von SageMaker-AI-Ausgabedaten in Verzeichnis-Buckets nicht unterstützt. Weitere Informationen finden Sie unter S3 Express One Zone.
Konfiguration für verteiltes Training
Wenn Sie ein verteiltes Training mit mehreren Containern durchführen, stellt SageMaker AI Informationen über alle Container in der /opt/ml/input/config/resourceconfig.json-Datei zur Verfügung.
Um die Kommunikation zwischen den Containern zu ermöglichen, enthält diese JSON-Datei Informationen für alle Container. SageMaker AI stellt diese Datei sowohl für File als auch für Pipe-Algorithmen zur Verfügung. Die Datei enthält die folgenden Informationen:
-
current_host–Der Name des aktuellen Containers im Containernetzwerk. Beispiel,algo-1. Host-Werte können sich jederzeit ändern. Schreiben Sie keinen Code mit spezifischen Werten für diese Variable. -
hosts–Liste der Namen aller Container im Containernetzwerk, lexikografisch sortiert. Beispiel:["algo-1", "algo-2", "algo-3"]für einen Cluster mit drei Knoten. Container können diese Namen verwenden, um andere Container im Containernetzwerk anzugeben. Host-Werte können sich jederzeit ändern. Schreiben Sie keinen Code mit spezifischen Werten für diese Variablen. -
network_interface_name– Der Name der Netzwerkschnittstelle, die für Ihren Container verfügbar ist. Beispielsweise können Container, die das Message Passing Interface (MPI) ausführen, diese Informationen verwenden, um den Namen der Netzwerkschnittstelle festzulegen. -
Verwenden Sie nicht die Informationen in
/etc/hostnameoder/etc/hosts, da sie möglicherweise ungenau sind. -
Die Informationen zum Hostnamen sind möglicherweise für den Algorithmus-Container nicht sofort verfügbar. Wir empfehlen, eine Wiederholungsrichtlinie für Operationen zur Auflösung des Hostnamens hinzuzufügen, sobald Knoten im Cluster verfügbar werden.
Nachfolgend sehen Sie eine Beispieldatei auf Knoten 1 in einem Cluster mit drei Knoten:
{ "current_host": "algo-1", "hosts": ["algo-1","algo-2","algo-3"], "network_interface_name":"eth1" }