Usar trabalhos do Amazon SageMaker AI
Esta seção é baseada na versão original do SageMaker AI 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 atualmente a versão v1.2.2 ou inferior do SageMaker Operators for Kubernetes
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 da compatibilidade da versão original do SageMaker Operators for Kubernetes, consulte Anúncio de fim do suporte à a versão original do SageMaker AI Operators for Kubernetes.
Para executar um trabalho do Amazon SageMaker AI usando o Operators for Kubernetes, você pode aplicar um arquivo YAML ou usar os charts do Helm fornecidos.
Todos os trabalhos de operador de amostra nos tutoriais a seguir usam dados de amostra retirados de um conjunto de dados público do MNIST. 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 conjunto de dados do MNIST.
Conteúdo
O operador do TrainingJob
Os operadores de tarefa de treinamento reconciliam sua especificação de tarefa de treinamento definida para o SageMaker AI ao iniciá-la no SageMaker AI. Saiba mais sobre as tarefas de treinamento do SageMaker AI na documentação da API CreateTrainingJob do SageMaker AI.
Tópicos
Criar um TrainingJob usando um arquivo YAML
-
Faça download do arquivo YAML de exemplo para treinamento usando o seguinte comando:
wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/xgboost-mnist-trainingjob.yaml -
Edite o arquivo
xgboost-mnist-trainingjob.yamlpara substituir o parâmetroroleArnpor seu<sagemaker-execution-role>eoutputPathpelo bucket do Amazon S3 ao qual o perfil de execução do SageMaker AI tem acesso de gravação. OroleArndeve ter permissões para que o SageMaker AI possa acessar o Amazon S3, o Amazon CloudWatch e outros serviços em seu nome. Para ter mais informações sobre como criar um ExecutionRole do SageMaker AI, consulte Perfis do SageMaker AI. Aplique o arquivo YAML utilizando o seguinte comando:kubectl apply -f xgboost-mnist-trainingjob.yaml
Criar um TrainingJob usando um chart do Helm
Você pode usar o chart do Helm para executar TrainingJobs.
-
Clone o repositório do GitHub para obter a fonte usando o seguinte comando:
git clone https://github.com/aws/amazon-sagemaker-operator-for-k8s.git -
Navegue até a pasta
amazon-sagemaker-operator-for-k8s/hack/charts/training-jobs/e edite o arquivovalues.yamlpara substituir valores comorolearneoutputpathpor valores que correspondam à sua conta. O RoleARN deve ter permissões para que o SageMaker AI possa acessar o Amazon S3, o Amazon CloudWatch e outros serviços em seu nome. Para ter mais informações sobre como criar um ExecutionRole do SageMaker AI, consulte Perfis do SageMaker AI.
Criar 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 chart do Helm de treinamento
Para verificar se o chart 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 a tarefa de treinamento real no SageMaker AI e atualiza o recurso TrainingJob do Kubernetes para exibir o status do trabalho no SageMaker AI. Você incorre em cobranças pelos recursos do SageMaker AI usados ao longo do seu trabalho. Você não incorre em nenhuma cobrança quando seu trabalho for concluído ou interrompido.
Observação: o SageMaker AI não permite que você atualize uma tarefa 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 o TFJob no Kubeflow, a update não é compatível.
Listar TrainingJobs
Use o seguinte comando 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 que foram interrompidos ou concluídos não incorrem em nenhuma cobrança pelos recursos do SageMaker AI.
Valores de status do TrainingJob
O campo STATUS pode ter um dos seguintes valores:
-
Completed -
InProgress -
Failed -
Stopped -
Stopping
Esses status vêm diretamente da documentação oficial da API do SageMaker AI.
Além do status oficial do SageMaker AI, é possível que o STATUS seja SynchronizingK8sJobWithSageMaker. Isso significa que o operador ainda não processou o trabalho.
Valores de status secundários
Os status secundários vêm diretamente da documentação oficial da API do SageMaker AI. Eles contêm informações mais granulares sobre o status do trabalho.
Descrever 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 seguinte comando:
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>
Visualizar logs de TrainingJobs
Use o seguinte comando para visualizar os logs em log do trabalho de treinamento kmeans-mnist:
kubectl smlogs trainingjob xgboost-mnist-from-for-s3
O resultado deve ser semelhante ao seguinte: Os logs 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 seguinte comando para interromper uma tarefa de treinamento no Amazon SageMaker AI:
kubectl delete trainingjob xgboost-mnist-from-for-s3
Esse comando remove o trabalho de treinamento do SageMaker do Kubernetes. Esse comando retorna a seguinte saída:
trainingjob.sagemaker.aws.amazon.com "xgboost-mnist-from-for-s3" deleted
Se a tarefa ainda estiver em andamento no SageMaker AI, ela será interrompida. Você não incorre em nenhuma cobrança pelos recursos do SageMaker AI depois que seu trabalho for concluído ou interrompido.
Observação: o SageMaker AI não exclui tarefas de treinamento. Os trabalhos interrompidos continuam sendo exibidos no console do SageMaker AI. O comando delete leva cerca de 2 minutos para limpar os recursos do SageMaker AI.
O operador HyperParameterTuningJob
Os operadores de trabalho de ajuste de hiperparâmetros reconciliam sua especificação de trabalho de ajuste de hiperparâmetros especificada com o SageMaker AI, iniciando-o no SageMaker AI. Saiba mais sobre os trabalhos de ajuste de hiperparâmetros do SageMaker AI na documentação da API CreateHyperParameterTuningJob do SageMaker AI.
Tópicos
Criar um HyperParameterTuningJob usando um arquivo YAML
-
Faça download do arquivo YAML de exemplo 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 -
Edite o arquivo
xgboost-mnist-hpo.yamlpara substituir o parâmetroroleArnpelo seusagemaker-execution-role. Para que o trabalho de ajuste de hiperparâmetros seja bem-sucedido, você também deve alterar os valores des3InputPathes3OutputPathpara que correspondem à sua conta. Aplique a atualização do arquivo YAML utilizando o seguinte comando:kubectl apply -f xgboost-mnist-hpo.yaml
Criar um HyperparameterTuningJob usando um chart do Helm
Você pode usar charts do Helm para executar trabalhos de ajuste de hiperparâmetros.
-
Clone o repositório do GitHub para obter a fonte usando o seguinte comando:
git clone https://github.com/aws/amazon-sagemaker-operator-for-k8s.git -
Navegue para a pasta
amazon-sagemaker-operator-for-k8s/hack/charts/hyperparameter-tuning-jobs/. -
Edite o arquivo
values.yamlpara substituir o parâmetroroleArnpelo seusagemaker-execution-role. Para que o trabalho de ajuste de hiperparâmetros seja bem-sucedido, você também deve alterar os valores des3InputPathes3OutputPathpara que correspondem à sua conta.
Criar 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
O resultado deve ser semelhante ao 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 chart 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 de otimização de hiperparâmetros real no SageMaker AI e atualiza o recurso HyperParameterTuningJob do Kubernetes para exibir o status do trabalho no SageMaker AI. Você incorre em cobranças pelos recursos do SageMaker AI usados ao longo do seu trabalho. Você não incorre em nenhuma cobrança quando seu trabalho for concluído ou interrompido.
Observação: o SageMaker AI 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 é compatível.
Listar HyperparameterTuningJobs
Use o seguinte comando 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 que foram interrompidos ou concluídos não incorrem em nenhuma cobrança pelos recursos do SageMaker AI.
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 documentação oficial da API do SageMaker AI.
Além do status oficial do SageMaker AI, é possível que o STATUS seja SynchronizingK8sJobWithSageMaker. 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 eles são determinados, consulte TrainingJobStatusCounters na Documentação da API do SageMaker.
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>
TrainingJobs gerados
Você também pode acompanhar todos os 10 trabalhos de treinamento no Kubernetes iniciados pelo HyperparameterTuningJob executando o seguinte comando:
kubectl get trainingjobs
Descrever 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 AI Operators for Kubernetes também expõe a melhor tarefa de treinamento encontrada pelo trabalho de ajuste de hiperparâmetros na saída describe da seguinte forma:
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>
Visualizar logs do 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 ter mais informações, consulte Visualizar logs de TrainingJobs.
Excluir um HyperParameterTuningJob
Use o comando a seguir para interromper um trabalho de hiperparâmetro no SageMaker AI.
kubectl delete hyperparametertuningjob xgboost-mnist-hpo
Esse comando remove o trabalho de ajuste de hiperparâmetro e as tarefas de treinamento associadas do cluster do Kubernetes e os interrompe no SageMaker AI. Os trabalhos que foram interrompidos ou concluídos não incorrem em nenhuma cobrança pelos recursos do SageMaker AI. O SageMaker AI não exclui trabalhos de ajuste de hiperparâmetro. Os trabalhos interrompidos continuam sendo exibidos no console do SageMaker AI.
A saída será semelhante a:
hyperparametertuningjob.sagemaker.aws.amazon.com "xgboost-mnist-hpo" deleted
Observação: o comando excluir leva cerca de 2 minutos para limpar os recursos do SageMaker AI.
O operador BatchTransformJob
Os operadores de trabalho de transformação em lote reconciliam sua especificação de trabalho de transformação em lote definida para o SageMaker AI ao iniciá-lo no SageMaker AI. Saiba mais sobre o trabalho de transformação em lote do SageMaker AI na documentação da API CreateTransformJob do SageMaker AI.
Tópicos
Criar um BatchTransformJob usando um arquivo YAML
Faça download do arquivo YAML de exemplo para o trabalho de transformação de lotes usando o seguinte comando:
wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/xgboost-mnist-batchtransform.yaml-
Edite o arquivo
xgboost-mnist-batchtransform.yamlpara alterar os parâmetros necessários e substituirinputdataconfigpelos seus dados de entrada es3OutputPathpelos buckets do Amazon S3 aos quais o perfil de execução do SageMaker AI tem acesso de gravação. -
Aplique o arquivo YAML utilizando o seguinte comando:
kubectl apply -f xgboost-mnist-batchtransform.yaml
Criar um BatchTransformJob usando um gráfico de Helm
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 repositório do GitHub 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 arquivo values.yaml para substituir o inputdataconfig por seus dados de entrada e outputPath por seus buckets do S3 aos quais o perfil de execução do SageMaker AI tem acesso de gravação.
Criar um BatchTransformJob
-
Use o seguinte comando para criar um trabalho de transformação de lote:
helm install . --generate-nameA 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. -
Para verificar se o chart do 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.0O comando cria um recurso
BatchTransformJobdo Kubernetes. O operador inicia o trabalho de transformação real no SageMaker AI e atualiza o recursoBatchTransformJobdo Kubernetes para refletir o status do trabalho no SageMaker AI. Você incorre em cobranças pelos recursos do SageMaker AI usados ao longo do seu trabalho. Você não incorre em nenhuma cobrança quando seu trabalho for concluído ou interrompido.
Observação: o SageMaker AI 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 é compatível.
Listar BatchTransformJobs
Use o seguinte comando 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 Exclui um BatchTransformJob. Os trabalhos que foram interrompidos ou concluídos não incorrem em nenhuma cobrança pelos recursos do SageMaker AI.
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 documentação oficial da API do SageMaker AI.
Além do status oficial do SageMaker AI, é possível que o STATUS seja SynchronizingK8sJobWithSageMaker. Isso significa que o operador ainda não processou o trabalho.
Descrever 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 logs de BatchTransformJobs
Use o seguinte comando para visualizar os logs em log do trabalho de transformação de lote xgboost-mnist:
kubectl smlogs batchtransformjob xgboost-mnist-batch-transform
Exclui um BatchTransformJob
Use o comando a seguir para interromper um trabalho de transformação em lote no SageMaker AI.
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 cluster do Kubernetes e o interrompe no SageMaker AI. Os trabalhos que foram interrompidos ou concluídos não incorrem em nenhuma cobrança pelos recursos do SageMaker AI. A exclusão leva cerca de 2 minutos para limpar os recursos do SageMaker AI.
Observação: o SageMaker AI não exclui trabalhos de transformação em lote. Os trabalhos interrompidos continuam sendo exibidos no console do SageMaker AI.
O operador de HostingDeployment
Os operadores HostingDeployment oferecem apoio à 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 com o SageMaker AI criando modelos, configurações de endpoint e endpoints no SageMaker AI. Saiba mais sobre a inferência do SageMaker AI na documentação da API CreateEndpoint do SageMaker AI.
Tópicos
Configurar um recurso HostingDeployment
Faça download do arquivo YAML de exemplo 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. O SageMaker AI equilibra a carga entre todas as variantes de produção de acordo com os pesos definidos.
-
Modelos. Um modelo são os contêineres e o ARN da função de execução 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 estiver usando um algoritmo personalizado em vez de um algoritmo fornecido pelo SageMaker AI, o código de inferência deve atender aos requisitos do SageMaker AI. Para ter mais informações, consulte Using Your Own Algorithms with SageMaker AI.
Criar uma HostingDeployment
Para criar um HostingDeployment, use kubectl para aplicar o arquivo hosting.yaml com o seguinte comando:
kubectl apply -f hosting.yaml
O SageMaker AI cria um endpoint com a configuração especificada. Você incorre em cobranças pelos recursos do SageMaker AI 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.
Listar 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
Valores de status de HostingDeployment
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 o HostingDeployment permanecer nesse estado, usekubectl describepara ver o motivo no campoAdditional. -
OutOfService: o endpoint não está disponível para receber solicitações. -
Creating: o CreateEndpoint está em execução. -
Updating: updateEndpoint ou updateEndpointWeightsAndCapacities está 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 configuração da VPC, criptografia AWS KMS, modelo, tipo de instância ou contagem de instâncias. -
RollingBack: o endpoint não consegue diminuir ou aumentar a escala verticalmente 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 statusInService. Esse status de transição só se aplica a um endpoint que tem o ajuste de escala automático ativado e está passando por alterações de peso ou capacidade de variantes como parte de uma chamada UpdateEndpointWeightsAndCapacities ou quando a operação UpdateEndpointWeightsAndCapacities é chamada explicitamente. -
InService: o endpoint não está disponível para receber solicitações. -
Deleting: o DeleteEndpoint está em execução. -
Failed: o endpoint não pôde ser criado, atualizado ou redimensionado. Use DescribeEndpoint:failureReason para obter informações sobre a falha. DeleteEndpoint é a única operação que pode ser executada em um endpoint com falha.
Descrever uma 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 no SageMaker AI. -
Endpoint ARN: o ARN do endpoint do SageMaker AI. -
Endpoint Config Name: o nome do SageMaker AI da configuração do endpoint. -
Endpoint Name: o nome do SageMaker AI do endpoint. -
Endpoint Status: o status do endpoint. -
Endpoint URL: o URL HTTPS que pode ser usado para acessar o endpoint. Para ter mais informações, consulte Deploy a Model on SageMaker AI Hosting Services. -
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 chave-valor de nomes de modelo HostingDeployment com nomes de modelos do SageMaker AI.
Invocar o endpoint
Quando o status do endpoint for InService, você poderá invocar o endpoint de duas maneiras: usando a CLI AWS, que faz a autenticação e a assinatura da solicitação de URL, ou usando um cliente HTTP como cURL. Se você usa seu próprio cliente, precisa fazer a assinatura e a autenticação de URL AWS v4 por conta própria.
Para invocar o endpoint usando a AWS CLI, execute o comando a seguir. Substitua o nome da região e do endpoint pela região do seu endpoint e pelo nome do endpoint do SageMaker AI. 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 seguinte comando 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 predição de modelo para os dados simulados.
Atualizar o HostingDeployment
-
Quando um HostingDeployment tem o status de
InService, ele pode ser atualizado. Pode levar cerca de 10 minutos para que o HostingDeployment esteja em serviço. Para verificar se o status éInService, use o seguinte comando:kubectl get hostingdeployments -
O HostingDeployment pode ser atualizado antes que o status seja
InService. O operador espera até que o endpoint do SageMaker AI estejaInServicepara aplicar a atualização.Para aplicar uma atualização, modifique o
hosting.yamlarquivo. Por exemplo, altere o campoinitialInstanceCountde 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 -
Salve o arquivo e use
kubectlpara aplicar sua atualização da seguinte maneira: Você deve ver o status mudar deInServiceparaReconcilingEndpoint, entãoUpdating.$ 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
O SageMaker AI 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
Use
kubectlpara excluir um HostingDeployment com o seguinte comando:kubectl delete hostingdeployments host-xgboostA saída será semelhante a:
hostingdeployment.sagemaker.aws.amazon.com "host-xgboost" deleted-
Para verificar se a implantação da hospedagem foi excluída, use o seguinte comando:
kubectl get hostingdeployments No resources found.
Os endpoints que foram excluídos não incorrem em nenhuma cobrança pelos recursos do SageMaker AI.
Esse é o operador do ProcessingJob
Os operadores ProcessingJob são usados para iniciar trabalhos de processamento do Amazon SageMaker Processing. Para ter mais informações sobre trabalhos de processamento do SageMaker AI, consulte CreateProcessingJob.
Tópicos
Criar um ProcessingJob usando um arquivo YAML
Siga estas etapas para criar um trabalho de processamento do Amazon SageMaker Processing usando um arquivo YAML:
-
Baixe o script de
kmeans_preprocessing.pypré-processamento.wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/kmeans_preprocessing.py -
Em um de seus buckets do Amazon Simple Storage Service (Amazon S3), crie
mnist_kmeans_example/processing_codeuma pasta e carregue o script na pasta. -
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 -
Edite o arquivo YAML para especificar sua
sagemaker-execution-rolee substituir todas as instâncias do pelo seuamzn-s3-demo-bucketbucket 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.pyO
sagemaker-execution-roledeve ter permissões para que o SageMaker AI possa acessar seu bucket do Amazon CloudWatch S3 e outros serviços em seu nome. Para ter mais informações sobre como criar um perfil de execução, consulte Perfis do SageMaker AI. -
Aplique o arquivo YAML utilizando um dos seguintes comandos:
Para instalação com escopo de cluster:
kubectl apply -f kmeans-mnist-processingjob.yamlPara instalação com escopo de namespace:
kubectl apply -f kmeans-mnist-processingjob.yaml -n<NAMESPACE>
Listar ProcessingJobs
Use um dos comandos a seguir para listar todas as trabalhos criados usando o operador processingJob. SAGEMAKER-JOB-NAME vem da seção metadata do arquivo YAML.
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
O resultado deve ser semelhante ao 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.
Status do ProcessingJob
-
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 comandodescribedokubectlpara ver o motivo no campoAdditional. -
InProgress | Completed | Failed | Stopping | Stopped: status do trabalho de processamento do SageMaker AI. Para obter mais informações, consulte DescribeProcessingJob. -
Error: o operador não pode se recuperar por meio da reconciliação.
Os trabalhos que foram concluídos, interrompidos ou falharam não incorrem em cobranças adicionais pelos recursos do SageMaker AI.
Descrever 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 do SageMaker Processing é removido do Kubernetes, mas o trabalho não é excluído do SageMaker AI. Se o status do trabalho no SageMaker AI for InProgress, o trabalho será interrompido. O processamento de trabalhos interrompidos não gera nenhuma cobrança pelos recursos do SageMaker AI. 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
O SageMaker AI não exclui o trabalho de processamento. Os trabalhos interrompidos continuam a aparecer no console do SageMaker AI. O comando delete leva alguns minutos para limpar os recursos do SageMaker AI.
Operador HostingAutoscalingPolicy (HAP)
O operador HostingAutoscalingPolicy (HAP) usa uma lista de IDs de recursos como entrada e aplica a mesma política a cada uma delas. Cada ID de recurso é uma combinação de um nome de endpoint e um nome de variante. O operador HAP executa duas etapas: registra os IDs dos recursos e depois aplica a política de escalabilidade a cada ID do recurso. Delete desfaz as duas ações. Você pode aplicar a HAP a um endpoint existente do SageMaker AI ou criar um endpoint do SageMaker AI usando o operador HostingDeployment. Você pode ler mais sobre o ajuste de escala automático do SageMaker AI na documentação sobre a política de ajuste de escala automático de aplicações.
nota
Em seus comandos kubectl, você pode usar a forma abreviada, hap, no lugar de hostingautoscalingpolicy.
Tópicos
Criar uma HostingAutoScalingPolicy usando um arquivo YAML
Use um arquivo YAML para criar uma HostingAutoscalingPolicy (HAP) que aplique uma métrica predefinida ou personalizada a um ou vários endpoints do SageMaker AI.
O Amazon SageMaker AI exige valores específicos para aplicar o ajuste de escala automático à sua variante. Se esses valores não forem especificados na especificação YAML, o operador HAP 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 um 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
-
Faça download do arquivo YAML de exemplo 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 -
Edite o arquivo YAML para especificar seu
endpointName,variantNameeRegion. -
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.yamlPara 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
-
Faça download do arquivo YAML de exemplo 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 -
Edite o arquivo YAML para especificar seu
endpointName,variantNameeRegion. -
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
SageMakerVariantInvocationsPerInstancerecomendado.nota
O Amazon SageMaker AI não verifica a validade da sua especificação YAML.
Para instalação com escopo de cluster:
kubectl apply -f hap-custom-metric.yamlPara 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 operador HAP para aplicar a mesma política de escalabilidade a vários IDs de recursos. Uma scaling_policy solicitação separada é criada para cada ID de recurso (combinação de nome do endpoint e nome da variante).
-
Faça download do arquivo YAML de exemplo 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 -
Edite o arquivo YAML para especificar seus
Region, váriosendpointNamee valoresvariantName. -
Use um dos comandos a seguir para aplicar uma métrica predefinida a vários IDs de recursos (combinações de nome de endpoint e nome de variante).
Para instalação com escopo de cluster:
kubectl apply -f hap-predefined-metric.yamlPara instalação com escopo de namespace:
kubectl apply -f hap-predefined-metric.yaml -n<NAMESPACE>
Considerações sobre a HostingAutoscalingPolicies para vários endpoints e variantes
As seguintes considerações se aplicam quando você usa vários IDs de recursos:
-
Se você aplicar uma única política em vários IDs de recursos, um PolicyARN será criado por ID de recurso. Cinco endpoints têm cinco PolicyARNs. Quando você executa o comando
describena 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 IDs de recursos, 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 terão a escala aumentada ou reduzida verticalmente.
-
O operador HAP é compatível com a atualização da lista de IDs de recursos. Se você modificar, adicionar ou excluir IDs de recursos da especificação, a política de ajuste de escala automático será removida da lista anterior de variantes e aplicada às combinações de IDs de recursos recém-especificadas. Use o comando
describepara listar os IDs de recursos aos quais a política está aplicada atualmente.
Listar HostingAutoscalingPolicies
Use um dos seguintes comandos para listar todas as HostingAutoScalingPolicies (HAPs) criadas usando o operador HAP:
Para instalação com escopo de cluster:
kubectl get hap
Para instalação com escopo de namespace:
kubectl get hap -n<NAMESPACE>
O resultado deve ser semelhante ao seguinte:
NAME STATUS CREATION-TIME hap-predefined Created 2021-07-13T21:32:21Z
Use o comando a seguir para verificar o status da HostingAutoScalingPolicy (HAP).
kubectl get hap<job-name>
Ele tem um dos seguintes valores:
-
Reconciling: certos tipos de erros mostram o status comoReconcilingem vez deError. Alguns exemplos são erros do lado do servidor e endpoints no estadoCreatingouUpdating. Verifique o campoAdditionalno status ou nos logs do operador para obter mais detalhes. CreatedError
Para visualizar o endpoint de ajuste de escala automático ao qual você aplicou a política
-
Abra o console do Amazon SageMaker AI em https://console.aws.amazon.com/sagemaker/
. -
No painel do lado esquerdo, expanda Inferência.
-
Selecione Endpoints.
-
Selecione o nome do endpoint de interesse.
-
Role até a seção Definições de runtime do endpoint.
Descrever uma HostingAutoScalingPolicy
Use o comando a seguir para obter mais detalhes sobre uma HostingAutoscalingPolicy (HAP). Esses comandos geralmente são usados para depurar um problema ou verificar os IDs de recursos (combinações de nome de endpoint e nome de variante) de um HAP.
kubectl describe hap<job-name>
Atualizar uma HostingAutoscalingPolicy
O operador HostingAutoscalingPolicy (HAP) oferece apoio a atualizações. Você pode editar sua especificação YAML para alterar os valores e depois reaplicar a política. O operador do HAP exclui a política existente e aplica a nova política.
Excluir uma HostingAutoScalingPolicy
Use um dos seguintes comandos 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 uma HostingAutoscalingPolicy
Para atualizar um endpoint que tenha uma HostingAutoscalingPolicy (HAP), use o comando kubectl delete para remover o HAP, atualizar o endpoint e reaplicar o HAP.
Para excluir um endpoint que tenha um HAP, use o comando kubectl delete para remover o HAP antes de excluir o endpoint.