Verwenden Sie Amazon SageMaker Jobs - Amazon SageMaker

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

Wichtig

Wir stellen die Entwicklung und den technischen Support der Originalversion von SageMaker Operators for Kubernetes ein.

Wenn Sie derzeit eine Version v1.2.2 oder eine niedrigere Version von SageMaker Operators for Kubernetes verwenden, empfehlen wir, Ihre Ressourcen auf den ACKService Controller für Amazon zu migrieren. SageMaker Der ACK Service Controller ist eine neue Generation von SageMaker Operatoren für Kubernetes, die auf AWS Controllers for Kubernetes () basieren. ACK

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.

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

Erstellen Sie eine TrainingJob mithilfe einer YAML Datei

  1. 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
  2. Bearbeiten Sie die xgboost-mnist-trainingjob.yaml Datei<sagemaker-execution-role>, um den roleArn Parameter durch Ihren und outputPath Ihren Amazon S3 S3-Bucket zu ersetzen, auf den die SageMaker Ausführungsrolle Schreibzugriff hat. Sie roleArn 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.

  1. 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
  2. Navigieren Sie zum amazon-sagemaker-operator-for-k8s/hack/charts/training-jobs/ Ordner und bearbeiten Sie die values.yaml Datei, um Werte wie rolearn und outputpath 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

Erstellen Sie eine HyperparameterTuningJob mithilfe einer Datei YAML

  1. 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
  2. Bearbeiten Sie die xgboost-mnist-hpo.yaml Datei, um den roleArn Parameter durch Ihren sagemaker-execution-role zu ersetzen. Damit der Hyperparameter-Tuning-Job erfolgreich ist, müssen Sie auch die s3InputPath und s3OutputPath 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.

  1. 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
  2. Navigieren Sie zum Verzeichnis amazon-sagemaker-operator-for-k8s/hack/charts/hyperparameter-tuning-jobs/.

  3. Bearbeiten Sie die values.yaml Datei, um den roleArn Parameter durch Ihren sagemaker-execution-role zu ersetzen. Damit der Hyperparameter-Tuning-Job erfolgreich ist, müssen Sie auch die s3InputPath und s3OutputPath 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.

Erstellen Sie einen BatchTransformJob mithilfe einer YAML Datei

  1. 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
  2. Bearbeiten Sie die Dateixgboost-mnist-batchtransform.yaml, um die erforderlichen Parameter zu ändern und die inputdataconfig durch Ihre Eingabedaten und s3OutputPath durch Ihre Amazon S3 S3-Buckets zu ersetzen, auf die die SageMaker Ausführungsrolle Schreibzugriff hat.

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

  1. 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.
  2. 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 die BatchTransformJob 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

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, sehen kubectl describe Sie hier den Grund im Additional 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 einen InService 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

  1. Sobald a den Status HostingDeployment hatInService, kann es aktualisiert werden. Es kann etwa 10 Minuten dauern HostingDeployment , bis es in Betrieb ist. Um zu überprüfen, ob der Status InService ist, verwenden Sie den folgenden Befehl:

    kubectl get hostingdeployments
  2. Der HostingDeployment kann aktualisiert werden, bevor der Status lautetInService. 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 das initialInstanceCount 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
  3. Speichern Sie die Datei und verwenden Sie kubectl sie dann, um Ihr Update wie folgt anzuwenden. Der Status sollte sich von InService zu ReconcilingEndpoint und dann zu Updating ä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

  1. Verwenden Siekubectl, 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
  2. 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.

Erstellen Sie eine ProcessingJob mithilfe einer YAML Datei

Gehen Sie wie folgt vor, um mithilfe einer YAML Datei einen SageMaker Amazon-Verarbeitungsauftrag zu erstellen:

  1. Laden Sie das Vorverarbeitungsskript kmeans_preprocessing.py herunter.

    wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/kmeans_preprocessing.py
  2. 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.

  3. 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
  4. Bearbeiten Sie die YAML Datei, um Ihren zu spezifizieren, sagemaker-execution-role und ersetzen Sie alle Instanzen von amzn-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.py

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

  5. 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 den kubectl describe Befehl, um den Grund im Feld Additional 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. Deletemacht 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.

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

  1. 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
  2. Bearbeiten Sie die YAML Datei, um Ihr endpointNamevariantName, und anzugebenRegion.

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

  1. 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
  2. Bearbeiten Sie die YAML Datei, um Ihr endpointNamevariantName, und anzugebenRegion.

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

  1. 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
  2. Bearbeiten Sie die YAML Datei, um Ihre Region endpointName und mehrere variantName AND-Werte anzugeben.

  3. 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 describeBefehl, 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 als Reconciling statt als Error angezeigt. Einige Beispiele sind serverseitige Fehler und Endpunkte im Status Creating oder Updating. Prüfen Sie das Feld Additional in den Status- oder Bedienerprotokollen für weitere Einzelheiten.

  • Created

  • Error

Um den Autoscaling-Endpunkt anzuzeigen, auf den Sie die Richtlinie angewendet haben
  1. Öffnen Sie die SageMaker Amazon-Konsole unter https://console.aws.amazon.com/sagemaker/.

  2. Erweitern Sie im linken Seitenbereich die Option Inferenz.

  3. Wählen Sie Endpunkte aus.

  4. Wählen Sie den Namen des interessierenden Endpunkts aus.

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