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 Schulungsinformationen SageMaker bereitstellt
In diesem Abschnitt wird erklärt SageMaker , wie Trainingsinformationen wie Trainingsdaten, Hyperparameter und andere Konfigurationsinformationen für Ihren Docker-Container verfügbar gemacht werden.
Wenn Sie eine CreateTrainingJob
Anfrage SageMaker zum Starten des Modelltrainings senden, geben Sie den Amazon Elastic Container Registry (AmazonECR) -Pfad des Docker-Images an, das den Trainingsalgorithmus enthält. Sie geben auch den Speicherort des Amazon Simple Storage Service (Amazon S3) an, an dem Trainingsdaten gespeichert werden, sowie algorithmusspezifische Parameter. SageMaker stellt diese Informationen dem Docker-Container zur Verfügung, sodass Ihr Trainingsalgorithmus sie verwenden 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 Container Informationen organisieren, finden Sie unterSageMaker Schulungs- und Inferenz-Toolkits.
Themen
Hyperparameter
SageMaker 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 hyperparameters.json
zur Angabe der eta
Hyperparameter num_round
und in der Operation für. CreateTrainingJob
XGBoost
{ "num_round": "128", "eta": "0.001" }
Die Hyperparameter, die Sie einstellen können, hängen vom Algorithmus ab, den Sie trainieren. Eine Liste der Hyperparameter, die für einen SageMaker integrierten Algorithmus verfügbar sind, finden Sie unter Hyperparameter unter dem Algorithmus-Link unter Verwenden von SageMaker Amazon-integrierten Algorithmen oder vortrainierten Modellen.
Umgebungsvariablen
SageMaker legt die folgenden Umgebungsvariablen in Ihrem Container fest:
-
TRAINING_ JOB _ NAME — Im
TrainingJobName
Parameter derCreateTrainingJob
Anfrage angegeben. -
TRAINING_ JOB _ ARN — Der Amazon-Ressourcenname (ARN) des Schulungsjobs, der als
TrainingJobArn
in derCreateTrainingJob
Antwort zurückgegeben wurde. -
Alle Umgebungsvariablen, die im Parameter Environment in der Anforderung
CreateTrainingJob
angegeben sind.
Eingabedatenkonfiguration
SageMaker stellt die Datenkanalinformationen im InputDataConfig
Parameter aus Ihrer CreateTrainingJob
Anfrage in der /opt/ml/input/config/inputdataconfig.json
Datei in Ihrem Docker-Container zur Verfügung.
Nehmen wir beispielsweise an, dass Sie in Ihrer Anfrage drei Datenkanäle (train
evaluation
, undvalidation
) angeben. SageMakerbietet FolgendesJSON:
{ "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 stellt dem Container nur relevante Informationen zu jedem Datenkanal (z. B. den Kanalnamen und den Inhaltstyp) zur Verfügung, wie im vorherigen Beispiel gezeigt. S3DistributionType
wird so eingestellt, als FullyReplicated
ob Sie es angeben, EFS oder FSxLustre als Eingabedatenquellen.
Trainingsdaten
Der TrainingInputMode
Parameter in AlgorithmSpecification
der CreateTrainingJob
Anfrage gibt an, wie der Trainingsdatensatz Ihrem Container zur Verfügung gestellt wird. Die folgenden Eingabemodi sind verfügbar.
-
File
ModusWenn Sie
File
mode alsTrainingInputMode
Wert verwenden, werden die folgenden Parameter in Ihrem Container SageMaker festgelegt.-
Ihr
TrainingInputMode
Parameter wirdinputdataconfig.json
als „Datei“ geschrieben. -
Ihr Datenkanalverzeichnis wird in
/opt/ml/input/data/
geschrieben.channel_name
Wenn Sie
File
mode verwenden, SageMaker wird für jeden Kanal ein Verzeichnis erstellt. Wenn Sie beispielsweise drei Kanäle mit dem Namentraining
, undtesting
habenvalidation
, werden die SageMaker folgenden drei Verzeichnisse in Ihrem Docker-Container erstellt:-
/opt/ml/input/data/training
-
/opt/ml/input/data/validation
-
/opt/ml/input/data/testing
File
Modus unterstützt auch die folgenden Datenquellen:-
Amazon-Simple-Storage-Service (Amazon-S3)
-
Amazon Elastic File System (AmazonEFS)
-
Amazon FSx für Lustre
Anmerkung
Kanäle, die Dateisystem-Datenquellen wie Amazon EFS und Amazon verwenden, FSx müssen den
File
Modus verwenden. In diesem Fall wird der im Kanal angegebene Verzeichnispfad unter/opt/ml/input/data/
bereitgestellt.channel_name
-
-
FastFile
ModusWenn Sie den
FastFile
Modus als Ihren verwendenTrainingInputNodeParameter
, SageMaker legt er die folgenden Parameter in Ihrem Container fest.-
Ähnlich wie im
File
Modus wird im ModusFastFile
Ihr ParameterTrainingInputMode
iminputdataconfig.json
als „Datei“ geschrieben. -
Ihr Datenkanalverzeichnis wird in
/opt/ml/input/data/
geschrieben.channel_name
FastFile
unterstützt die folgenden Datenquellen:-
Amazon S3
Wenn Sie den
FastFile
Modus verwenden, wird das Kanalverzeichnis nur mit Lesezugriff bereitgestellt.Historisch gesehen ging der
File
Modus dem ModusFastFile
voraus. Um die Abwärtskompatibilität zu gewährleisten, können Algorithmen, die denFile
Modus unterstützen, auch problemlos mit demFastFile
Modus arbeiten, sofern derTrainingInputMode
Parameter aufFile
ininputdataconfig.json.
gesetzt ist.Anmerkung
Kanäle, die den
FastFile
Modus verwenden, müssen einS3DataType
vom „S3Prefix“ verwenden.FastFile
mode präsentiert eine Ordneransicht, die den Schrägstrich (/
) als Trennzeichen für die Gruppierung von Amazon S3-Objekten in Ordnern verwendet.S3Uri
Präfixe dürfen keinem Teil des Ordnernamens entsprechen. Wenn ein Amazon S3-Datensatz beispielsweises3://amzn-s3-demo-bucket/train-01/data.csv
enthält, dann sind weders3://amzn-s3-demo-bucket/train
nochs3://amzn-s3-demo-bucket/train-01
Präfixe noch alsS3Uri
Prä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-01
Ordner. 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. -
-
Pipe
Modus-
TrainingInputMode
Parameter 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
,validation
undtesting
verfü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
training
verfügen, lesen Sie die Pipes in dieser Reihenfolge:-
Öffnen Sie
/opt/ml/input/data/training_0
im Lesemodus und lesen Sie es in end-of-file (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_1
und 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-Notizbuch, 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 -
SageMaker Das Modelltraining unterstützt leistungsstarke S3 Express One Zone-Verzeichnis-Buckets als Dateneingabeort für den Dateimodus, den Schnelldateimodus und den Pipe-Modus. Um S3 Express One Zone zu verwenden, geben Sie den Speicherort des S3 Express One Zone-Verzeichnis-Buckets anstelle eines Amazon S3 S3-Allzweck-Buckets ein. Geben Sie ARN für die IAM Rolle die erforderlichen Zugriffskontroll- und Berechtigungsrichtlinien an. Weitere Einzelheiten finden Sie unter AmazonSageMakerFullAccesspolicy. Sie können Ihre SageMaker Ausgabedaten in Verzeichnis-Buckets nur mit serverseitiger Verschlüsselung mit verwalteten Amazon S3 S3-Schlüsseln (SSE-S3) verschlüsseln. Die serverseitige Verschlüsselung mit AWS KMS Schlüsseln (SSE-KMS) wird derzeit nicht für das Speichern von SageMaker Ausgabedaten in Verzeichnis-Buckets 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, SageMaker stellt diese Option Informationen zu allen Containern in der /opt/ml/input/config/resourceconfig.json
Datei zur Verfügung.
Um die Kommunikation zwischen Containern zu ermöglichen, enthält diese JSON Datei Informationen für alle Container. SageMaker stellt diese Datei sowohl für als auch File
für Pipe
Modus-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, auf denen das Message Passing Interface (MPI) ausgeführt wird, diese Informationen verwenden, um den Namen der Netzwerkschnittstelle festzulegen. -
Verwenden Sie nicht die Informationen in
/etc/hostname
oder/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" }