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.
Verwenden Sie Amazon SageMaker Jobs
Dieser Abschnitt basiert auf der Originalversion von SageMaker Operators for
Wichtig
Wir stellen die Entwicklung und den technischen Support der Originalversion von SageMaker Operators for
Wenn Sie derzeit eine Version v1.2.2
oder eine niedrigere Version von SageMaker Operators for Kubernetes
Informationen zu den Migrationsschritten finden Sie unter Migrieren Sie Ressourcen zu den neuesten Operatoren.
Antworten auf häufig gestellte Fragen zum Ende der Unterstützung für die Originalversion von SageMaker Operators for Kubernetes finden Sie unter Ankündigung des Endes der Support der Originalversion von SageMaker Operators for Kubernetes
Um einen SageMaker Amazon-Job mit den Operatoren für Kubernetes auszuführen, können Sie entweder eine YAML Datei anwenden oder die mitgelieferten Helm Charts verwenden.
Alle Beispiel-Operator-Jobs in den folgenden Tutorials verwenden Beispieldaten aus einem öffentlichen MNIST Datensatz. Um diese Beispiele auszuführen, laden Sie den Datensatz in Ihren Amazon-S3-Bucket herunter. Sie finden den Datensatz unter MNISTDatensatz herunterladen.
Inhalt
Der TrainingJob Betreiber
Die Mitarbeiter des Schulungsauftrags stimmen Ihre angegebene Ausbildungsjobspezifikation mit ab, SageMaker indem sie sie für Sie in starten. SageMaker In der Dokumentation erfahren Sie mehr über SageMaker Ausbildungsberufe. SageMaker CreateTrainingJob API
Themen
Erstellen Sie eine TrainingJob mithilfe einer YAML Datei
-
Laden Sie die YAML Beispieldatei für das Training mit dem folgenden Befehl herunter:
wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/xgboost-mnist-trainingjob.yaml
-
Bearbeiten Sie die
xgboost-mnist-trainingjob.yaml
Datei<sagemaker-execution-role>
, um denroleArn
Parameter durch Ihren undoutputPath
Ihren Amazon S3 S3-Bucket zu ersetzen, auf den die SageMaker Ausführungsrolle Schreibzugriff hat. SieroleArn
müssen über Berechtigungen verfügen, um in Ihrem Namen auf Amazon S3 CloudWatch, Amazon und andere Dienste zugreifen zu SageMaker können. Weitere Informationen zum Erstellen einer SageMaker ExecutionRole finden Sie unter SageMaker Rollen. Wenden Sie die YAML Datei mit dem folgenden Befehl an:kubectl apply -f xgboost-mnist-trainingjob.yaml
Erstellen Sie ein Diagramm TrainingJob mit Hilfe eines Helms
Sie können Helm Charts zum Laufen verwenden TrainingJobs.
-
Klonen Sie das GitHub Repository mit dem folgenden Befehl, um die Quelle abzurufen:
git clone https://github.com/aws/amazon-sagemaker-operator-for-k8s.git
-
Navigieren Sie zum
amazon-sagemaker-operator-for-k8s/hack/charts/training-jobs/
Ordner und bearbeiten Sie dievalues.yaml
Datei, um Werte wierolearn
undoutputpath
durch Werte zu ersetzen, die Ihrem Konto entsprechen. Die Rolle ARN muss über Berechtigungen verfügen, SageMaker damit sie in Ihrem Namen auf Amazon S3 CloudWatch, Amazon und andere Services zugreifen kann. Weitere Informationen zum Erstellen einer SageMaker ExecutionRole finden Sie unter SageMaker Rollen.
Erstellen Sie die TrainingJob
Nachdem die Rollen und Amazon-S3-Buckets durch die entsprechenden Werte in values.yaml
ersetzt wurden, können Sie mit dem folgenden Befehl einen Trainingsauftrag erstellen:
helm install . --generate-name
Die Ausgabe sollte folgendermaßen aussehen:
NAME: chart-12345678 LAST DEPLOYED: Wed Nov 20 23:35:49 2019 NAMESPACE: default STATUS: deployed REVISION: 1 TEST SUITE: None NOTES: Thanks for installing the sagemaker-k8s-trainingjob.
Überprüfen Sie Ihre Trainings-Helmtabelle
Um zu überprüfen, ob das Helm Chart erfolgreich erstellt wurde, führe folgenden Befehl aus:
helm ls
Die Ausgabe sollte folgendermaßen aussehen:
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION chart-12345678 default 1 2019-11-20 23:35:49.9136092 +0000 UTC deployed sagemaker-k8s-trainingjob-0.1.0 rolebased-12345678 default 1 2019-11-20 23:14:59.6777082 +0000 UTC deployed sagemaker-k8s-operator-0.1.0
helm install
erstellt eine TrainingJob
Kubernetes-Ressource. Der Operator startet den eigentlichen Trainingsjob in SageMaker und aktualisiert die TrainingJob
Kubernetes-Ressource, sodass sie den Status des Jobs in wiedergibt. SageMaker Es fallen Gebühren für SageMaker Ressourcen an, die Sie während der Dauer Ihres Jobs nutzen. Sobald Ihr Auftrag abgeschlossen oder beendet ist, fallen für Sie keine Gebühren an.
Hinweis: SageMaker Ermöglicht es Ihnen nicht, einen laufenden Trainingsjob zu aktualisieren. Sie können keinen Parameter bearbeiten und die Konfigurationsdatei erneut anwenden. Ändern Sie entweder den Namen der Metadaten oder löschen Sie den vorhandenen Job und erstellen Sie einen neuen. Ähnlich wie bei bestehenden Trainingsjobs werden Operatoren wie TFJob in Kubeflow nicht update
unterstützt.
Liste TrainingJobs
Verwenden Sie den folgenden Befehl, um alle Aufträge aufzulisten, die mit dem Kubernetes-Operator erstellt wurden:
kubectl get TrainingJob
Die Ausgabe, die alle Aufträge auflistet, sollte wie folgt aussehen:
kubectl get trainingjobs NAME STATUS SECONDARY-STATUS CREATION-TIME SAGEMAKER-JOB-NAME xgboost-mnist-from-for-s3 InProgress Starting 2019-11-20T23:42:35Z xgboost-mnist-from-for-s3-examplef11eab94e0ed4671d5a8f
Ein Trainingsauftrag wird weiterhin aufgeführt, nachdem der Job abgeschlossen wurde oder fehlgeschlagen ist. Sie können einen TrainingJob
Job aus der Liste entfernen, indem Sie die folgenden Löschen TrainingJobs Schritte ausführen. Für Aufträge, die abgeschlossen oder beendet wurden, fallen keine SageMaker Ressourcengebühren an.
TrainingJob Statuswerte
Das Feld STATUS
kann einen der folgenden Werte annehmen:
-
Completed
-
InProgress
-
Failed
-
Stopped
-
Stopping
Diese Status stammen direkt aus der SageMaker offiziellen APIDokumentation.
Zusätzlich zum offiziellen SageMaker Status ist es möglich, STATUS
zu seinSynchronizingK8sJobWithSageMaker
. Das bedeutet, dass der Bediener den Auftrag noch nicht bearbeitet hat.
Sekundäre Statuswerte
Die sekundären Status stammen direkt aus der SageMaker offiziellen APIDokumentation. Sie enthalten detailliertere Informationen zum Status des Jobs.
Beschreiben Sie ein TrainingJob
Weitere Informationen zum Trainingsauftrag erhalten Sie mit dem describe
kubectl
Befehl. Dies wird normalerweise zum Debuggen eines Problems oder zum Überprüfen der Parameter eines Trainingsauftrags verwendet. Um Informationen zu Ihrem Ausbildungsberuf zu erhalten, verwenden Sie den folgenden Befehl:
kubectl describe trainingjob xgboost-mnist-from-for-s3
Die Ausgabe für Ihren Trainingsauftrag sollte wie folgt aussehen:
Name: xgboost-mnist-from-for-s3 Namespace: default Labels: <none> Annotations: <none> API Version: sagemaker.aws.amazon.com/v1 Kind: TrainingJob Metadata: Creation Timestamp: 2019-11-20T23:42:35Z Finalizers: sagemaker-operator-finalizer Generation: 2 Resource Version: 23119 Self Link: /apis/sagemaker.aws.amazon.com/v1/namespaces/default/trainingjobs/xgboost-mnist-from-for-s3 UID: 6d7uiui-0bef-11ea-b94e-0ed467example Spec: Algorithm Specification: Training Image: 8256416981234.dkr.ecr.us-east-2.amazonaws.com/xgboost:1 Training Input Mode: File Hyper Parameters: Name: eta Value: 0.2 Name: gamma Value: 4 Name: max_depth Value: 5 Name: min_child_weight Value: 6 Name: num_class Value: 10 Name: num_round Value: 10 Name: objective Value: multi:softmax Name: silent Value: 0 Input Data Config: Channel Name: train Compression Type: None Content Type: text/csv Data Source: S 3 Data Source: S 3 Data Distribution Type: FullyReplicated S 3 Data Type: S3Prefix S 3 Uri: https://s3-us-east-2.amazonaws.com/amzn-s3-demo-bucket/sagemaker/xgboost-mnist/train/ Channel Name: validation Compression Type: None Content Type: text/csv Data Source: S 3 Data Source: S 3 Data Distribution Type: FullyReplicated S 3 Data Type: S3Prefix S 3 Uri: https://s3-us-east-2.amazonaws.com/amzn-s3-demo-bucket/sagemaker/xgboost-mnist/validation/ Output Data Config: S 3 Output Path: s3://amzn-s3-demo-bucket/sagemaker/xgboost-mnist/xgboost/ Region: us-east-2 Resource Config: Instance Count: 1 Instance Type: ml.m4.xlarge Volume Size In GB: 5 Role Arn: arn:aws:iam::12345678910:role/service-role/AmazonSageMaker-ExecutionRole Stopping Condition: Max Runtime In Seconds: 86400 Training Job Name: xgboost-mnist-from-for-s3-6d7fa0af0bef11eab94e0example Status: Cloud Watch Log URL: https://us-east-2.console.aws.amazon.com/cloudwatch/home?region=us-east-2#logStream:group=/aws/sagemaker/TrainingJobs;prefix=<example>;streamFilter=typeLogStreamPrefix Last Check Time: 2019-11-20T23:44:29Z Sage Maker Training Job Name: xgboost-mnist-from-for-s3-6d7fa0af0bef11eab94eexample Secondary Status: Downloading Training Job Status: InProgress Events: <none>
Logs anzeigen von TrainingJobs
Verwenden Sie den folgenden Befehl, um die Protokolle des kmeans-mnist
Trainingsauftrags einzusehen:
kubectl smlogs trainingjob xgboost-mnist-from-for-s3
Ihre Ausgabe sollte in etwa wie folgt aussehen. Die Protokolle der Instances sind chronologisch angeordnet.
"xgboost-mnist-from-for-s3" has SageMaker TrainingJobName "xgboost-mnist-from-for-s3-123456789" in region "us-east-2", status "InProgress" and secondary status "Starting" xgboost-mnist-from-for-s3-6d7fa0af0bef11eab94e0ed46example/algo-1-1574293123 2019-11-20 23:45:24.7 +0000 UTC Arguments: train xgboost-mnist-from-for-s3-6d7fa0af0bef11eab94e0ed46example/algo-1-1574293123 2019-11-20 23:45:24.7 +0000 UTC [2019-11-20:23:45:22:INFO] Running standalone xgboost training. xgboost-mnist-from-for-s3-6d7fa0af0bef11eab94e0ed46example/algo-1-1574293123 2019-11-20 23:45:24.7 +0000 UTC [2019-11-20:23:45:22:INFO] File size need to be processed in the node: 1122.95mb. Available memory size in the node: 8586.0mb xgboost-mnist-from-for-s3-6d7fa0af0bef11eab94e0ed46example/algo-1-1574293123 2019-11-20 23:45:24.7 +0000 UTC [2019-11-20:23:45:22:INFO] Determined delimiter of CSV input is ',' xgboost-mnist-from-for-s3-6d7fa0af0bef11eab94e0ed46example/algo-1-1574293123 2019-11-20 23:45:24.7 +0000 UTC [23:45:22] S3DistributionType set as FullyReplicated
Löschen TrainingJobs
Verwenden Sie den folgenden Befehl, um einen Schulungsjob bei Amazon zu beenden SageMaker:
kubectl delete trainingjob xgboost-mnist-from-for-s3
Dieser Befehl entfernt den SageMaker Trainingsjob aus Kubernetes. Dieser Befehl liefert die folgende Ausgabe:
trainingjob.sagemaker.aws.amazon.com "xgboost-mnist-from-for-s3" deleted
Wenn der Job noch in Bearbeitung ist SageMaker, wird der Job beendet. Es fallen keine Gebühren für SageMaker Ressourcen an, nachdem Ihr Job beendet oder abgeschlossen wurde.
Hinweis: SageMaker Löscht keine Schulungsjobs. Beendete Jobs werden weiterhin auf der SageMaker Konsole angezeigt. Der delete
Befehl benötigt etwa 2 Minuten, um die Ressourcen von zu bereinigen SageMaker.
Der HyperParameterTuningJob Betreiber
Operatoren für Hyperparameter-Tuning-Jobs stimmen Ihre angegebene Spezifikation für Hyperparameter-Tuning-Jobs mit ab, SageMaker indem sie sie in starten. SageMaker Weitere Informationen zu SageMaker Hyperparameter-Tuning-Jobs finden Sie in der Dokumentation. SageMaker CreateHyperParameterTuningJob API
Themen
Erstellen Sie eine HyperparameterTuningJob mithilfe einer Datei YAML
-
Laden Sie die YAML Beispieldatei für den Hyperparameter-Tuning-Job mit dem folgenden Befehl herunter:
wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/xgboost-mnist-hpo.yaml
-
Bearbeiten Sie die
xgboost-mnist-hpo.yaml
Datei, um denroleArn
Parameter durch Ihrensagemaker-execution-role
zu ersetzen. Damit der Hyperparameter-Tuning-Job erfolgreich ist, müssen Sie auch dies3InputPath
unds3OutputPath
in Werte ändern, die Ihrem Konto entsprechen. Wenden Sie die YAML Aktualisierungsdatei mit dem folgenden Befehl an:kubectl apply -f xgboost-mnist-hpo.yaml
Erstellen Sie eine HyperparameterTuningJob mithilfe eines Helm-Diagramms
Sie können Helm Charts verwenden, um Hyperparameter-Tuning-Jobs auszuführen.
-
Klonen Sie das GitHub Repository mit dem folgenden Befehl, um die Quelle abzurufen:
git clone https://github.com/aws/amazon-sagemaker-operator-for-k8s.git
-
Navigieren Sie zum Verzeichnis
amazon-sagemaker-operator-for-k8s/hack/charts/hyperparameter-tuning-jobs/
. -
Bearbeiten Sie die
values.yaml
Datei, um denroleArn
Parameter durch Ihrensagemaker-execution-role
zu ersetzen. Damit der Hyperparameter-Tuning-Job erfolgreich ist, müssen Sie auch dies3InputPath
unds3OutputPath
in Werte ändern, die Ihrem Konto entsprechen.
Erstellen Sie das HyperparameterTuningJob
Nachdem die Rollen und Amazon S3-Pfade durch die entsprechenden Werte in values.yaml
ersetzt wurden, können Sie mit dem folgenden Befehl einen Hyperparameter-Tuning-Job erstellen:
helm install . --generate-name
Ihre Ausgabe sollte wie folgt aussehen:
NAME: chart-1574292948 LAST DEPLOYED: Wed Nov 20 23:35:49 2019 NAMESPACE: default STATUS: deployed REVISION: 1 TEST SUITE: None NOTES: Thanks for installing the sagemaker-k8s-hyperparametertuningjob.
Überprüfen der Karteninstallation
Führen Sie den folgenden Befehl aus, um zu überprüfen, ob das Helm-Diagramm erfolgreich erstellt wurde:
helm ls
Die Ausgabe sollte folgendermaßen aussehen:
NAME NAMESPACE REVISION UPDATED chart-1474292948 default 1 2019-11-20 23:35:49.9136092 +0000 UTC deployed sagemaker-k8s-hyperparametertuningjob-0.1.0 STATUS CHART APP VERSION chart-1574292948 default 1 2019-11-20 23:35:49.9136092 +0000 UTC deployed sagemaker-k8s-trainingjob-0.1.0 rolebased-1574291698 default 1 2019-11-20 23:14:59.6777082 +0000 UTC deployed sagemaker-k8s-operator-0.1.0
helm install
erstellt eine HyperParameterTuningJob
Kubernetes-Ressource. Der Operator startet den eigentlichen Hyperparameter-Optimierungsjob in SageMaker und aktualisiert die HyperParameterTuningJob
Kubernetes-Ressource, sodass sie den Status des Jobs in wiedergibt. SageMaker Es fallen Gebühren für SageMaker Ressourcen an, die Sie während der Dauer Ihres Jobs nutzen. Sobald Ihr Auftrag abgeschlossen oder beendet ist, fallen für Sie keine Gebühren an.
Hinweis: Ermöglicht es Ihnen SageMaker nicht, einen laufenden Hyperparameter-Tuning-Job zu aktualisieren. Sie können keinen Parameter bearbeiten und die Konfigurationsdatei erneut anwenden. Sie müssen entweder den Metadatennamen ändern oder den vorhandenen Auftrag löschen und einen neuen erstellen. Ähnlich wie bei bestehenden Trainingsauftrags, wie z. B. TFJob
in Kubeflow, update
wird nicht unterstützt.
Liste HyperparameterTuningJobs
Verwenden Sie den folgenden Befehl, um alle Aufträge aufzulisten, die mit dem Kubernetes-Operator erstellt wurden:
kubectl get hyperparametertuningjob
Die Ausgabe sollte folgendermaßen aussehen:
NAME STATUS CREATION-TIME COMPLETED INPROGRESS ERRORS STOPPED BEST-TRAINING-JOB SAGEMAKER-JOB-NAME xgboost-mnist-hpo Completed 2019-10-17T01:15:52Z 10 0 0 0 xgboostha92f5e3cf07b11e9bf6c06d6-009-4c7a123 xgboostha92f5e3cf07b11e9bf6c123
Ein Hyperparameter-Optimierungsjob wird weiterhin aufgeführt, nachdem der Job abgeschlossen wurde oder fehlgeschlagen ist. Sie können einen hyperparametertuningjob
aus der Liste entfernen, indem Sie die Schritte unter Lösche ein HyperparameterTuningJob befolgen. Für Aufträge, die abgeschlossen oder beendet wurden, fallen keine SageMaker Ressourcengebühren an.
Statuswerte für Hyperparameter-Tuning-Jobs
Das STATUS
-Feld kann einen der folgenden Werte annehmen:
-
Completed
-
InProgress
-
Failed
-
Stopped
-
Stopping
Diese Status stammen direkt aus der SageMaker offiziellen API Dokumentation.
Zusätzlich zum offiziellen SageMaker Status ist es möglich, STATUS
zu seinSynchronizingK8sJobWithSageMaker
. Das bedeutet, dass der Bediener den Auftrag noch nicht bearbeitet hat.
Statuszähler
Die Ausgabe hat mehrere Zähler, wie COMPLETED
und INPROGRESS
. Diese geben an, wie viele Ausbildungsberufe abgeschlossen wurden bzw. noch in Bearbeitung sind. Weitere Informationen darüber, wie diese ermittelt werden, finden Sie TrainingJobStatusCountersin der SageMaker API Dokumentation.
Am besten TrainingJob
Diese Spalte enthält den Namen der MetrikTrainingJob
, die die ausgewählte Metrik am besten optimiert hat.
Führen Sie zum Anzeigen einer Zusammenfassung der eingestellten Hyperparameter den folgenden Befehl aus:
kubectl describe hyperparametertuningjob xgboost-mnist-hpo
Um detaillierte Informationen über TrainingJob
zu erhalten, führen Sie aus:
kubectl describe trainingjobs
<job name>
Laichen TrainingJobs
Sie können auch alle 10 Trainingsaufträge in Kubernetes verfolgen, die von HyperparameterTuningJob
gestartet wurden, indem Sie den folgenden Befehl ausführen:
kubectl get trainingjobs
Beschreibe ein HyperparameterTuningJob
Sie können Debugging-Details mit dem Befehl describe
kubectl
abrufen.
kubectl describe hyperparametertuningjob xgboost-mnist-hpo
Zusätzlich zu den Informationen über den Tuning-Job macht der SageMaker Operator for Kubernetes auch den Trainingsjob, der am besten vom Hyperparameter-Tuning-Job gefunden wurde, in der describe
Ausgabe wie folgt verfügbar:
Name: xgboost-mnist-hpo Namespace: default Labels: <none> Annotations: kubectl.kubernetes.io/last-applied-configuration: {"apiVersion":"sagemaker.aws.amazon.com/v1","kind":"HyperparameterTuningJob","metadata":{"annotations":{},"name":"xgboost-mnist-hpo","namespace":... API Version: sagemaker.aws.amazon.com/v1 Kind: HyperparameterTuningJob Metadata: Creation Timestamp: 2019-10-17T01:15:52Z Finalizers: sagemaker-operator-finalizer Generation: 2 Resource Version: 8167 Self Link: /apis/sagemaker.aws.amazon.com/v1/namespaces/default/hyperparametertuningjobs/xgboost-mnist-hpo UID: a92f5e3c-f07b-11e9-bf6c-06d6f303uidu Spec: Hyper Parameter Tuning Job Config: Hyper Parameter Tuning Job Objective: Metric Name: validation:error Type: Minimize Parameter Ranges: Integer Parameter Ranges: Max Value: 20 Min Value: 10 Name: num_round Scaling Type: Linear Resource Limits: Max Number Of Training Jobs: 10 Max Parallel Training Jobs: 10 Strategy: Bayesian Training Job Early Stopping Type: Off Hyper Parameter Tuning Job Name: xgboostha92f5e3cf07b11e9bf6c06d6 Region: us-east-2 Training Job Definition: Algorithm Specification: Training Image: 12345678910.dkr.ecr.us-east-2.amazonaws.com/xgboost:1 Training Input Mode: File Input Data Config: Channel Name: train Content Type: text/csv Data Source: s3DataSource: s3DataDistributionType: FullyReplicated s3DataType: S3Prefix s3Uri: https://s3-us-east-2.amazonaws.com/amzn-s3-demo-bucket/sagemaker/xgboost-mnist/train/ Channel Name: validation Content Type: text/csv Data Source: s3DataSource: s3DataDistributionType: FullyReplicated s3DataType: S3Prefix s3Uri: https://s3-us-east-2.amazonaws.com/amzn-s3-demo-bucket/sagemaker/xgboost-mnist/validation/ Output Data Config: s3OutputPath: https://s3-us-east-2.amazonaws.com/amzn-s3-demo-bucket/sagemaker/xgboost-mnist/xgboost Resource Config: Instance Count: 1 Instance Type: ml.m4.xlarge Volume Size In GB: 5 Role Arn: arn:aws:iam::123456789012:role/service-role/AmazonSageMaker-ExecutionRole Static Hyper Parameters: Name: base_score Value: 0.5 Name: booster Value: gbtree Name: csv_weights Value: 0 Name: dsplit Value: row Name: grow_policy Value: depthwise Name: lambda_bias Value: 0.0 Name: max_bin Value: 256 Name: max_leaves Value: 0 Name: normalize_type Value: tree Name: objective Value: reg:linear Name: one_drop Value: 0 Name: prob_buffer_row Value: 1.0 Name: process_type Value: default Name: rate_drop Value: 0.0 Name: refresh_leaf Value: 1 Name: sample_type Value: uniform Name: scale_pos_weight Value: 1.0 Name: silent Value: 0 Name: sketch_eps Value: 0.03 Name: skip_drop Value: 0.0 Name: tree_method Value: auto Name: tweedie_variance_power Value: 1.5 Stopping Condition: Max Runtime In Seconds: 86400 Status: Best Training Job: Creation Time: 2019-10-17T01:16:14Z Final Hyper Parameter Tuning Job Objective Metric: Metric Name: validation:error Value: Objective Status: Succeeded Training End Time: 2019-10-17T01:20:24Z Training Job Arn: arn:aws:sagemaker:us-east-2:123456789012:training-job/xgboostha92f5e3cf07b11e9bf6c06d6-009-4sample Training Job Name: xgboostha92f5e3cf07b11e9bf6c06d6-009-4c7a3059 Training Job Status: Completed Training Start Time: 2019-10-17T01:18:35Z Tuned Hyper Parameters: Name: num_round Value: 18 Hyper Parameter Tuning Job Status: Completed Last Check Time: 2019-10-17T01:21:01Z Sage Maker Hyper Parameter Tuning Job Name: xgboostha92f5e3cf07b11e9bf6c06d6 Training Job Status Counters: Completed: 10 In Progress: 0 Non Retryable Error: 0 Retryable Error: 0 Stopped: 0 Total Error: 0 Events: <none>
Logs anzeigen von HyperparameterTuningJobs
Hyperparameter-Optimierungsaufträge haben keine Protokolle, aber alle von ihnen gestarteten Trainingsaufträge haben Protokolle. Auf diese Protokolle kann wie auf normale Trainingsaufgaben zugegriffen werden. Weitere Informationen finden Sie unter Logs anzeigen von TrainingJobs.
Lösche ein HyperparameterTuningJob
Verwenden Sie den folgenden Befehl, um einen Hyperparameter-Job in SageMaker zu beenden.
kubectl delete hyperparametertuningjob xgboost-mnist-hpo
Dieser Befehl entfernt den Hyperparameter-Tuning-Job und die zugehörigen Trainingsjobs aus Ihrem Kubernetes-Cluster und stoppt sie in. SageMaker Für Aufträge, die beendet oder abgeschlossen wurden, fallen keine Gebühren für Ressourcen an. SageMaker SageMaker löscht keine Hyperparameter-Tuning-Jobs. Beendete Jobs werden weiterhin auf der SageMaker Konsole angezeigt.
Die Ausgabe sollte folgendermaßen aussehen:
hyperparametertuningjob.sagemaker.aws.amazon.com "xgboost-mnist-hpo" deleted
Hinweis: Das Bereinigen der Ressourcen mit dem Befehl delete dauert etwa 2 Minuten SageMaker.
Der BatchTransformJob Betreiber
Die Operatoren für Batch-Transformationsjobs stimmen Ihre angegebene Batch-Transform-Jobspezifikation mit ab, SageMaker indem sie sie in starten. SageMaker Weitere Informationen zum SageMaker Batch-Transformationsjob finden Sie in der SageMaker CreateTransformJob API Dokumentation.
Themen
Erstellen Sie einen BatchTransformJob mithilfe einer YAML Datei
Laden Sie die YAML Beispieldatei für den Batch-Transformationsjob mit dem folgenden Befehl herunter:
wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/xgboost-mnist-batchtransform.yaml
-
Bearbeiten Sie die Datei
xgboost-mnist-batchtransform.yaml
, um die erforderlichen Parameter zu ändern und dieinputdataconfig
durch Ihre Eingabedaten unds3OutputPath
durch Ihre Amazon S3 S3-Buckets zu ersetzen, auf die die SageMaker Ausführungsrolle Schreibzugriff hat. -
Wenden Sie die YAML Datei mit dem folgenden Befehl an:
kubectl apply -f xgboost-mnist-batchtransform.yaml
Erstellen Sie eine BatchTransformJob mithilfe eines Helm-Diagramms
Sie können Helm Charts verwenden, um Batch-Transformationsauftrags auszuführen.
Holen Sie sich das Helm-Installationsverzeichnis
Klonen Sie das GitHub Repository mit dem folgenden Befehl, um die Quelle abzurufen:
git clone https://github.com/aws/amazon-sagemaker-operator-for-k8s.git
Konfigurieren Sie das Helm-Diagramm
Navigieren Sie zum Verzeichnis amazon-sagemaker-operator-for-k8s/hack/charts/batch-transform-jobs/
.
Bearbeiten Sie die values.yaml
Datei, um sie inputdataconfig
durch Ihre Eingabedaten und outputPath durch Ihre S3-Buckets zu ersetzen, auf die die SageMaker Ausführungsrolle Schreibzugriff hat.
Erstellen Sie eine BatchTransformJob
-
Verwenden Sie den folgenden Befehl, um einen Batch-Transformationsauftrag zu erstellen:
helm install . --generate-name
Die Ausgabe sollte folgendermaßen aussehen:
NAME: chart-1574292948 LAST DEPLOYED: Wed Nov 20 23:35:49 2019 NAMESPACE: default STATUS: deployed REVISION: 1 TEST SUITE: None NOTES: Thanks for installing the sagemaker-k8s-batch-transform-job.
-
Führen Sie den folgenden Befehl aus, um zu überprüfen, ob das Helm-Diagramm erfolgreich erstellt wurde:
helm ls NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION chart-1474292948 default 1 2019-11-20 23:35:49.9136092 +0000 UTC deployed sagemaker-k8s-batchtransformjob-0.1.0 chart-1474292948 default 1 2019-11-20 23:35:49.9136092 +0000 UTC deployed sagemaker-k8s-hyperparametertuningjob-0.1.0 chart-1574292948 default 1 2019-11-20 23:35:49.9136092 +0000 UTC deployed sagemaker-k8s-trainingjob-0.1.0 rolebased-1574291698 default 1 2019-11-20 23:14:59.6777082 +0000 UTC deployed sagemaker-k8s-operator-0.1.0
Dieser Befehl erstellt eine
BatchTransformJob
Kubernetes-Ressource. Der Operator startet den eigentlichen Transformationsjob in SageMaker und aktualisiert dieBatchTransformJob
Kubernetes-Ressource, um den Status des Jobs in widerzuspiegeln. SageMaker Es fallen Gebühren für SageMaker Ressourcen an, die Sie während der Dauer Ihres Jobs nutzen. Sobald Ihr Auftrag abgeschlossen oder beendet ist, fallen für Sie keine Gebühren an.
Hinweis: Ermöglicht es Ihnen SageMaker nicht, einen laufenden Batch-Transformationsauftrag zu aktualisieren. Sie können keinen Parameter bearbeiten und die Konfigurationsdatei erneut anwenden. Sie müssen entweder den Metadatennamen ändern oder den vorhandenen Auftrag löschen und einen neuen erstellen. Ähnlich wie bei bestehenden Trainingsauftrags, wie z. B. TFJob
in Kubeflow, update
wird nicht unterstützt.
Liste BatchTransformJobs
Verwenden Sie den folgenden Befehl, um alle Aufträge aufzulisten, die mit dem Kubernetes-Operator erstellt wurden:
kubectl get batchtransformjob
Die Ausgabe sollte folgendermaßen aussehen:
NAME STATUS CREATION-TIME SAGEMAKER-JOB-NAME xgboost-mnist-batch-transform Completed 2019-11-18T03:44:00Z xgboost-mnist-a88fb19809b511eaac440aa8axgboost
Ein Batch-Transformationsauftrag wird weiterhin aufgeführt, nachdem der Auftrag abgeschlossen wurde oder fehlgeschlagen ist. Sie können einen hyperparametertuningjob
aus der Liste entfernen, indem Sie die folgenden Lösche ein BatchTransformJob Schritte ausführen. Für Aufträge, die abgeschlossen oder beendet wurden, fallen keine SageMaker Ressourcengebühren an.
Statuswerte für Batch-Transformation
Das Feld STATUS
kann einen der folgenden Werte annehmen:
-
Completed
-
InProgress
-
Failed
-
Stopped
-
Stopping
Diese Status stammen direkt aus der SageMaker offiziellen API Dokumentation.
Zusätzlich zum offiziellen SageMaker Status ist es möglich, STATUS
zu seinSynchronizingK8sJobWithSageMaker
. Das bedeutet, dass der Bediener den Auftrag noch nicht bearbeitet hat.
Beschreiben Sie ein BatchTransformJob
Sie können Debugging-Details mit dem Befehl describe
kubectl
abrufen.
kubectl describe batchtransformjob xgboost-mnist-batch-transform
Die Ausgabe sollte folgendermaßen aussehen:
Name: xgboost-mnist-batch-transform Namespace: default Labels: <none> Annotations: kubectl.kubernetes.io/last-applied-configuration: {"apiVersion":"sagemaker.aws.amazon.com/v1","kind":"BatchTransformJob","metadata":{"annotations":{},"name":"xgboost-mnist","namespace"... API Version: sagemaker.aws.amazon.com/v1 Kind: BatchTransformJob Metadata: Creation Timestamp: 2019-11-18T03:44:00Z Finalizers: sagemaker-operator-finalizer Generation: 2 Resource Version: 21990924 Self Link: /apis/sagemaker.aws.amazon.com/v1/namespaces/default/batchtransformjobs/xgboost-mnist UID: a88fb198-09b5-11ea-ac44-0aa8a9UIDNUM Spec: Model Name: TrainingJob-20190814SMJOb-IKEB Region: us-east-1 Transform Input: Content Type: text/csv Data Source: S 3 Data Source: S 3 Data Type: S3Prefix S 3 Uri: s3://amzn-s3-demo-bucket/mnist_kmeans_example/input Transform Job Name: xgboost-mnist-a88fb19809b511eaac440aa8a9SMJOB Transform Output: S 3 Output Path: s3://amzn-s3-demo-bucket/mnist_kmeans_example/output Transform Resources: Instance Count: 1 Instance Type: ml.m4.xlarge Status: Last Check Time: 2019-11-19T22:50:40Z Sage Maker Transform Job Name: xgboost-mnist-a88fb19809b511eaac440aaSMJOB Transform Job Status: Completed Events: <none>
Logs anzeigen von BatchTransformJobs
Verwenden Sie den folgenden Befehl, um die Protokolle des xgboost-mnist
Batch-Transformationsjobs anzuzeigen:
kubectl smlogs batchtransformjob xgboost-mnist-batch-transform
Lösche ein BatchTransformJob
Verwenden Sie den folgenden Befehl, um einen Batch-Transformationsauftrag in zu beenden SageMaker.
kubectl delete batchTransformJob xgboost-mnist-batch-transform
Die Ausgabe sollte folgendermaßen aussehen:
batchtransformjob.sagemaker.aws.amazon.com "xgboost-mnist" deleted
Dieser Befehl entfernt den Batch-Transformationsjob aus Ihrem Kubernetes-Cluster und stoppt ihn auch darin. SageMaker Für Aufträge, die beendet oder abgeschlossen wurden, fallen keine Gebühren für Ressourcen an. SageMaker Das Löschen dauert etwa 2 Minuten, um die Ressourcen von SageMaker zu bereinigen.
Hinweis: Löscht SageMaker keine Batch-Transformationsaufträge. Beendete Jobs werden weiterhin auf der SageMaker Konsole angezeigt.
Der HostingDeployment Operator
HostingDeployment Operatoren unterstützen das Erstellen und Löschen eines Endpunkts sowie das Aktualisieren eines vorhandenen Endpunkts, um daraus Rückschlüsse in Echtzeit ziehen zu können. Der Hosting-Bereitstellungs-Operator stimmt Ihre angegebene Jobspezifikation für die Hosting-Bereitstellung mit ab, SageMaker indem er Modelle, Endpunktkonfigurationen und Endpunkte in erstellt. SageMaker In der Dokumentation erfahren Sie mehr über Inferenz. SageMaker SageMaker CreateEndpoint API
Themen
Konfigurieren Sie eine Ressource HostingDeployment
Laden Sie die YAML Beispieldatei für den Hosting-Bereitstellungsjob mit dem folgenden Befehl herunter:
wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/xgboost-mnist-hostingdeployment.yaml
Die xgboost-mnist-hostingdeployment.yaml
Datei enthält die folgenden Komponenten, die nach Bedarf bearbeitet werden können:
-
ProductionVariants. Eine Produktionsvariante ist eine Reihe von Instanzen, die ein einzelnes Modell bedienen. SageMaker Der Lastenausgleich zwischen allen Produktionsvarianten erfolgt nach festgelegten Gewichten.
-
Modelle. Ein Modell ist der Behälter und die Ausführungsrolle, die ARN notwendig sind, um einem Modell zu dienen. Es erfordert mindestens einen einzelnen Container.
-
Container. Ein Container spezifiziert den Datensatz und das Serving-Image. Wenn Sie Ihren eigenen benutzerdefinierten Algorithmus anstelle eines von bereitgestellten Algorithmus verwenden SageMaker, muss der Inferenzcode die SageMaker Anforderungen erfüllen. Weitere Informationen finden Sie unter Verwenden eigener Algorithmen mit SageMaker.
Erstellen Sie eine HostingDeployment
Um eine zu erstellen HostingDeployment, verwenden Sie, kubectl
um die Datei hosting.yaml
mit dem folgenden Befehl anzuwenden:
kubectl apply -f hosting.yaml
SageMaker erstellt einen Endpunkt mit der angegebenen Konfiguration. Es fallen Gebühren für SageMaker Ressourcen an, die während der Lebensdauer Ihres Endpunkts genutzt werden. Sobald Ihr Endpunkt gelöscht wurde, fallen für Sie keine Gebühren an.
Der Erstellungsprozess dauert etwa 10 Minuten.
Liste HostingDeployments
Verwenden Sie den folgenden Befehl, um zu überprüfen, ob die erstellt HostingDeployment wurde:
kubectl get hostingdeployments
Die Ausgabe sollte folgendermaßen aussehen:
NAME STATUS SAGEMAKER-ENDPOINT-NAME host-xgboost Creating host-xgboost-def0e83e0d5f11eaaa450aSMLOGS
HostingDeployment Statuswerte
Das Statusfeld kann einer von mehreren Werten sein:
-
SynchronizingK8sJobWithSageMaker
: Der Operator bereitet die Erstellung des Endpunkts vor. -
ReconcilingEndpoint
: Der Operator erstellt, aktualisiert oder löscht Endpunktressourcen. HostingDeployment Bleibt der in diesem Zustand, sehenkubectl describe
Sie hier den Grund imAdditional
Feld. -
OutOfService
: Der Endpunkt ist nicht verfügbar, um eingehende Anfragen entgegenzunehmen. -
Creating
: CreateEndpointläuft. -
Updating
: UpdateEndpointoder UpdateEndpointWeightsAndCapacitiesläuft. -
SystemUpdating
: Der Endpunkt wird gerade gewartet und kann erst aktualisiert, gelöscht oder neu skaliert werden, wenn der Vorgang abgeschlossen ist. Durch diesen Wartungsvorgang werden keine vom Kunden angegebenen Werte wie VPC Konfiguration, AWS KMS Verschlüsselung, Modell, Instanztyp oder Instanzanzahl geändert. -
RollingBack
: Der Endpunkt kann weder nach oben noch nach unten skaliert oder seine Variantenstärke geändert werden und ist gerade dabei, zur vorherigen Konfiguration zurückzukehren. Sobald das Rollback abgeschlossen ist, kehrt der Endpunkt in einenInService
Status zurück. Dieser Übergangsstatus gilt nur für einen Endpunkt, für den Autoscaling aktiviert ist und bei dem im Rahmen eines UpdateEndpointWeightsAndCapacitiesAufrufs oder wenn der UpdateEndpointWeightsAndCapacitiesVorgang explizit aufgerufen wird, variantenweise Gewichts- oder Kapazitätsänderungen vorgenommen werden. -
InService
: Der Endpunkt ist für die Verarbeitung eingehender Anfragen verfügbar. -
Deleting
: DeleteEndpointläuft. -
Failed
: Der Endpunkt konnte nicht erstellt, aktualisiert oder neu skaliert werden. Verwenden Sie DescribeEndpoint: FailureReason für Informationen über den Fehler. DeleteEndpointist der einzige Vorgang, der an einem ausgefallenen Endpunkt ausgeführt werden kann.
Beschreiben Sie ein HostingDeployment
Sie können Debugging-Details mit dem Befehl describe
kubectl
abrufen.
kubectl describe hostingdeployment
Die Ausgabe sollte folgendermaßen aussehen:
Name: host-xgboost Namespace: default Labels: <none> Annotations: kubectl.kubernetes.io/last-applied-configuration: {"apiVersion":"sagemaker.aws.amazon.com/v1","kind":"HostingDeployment","metadata":{"annotations":{},"name":"host-xgboost","namespace":"def..." API Version: sagemaker.aws.amazon.com/v1 Kind: HostingDeployment Metadata: Creation Timestamp: 2019-11-22T19:40:00Z Finalizers: sagemaker-operator-finalizer Generation: 1 Resource Version: 4258134 Self Link: /apis/sagemaker.aws.amazon.com/v1/namespaces/default/hostingdeployments/host-xgboost UID: def0e83e-0d5f-11ea-aa45-0a3507uiduid Spec: Containers: Container Hostname: xgboost Image: 123456789012.dkr.ecr.us-east-2.amazonaws.com/xgboost:latest Model Data URL: s3://amzn-s3-demo-bucket/inference/xgboost-mnist/model.tar.gz Models: Containers: xgboost Execution Role Arn: arn:aws:iam::123456789012:role/service-role/AmazonSageMaker-ExecutionRole Name: xgboost-model Primary Container: xgboost Production Variants: Initial Instance Count: 1 Instance Type: ml.c5.large Model Name: xgboost-model Variant Name: all-traffic Region: us-east-2 Status: Creation Time: 2019-11-22T19:40:04Z Endpoint Arn: arn:aws:sagemaker:us-east-2:123456789012:endpoint/host-xgboost-def0e83e0d5f11eaaaexample Endpoint Config Name: host-xgboost-1-def0e83e0d5f11e-e08f6c510d5f11eaaa450aexample Endpoint Name: host-xgboost-def0e83e0d5f11eaaa450a350733ba06 Endpoint Status: Creating Endpoint URL: https://runtime.sagemaker.us-east-2.amazonaws.com/endpoints/host-xgboost-def0e83e0d5f11eaaaexample/invocations Last Check Time: 2019-11-22T19:43:57Z Last Modified Time: 2019-11-22T19:40:04Z Model Names: Name: xgboost-model Value: xgboost-model-1-def0e83e0d5f11-df5cc9fd0d5f11eaaa450aexample Events: <none>
Das Statusfeld enthält weitere Informationen mithilfe der folgenden Felder:
-
Additional
: Zusätzliche Informationen über den Status des Hosting-Einsatzes. Dieses Feld ist optional und wird nur im Falle eines Fehlers ausgefüllt. -
Creation Time
: Als der Endpunkt in erstellt wurde SageMaker. -
Endpoint ARN
: Der SageMaker EndpunktARN. -
Endpoint Config Name
: Der SageMaker Name der Endpunktkonfiguration. -
Endpoint Name
: Der SageMaker Name des Endpunkts. -
Endpoint Status
: Der Status des Endpunkts. -
Endpoint URL
: Der HTTPSURL, der für den Zugriff auf den Endpunkt verwendet werden kann. Weitere Informationen finden Sie unter Bereitstellen eines Modells für SageMaker Hostingdienste. -
FailureReason
: Wenn ein Befehl zum Erstellen, Aktualisieren oder Löschen fehlschlägt, wird die Ursache hier angezeigt. -
Last Check Time
: Das letzte Mal, dass der Operator den Status des Endpunkts überprüft hat. -
Last Modified Time
: Das letzte Mal wurde der Endpunkt geändert. -
Model Names
: Ein Schlüssel-Wert-Paar aus HostingDeployment Modellnamen und Modellnamen SageMaker.
Aufrufen des Endpunkts
Sobald der Endpunktstatus lautetInService
, können Sie den Endpunkt auf zwei Arten aufrufen: mit dem AWS CLI, der die Authentifizierung durchführt und die Signierung URL anfordert, oder mit einem HTTP Client wie c. URL Wenn Sie Ihren eigenen Client verwenden, müssen Sie die AWS URL v4-Signatur und Authentifizierung selbst durchführen.
Führen Sie den folgenden Befehl aus AWS CLI, um den Endpunkt mit dem aufzurufen. Achten Sie darauf, die Region und den Endpunktnamen durch die Region und den Endpunktnamen Ihres SageMaker Endpunkts zu ersetzen. Diese Informationen können der Ausgabe von kubectl describe
entnommen werden.
# Invoke the endpoint with mock input data. aws sagemaker-runtime invoke-endpoint \ --region us-east-2 \ --endpoint-name
<endpoint name>
\ --body $(seq 784 | xargs echo | sed 's/ /,/g') \ >(cat) \ --content-type text/csv > /dev/null
Wenn Ihre Region beispielsweise lautet us-east-2
und Ihr Endpunkt-Konfigurationsname lautet host-xgboost-f56b6b280d7511ea824b129926example
, würde der folgende Befehl den Endpunkt aufrufen:
aws sagemaker-runtime invoke-endpoint \ --region us-east-2 \ --endpoint-name host-xgboost-f56b6b280d7511ea824b1299example \ --body $(seq 784 | xargs echo | sed 's/ /,/g') \ >(cat) \ --content-type text/csv > /dev/null 4.95847082138
Hier ist 4.95847082138
die Vorhersage aus dem Modell für die Scheindaten.
Aktualisieren HostingDeployment
-
Sobald a den Status HostingDeployment hat
InService
, kann es aktualisiert werden. Es kann etwa 10 Minuten dauern HostingDeployment , bis es in Betrieb ist. Um zu überprüfen, ob der StatusInService
ist, verwenden Sie den folgenden Befehl:kubectl get hostingdeployments
-
Der HostingDeployment kann aktualisiert werden, bevor der Status lautet
InService
. Der Operator wartet, bis der SageMaker Endpunkt erreicht ist,InService
bevor er das Update anwendet.Um ein Update anzuwenden, ändern Sie die
hosting.yaml
-Datei. Ändern Sie dasinitialInstanceCount
Feld beispielsweise wie folgt von 1 auf 2:apiVersion: sagemaker.aws.amazon.com/v1 kind: HostingDeployment metadata: name: host-xgboost spec: region: us-east-2 productionVariants: - variantName: all-traffic modelName: xgboost-model initialInstanceCount: 2 instanceType: ml.c5.large models: - name: xgboost-model executionRoleArn: arn:aws:iam::123456789012:role/service-role/AmazonSageMaker-ExecutionRole primaryContainer: xgboost containers: - xgboost containers: - containerHostname: xgboost modelDataUrl: s3://amzn-s3-demo-bucket/inference/xgboost-mnist/model.tar.gz image: 123456789012.dkr.ecr.us-east-2.amazonaws.com/xgboost:latest
-
Speichern Sie die Datei und verwenden Sie
kubectl
sie dann, um Ihr Update wie folgt anzuwenden. Der Status sollte sich vonInService
zuReconcilingEndpoint
und dann zuUpdating
ändern.$ kubectl apply -f hosting.yaml hostingdeployment.sagemaker.aws.amazon.com/host-xgboost configured $ kubectl get hostingdeployments NAME STATUS SAGEMAKER-ENDPOINT-NAME host-xgboost ReconcilingEndpoint host-xgboost-def0e83e0d5f11eaaa450a350abcdef $ kubectl get hostingdeployments NAME STATUS SAGEMAKER-ENDPOINT-NAME host-xgboost Updating host-xgboost-def0e83e0d5f11eaaa450a3507abcdef
SageMaker stellt eine neue Gruppe von Instanzen mit Ihren Modellen bereit, leitet den Datenverkehr auf die neuen Instanzen um und entleert die alten Instanzen. Sobald dieser Prozess beginnt, wird der Status Updating
. Nachdem das Update abgeschlossen ist, wird Ihr Endpunkt InService
. Dieser Vorgang dauert ca. 10 Minuten.
Löschen Sie die HostingDeployment
Verwenden Sie
kubectl
, um eine HostingDeployment mit dem folgenden Befehl zu löschen:kubectl delete hostingdeployments host-xgboost
Die Ausgabe sollte folgendermaßen aussehen:
hostingdeployment.sagemaker.aws.amazon.com "host-xgboost" deleted
-
Verwenden Sie den folgenden Befehl, um zu überprüfen, ob die Hosting-Bereitstellung gelöscht wurde:
kubectl get hostingdeployments No resources found.
Für gelöschte Endpoints fallen keine Gebühren für SageMaker Ressourcen an.
Der Betreiber ProcessingJob
ProcessingJob Operatoren werden verwendet, um SageMaker Amazon-Verarbeitungsaufträge zu starten. Weitere Informationen zur SageMaker Verarbeitung von Aufträgen finden Sie unter CreateProcessingJob.
Themen
Erstellen Sie eine ProcessingJob mithilfe einer YAML Datei
Gehen Sie wie folgt vor, um mithilfe einer YAML Datei einen SageMaker Amazon-Verarbeitungsauftrag zu erstellen:
-
Laden Sie das Vorverarbeitungsskript
kmeans_preprocessing.py
herunter.wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/kmeans_preprocessing.py
-
Erstellen Sie in einem Ihrer Amazon Simple Storage Service (Amazon S3) -Buckets einen
mnist_kmeans_example/processing_code
Ordner und laden Sie das Skript in den Ordner hoch. -
Laden Sie die Datei
kmeans-mnist-processingjob.yaml
herunter.wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/kmeans-mnist-processingjob.yaml
-
Bearbeiten Sie die YAML Datei, um Ihren zu spezifizieren,
sagemaker-execution-role
und ersetzen Sie alle Instanzen vonamzn-s3-demo-bucket
durch Ihren S3-Bucket.... metadata: name: kmeans-mnist-processing ... roleArn: arn:aws:iam::
<acct-id>
:role/service-role/<sagemaker-execution-role>
... processingOutputConfig: outputs: ... s3Output: s3Uri: s3://<amzn-s3-demo-bucket>
/mnist_kmeans_example/output/ ... processingInputs: ... s3Input: s3Uri: s3://<amzn-s3-demo-bucket>
/mnist_kmeans_example/processing_code/kmeans_preprocessing.pySie
sagemaker-execution-role
müssen über Berechtigungen verfügen, um in Ihrem Namen auf Ihren S3-Bucket CloudWatch, Amazon und andere Dienste zugreifen zu SageMaker können. Weitere Informationen zum Erstellen einer Ausführungsrolle finden Sie unter SageMakerRollen. -
Wenden Sie die YAML Datei mit einem der folgenden Befehle an.
Für eine Installation im Clusterbereich:
kubectl apply -f kmeans-mnist-processingjob.yaml
Für eine Installation im Namespace-Bereich:
kubectl apply -f kmeans-mnist-processingjob.yaml -n
<NAMESPACE>
Liste ProcessingJobs
Verwenden Sie einen der folgenden Befehle, um alle mit dem ProcessingJob Operator erstellten Jobs aufzulisten. SAGEMAKER-JOB-NAME
stammt aus dem metadata
Abschnitt der YAML Datei.
Für eine Installation im Clusterbereich:
kubectl get ProcessingJob kmeans-mnist-processing
Für eine Installation im Namespace-Bereich:
kubectl get ProcessingJob -n
<NAMESPACE>
kmeans-mnist-processing
Ihre Ausgabe sollte wie folgt aussehen:
NAME STATUS CREATION-TIME SAGEMAKER-JOB-NAME kmeans-mnist-processing InProgress 2020-09-22T21:13:25Z kmeans-mnist-processing-7410ed52fd1811eab19a165ae9f9e385
In der Ausgabe werden alle Aufträge unabhängig von ihrem Status aufgeführt. Informationen zum Entfernen eines Auftrags aus der Liste finden Sie unter Löschen eines Verarbeitungsauftrags.
ProcessingJob Status
-
SynchronizingK8sJobWithSageMaker
– Der Auftrag wird zuerst an den Cluster übermittelt. Der Operator hat die Anforderung erhalten und bereitet die Erstellung des Verarbeitungsauftrags vor. -
Reconciling
– Der Operator initialisiert oder behebt vorübergehende Fehler und andere Fehler. Bleibt der Verarbeitungsauftrag in diesem Status, verwenden Sie denkubectl
describe
Befehl, um den Grund im FeldAdditional
zu ermitteln. -
InProgress | Completed | Failed | Stopping | Stopped
— Status des SageMaker Verarbeitungsauftrags. Weitere Informationen finden Sie unter DescribeProcessingJob. -
Error
– Der Operator kann die Wiederherstellung nicht durch einen Abgleich durchführen.
Für Aufträge, die abgeschlossen, beendet oder fehlgeschlagen sind, fallen keine weiteren SageMaker Ressourcenkosten an.
Beschreiben Sie ein ProcessingJob
Verwenden Sie einen der folgenden Befehle, um weitere Informationen zu einem Verarbeitungsauftrag zu erhalten. Diese Befehle werden normalerweise zum Debuggen eines Problems oder zum Überprüfen der Parameter eines Verarbeitungsauftrags verwendet.
Für eine Installation im Clusterbereich:
kubectl describe processingjob kmeans-mnist-processing
Für eine Installation im Namespace-Bereich:
kubectl describe processingjob kmeans-mnist-processing -n
<NAMESPACE>
Die Ausgabe Ihres Verarbeitungsauftrags sollte in etwa so aussehen wie die folgende.
$ kubectl describe ProcessingJob kmeans-mnist-processing Name: kmeans-mnist-processing Namespace: default Labels: <none> Annotations: kubectl.kubernetes.io/last-applied-configuration: {"apiVersion":"sagemaker.aws.amazon.com/v1","kind":"ProcessingJob","metadata":{"annotations":{},"name":"kmeans-mnist-processing",... API Version: sagemaker.aws.amazon.com/v1 Kind: ProcessingJob Metadata: Creation Timestamp: 2020-09-22T21:13:25Z Finalizers: sagemaker-operator-finalizer Generation: 2 Resource Version: 21746658 Self Link: /apis/sagemaker.aws.amazon.com/v1/namespaces/default/processingjobs/kmeans-mnist-processing UID: 7410ed52-fd18-11ea-b19a-165ae9f9e385 Spec: App Specification: Container Entrypoint: python /opt/ml/processing/code/kmeans_preprocessing.py Image Uri: 763104351884.dkr.ecr.us-west-2.amazonaws.com/pytorch-training:1.5.0-cpu-py36-ubuntu16.04 Environment: Name: MYVAR Value: my_value Name: MYVAR2 Value: my_value2 Network Config: Processing Inputs: Input Name: mnist_tar s3Input: Local Path: /opt/ml/processing/input s3DataType: S3Prefix s3InputMode: File s3Uri: s3://<s3bucket>-us-west-2/algorithms/kmeans/mnist/mnist.pkl.gz Input Name: source_code s3Input: Local Path: /opt/ml/processing/code s3DataType: S3Prefix s3InputMode: File s3Uri: s3://<s3bucket>/mnist_kmeans_example/processing_code/kmeans_preprocessing.py Processing Output Config: Outputs: Output Name: train_data s3Output: Local Path: /opt/ml/processing/output_train/ s3UploadMode: EndOfJob s3Uri: s3://<s3bucket>/mnist_kmeans_example/output/ Output Name: test_data s3Output: Local Path: /opt/ml/processing/output_test/ s3UploadMode: EndOfJob s3Uri: s3://<s3bucket>/mnist_kmeans_example/output/ Output Name: valid_data s3Output: Local Path: /opt/ml/processing/output_valid/ s3UploadMode: EndOfJob s3Uri: s3://<s3bucket>/mnist_kmeans_example/output/ Processing Resources: Cluster Config: Instance Count: 1 Instance Type: ml.m5.xlarge Volume Size In GB: 20 Region: us-west-2 Role Arn: arn:aws:iam::<acct-id>:role/m-sagemaker-role Stopping Condition: Max Runtime In Seconds: 1800 Tags: Key: tagKey Value: tagValue Status: Cloud Watch Log URL: https://us-west-2.console.aws.amazon.com/cloudwatch/home?region=us-west-2#logStream:group=/aws/sagemaker/ProcessingJobs;prefix=kmeans-mnist-processing-7410ed52fd1811eab19a165ae9f9e385;streamFilter=typeLogStreamPrefix Last Check Time: 2020-09-22T21:14:29Z Processing Job Status: InProgress Sage Maker Processing Job Name: kmeans-mnist-processing-7410ed52fd1811eab19a165ae9f9e385 Events: <none>
Lösche ein ProcessingJob
Wenn Sie einen Verarbeitungsauftrag löschen, wird der SageMaker Verarbeitungsauftrag aus Kubernetes entfernt, der Job wird jedoch nicht aus Kubernetes gelöscht. SageMaker Wenn der Jobstatus in SageMaker lautet, ist InProgress
der Job gestoppt. Für die Verarbeitung von Jobs, die angehalten wurden, fallen keine SageMaker Ressourcengebühren an. Verwenden Sie einen der folgenden Befehle, um einen Verarbeitungsauftrag zu löschen.
Für eine Installation im Clusterbereich:
kubectl delete processingjob kmeans-mnist-processing
Für eine Installation im Namespace-Bereich:
kubectl delete processingjob kmeans-mnist-processing -n
<NAMESPACE>
Die Ausgabe Ihres Verarbeitungsauftrags sollte in etwa so aussehen wie die folgende.
processingjob.sagemaker.aws.amazon.com "kmeans-mnist-processing" deleted
Anmerkung
SageMaker löscht den Verarbeitungsauftrag nicht. Beendete Jobs werden weiterhin in der SageMaker Konsole angezeigt. Das Bereinigen der Ressourcen mit dem delete
Befehl dauert einige Minuten SageMaker.
HostingAutoscalingPolicy (HAP) Betreiber
Der Operator HostingAutoscalingPolicy (HAP) verwendet eine Liste von Ressourcen IDs als Eingabe und wendet auf jede von ihnen dieselbe Richtlinie an. Jede Ressourcen-ID ist eine Kombination aus einem Endpunktnamen und einem Variantennamen. Der HAP Operator führt zwei Schritte aus: Er registriert die Ressource IDs und wendet dann die Skalierungsrichtlinie auf jede Ressourcen-ID an. Delete
macht beide Aktionen rückgängig. Sie können das HAP auf einen vorhandenen SageMaker Endpunkt anwenden oder mit dem HostingDeployment Operator einen neuen SageMaker Endpunkt erstellen. Weitere Informationen zur SageMaker automatischen Skalierung finden Sie in der Dokumentation zur Richtlinie zur automatischen Skalierung von Anwendungen.
Anmerkung
In Ihren kubectl
Befehlen können Sie anstelle von hostingautoscalingpolicy
die Kurzform, hap
, verwenden.
Themen
- Erstellen Sie eine HostingAutoscalingPolicy mithilfe einer Datei YAML
- Liste HostingAutoscalingPolicies
- Beschreiben Sie ein HostingAutoscalingPolicy
- Aktualisieren Sie ein HostingAutoscalingPolicy
- Löscht eine HostingAutoscalingPolicy
- Aktualisieren oder löschen Sie einen Endpunkt mit einem HostingAutoscalingPolicy
Erstellen Sie eine HostingAutoscalingPolicy mithilfe einer Datei YAML
Verwenden Sie eine YAML Datei, um eine HostingAutoscalingPolicy (HAP) zu erstellen, die eine vordefinierte oder benutzerdefinierte Metrik auf einen oder mehrere SageMaker Endpunkte anwendet.
Amazon SageMaker benötigt bestimmte Werte, um Autoscaling auf Ihre Variante anzuwenden. Wenn diese Werte nicht in der YAML Spezifikation angegeben sind, wendet der HAP Operator die folgenden Standardwerte an.
# Do not change Namespace = "sagemaker" # Do not change ScalableDimension = "sagemaker:variant:DesiredInstanceCount" # Only one supported PolicyType = "TargetTrackingScaling" # This is the default policy name but can be changed to apply a custom policy DefaultAutoscalingPolicyName = "SageMakerEndpointInvocationScalingPolicy"
Verwenden Sie die folgenden Beispiele, um eine zu erstellenHAP, die eine vordefinierte oder benutzerdefinierte Metrik auf einen oder mehrere Endpunkte anwendet.
Beispiel 1: Wenden Sie eine vordefinierte Metrik auf eine einzelne Endpunktvariante an
-
Laden Sie die YAML Beispieldatei für eine vordefinierte Metrik mit dem folgenden Befehl herunter:
wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/hap-predefined-metric.yaml
-
Bearbeiten Sie die YAML Datei, um Ihr
endpointName
variantName
, und anzugebenRegion
. -
Verwenden Sie einen der folgenden Befehle, um eine vordefinierte Metrik auf eine einzelne Ressourcen-ID (Kombination aus Endpunktname und Variantenname) anzuwenden.
Für eine Installation im Clusterbereich:
kubectl apply -f hap-predefined-metric.yaml
Für eine Installation im Namespace-Bereich:
kubectl apply -f hap-predefined-metric.yaml -n
<NAMESPACE>
Beispiel 2: Wenden Sie eine benutzerdefinierte Metrik auf eine einzelne Endpunktvariante an
-
Laden Sie die YAML Beispieldatei für eine benutzerdefinierte Metrik mit dem folgenden Befehl herunter:
wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/hap-custom-metric.yaml
-
Bearbeiten Sie die YAML Datei, um Ihr
endpointName
variantName
, und anzugebenRegion
. -
Verwenden Sie einen der folgenden Befehle, um anstelle der empfohlenen
SageMakerVariantInvocationsPerInstance
eine benutzerdefinierte Metrik auf eine einzelne Ressourcen-ID (Kombination aus Endpunktname und Variantenname) anzuwenden.Anmerkung
Amazon überprüft die Gültigkeit Ihrer YAML Spezifikation SageMaker nicht.
Für eine Installation im Clusterbereich:
kubectl apply -f hap-custom-metric.yaml
Für eine Installation im Namespace-Bereich:
kubectl apply -f hap-custom-metric.yaml -n
<NAMESPACE>
Beispiel 3: Wenden Sie eine Skalierungsrichtlinie auf mehrere Endpunkte und Varianten an
Sie können den HAP Operator verwenden, um dieselbe Skalierungsrichtlinie auf mehrere Ressourcen IDs anzuwenden. Für jede Ressourcen-ID (Kombination aus Endpunktname und Variantenname) wird eine separate scaling_policy
Anfrage erstellt.
-
Laden Sie die YAML Beispieldatei für eine vordefinierte Metrik mit dem folgenden Befehl herunter:
wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/hap-predefined-metric.yaml
-
Bearbeiten Sie die YAML Datei, um Ihre
Region
endpointName
und mehrerevariantName
AND-Werte anzugeben. -
Verwenden Sie einen der folgenden Befehle, um eine vordefinierte Metrik auf mehrere Ressourcen anzuwenden IDs (Kombinationen aus Endpunktname und Variantenname).
Für eine Installation im Clusterbereich:
kubectl apply -f hap-predefined-metric.yaml
Für eine Installation im Namespace-Bereich:
kubectl apply -f hap-predefined-metric.yaml -n
<NAMESPACE>
Überlegungen HostingAutoscalingPolicies für mehrere Endpunkte und Varianten
Die folgenden Überlegungen gelten, wenn Sie mehrere Ressourcen IDs verwenden:
-
Wenn Sie eine einzelne Richtlinie auf mehrere Ressourcen anwendenIDs, ARN wird eine Richtlinie pro Ressourcen-ID erstellt. Fünf Endpunkte haben fünf P. olicyARNs Wenn Sie den
describe
Befehl für die Richtlinie ausführen, werden die Antworten als ein Auftrag angezeigt und enthalten einen einzelnen Auftragsstatus. -
Wenn Sie eine benutzerdefinierte Metrik auf mehrere Ressourcen anwendenIDs, wird dieselbe Dimension oder derselbe Wert für alle Ressourcen-ID-Werte (Variante) verwendet. Wenn Sie beispielsweise eine Kundenmetrik für die Instances 1-5 anwenden und die Dimension der Endpunktvariante der Variante 1 zugeordnet wird, werden alle Endpunkte nach oben oder unten skaliert, wenn Variante 1 die Metriken überschreitet.
-
Der HAP Operator unterstützt die Aktualisierung der RessourcenlisteIDs. Wenn Sie eine Ressource IDs zur Spezifikation ändern, hinzufügen oder löschen, wird die Autoscaling-Richtlinie aus der vorherigen Variantenliste entfernt und auf die neu angegebenen Ressourcen-ID-Kombinationen angewendet. Verwenden Sie den
describe
Befehl, um die Ressource aufzulistenIDs, auf die die Richtlinie derzeit angewendet wird.
Liste HostingAutoscalingPolicies
Verwenden Sie einen der folgenden Befehle, um alle HostingAutoscalingPolicies (HAPs) aufzulisten, die mit dem HAP Operator erstellt wurden.
Für eine Installation im Clusterbereich:
kubectl get hap
Für eine Installation im Namespace-Bereich:
kubectl get hap -n
<NAMESPACE>
Ihre Ausgabe sollte wie folgt aussehen:
NAME STATUS CREATION-TIME hap-predefined Created 2021-07-13T21:32:21Z
Verwenden Sie den folgenden Befehl, um den Status Ihres HostingAutoscalingPolicy (HAP) zu überprüfen.
kubectl get hap
<job-name>
Es wird einer der folgenden Werte zurückgegeben:
-
Reconciling
– Bei bestimmten Fehlertypen wird der Status alsReconciling
statt alsError
angezeigt. Einige Beispiele sind serverseitige Fehler und Endpunkte im StatusCreating
oderUpdating
. Prüfen Sie das FeldAdditional
in den Status- oder Bedienerprotokollen für weitere Einzelheiten. Created
Error
Um den Autoscaling-Endpunkt anzuzeigen, auf den Sie die Richtlinie angewendet haben
-
Öffnen Sie die SageMaker Amazon-Konsole unter https://console.aws.amazon.com/sagemaker/
. -
Erweitern Sie im linken Seitenbereich die Option Inferenz.
-
Wählen Sie Endpunkte aus.
-
Wählen Sie den Namen des interessierenden Endpunkts aus.
-
Blättern Sie zum Abschnitt Endpunkt-Laufzeiteinstellungen.
Beschreiben Sie ein HostingAutoscalingPolicy
Verwenden Sie den folgenden Befehl, um weitere Informationen zu a HostingAutoscalingPolicy (HAP) zu erhalten. Diese Befehle werden normalerweise zum Debuggen eines Problems oder zum Überprüfen der Ressource IDs (Kombinationen aus Endpunktname und Variantenname) von verwendet. HAP
kubectl describe hap
<job-name>
Aktualisieren Sie ein HostingAutoscalingPolicy
Der Operator HostingAutoscalingPolicy (HAP) unterstützt Updates. Sie können Ihre YAML Spezifikation bearbeiten, um die Werte zu ändern, und dann die Richtlinie erneut anwenden. Der HAP Operator löscht die bestehende Richtlinie und wendet die neue Richtlinie an.
Löscht eine HostingAutoscalingPolicy
Verwenden Sie einen der folgenden Befehle, um eine HostingAutoscalingPolicy (HAP) -Richtlinie zu löschen.
Für eine Installation im Clusterbereich:
kubectl delete hap hap-predefined
Für eine Installation im Namespace-Bereich:
kubectl delete hap hap-predefined -n
<NAMESPACE>
Dieser Befehl löscht die Skalierungsrichtlinie und hebt die Registrierung des Skalierungsziels bei Kubernetes auf. Dieser Befehl liefert die folgende Ausgabe:
hostingautoscalingpolicies.sagemaker.aws.amazon.com "hap-predefined" deleted
Aktualisieren oder löschen Sie einen Endpunkt mit einem HostingAutoscalingPolicy
Um einen Endpunkt mit einem HostingAutoscalingPolicy (HAP) zu aktualisieren, verwenden Sie den kubectl
delete
Befehl, um den zu entfernenHAP, den Endpunkt zu aktualisieren und dann erneut anzuwenden. HAP
Um einen Endpunkt mit einem zu löschenHAP, verwenden Sie den kubectl
delete
Befehl zum Entfernen des, HAP bevor Sie den Endpunkt löschen.