Use Amazon SageMaker Jobs - Amazon SageMaker

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Use Amazon SageMaker Jobs

Esta seção é baseada na versão original de SageMaker Operators for Kubernetes.

Importante

Estamos interrompendo o desenvolvimento e o suporte técnico da versão original do SageMaker Operators for Kubernetes.

Se você estiver usando a versão v1.2.2 ou inferior do SageMaker Operators for Kubernetes, recomendamos migrar seus recursos para o ACKcontrolador de serviço da Amazon. SageMaker O controlador ACK de serviço é uma nova geração de SageMaker operadores para Kubernetes com base em AWS controladores para Kubernetes (). ACK

Para obter informações sobre as etapas de migração, consulte Migre recursos para os operadores mais recentes.

Para obter respostas às perguntas frequentes sobre o fim do suporte da versão original do SageMaker Operators for Kubernetes, consulte Anunciando o fim do suporte da versão original do SageMaker Operators for Kubernetes

Para executar um SageMaker trabalho da Amazon usando os Operadores para Kubernetes, você pode aplicar um YAML arquivo ou usar os Helm Charts fornecidos.

Todos os trabalhos de operador de amostra nos tutoriais a seguir usam dados de amostra retirados de um conjunto de dados públicoMNIST. Para executar essas amostras, baixe o conjunto de dados em seu bucket do Amazon S3. Você pode encontrar o conjunto de dados em Baixar o MNIST conjunto de dados.

O TrainingJob operador

Os operadores de tarefas de treinamento conciliam sua especificação de trabalho de treinamento especificada com a SageMaker lançando-a para você em. SageMaker Você pode aprender mais sobre trabalhos de SageMaker treinamento na SageMaker CreateTrainingJob APIdocumentação.

Criar um TrainingJob usando um YAML arquivo

  1. Faça o download do YAML arquivo de amostra para treinamento usando o seguinte comando:

    wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/xgboost-mnist-trainingjob.yaml
  2. Edite o xgboost-mnist-trainingjob.yaml arquivo para substituir o roleArn parâmetro pelo seu <sagemaker-execution-role> e outputPath pelo seu bucket do Amazon S3 ao qual a função de SageMaker execução tem acesso de gravação. Eles roleArn devem ter permissões para que SageMaker possam acessar o Amazon S3 CloudWatch, o Amazon e outros serviços em seu nome. Para obter mais informações sobre como criar um SageMaker ExecutionRole, consulte SageMaker Funções. Aplique o YAML arquivo usando o seguinte comando:

    kubectl apply -f xgboost-mnist-trainingjob.yaml

Crie um TrainingJob usando um gráfico de leme

Você pode usar o Helm Charts para executar TrainingJobs.

  1. Clone o GitHub repositório para obter a fonte usando o seguinte comando:

    git clone https://github.com/aws/amazon-sagemaker-operator-for-k8s.git
  2. Navegue até a pasta amazon-sagemaker-operator-for-k8s/hack/charts/training-jobs/ e edite o arquivo values.yaml para substituir valores como rolearn e outputpath por valores que correspondam à sua conta. A função ARN deve ter permissões para que SageMaker possa acessar o Amazon S3 CloudWatch, a Amazon e outros serviços em seu nome. Para obter mais informações sobre como criar um SageMaker ExecutionRole, consulte SageMaker Funções.

Crie o TrainingJob

Com os perfis e os buckets do Amazon S3 substituídos pelos valores apropriados no values.yaml, você pode criar um trabalho de treinamento usando o seguinte comando:

helm install . --generate-name

A saída será semelhante a:

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.

Verifique seu gráfico de treinamento do Helm

Para verificar se o gráfico do Helm foi criado com êxito, execute:

helm ls

A saída será semelhante a:

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

O helm installcria um recurso do TrainingJob do Kubernetes. O operador inicia o trabalho de treinamento real SageMaker e atualiza o recurso TrainingJob Kubernetes para refletir o status do trabalho em. SageMaker Você incorre em cobranças pelos SageMaker recursos usados durante a duração do seu trabalho. Você não incorre em nenhuma cobrança quando seu trabalho for concluído ou interrompido.

Observação: SageMaker não permite que você atualize um trabalho de treinamento em execução. Você não pode editar nenhum parâmetro e reaplicar o arquivo de configuração. Altere o nome dos metadados ou exclua o trabalho existente e crie um novo. Semelhante aos operadores de trabalho de treinamento existentes, como TFJob no Kubeflow, não update é suportado.

Lista TrainingJobs

Use o comando a seguir para listar todos os trabalhos criados usando o operador do Kubernetes:

kubectl get TrainingJob

A saída que lista todos os trabalhos deve ser a seguinte:

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

Um trabalho de treinamento continua sendo listado após a conclusão ou falha do trabalho. Você pode remover um trabalho TrainingJob da lista seguindo as etapas Excluir TrainingJobs. Os trabalhos concluídos ou interrompidos não incorrem em nenhuma cobrança por SageMaker recursos.

TrainingJob valores de status

O campo STATUS pode ter um dos seguintes valores:

  • Completed

  • InProgress

  • Failed

  • Stopped

  • Stopping

Esses status vêm diretamente da APIdocumentação SageMaker oficial.

Além do SageMaker status oficial, é possível STATUS que sejaSynchronizingK8sJobWithSageMaker. Isso significa que o operador ainda não processou o trabalho.

Valores de status secundários

Os status secundários vêm diretamente da APIdocumentação SageMaker oficial. Eles contêm informações mais granulares sobre o status do trabalho.

Descreva um TrainingJob

Você pode obter mais detalhes sobre o trabalho de treinamento usando o comando describe do kubectl. Isso geralmente é usado para depurar um problema ou verificar os parâmetros de um trabalho de treinamento. Para obter informações sobre o trabalho de treinamento, use o comando a seguir:

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

A saída do trabalho de treinamento será semelhante a:

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>

Exibir registros de TrainingJobs

Use o comando a seguir para visualizar os registros em log do trabalho de treinamento kmeans-mnist:

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

O resultado deve ser semelhante ao seguinte: Os registros em log das instâncias são ordenados cronologicamente.

"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

Excluir TrainingJobs

Use o comando a seguir para interromper um trabalho de treinamento na Amazon SageMaker:

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

Esse comando remove o trabalho de SageMaker treinamento do Kubernetes. Esse comando retorna a seguinte saída:

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

Se o trabalho ainda estiver em andamento SageMaker, ele será interrompido. Você não incorre em nenhuma cobrança por SageMaker recursos após a interrupção ou conclusão do trabalho.

Nota: SageMaker não exclui trabalhos de treinamento. Os trabalhos interrompidos continuam aparecendo no SageMaker console. O delete comando leva cerca de 2 minutos para limpar os recursos SageMaker.

O HyperParameterTuningJob operador

Os operadores da tarefa de ajuste de hiperparâmetros reconcilia sua especificação de tarefa de ajuste de hiperparâmetros especificada com a inicialização em SageMaker . SageMaker Você pode aprender mais sobre trabalhos de ajuste de SageMaker hiperparâmetros na SageMaker CreateHyperParameterTuningJob APIdocumentação.

Criar um HyperparameterTuningJob usando um YAML arquivo

  1. Faça o download do YAML arquivo de amostra para o trabalho de ajuste de hiperparâmetros usando o seguinte comando:

    wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/xgboost-mnist-hpo.yaml
  2. Edite o arquivo xgboost-mnist-hpo.yaml para substituir o parâmetro roleArn pelo seu sagemaker-execution-role. Para que o trabalho de ajuste de hiperparâmetros seja bem-sucedido, você também deve alterar os valores de s3InputPath e s3OutputPath para que correspondem à sua conta. Aplique o YAML arquivo de atualizações usando o seguinte comando:

    kubectl apply -f xgboost-mnist-hpo.yaml

Crie um HyperparameterTuningJob usando um Helm Chart

Você pode usar gráficos do Helm para executar trabalhos de ajuste de hiperparâmetros.

  1. Clone o GitHub repositório para obter a fonte usando o seguinte comando:

    git clone https://github.com/aws/amazon-sagemaker-operator-for-k8s.git
  2. Navegue para a pasta amazon-sagemaker-operator-for-k8s/hack/charts/hyperparameter-tuning-jobs/.

  3. Edite o arquivo values.yaml para substituir o parâmetro roleArn pelo seu sagemaker-execution-role. Para que o trabalho de ajuste de hiperparâmetros seja bem-sucedido, você também deve alterar os valores de s3InputPath e s3OutputPath para que correspondem à sua conta.

Crie o HyperparameterTuningJob

Com os perfis e os caminhos do Amazon S3 substituídos pelos valores apropriados no values.yaml, você pode criar um trabalho de ajuste de hiperparâmetros usando o seguinte comando:

helm install . --generate-name

Sua saída deve ser semelhante à seguinte:

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.

Verificar a instalação do gráfico

Para verificar se o gráfico do Helm foi criado com êxito, execute o seguinte comando:

helm ls

A saída será semelhante a:

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

O helm installcria um recurso do HyperParameterTuningJob do Kubernetes. O operador inicia o trabalho real de otimização de hiperparâmetros SageMaker e atualiza o recurso HyperParameterTuningJob Kubernetes para refletir o status do trabalho em. SageMaker Você incorre em cobranças pelos SageMaker recursos usados durante a duração do seu trabalho. Você não incorre em nenhuma cobrança quando seu trabalho for concluído ou interrompido.

Observação: SageMaker não permite que você atualize um trabalho de ajuste de hiperparâmetros em execução. Você não pode editar nenhum parâmetro e reaplicar o arquivo de configuração. Você pode alterar o nome dos metadados ou excluir o trabalho existente e crie um novo. Semelhante aos operadores de trabalho de treinamento existentes, como o TFJob no Kubeflow, a update não tem suporte.

Lista HyperparameterTuningJobs

Use o comando a seguir para listar todos os trabalhos criados usando o operador do Kubernetes:

kubectl get hyperparametertuningjob

A saída será semelhante a:

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

Um trabalho de ajuste de hiperparâmetros continua sendo listado após a conclusão ou falha do trabalho. Você pode remover um hyperparametertuningjob da lista seguindo as etapas em Excluir um HyperparameterTuningJob. Os trabalhos concluídos ou interrompidos não incorrem em nenhuma cobrança por SageMaker recursos.

Valores de status de trabalho de ajuste de hiperparâmetros

O campo STATUS pode ter um dos seguintes valores:

  • Completed

  • InProgress

  • Failed

  • Stopped

  • Stopping

Esses status vêm diretamente da APIdocumentação SageMaker oficial.

Além do SageMaker status oficial, é possível STATUS que sejaSynchronizingK8sJobWithSageMaker. Isso significa que o operador ainda não processou o trabalho.

Contadores de status

A saída tem vários contadores, como COMPLETED e INPROGRESS. Eles representam quantos trabalhos de treinamento foram concluídos e quantos estão em andamento, respectivamente. Para obter mais informações sobre como elas são determinadas, consulte TrainingJobStatusCountersa SageMaker API documentação.

Melhor TrainingJob

Essa coluna contém o nome do TrainingJob que melhor otimizou a métrica selecionada.

Para ver um resumo dos hiperparâmetros ajustados, execute:

kubectl describe hyperparametertuningjob xgboost-mnist-hpo

Para ver informações detalhadas sobre o TrainingJob, execute:

kubectl describe trainingjobs <job name>

Desovado TrainingJobs

Você também pode acompanhar todos os 10 trabalhos de treinamento no Kubernetes iniciados pelo HyperparameterTuningJob executando o seguinte comando:

kubectl get trainingjobs

Descreva um HyperparameterTuningJob

Você pode obter detalhes de depuração usando o comando describe do kubectl.

kubectl describe hyperparametertuningjob xgboost-mnist-hpo

Além das informações sobre o trabalho de ajuste, o SageMaker Operator for Kubernetes também expõe o melhor trabalho de treinamento encontrado pelo trabalho de ajuste de hiperparâmetros na saída, da seguinte forma: 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/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>

Exibir registros de HyperparameterTuningJobs

Os trabalhos de ajuste hiperparâmetros não têm logs, mas todos os trabalhos de treinamento lançados por eles têm logs. Esses logs podem ser acessados como se fossem um trabalho normal de treinamento. Para obter mais informações, consulte Exibir registros de TrainingJobs.

Excluir um HyperparameterTuningJob

Use o comando a seguir para interromper um trabalho de hiperparâmetros no SageMaker.

kubectl delete hyperparametertuningjob xgboost-mnist-hpo

Esse comando remove o trabalho de ajuste de hiperparâmetros e os trabalhos de treinamento associados do seu cluster Kubernetes e os interrompe. SageMaker Os trabalhos que foram interrompidos ou concluídos não incorrem em nenhuma cobrança por SageMaker recursos. SageMaker não exclui trabalhos de ajuste de hiperparâmetros. Os trabalhos interrompidos continuam aparecendo no SageMaker console.

A saída será semelhante a:

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

Observação: o comando delete leva cerca de 2 minutos para limpar os recursos SageMaker.

O BatchTransformJob operador

Os operadores de trabalho de transformação em lote reconciliam sua especificação de trabalho de transformação em lote especificada com a SageMaker inicialização em. SageMaker Você pode aprender mais sobre o trabalho de transformação em SageMaker lote na SageMaker CreateTransformJob APIdocumentação.

Criar um BatchTransformJob usando um YAML arquivo

  1. Faça o download do YAML arquivo de amostra para o trabalho de transformação em lote usando o seguinte comando:

    wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/xgboost-mnist-batchtransform.yaml
  2. Edite o arquivo xgboost-mnist-batchtransform.yaml para alterar os parâmetros necessários para substituí-los inputdataconfig pelos dados de entrada e pelos s3OutputPath buckets do Amazon S3 aos quais a função de SageMaker execução tem acesso de gravação.

  3. Aplique o YAML arquivo usando o seguinte comando:

    kubectl apply -f xgboost-mnist-batchtransform.yaml

Crie um BatchTransformJob usando um Helm Chart

Você pode usar gráficos de Helm para executar trabalhos de transformação de lote.

Obtenha o diretório do instalador de Helm

Clone o GitHub repositório para obter a fonte usando o seguinte comando:

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

Configurar o gráfico de Helm

Navegue para a pasta amazon-sagemaker-operator-for-k8s/hack/charts/batch-transform-jobs/.

Edite o values.yaml arquivo para substituí-lo inputdataconfig pelos dados de entrada e pelos outputPath buckets do S3 aos quais a função de SageMaker execução tem acesso de gravação.

Crie um BatchTransformJob

  1. Use o comando a seguir para criar um trabalho de transformação de lote:

    helm install . --generate-name

    A saída será semelhante a:

    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. Para verificar se o gráfico de Helm foi criado com êxito, execute o seguinte comando:

    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

    O comando cria um recurso BatchTransformJob do Kubernetes. O operador inicia o trabalho de transformação real SageMaker e atualiza o recurso BatchTransformJob Kubernetes para refletir o status do trabalho em. SageMaker Você incorre em cobranças pelos SageMaker recursos usados durante a duração do seu trabalho. Você não incorre em nenhuma cobrança quando seu trabalho for concluído ou interrompido.

Observação: SageMaker não permite que você atualize um trabalho de transformação em lote em execução. Você não pode editar nenhum parâmetro e reaplicar o arquivo de configuração. Você pode alterar o nome dos metadados ou excluir o trabalho existente e crie um novo. Semelhante aos operadores de trabalho de treinamento existentes, como o TFJob no Kubeflow, a update não tem suporte.

Lista BatchTransformJobs

Use o comando a seguir para listar todos os trabalhos criados usando o operador do Kubernetes:

kubectl get batchtransformjob

A saída será semelhante a:

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

Um trabalho de transformação de lote continua sendo listado após a conclusão ou falha do trabalho. Você pode remover um hyperparametertuningjob da lista seguindo as etapas Excluir um BatchTransformJob. Os trabalhos concluídos ou interrompidos não incorrem em nenhuma cobrança por SageMaker recursos.

Valores de status da transformação em lote

O campo STATUS pode ter um dos seguintes valores:

  • Completed

  • InProgress

  • Failed

  • Stopped

  • Stopping

Esses status vêm diretamente da APIdocumentação SageMaker oficial.

Além do SageMaker status oficial, é possível STATUS que sejaSynchronizingK8sJobWithSageMaker. Isso significa que o operador ainda não processou o trabalho.

Descreva um BatchTransformJob

Você pode obter detalhes de depuração usando o comando describe do kubectl.

kubectl describe batchtransformjob xgboost-mnist-batch-transform

A saída será semelhante a:

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>

Exibir registros de BatchTransformJobs

Use o comando a seguir para visualizar os registros em log do trabalho de transformação de lote xgboost-mnist:

kubectl smlogs batchtransformjob xgboost-mnist-batch-transform

Excluir um BatchTransformJob

Use o comando a seguir para interromper um trabalho de transformação em lote no SageMaker.

kubectl delete batchTransformJob xgboost-mnist-batch-transform

A saída será semelhante a:

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

Esse comando remove o trabalho de transformação em lote do seu cluster Kubernetes e o interrompe. SageMaker Os trabalhos que foram interrompidos ou concluídos não incorrem em nenhuma cobrança por SageMaker recursos. A exclusão leva cerca de 2 minutos para limpar os recursos SageMaker.

Nota: SageMaker não exclui trabalhos de transformação em lote. Os trabalhos interrompidos continuam aparecendo no SageMaker console.

O HostingDeployment operador

HostingDeployment os operadores oferecem suporte à criação e exclusão de um endpoint, bem como à atualização de um endpoint existente, para inferência em tempo real. O operador de implantação de hospedagem reconcilia sua especificação de trabalho de implantação de hospedagem especificada SageMaker criando modelos, configurações de endpoints e endpoints em. SageMaker Você pode aprender mais sobre SageMaker inferência na SageMaker CreateEndpointAPIdocumentação.

Configurar um HostingDeployment recurso

Faça o download do YAML arquivo de amostra para o trabalho de implantação de hospedagem usando o seguinte comando:

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

O xgboost-mnist-hostingdeployment.yaml arquivo tem os seguintes componentes que podem ser editados conforme necessário:

  • ProductionVariants. Uma variante de produção é um conjunto de instâncias que atendem a um único modelo. SageMaker balanceia a carga entre todas as variantes de produção de acordo com os pesos definidos.

  • Modelos. Um modelo são os contêineres e a função de execução ARN necessários para servir a um modelo. Isso requer pelo menos um único contêiner.

  • Contêineres. Um contêiner especifica o conjunto de dados e a imagem de veiculação. Se você estiver usando seu próprio algoritmo personalizado em vez de um algoritmo fornecido por SageMaker, o código de inferência deverá atender SageMaker aos requisitos. Para obter mais informações, consulte Usando seus próprios algoritmos com SageMaker.

Crie um HostingDeployment

Para criar um HostingDeployment, use kubectl para aplicar o arquivo hosting.yaml com o seguinte comando:

kubectl apply -f hosting.yaml

SageMaker cria um endpoint com a configuração especificada. Você incorre em cobranças pelos SageMaker recursos usados durante a vida útil do seu endpoint. Você não incorre em nenhuma cobrança depois que seu endpoint é excluído.

A criação do processo leva aproximadamente 10 minutos.

Lista HostingDeployments

Para verificar se o HostingDeployment foi criado, use o seguinte comando:

kubectl get hostingdeployments

A saída será semelhante a:

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

HostingDeployment valores de status

O campo de status pode ser um dos vários valores:

  • SynchronizingK8sJobWithSageMaker: o operador está se preparando para criar o endpoint.

  • ReconcilingEndpoint: o operador está criando, atualizando ou excluindo recursos do endpoint. Se HostingDeployment permanecer nesse estado, use kubectl describe para ver o motivo no Additional campo.

  • OutOfService: o endpoint não está disponível para receber solicitações.

  • Creating: CreateEndpointestá em execução.

  • Updating: UpdateEndpointou UpdateEndpointWeightsAndCapacitiesestá em execução.

  • SystemUpdating: o endpoint está passando por manutenção e não pode ser atualizado, excluído ou redimensionado até que seja concluído. Essa operação de manutenção não altera nenhum valor especificado pelo cliente, como VPC configuração, AWS KMS criptografia, modelo, tipo de instância ou contagem de instâncias.

  • RollingBack: o endpoint não consegue aumentar ou diminuir a escala ou alterar o peso da variante e está voltando à configuração anterior. Depois que a reversão for concluída, o endpoint retornará a um status InService. Esse status de transição só se aplica a um endpoint que tem o escalonamento automático ativado e está passando por alterações de peso ou capacidade de variantes como parte de uma UpdateEndpointWeightsAndCapacitieschamada ou quando a UpdateEndpointWeightsAndCapacitiesoperação é chamada explicitamente.

  • InService: o endpoint não está disponível para receber solicitações.

  • Deleting: DeleteEndpointestá em execução.

  • Failed: o endpoint não pôde ser criado, atualizado ou redimensionado. Uso DescribeEndpoint: FailureReason para obter informações sobre a falha. DeleteEndpointé a única operação que pode ser executada em um endpoint com falha.

Descreva um HostingDeployment

Você pode obter detalhes de depuração usando o comando describe do kubectl.

kubectl describe hostingdeployment

A saída será semelhante a:

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>

O campo de status fornece mais informações usando os seguintes campos:

  • Additional: informações adicionais sobre o status da implantação da hospedagem. Esse campo é opcional e só é preenchido em caso de erro.

  • Creation Time: Quando o endpoint foi criado em SageMaker.

  • Endpoint ARN: O SageMaker endpointARN.

  • Endpoint Config Name: o SageMaker nome da configuração do endpoint.

  • Endpoint Name: o SageMaker nome do endpoint.

  • Endpoint Status: o status do endpoint.

  • Endpoint URL: o HTTPS URL que pode ser usado para acessar o endpoint. Para obter mais informações, consulte Implantar um modelo em serviços de SageMaker hospedagem.

  • FailureReason: se um comando de criação, atualização ou exclusão falhar, a causa será mostrada aqui.

  • Last Check Time: a última vez que o operador verificou o status do endpoint.

  • Last Modified Time: a última vez que o endpoint foi modificado.

  • Model Names: um par de valores-chave de nomes de HostingDeployment modelos com nomes de SageMaker modelos.

Invocar o endpoint

Quando o status do endpoint forInService, você poderá invocar o endpoint de duas maneiras: usando o AWS CLI, que faz a autenticação e URL solicita a assinatura, ou usando um HTTP cliente como c. URL Se você usa seu próprio cliente, precisa fazer a URL assinatura e a autenticação AWS v4 por conta própria.

Para invocar o endpoint usando o AWS CLI, execute o comando a seguir. Certifique-se de substituir o nome da região e do endpoint pela região e pelo nome do endpoint do SageMaker endpoint. Essas informações podem ser obtidas na saída de 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

Por exemplo, se sua região for us-east-2 e o nome de configuração do endpoint forhost-xgboost-f56b6b280d7511ea824b129926example, o comando a seguir invocaria o 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

Aqui 4.95847082138 está a previsão do modelo para os dados simulados.

Atualizar HostingDeployment

  1. Quando a HostingDeployment tem um status deInService, ele pode ser atualizado. Pode levar cerca de 10 minutos HostingDeployment para entrar em serviço. Para verificar se o status é InService, use o seguinte comando:

    kubectl get hostingdeployments
  2. Eles HostingDeployment podem ser atualizados antes que o status sejaInService. O operador espera até que o SageMaker endpoint chegue InService antes de aplicar a atualização.

    Para aplicar uma atualização, modifique o hosting.yaml arquivo. Por exemplo, altere o campo initialInstanceCount de 1 para 2 da seguinte forma:

    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. Salve o arquivo e use kubectl para aplicar sua atualização da seguinte maneira. Você deve ver o status mudar de InService para ReconcilingEndpoint, então 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 implanta um novo conjunto de instâncias com seus modelos, alterna o tráfego para usar as novas instâncias e drena as instâncias antigas. Assim que esse processo começa, o status se torna Updating. Depois que a atualização for concluída, seu endpoint se tornará InService. Este processo leva aproximadamente 10 minutos.

Exclua o HostingDeployment

  1. Use kubectl para excluir um HostingDeployment com o seguinte comando:

    kubectl delete hostingdeployments host-xgboost

    A saída será semelhante a:

    hostingdeployment.sagemaker.aws.amazon.com "host-xgboost" deleted
  2. Para verificar se a implantação da hospedagem foi excluída, use o comando a seguir:

    kubectl get hostingdeployments No resources found.

Os endpoints que foram excluídos não incorrem em nenhuma cobrança por SageMaker recursos.

O ProcessingJob operador

ProcessingJob operadores são usados para iniciar trabalhos de SageMaker processamento da Amazon. Para obter mais informações sobre trabalhos SageMaker de processamento, consulte CreateProcessingJob.

Criar um ProcessingJob usando um YAML arquivo

Siga estas etapas para criar um trabalho SageMaker de processamento da Amazon usando um YAML arquivo:

  1. Baixe o script de kmeans_preprocessing.py pré-processamento.

    wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/kmeans_preprocessing.py
  2. Em um de seus buckets do Amazon Simple Storage Service (Amazon S3), crie mnist_kmeans_example/processing_code uma pasta e carregue o script na pasta.

  3. Faça download do arquivo kmeans-mnist-processingjob.yaml.

    wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/kmeans-mnist-processingjob.yaml
  4. Edite o YAML arquivo para especificar suas sagemaker-execution-role e substituir todas as instâncias do amzn-s3-demo-bucket pelo seu bucket do S3.

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

    Eles sagemaker-execution-role devem ter permissões para que SageMaker possam acessar seu bucket do S3, a Amazon CloudWatch e outros serviços em seu nome. Para obter mais informações sobre a criação de uma função de execução, consulte SageMakerFunções.

  5. Aplique o YAML arquivo usando um dos comandos a seguir.

    Para instalação com escopo de cluster:

    kubectl apply -f kmeans-mnist-processingjob.yaml

    Para instalação com escopo de namespace:

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

Lista ProcessingJobs

Use um dos comandos a seguir para listar todos os trabalhos criados usando o ProcessingJob operador. SAGEMAKER-JOB-NAME vem da metadata seção do YAML arquivo.

Para instalação com escopo de cluster:

kubectl get ProcessingJob kmeans-mnist-processing

Para instalação com escopo de namespace:

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

Sua saída deve ser semelhante à seguinte:

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

A saída lista todos os trabalhos, independentemente de seu status. Para remover um trabalho da lista, consulte Excluir um trabalho de processamento.

ProcessingJob Status
  • SynchronizingK8sJobWithSageMaker: o trabalho é enviado primeiro ao cluster. O operador recebeu a solicitação e está se preparando para criar o trabalho de processamento.

  • Reconciling: o operador está inicializando ou se recuperando de erros transitórios, junto com outros. Se o trabalho de processamento permanecer nesse estado, use o comando kubectl describe para ver o motivo no campo Additional.

  • InProgress | Completed | Failed | Stopping | Stopped— Status do trabalho SageMaker de processamento. Para obter mais informações, consulte DescribeProcessingJob.

  • Error: o operador não pode se recuperar por meio da reconciliação.

Trabalhos concluídos, interrompidos ou falhados não incorrem em cobranças adicionais por SageMaker recursos.

Descreva um ProcessingJob

Use um dos comandos a seguir para obter mais detalhes sobre um trabalho de processamento. Esses comandos são normalmente usados para depurar um problema ou verificar os parâmetros de um trabalho de processamento.

Para instalação com escopo de cluster:

kubectl describe processingjob kmeans-mnist-processing

Para instalação com escopo de namespace:

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

A saída do seu trabalho de processamento deve ser semelhante à seguinte.

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

Excluir um ProcessingJob

Quando você exclui um trabalho de processamento, o trabalho SageMaker de processamento é removido do Kubernetes, mas o trabalho não é excluído do. SageMaker Se o status do trabalho em SageMaker for, InProgress o trabalho será interrompido. Os trabalhos de processamento que estão interrompidos não incorrem em nenhuma cobrança por SageMaker recursos. Use um dos comandos a seguir para excluir um trabalho de processamento.

Para instalação com escopo de cluster:

kubectl delete processingjob kmeans-mnist-processing

Para instalação com escopo de namespace:

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

A saída do seu trabalho de processamento deve ser semelhante à seguinte.

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

nota

SageMaker não exclui a tarefa de processamento. Os trabalhos interrompidos continuam aparecendo no SageMaker console. O delete comando leva alguns minutos para limpar os recursos SageMaker.

HostingAutoscalingPolicy (HAP) Operador

O operador HostingAutoscalingPolicy (HAP) usa uma lista de recursos IDs como entrada e aplica a mesma política a cada um deles. Cada ID de recurso é uma combinação de um nome de endpoint e um nome de variante. O HAP operador executa duas etapas: registra o recurso IDs e, em seguida, aplica a política de escalabilidade a cada ID de recurso. Deletedesfaz as duas ações. Você pode aplicar o HAP a um SageMaker endpoint existente ou criar um novo SageMaker endpoint usando o HostingDeployment operador. Você pode ler mais sobre escalonamento SageMaker automático na documentação da política de escalonamento automático de aplicativos.

nota

Em seus comandos kubectl, você pode usar a forma abreviada, hap, no lugar de hostingautoscalingpolicy.

Criar um HostingAutoscalingPolicy usando um YAML arquivo

Use um YAML arquivo para criar um HostingAutoscalingPolicy (HAP) que aplique uma métrica predefinida ou personalizada a um ou vários SageMaker endpoints.

A Amazon SageMaker exige valores específicos para aplicar o escalonamento automático à sua variante. Se esses valores não forem especificados na YAML especificação, o HAP operador aplicará os seguintes valores padrão.

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

Use os exemplos a seguir para criar uma HAP que aplique uma métrica predefinida ou personalizada a um ou vários endpoints.

Exemplo 1: aplicar uma métrica predefinida a uma única variante de endpoint

  1. Faça o download do YAML arquivo de amostra para uma métrica predefinida usando o seguinte comando:

    wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/hap-predefined-metric.yaml
  2. Edite o YAML arquivo para especificar seu endpointNamevariantName, Region e.

  3. Use um dos comandos a seguir para aplicar uma métrica predefinida a uma única ID de recurso (combinação de nome do endpoint e nome da variante).

    Para instalação com escopo de cluster:

    kubectl apply -f hap-predefined-metric.yaml

    Para instalação com escopo de namespace:

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

Exemplo 2: aplicar uma métrica personalizada a uma única variante de endpoint

  1. Faça o download do YAML arquivo de amostra para uma métrica personalizada usando o seguinte comando:

    wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/hap-custom-metric.yaml
  2. Edite o YAML arquivo para especificar seu endpointNamevariantName, Region e.

  3. Use um dos comandos a seguir para aplicar uma métrica personalizada a um único ID de recurso (combinação de nome do endpoint e nome da variante) no lugar do SageMakerVariantInvocationsPerInstance recomendado.

    nota

    SageMaker A Amazon não verifica a validade da sua YAML especificação.

    Para instalação com escopo de cluster:

    kubectl apply -f hap-custom-metric.yaml

    Para instalação com escopo de namespace:

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

Exemplo 3: aplicar uma política de escalabilidade a vários endpoints e variantes

Você pode usar o HAP operador para aplicar a mesma política de escalabilidade a vários recursosIDs. Uma scaling_policy solicitação separada é criada para cada ID de recurso (combinação de nome do endpoint e nome da variante).

  1. Faça o download do YAML arquivo de amostra para uma métrica predefinida usando o seguinte comando:

    wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/hap-predefined-metric.yaml
  2. Edite o YAML arquivo para especificar seu Region endpointName e vários variantName valores.

  3. Use um dos comandos a seguir para aplicar uma métrica predefinida a vários recursos IDs (combinações de nome de endpoint e nome de variante).

    Para instalação com escopo de cluster:

    kubectl apply -f hap-predefined-metric.yaml

    Para instalação com escopo de namespace:

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

Considerações HostingAutoscalingPolicies para vários endpoints e variantes

As considerações a seguir se aplicam quando você usa vários recursosIDs:

  • Se você aplicar uma única política em vários recursosIDs, uma política ARN será criada por ID de recurso. Cinco endpoints têm cinco P. olicyARNs Quando você executa o comando describe na política, as respostas aparecem como um trabalho e incluem um único status de trabalho.

  • Se você aplicar uma métrica personalizada a vários recursosIDs, a mesma dimensão ou valor será usado para todos os valores de ID do recurso (variante). Por exemplo, se você aplicar uma métrica de cliente para as instâncias 1 a 5 e a dimensão da variante do endpoint for mapeada para a variante 1, quando a variante 1 exceder as métricas, todos os endpoints serão ampliados ou reduzidos.

  • O HAP operador suporta a atualização da lista de recursosIDs. Se você modificar, adicionar ou excluir recursos da especificação, IDs a política de escalonamento automático será removida da lista anterior de variantes e aplicada às combinações de IDs de recursos recém-especificadas. Use o describecomando para listar o recurso IDs ao qual a política está atualmente aplicada.

Lista HostingAutoscalingPolicies

Use um dos comandos a seguir para listar todos HostingAutoscalingPolicies (HAPs) criados usando o HAP operador.

Para instalação com escopo de cluster:

kubectl get hap

Para instalação com escopo de namespace:

kubectl get hap -n <NAMESPACE>

Sua saída deve ser semelhante à seguinte:

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

Use o comando a seguir para verificar o status do seu HostingAutoscalingPolicy (HAP).

kubectl get hap <job-name>

Ele tem um dos seguintes valores:

  • Reconciling: certos tipos de erros mostram o status como Reconciling em vez de Error. Alguns exemplos são erros do lado do servidor e endpoints no estado Creating ou Updating. Verifique o campo Additional no status ou nos logs do operador para obter mais detalhes.

  • Created

  • Error

Para visualizar o endpoint de escalonamento automático ao qual você aplicou a política
  1. Abra o SageMaker console da Amazon em https://console.aws.amazon.com/sagemaker/.

  2. No painel do lado esquerdo, expanda Inferência.

  3. Selecione Endpoints.

  4. Selecione o nome do endpoint de interesse.

  5. Role até a seção Definições de tempo de execução do endpoint.

Descreva um HostingAutoscalingPolicy

Use o comando a seguir para obter mais detalhes sobre a HostingAutoscalingPolicy (HAP). Esses comandos são normalmente usados para depurar um problema ou verificar o recurso IDs (combinações de nome de endpoint e nome de variante) de um. HAP

kubectl describe hap <job-name>

Atualizar um HostingAutoscalingPolicy

O operador HostingAutoscalingPolicy (HAP) oferece suporte a atualizações. Você pode editar sua YAML especificação para alterar os valores e depois reaplicar a política. O HAP operador exclui a política existente e aplica a nova política.

Excluir um HostingAutoscalingPolicy

Use um dos comandos a seguir para excluir uma política HostingAutoscalingPolicy (HAP).

Para instalação com escopo de cluster:

kubectl delete hap hap-predefined

Para instalação com escopo de namespace:

kubectl delete hap hap-predefined -n <NAMESPACE>

Esse comando exclui a política de escalabilidade e cancela o registro do alvo de escalabilidade do Kubernetes. Este comando retorna a seguinte saída:

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

Atualizar ou excluir um endpoint com um HostingAutoscalingPolicy

Para atualizar um endpoint que tenha um HostingAutoscalingPolicy (HAP), use o kubectl delete comando para remover oHAP, atualizar o endpoint e reaplicar o. HAP

Para excluir um endpoint que tenha umHAP, use o kubectl delete comando para remover o HAP antes de excluir o endpoint.