Usa Amazon SageMaker Jobs - Amazon SageMaker

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Usa Amazon SageMaker Jobs

Questa sezione è basata sulla versione originale di SageMaker Operators for Kubernetes.

Importante

Stiamo interrompendo lo sviluppo e il supporto tecnico della versione originale di Operators for Kubernetes. SageMaker

Se attualmente utilizzi una versione v1.2.2 o precedente di SageMaker Operators for Kubernetes, ti consigliamo di migrare le tue risorse al controller di servizio ACK per Amazon. SageMaker Il controller di servizio ACK è una nuova generazione di SageMaker Operators for Kubernetes basata su AWS Controllers for Kubernetes (ACK).

Per informazioni sulle fasi di migrazione, consulta Migrazione di risorse verso gli operatori più recenti.

Per le risposte alle domande frequenti sulla fine del supporto della versione originale di Operators for Kubernetes, consulta SageMaker Annuncio della fine del supporto per la versione originale di SageMaker Operators for Kubernetes

Per eseguire un SageMaker job Amazon utilizzando Operators for Kubernetes, puoi applicare un file YAML o utilizzare gli Helm Charts forniti.

Tutti i processi di esempio degli operatori nei seguenti tutorial utilizzano dati di esempio presi da un set di dati MNIST pubblico. Per eseguire tali esempi, scarica il set di dati nel bucket Amazon S3. Puoi trovare il set di dati in Scarica il set di dati MNIST.

TrainingJob L'operatore

Gli addetti alla formazione riconciliano le specifiche del lavoro di formazione specificato e lo avviano automaticamente. SageMaker SageMaker Puoi saperne di più sui lavori di SageMaker formazione nella documentazione dell'API. SageMaker CreateTrainingJob

Crea un file TrainingJob utilizzando un file YAML

  1. Scarica il file YAML di esempio per l’addestramento utilizzando il seguente comando:

    wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/xgboost-mnist-trainingjob.yaml
  2. Modifica il xgboost-mnist-trainingjob.yaml file per sostituire il roleArn parametro con il tuo <sagemaker-execution-role> e outputPath con il tuo bucket Amazon S3 a cui il ruolo di SageMaker esecuzione ha accesso in scrittura. roleArnDevono disporre delle autorizzazioni per SageMaker poter accedere ad Amazon S3, CloudWatch Amazon e altri servizi per tuo conto. Per ulteriori informazioni sulla creazione di un SageMaker ExecutionRole, consulta SageMaker Ruoli. Applica il file YAML usando il comando seguente:

    kubectl apply -f xgboost-mnist-trainingjob.yaml

Crea un TrainingJob diagramma utilizzando un Helm

Puoi usare Helm Charts per correre. TrainingJobs

  1. Clona il GitHub repository per ottenere il codice sorgente usando il seguente comando:

    git clone https://github.com/aws/amazon-sagemaker-operator-for-k8s.git
  2. Vai alla cartella amazon-sagemaker-operator-for-k8s/hack/charts/training-jobs/ e modifica il file values.yaml per sostituire valori come rolearn e outputpath con valori che corrispondono al tuo account. Il RoLearn deve disporre delle autorizzazioni per SageMaker poter accedere ad Amazon S3 CloudWatch, Amazon e altri servizi per tuo conto. Per ulteriori informazioni sulla creazione di un SageMaker ExecutionRole, consulta Ruoli. SageMaker

Crea il TrainingJob

Dopo aver sostituito i ruoli e i bucket Amazon S3 con i valori appropriati in values.yaml, puoi creare un processo di addestramento utilizzando il seguente comando:

helm install . --generate-name

L'aspetto dell'output deve essere simile al seguente:

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.

Verifica il tuo grafico Helm di addestramento

Per verificare che Helm Chart sia stato creato correttamente, esegui quanto segue:

helm ls

L'aspetto dell'output deve essere simile al seguente:

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 crea una risorsa TrainingJob Kubernetes. L'operatore avvia il processo di formazione effettivo SageMaker e aggiorna la risorsa TrainingJob Kubernetes in modo che rifletta lo stato del lavoro in. SageMaker Ti verranno addebitati i costi per le SageMaker risorse utilizzate durante la durata del tuo lavoro. I processi interrotti o completati non influiscono in alcun modo sulle risorse.

Nota: SageMaker non consente di aggiornare un processo di formazione in corso. Non è possibile modificare alcun parametro e riapplicare il file di configurazione. Modifica il nome dei metadati o elimina il processo esistente e creane uno nuovo. Analogamente agli operatori di addestramento esistenti, come TFJob in Kubeflow, update non è supportato.

Elenco TrainingJobs

Utilizza il seguente comando per elencare tutti i processi creati utilizzando l'operatore Kubernetes:

kubectl get TrainingJob

L'output con l’elenco di tutti i processi deve essere simile al seguente:

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

Un processo di addestramento continua a essere elencato dopo il completamento o l'esito negativo del processo. È possibile rimuovere un TrainingJobprocesso dall'elenco seguendo le fasi Elimina TrainingJobs. I lavori completati o interrotti non comportano alcun addebito per SageMaker le risorse.

TrainingJob valori di stato

Il campo STATUS può corrispondere a uno dei seguenti valori:

  • Completed

  • InProgress

  • Failed

  • Stopped

  • Stopping

Questi stati provengono direttamente dalla documentazione SageMaker ufficiale dell'API.

Oltre allo SageMaker status ufficiale, è possibile STATUS SynchronizingK8sJobWithSageMaker esserlo. Ciò significa che l'operatore non ha ancora elaborato il processo.

Valori di stato secondari

Gli stati secondari provengono direttamente dalla documentazione SageMaker ufficiale dell'API. Contengono informazioni più dettagliate sullo stato del processo.

Descrivi un TrainingJob

È possibile ricevere maggiori dettagli sul processo di addestramento utilizzando il comando describe kubectl. Viene in genere utilizzato per il debug di un problema o il controllo dei parametri di un processo di addestramento. Per ottenere informazioni sul processo di addestramento, usa il comando seguente:

kubectl describe trainingjob xgboost-mnist-from-for-s3

L'output per il processo di addestramento deve essere simile al seguente:

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/my-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/my-bucket/sagemaker/xgboost-mnist/validation/ Output Data Config: S 3 Output Path: s3://my-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>

Visualizza i registri da TrainingJobs

Utilizza il seguente comando per visualizzare i registri del processo di addestramento kmeans-mnist:

kubectl smlogs trainingjob xgboost-mnist-from-for-s3

L'aspetto dell'output sarà simile al seguente. I log delle istanze sono disposti in ordine cronologico.

"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

Elimina TrainingJobs

Utilizza il seguente comando per interrompere un processo di formazione su Amazon SageMaker:

kubectl delete trainingjob xgboost-mnist-from-for-s3

Questo comando rimuove il processo SageMaker di formazione da Kubernetes. Questo comando restituisce il seguente output:

trainingjob.sagemaker.aws.amazon.com "xgboost-mnist-from-for-s3" deleted

Se il lavoro è ancora in corso SageMaker, il processo si interrompe. Non è previsto alcun addebito per le SageMaker risorse dopo l'interruzione o il completamento del lavoro.

Nota: SageMaker non elimina i lavori di formazione. I lavori interrotti continuano a essere visualizzati sulla SageMaker console. Il delete comando impiega circa 2 minuti per ripulire le risorse SageMaker.

L' HyperParameterTuningJoboperatore

Gli operatori del job di ottimizzazione degli iperparametri riconciliano le specifiche del lavoro di ottimizzazione degli iperparametri specificato avviandolo. SageMaker SageMaker Per ulteriori informazioni sui SageMaker lavori di ottimizzazione degli iperparametri, consulta la documentazione dell'API. SageMaker CreateHyperParameterTuningJob

Crea un file HyperparameterTuningJob utilizzando un file YAML

  1. Scarica il file YAML di esempio per il processo di ottimizzazione degli iperparametri utilizzando il seguente comando:

    wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/xgboost-mnist-hpo.yaml
  2. Modifica il file xgboost-mnist-hpo.yaml per sostituire il parametro roleArn con il tuo sagemaker-execution-role. Affinché il processo di ottimizzazione degli iperparametri abbia esito positivo, devi anche modificare s3InputPath e s3OutputPath con valori che corrispondano al tuo account. Applica il file YAML degli aggiornamenti usando il comando seguente:

    kubectl apply -f xgboost-mnist-hpo.yaml

Crea un grafico HyperparameterTuningJob utilizzando un Helm Chart

È possibile utilizzare i grafici Helm per eseguire processi di ottimizzazione degli iperparametri.

  1. Clona il GitHub repository per ottenere il codice sorgente usando il seguente comando:

    git clone https://github.com/aws/amazon-sagemaker-operator-for-k8s.git
  2. Accedi alla cartella amazon-sagemaker-operator-for-k8s/hack/charts/hyperparameter-tuning-jobs/.

  3. Modifica il file values.yaml per sostituire il parametro roleArn con il tuo sagemaker-execution-role. Affinché il processo di ottimizzazione degli iperparametri abbia esito positivo, devi anche modificare s3InputPath e s3OutputPath con valori che corrispondano al tuo account.

Crea il HyperparameterTuningJob

Dopo aver sostituito i ruoli e i percorsi Amazon S3 con i valori appropriati in values.yaml, puoi creare un processo di ottimizzazione degli iperparametri utilizzando il seguente comando:

helm install . --generate-name

L'aspetto dell'output sarà simile al seguente:

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.

Verifica dell'installazione del grafico

Per verificare che Helm Chart sia stato creato correttamente, esegui il comando seguente:

helm ls

L'aspetto dell'output deve essere simile al seguente:

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 crea una risorsa HyperParameterTuningJob Kubernetes. L'operatore avvia l'effettivo processo di ottimizzazione degli iperparametri in SageMaker e aggiorna la risorsa HyperParameterTuningJob Kubernetes in modo che rifletta lo stato del lavoro in. SageMaker Ti verranno addebitati dei costi per le SageMaker risorse utilizzate durante la durata del tuo lavoro. I processi interrotti o completati non influiscono in alcun modo sulle risorse.

Nota: SageMaker non consente di aggiornare un processo di ottimizzazione degli iperparametri in esecuzione. Non è possibile modificare alcun parametro e riapplicare il file di configurazione. È necessario modificare il nome dei metadati o eliminare il processo esistente e crearne uno nuovo. Analogamente agli operatori di addestramento esistenti, come TFJob in Kubeflow, update non è supportato.

Elenco HyperparameterTuningJobs

Utilizza il seguente comando per elencare tutti i processi creati utilizzando l'operatore Kubernetes:

kubectl get hyperparametertuningjob

L'aspetto dell'output deve essere simile al seguente:

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

Un processo di ottimizzazione degli iperparametri continua a essere elencato dopo il completamento o l'esito negativo del processo. È possibile rimuovere un file hyperparametertuningjob dall'elenco seguendo le fasi in Eliminare un HyperparameterTuningJob. I lavori completati o interrotti non comportano alcun addebito per SageMaker le risorse.

Valori dello stato del processo di ottimizzazione degli iperparametri

Il campo STATUS può corrispondere a uno dei seguenti valori:

  • Completed

  • InProgress

  • Failed

  • Stopped

  • Stopping

Questi stati provengono direttamente dalla documentazione SageMaker ufficiale dell'API.

Oltre allo SageMaker status ufficiale, è possibile STATUS SynchronizingK8sJobWithSageMaker esserlo. Ciò significa che l'operatore non ha ancora elaborato il processo.

Contatori di stato

L’output ha vari contatori, come COMPLETED e INPROGRESS. Questi rappresentano rispettivamente quanti processi di addestramento sono stati completati e sono in corso. Per ulteriori informazioni su come vengono determinati, TrainingJobStatusCountersconsulta la documentazione dell' SageMaker API.

Migliore TrainingJob

Questa colonna contiene il nome di TrainingJob che meglio ha ottimizzato la metrica selezionata.

Per visualizzare un riepilogo degli iperparametri ottimizzati, esegui:

kubectl describe hyperparametertuningjob xgboost-mnist-hpo

Per visualizzare informazioni dettagliate su TrainingJob, esegui:

kubectl describe trainingjobs <job name>

Generato TrainingJobs

Puoi anche tracciare tutti i 10 processi di addestramento in Kubernetes avviati da HyperparameterTuningJob eseguendo il seguente comando:

kubectl get trainingjobs

Descrivi un HyperparameterTuningJob

È possibile consultare i dettagli di debug utilizzando il comando describe kubectl.

kubectl describe hyperparametertuningjob xgboost-mnist-hpo

Oltre alle informazioni sul processo di ottimizzazione, SageMaker Operator for Kubernetes mostra nell'output anche il miglior processo di formazione trovato dal processo di ottimizzazione degli iperparametri, come segue: describe

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/my-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/my-bucket/sagemaker/xgboost-mnist/validation/ Output Data Config: s3OutputPath: https://s3-us-east-2.amazonaws.com/my-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>

Visualizza i log da HyperparameterTuningJobs

I processi di ottimizzazione degli iperparametri non dispongono di log, ma tutti i processi di addestramento da essi avviati li contengono. È possibile accedere a questi log come se si trattasse di un normale processo di addestramento. Per ulteriori informazioni, consulta Visualizza i registri da TrainingJobs.

Eliminare un HyperparameterTuningJob

Utilizzate il comando seguente per interrompere un processo con iperparametri in SageMaker.

kubectl delete hyperparametertuningjob xgboost-mnist-hpo

Questo comando rimuove il processo di ottimizzazione degli iperparametri e i lavori di formazione associati dal cluster Kubernetes e ne interrompe l'esecuzione. SageMaker I lavori interrotti o completati non comportano alcun addebito per le risorse. SageMaker SageMaker non elimina i processi di ottimizzazione degli iperparametri. I lavori interrotti continuano a essere visualizzati sulla SageMaker console.

L'aspetto dell'output deve essere simile al seguente:

hyperparametertuningjob.sagemaker.aws.amazon.com "xgboost-mnist-hpo" deleted

Nota: il comando delete impiega circa 2 minuti per ripulire le risorse da SageMaker.

L' BatchTransformJob operatore

Gli operatori del processo di trasformazione in batch riconciliano le specifiche del lavoro di trasformazione in batch specificato SageMaker avviandolo in. SageMaker Puoi saperne di più sul SageMaker processo di trasformazione in batch nella documentazione dell'API. SageMaker CreateTransformJob

Crea un file BatchTransformJob utilizzando un file YAML

  1. Scarica il file YAML di esempio per il processo di trasformazione in batch utilizzando il seguente comando:

    wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/xgboost-mnist-batchtransform.yaml
  2. Modifica il file xgboost-mnist-batchtransform.yaml per modificare i parametri necessari per sostituirlo inputdataconfig con i tuoi dati di input e s3OutputPath con i bucket Amazon S3 a cui il ruolo di SageMaker esecuzione ha accesso in scrittura.

  3. Applica il file YAML usando il comando seguente:

    kubectl apply -f xgboost-mnist-batchtransform.yaml

Crea un grafico BatchTransformJob utilizzando un Helm Chart

È possibile utilizzare Helm Chart per eseguire processi di trasformazione in batch.

Ottenimento della directory del programma di installazione Helm

Clona il GitHub repository per ottenere il codice sorgente usando il seguente comando:

git clone https://github.com/aws/amazon-sagemaker-operator-for-k8s.git

Configurazione di Helm Chart

Accedi alla cartella amazon-sagemaker-operator-for-k8s/hack/charts/batch-transform-jobs/.

Modifica il values.yaml file per sostituirlo inputdataconfig con i tuoi dati di input e OutputPath con i bucket S3 a cui il SageMaker ruolo di esecuzione ha accesso in scrittura.

Crea un BatchTransformJob

  1. Per creare un processo di trasformazione in batch, utilizza il comando seguente:

    helm install . --generate-name

    L'aspetto dell'output deve essere simile al seguente:

    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. Per verificare che Helm Chart sia stato creato correttamente, esegui il comando seguente:

    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

    Questo comando crea una risorsa BatchTransformJob Kubernetes. L'operatore avvia il processo di trasformazione effettivo SageMaker e aggiorna la risorsa BatchTransformJob Kubernetes in modo che rifletta lo stato del lavoro in. SageMaker Ti verranno addebitati i costi per le SageMaker risorse utilizzate durante la durata del tuo lavoro. I processi interrotti o completati non influiscono in alcun modo sulle risorse.

Nota: SageMaker non consente di aggiornare un processo di trasformazione batch in esecuzione. Non è possibile modificare alcun parametro e riapplicare il file di configurazione. È necessario modificare il nome dei metadati o eliminare il processo esistente e crearne uno nuovo. Analogamente agli operatori di addestramento esistenti, come TFJob in Kubeflow, update non è supportato.

Elenco BatchTransformJobs

Utilizza il seguente comando per elencare tutti i processi creati utilizzando l'operatore Kubernetes:

kubectl get batchtransformjob

L'aspetto dell'output deve essere simile al seguente:

NAME STATUS CREATION-TIME SAGEMAKER-JOB-NAME xgboost-mnist-batch-transform Completed 2019-11-18T03:44:00Z xgboost-mnist-a88fb19809b511eaac440aa8axgboost

Un processo di trasformazione in batch continua a essere elencato dopo il completamento o l'esito negativo del processo. È possibile rimuovere un file hyperparametertuningjob dall'elenco seguendo le fasi Eliminare un BatchTransformJob. I lavori completati o interrotti non comportano alcun addebito per SageMaker le risorse.

Valori dello stato di trasformazione in batch

Il campo STATUS può corrispondere a uno dei seguenti valori:

  • Completed

  • InProgress

  • Failed

  • Stopped

  • Stopping

Questi stati provengono direttamente dalla documentazione SageMaker ufficiale dell'API.

Oltre allo SageMaker status ufficiale, è possibile STATUS SynchronizingK8sJobWithSageMaker esserlo. Ciò significa che l'operatore non ha ancora elaborato il processo.

Descrivi un BatchTransformJob

È possibile consultare i dettagli di debug utilizzando il comando describe kubectl.

kubectl describe batchtransformjob xgboost-mnist-batch-transform

L'aspetto dell'output deve essere simile al seguente:

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://my-bucket/mnist_kmeans_example/input Transform Job Name: xgboost-mnist-a88fb19809b511eaac440aa8a9SMJOB Transform Output: S 3 Output Path: s3://my-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>

Visualizza i registri da BatchTransformJobs

Utilizza il seguente comando per visualizzare i registri del processo di trasformazione in batch xgboost-mnist:

kubectl smlogs batchtransformjob xgboost-mnist-batch-transform

Eliminare un BatchTransformJob

Utilizzate il seguente comando per interrompere un processo di trasformazione in batch in SageMaker.

kubectl delete batchTransformJob xgboost-mnist-batch-transform

L'aspetto dell'output deve essere simile al seguente:

batchtransformjob.sagemaker.aws.amazon.com "xgboost-mnist" deleted

Questo comando rimuove il processo di trasformazione in batch dal cluster Kubernetes e ne interrompe l'esecuzione. SageMaker I lavori interrotti o completati non comportano alcun addebito per le risorse. SageMaker L'eliminazione richiede circa 2 minuti per ripulire le risorse. SageMaker

Nota: SageMaker non elimina i lavori di trasformazione in batch. I lavori interrotti continuano a essere visualizzati sulla SageMaker console.

L' HostingDeployment operatore

HostingDeployment gli operatori supportano la creazione e l'eliminazione di un endpoint, nonché l'aggiornamento di un endpoint esistente, per l'inferenza in tempo reale. L'operatore di distribuzione dell'hosting riconcilia le specifiche del lavoro di distribuzione di hosting specificato con la creazione di modelli, configurazioni degli endpoint ed SageMaker endpoint in. SageMaker Puoi saperne di più sull'inferenza nella documentazione dell'API. SageMaker SageMaker CreateEndpoint

Configura una risorsa HostingDeployment

Scarica il file YAML di esempio per il processo di implementazione in hosting utilizzando il seguente comando:

wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/xgboost-mnist-hostingdeployment.yaml

Il file xgboost-mnist-hostingdeployment.yaml contiene i seguenti componenti, che possono essere modificati in base alle esigenze:

  • ProductionVariants. Una variante di produzione è un insieme di istanze che servono un singolo modello. SageMaker bilancia il carico tra tutte le varianti di produzione in base ai pesi impostati.

  • Modelli. Un modello è costituito dai container e dal ruolo di esecuzione ARN necessario per servire un modello. Richiede almeno un singolo container.

  • Container. Un container specifica il set di dati e l'immagine di servizio. Se si utilizza un algoritmo personalizzato anziché un algoritmo fornito da SageMaker, il codice di inferenza deve soddisfare i requisiti. SageMaker Per ulteriori informazioni, consulta Using Your Own Algorithms with. SageMaker

Crea un HostingDeployment

Per creare un HostingDeployment, usa kubectl per applicare il file hosting.yaml con il seguente comando:

kubectl apply -f hosting.yaml

SageMaker crea un endpoint con la configurazione specificata. Sono previsti costi per le SageMaker risorse utilizzate durante il ciclo di vita dell'endpoint. L’eliminazione dell'endpoint non influisce in alcun modo sulle risorse.

La procedura di creazione richiede circa 10 minuti.

Elenco HostingDeployments

Per verificare che sia HostingDeployment stato creato, utilizzare il seguente comando:

kubectl get hostingdeployments

L'aspetto dell'output deve essere simile al seguente:

NAME STATUS SAGEMAKER-ENDPOINT-NAME host-xgboost Creating host-xgboost-def0e83e0d5f11eaaa450aSMLOGS

HostingDeployment valori di stato

Il campo di stato può avere uno dei seguenti valori:

  • SynchronizingK8sJobWithSageMaker: l'operatore si sta preparando a creare l'endpoint.

  • ReconcilingEndpoint: l'operatore sta creando, aggiornando o eliminando le risorse dell'endpoint. Se HostingDeployment rimane in questo stato, usa kubectl describe per vedere il motivo nel Additional campo.

  • OutOfService: l'endpoint non è disponibile per accettare le richieste in arrivo.

  • Creating: CreateEndpointè in esecuzione.

  • Updating: UpdateEndpointo UpdateEndpointWeightsAndCapacitiesè in esecuzione.

  • SystemUpdating: l'endpoint è in fase di manutenzione e non può essere aggiornato, eliminato o ridimensionato fino al suo completamento. Questa operazione di manutenzione non modifica i valori specificati dal cliente come la configurazione del VPC, la AWS KMS crittografia, il modello, il tipo di istanza o il numero di istanze.

  • RollingBack: l'endpoint non è in grado di aumentare o ridurre il peso della variante o di modificare il peso della variante ed è in procinto di ripristinare la configurazione precedente. Una volta completato il ripristino, l'endpoint torna allo stato InService. Questo stato transitorio si applica solo a un endpoint con scalabilità automatica attivata e che sta subendo variazioni di peso o capacità delle varianti nell'ambito di una chiamata o quando l'operazione viene richiamata in modo esplicito. UpdateEndpointWeightsAndCapacitiesUpdateEndpointWeightsAndCapacities

  • InService: l'endpoint è disponibile per elaborare le richieste in arrivo.

  • DeletingDeleteEndpoint: è in esecuzione.

  • Failed: l'endpoint non può essere creato, aggiornato o ridimensionato. Usa DescribeEndpoint: FailureReason per informazioni sull'errore. DeleteEndpointè l'unica operazione che può essere eseguita su un endpoint guasto.

Descrivi un HostingDeployment

È possibile consultare i dettagli di debug utilizzando il comando describe kubectl.

kubectl describe hostingdeployment

L'aspetto dell'output deve essere simile al seguente:

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://my-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>

Il campo di stato fornisce ulteriori informazioni utilizzando i seguenti campi:

  • Additional: ulteriori informazioni sullo stato dell’implementazione in hosting. Questo campo è facoltativo e viene compilato solo in caso di errore.

  • Creation Time: Quando l'endpoint è stato creato in SageMaker.

  • Endpoint ARN: L'ARN dell' SageMaker endpoint.

  • Endpoint Config Name: il SageMaker nome della configurazione dell'endpoint.

  • Endpoint Name: il SageMaker nome dell'endpoint.

  • Endpoint Status: lo stato dell'endpoint.

  • Endpoint URL: l'URL HTTPS che può essere utilizzato per accedere all'endpoint. Per ulteriori informazioni, consulta Implementare un modello sui SageMaker servizi di hosting.

  • FailureReason: se un comando di creazione, aggiornamento o eliminazione non riesce, la causa viene mostrata di seguito.

  • Last Check Time: l'ultima volta in cui l'operatore ha verificato lo stato dell'endpoint.

  • Last Modified Time: l'ultima volta in cui l'endpoint è stato modificato.

  • Model Names: coppia chiave-valore di nomi di HostingDeployment modelli e nomi di SageMaker modelli.

Richiamo dell'endpoint

Una volta raggiunto lo stato dell'endpointInService, puoi richiamarlo in due modi: utilizzando la AWS CLI, che esegue l'autenticazione e la firma delle richieste URL, o utilizzando un client HTTP come cURL. Se utilizzi il tuo client, devi eseguire autonomamente la firma e l'autenticazione degli URL AWS v4.

Per richiamare l'endpoint utilizzando la AWS CLI, esegui il comando seguente. Assicurati di sostituire la regione e il nome dell'endpoint con la regione e il nome dell'endpoint dell'endpoint. SageMaker Queste informazioni possono essere ottenute dall'output di kubectl describe.

# 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

Ad esempio, se la Regione è us-east-2 e il nome di configurazione dell'endpoint è host-xgboost-f56b6b280d7511ea824b129926example, il comando seguente richiamerà l'endpoint:

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

Di seguito si riporta la previsione 4.95847082138 tratta dal modello per i dati fittizi.

Aggiorna HostingDeployment

  1. Una volta HostingDeployment che a ha uno stato diInService, può essere aggiornato. Potrebbero essere necessari circa 10 minuti HostingDeployment per essere in servizio. Utilizza il seguente comando per verificare che lo stato sia InService:

    kubectl get hostingdeployments
  2. HostingDeployment Può essere aggiornato prima che lo stato siaInService. L'operatore attende l'arrivo dell' SageMaker endpoint InService prima di applicare l'aggiornamento.

    Per applicare un aggiornamento, modifica il file hosting.yaml. Ad esempio, modifica il campo initialInstanceCount da 1 a 2 come segue:

    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://my-bucket/inference/xgboost-mnist/model.tar.gz image: 123456789012.dkr.ecr.us-east-2.amazonaws.com/xgboost:latest
  3. Salva il file, quindi usa kubectl per applicare l'aggiornamento come segue. Dovresti vedere lo stato cambiare da InService a ReconcilingEndpoint, quindi Updating.

    $ 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 distribuisce un nuovo set di istanze con i tuoi modelli, modifica il traffico per utilizzare le nuove istanze e scarica le vecchie istanze. Non appena questo processo inizia, lo stato diventa Updating. Una volta completato l'aggiornamento, l'endpoint diventa InService. La procedura richiede circa 10 minuti.

Eliminare il HostingDeployment

  1. Usa kubectl per eliminare un HostingDeployment con il seguente comando:

    kubectl delete hostingdeployments host-xgboost

    L'aspetto dell'output deve essere simile al seguente:

    hostingdeployment.sagemaker.aws.amazon.com "host-xgboost" deleted
  2. Per verificare che l’implementazione in hosting sia stata eliminata, utilizza il seguente comando:

    kubectl get hostingdeployments No resources found.

Gli endpoint che sono stati eliminati non comportano alcun addebito per le risorse. SageMaker

L'operatore ProcessingJob

ProcessingJob gli operatori vengono utilizzati per avviare i processi di SageMaker elaborazione di Amazon. Per ulteriori informazioni sui SageMaker processi di elaborazione, consulta CreateProcessingJob.

Creare un file ProcessingJob utilizzando un file YAML

Segui questi passaggi per creare un processo di SageMaker elaborazione Amazon utilizzando un file YAML:

  1. Scarica lo script kmeans_preprocessing.py di pre-elaborazione.

    wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/kmeans_preprocessing.py
  2. In uno dei bucket Amazon Simple Storage Service (Amazon S3), crea una cartella mnist_kmeans_example/processing_code e carica lo script nella cartella.

  3. Scarica il file kmeans-mnist-processingjob.yaml.

    wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/kmeans-mnist-processingjob.yaml
  4. Modifica il file YAML per specificare sagemaker-execution-role e sostituisci tutte le istanze di my-bucket con il bucket S3.

    ... metadata: name: kmeans-mnist-processing ... roleArn: arn:aws:iam::<acct-id>:role/service-role/<sagemaker-execution-role> ... processingOutputConfig: outputs: ... s3Output: s3Uri: s3://<my-bucket>/mnist_kmeans_example/output/ ... processingInputs: ... s3Input: s3Uri: s3://<my-bucket>/mnist_kmeans_example/processing_code/kmeans_preprocessing.py

    sagemaker-execution-roleDevono disporre delle autorizzazioni necessarie per SageMaker poter accedere al tuo bucket S3, ad Amazon CloudWatch e ad altri servizi per tuo conto. Per ulteriori informazioni sulla creazione di un ruolo di esecuzione, consulta Ruoli. SageMaker

  5. Applica il file YAML usando uno dei comandi seguenti.

    Per l'installazione nell’ambito del cluster:

    kubectl apply -f kmeans-mnist-processingjob.yaml

    Per l'installazione nell’ambito dello spazio dei nomi:

    kubectl apply -f kmeans-mnist-processingjob.yaml -n <NAMESPACE>

Elenco ProcessingJobs

Utilizzate uno dei seguenti comandi per elencare tutti i lavori creati utilizzando l' ProcessingJob operatore. SAGEMAKER-JOB-NAME proviene dalla metadata sezione del file YAML.

Per l'installazione nell’ambito del cluster:

kubectl get ProcessingJob kmeans-mnist-processing

Per l'installazione nell’ambito dello spazio dei nomi:

kubectl get ProcessingJob -n <NAMESPACE> kmeans-mnist-processing

L'aspetto dell'output sarà simile al seguente:

NAME STATUS CREATION-TIME SAGEMAKER-JOB-NAME kmeans-mnist-processing InProgress 2020-09-22T21:13:25Z kmeans-mnist-processing-7410ed52fd1811eab19a165ae9f9e385

L'output elenca tutti i processi, indipendentemente dal loro stato. Per rimuovere un processo dall'elenco, consulta Eliminazione di un processo di elaborazione.

ProcessingJob Stato
  • SynchronizingK8sJobWithSageMaker: il processo viene innanzitutto trasmesso al cluster. L'operatore ha ricevuto la richiesta e si sta preparando per creare il processo di elaborazione.

  • Reconciling: l'operatore sta inizializzando o ripristinando errori transitori, insieme ad altri. Se il processo di elaborazione rimane in questo stato, utilizza il comando kubectl describe per visualizzare il motivo nel campo Additional.

  • InProgress | Completed | Failed | Stopping | Stopped— Stato del SageMaker processo di elaborazione. Per ulteriori informazioni, vedere DescribeProcessingJob.

  • Error: l'operatore non può eseguire il ripristino mediante riconciliazione.

I lavori completati, interrotti o non riusciti non comportano ulteriori addebiti per SageMaker le risorse.

Descrivi un ProcessingJob

Utilizza uno dei seguenti comandi per ottenere maggiori dettagli su un processo di elaborazione. Questi comandi vengono in genere utilizzati per il debug di un problema o il controllo dei parametri di un processo di elaborazione.

Per l'installazione nell’ambito del cluster:

kubectl describe processingjob kmeans-mnist-processing

Per l'installazione nell’ambito dello spazio dei nomi:

kubectl describe processingjob kmeans-mnist-processing -n <NAMESPACE>

L'aspetto dell'output del processo di elaborazione sarà simile al seguente.

$ 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>

Eliminare un ProcessingJob

Quando elimini un processo di elaborazione, il processo di SageMaker elaborazione viene rimosso da Kubernetes ma non viene eliminato da. SageMaker Se lo stato del processo è impostato su, InProgress il lavoro SageMaker viene interrotto. I lavori di elaborazione interrotti non comportano alcun addebito per SageMaker le risorse. Utilizza uno dei seguenti comandi per eliminare un processo di elaborazione.

Per l'installazione nell’ambito del cluster:

kubectl delete processingjob kmeans-mnist-processing

Per l'installazione nell’ambito dello spazio dei nomi:

kubectl delete processingjob kmeans-mnist-processing -n <NAMESPACE>

L'aspetto dell'output del processo di elaborazione sarà simile al seguente.

processingjob.sagemaker.aws.amazon.com "kmeans-mnist-processing" deleted

Nota

SageMaker non elimina il processo di elaborazione. I lavori interrotti continuano a essere visualizzati nella SageMaker console. Il delete comando richiede alcuni minuti per ripulire le risorse da SageMaker.

HostingAutoscalingPolicy (HAP) Operatore

L'operatore HostingAutoscalingPolicy (HAP) utilizza un elenco di ID di risorse come input e applica la stessa politica a ciascuno di essi. Ogni ID di risorsa è una combinazione di un nome di endpoint e un nome di variante. L'operatore HAP esegue due fasi: registra gli ID delle risorse e applica la policy di scalabilità a ciascun ID di risorsa. Delete annulla entrambe le azioni. È possibile applicare l'HAP a un SageMaker endpoint esistente oppure creare un nuovo SageMaker endpoint utilizzando l'operatore. HostingDeployment Puoi leggere ulteriori informazioni sulla scalabilità automatica nella documentazione dell'Application SageMaker Autoscaling Policy.

Nota

Nei comandi kubectl, è possibile utilizzare la forma breve hap anziché hostingautoscalingpolicy.

Crea un file utilizzando un file YAML HostingAutoscalingPolicy

Usa un file YAML per creare un HostingAutoscalingPolicy (HAP) che applichi una metrica predefinita o personalizzata a uno o più endpoint. SageMaker

Amazon SageMaker richiede valori specifici per applicare la scalabilità automatica alla tua variante. Se questi valori non vengono configurati nelle specifiche YAML, l'operatore HAP applica i seguenti valori predefiniti.

# 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"

Utilizza i seguenti esempi per creare un HAP che applichi una metrica predefinita o personalizzata a uno o più endpoint.

Esempio 1: applicazione di una metrica predefinita a una singola variante di endpoint

  1. Scarica il file YAML di esempio per una metrica predefinita utilizzando il seguente comando:

    wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/hap-predefined-metric.yaml
  2. Modifica il file YAML per specificare endpointName, variantName e Region.

  3. Utilizza uno dei seguenti comandi per applicare una metrica predefinita a un singolo ID di risorsa (combinazione di nome dell'endpoint e nome della variante).

    Per l'installazione nell’ambito del cluster:

    kubectl apply -f hap-predefined-metric.yaml

    Per l'installazione nell’ambito dello spazio dei nomi:

    kubectl apply -f hap-predefined-metric.yaml -n <NAMESPACE>

Esempio 2: applicazione di una metrica personalizzata a una singola variante di endpoint

  1. Scarica il file YAML di esempio per una metrica personalizzata utilizzando il seguente comando:

    wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/hap-custom-metric.yaml
  2. Modifica il file YAML per specificare endpointName, variantName e Region.

  3. Utilizza uno dei seguenti comandi per applicare una metrica personalizzata a un singolo ID di risorsa (combinazione di nome dell'endpoint e nome della variante) al posto di SageMakerVariantInvocationsPerInstance (consigliato).

    Nota

    Amazon SageMaker non verifica la validità delle tue specifiche YAML.

    Per l'installazione nell’ambito del cluster:

    kubectl apply -f hap-custom-metric.yaml

    Per l'installazione nell’ambito dello spazio dei nomi:

    kubectl apply -f hap-custom-metric.yaml -n <NAMESPACE>

Esempio 3: applicazione di una policy di scalabilità a più endpoint e varianti

È possibile utilizzare l'operatore HAP per applicare la stessa policy di scalabilità a più ID di risorse. Viene creata una richiesta scaling_policy separata per ogni ID di risorsa (combinazione di nome dell'endpoint e nome della variante).

  1. Scarica il file YAML di esempio per una metrica predefinita utilizzando il seguente comando:

    wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/hap-predefined-metric.yaml
  2. Modifica il file YAML per specificare Region e più valori endpointName e variantName.

  3. Utilizza uno dei seguenti comandi per applicare una metrica predefinita a più ID di risorse (combinazioni di nome dell'endpoint e nome della variante).

    Per l'installazione nell’ambito del cluster:

    kubectl apply -f hap-predefined-metric.yaml

    Per l'installazione nell’ambito dello spazio dei nomi:

    kubectl apply -f hap-predefined-metric.yaml -n <NAMESPACE>

Considerazioni relative a più endpoint e HostingAutoscalingPolicies varianti

Le seguenti considerazioni si applicano quando si utilizzano più ID di risorse:

  • Se si applica una singola policy a più ID di risorse, viene creato un PolicyARN per ID di risorsa. Cinque endpoint presentano cinque PolicyARN. Quando si esegue il comando describe sulla policy, le risposte vengono visualizzate come un unico processo e includono un singolo stato del processo.

  • Se applichi una metrica personalizzata a più ID di risorse, viene utilizzata la stessa dimensione o lo stesso valore per tutti i valori dell'ID di risorsa (variante). Ad esempio, se si applica una metrica relativa al cliente per le istanze 1-5 e la dimensione della variante dell'endpoint viene mappata alla variante 1, quando la variante 1 supera le metriche, tutti gli endpoint vengono ridimensionati verso l'alto o verso il basso.

  • L'operatore HAP supporta l'aggiornamento dell'elenco degli ID di risorse. Se si modificano, si aggiungono o si eliminano gli ID di risorse dalle specifiche, la policy di scalabilità automatica viene rimossa dall'elenco precedente di varianti e applicata alle nuove combinazioni di ID di risorse specificate. Utilizza il comando describe per elencare gli ID di risorse a cui è attualmente applicata la policy.

Elenco HostingAutoscalingPolicies

Utilizzare uno dei seguenti comandi per elencare tutti gli HostingAutoscalingPolicies (HAP) creati utilizzando l'operatore HAP.

Per l'installazione nell’ambito del cluster:

kubectl get hap

Per l'installazione nell’ambito dello spazio dei nomi:

kubectl get hap -n <NAMESPACE>

L'aspetto dell'output sarà simile al seguente:

NAME STATUS CREATION-TIME hap-predefined Created 2021-07-13T21:32:21Z

Usa il seguente comando per verificare lo stato del tuo HostingAutoscalingPolicy (HAP).

kubectl get hap <job-name>

Viene restituito uno dei seguenti valori:

  • Reconciling: alcuni tipi di errori mostrano lo stato Reconciling anziché Error. Ne sono un esempio gli errori lato server e gli endpoint con stato Creating o Updating. Controlla il campo Additional dello stato o dei registri dell'operatore per ulteriori dettagli.

  • Created

  • Error

Per visualizzare l'endpoint di scalabilità automatica a cui hai applicato la policy:
  1. Apri la SageMaker console Amazon all'indirizzo https://console.aws.amazon.com/sagemaker/.

  2. Nel pannello laterale sinistro, espandi Inferenza.

  3. Scegli Endpoint.

  4. Seleziona il nome dell'endpoint di interesse.

  5. Scorri fino alla sezione Impostazioni di configurazione degli endpoint.

Descrivi un HostingAutoscalingPolicy

Usa il seguente comando per ottenere maggiori dettagli su a HostingAutoscalingPolicy (HAP). Questi comandi vengono in genere utilizzati per il debug di un problema o il controllo degli ID di risorse (combinazioni di nome dell'endpoint e nome della variante) di HAP.

kubectl describe hap <job-name>

Aggiorna un HostingAutoscalingPolicy

L'operatore HostingAutoscalingPolicy (HAP) supporta gli aggiornamenti. È possibile cambiare le specifiche YAML per modificare i valori, quindi riapplicare la policy. L'operatore HAP elimina la policy esistente e applica quella nuova.

Eliminare un HostingAutoscalingPolicy

Utilizzare uno dei seguenti comandi per eliminare una politica HostingAutoscalingPolicy (HAP).

Per l'installazione nell’ambito del cluster:

kubectl delete hap hap-predefined

Per l'installazione nell’ambito dello spazio dei nomi:

kubectl delete hap hap-predefined -n <NAMESPACE>

Questo comando elimina la policy di scalabilità e annulla la registrazione della destinazione di scalabilità da Kubernetes. Questo comando restituisce il seguente output:

hostingautoscalingpolicies.sagemaker.aws.amazon.com "hap-predefined" deleted

Aggiorna o elimina un endpoint con un HostingAutoscalingPolicy

Per aggiornare un endpoint che dispone di un HostingAutoscalingPolicy (HAP), utilizzare il kubectl delete comando per rimuovere l'HAP, aggiornare l'endpoint e quindi riapplicare l'HAP.

Per eliminare un endpoint con HAP, utilizza il comando kubectl delete per rimuovere l'HAP prima di eliminare l'endpoint.