Usa Amazon SageMaker Jobs - Amazon SageMaker

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Usa Amazon SageMaker Jobs

Esta sección se basa en la versión original de SageMaker Operators for Kubernetes.

importante

Vamos a detener el desarrollo y el soporte técnico de la versión original de SageMaker Operators for Kubernetes.

Si actualmente utilizas la versión v1.2.2 o anterior de SageMaker Operators for Kubernetes, te recomendamos migrar tus recursos al controlador de servicios ACK para Amazon. SageMaker El controlador de servicios ACK es una nueva generación de SageMaker operadores para Kubernetes basada en Controllers for Kubernetes (ACK).AWS

Para obtener información sobre los pasos de migración, consulte Migrar recursos a los operadores más recientes.

Para obtener respuestas a las preguntas frecuentes sobre la finalización del soporte de la versión original de Operators for Kubernetes, consulte SageMaker Anunciamos el fin del soporte de la versión original de SageMaker Operators for Kubernetes

Para ejecutar un SageMaker trabajo de Amazon con Operators for Kubernetes, puedes aplicar un archivo YAML o usar los Helm Charts proporcionados.

Todos los ejemplos de trabajos de operador de los siguientes tutoriales utilizan datos de muestra tomados de un conjunto de datos MNIST público. Para ejecutar estas muestras, descargue el conjunto de datos en su bucket de Amazon S3. Encontrará el conjunto de datos en Download the MNIST Dataset.

El operador TrainingJob

Los operadores de trabajos de formación concilian las especificaciones de su trabajo de formación SageMaker especificadas con las que lo lanzan para usted en. SageMaker Puedes obtener más información sobre los trabajos de SageMaker formación en la documentación de la SageMaker CreateTrainingJob API.

Crea una TrainingJob usando un archivo YAML

  1. Descargue el archivo YAML de muestra para el entrenamiento con el siguiente comando:

    wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/xgboost-mnist-trainingjob.yaml
  2. Edite el xgboost-mnist-trainingjob.yaml archivo para sustituir el roleArn parámetro por su <sagemaker-execution-role> bucket de Amazon S3 y outputPath por el suyo al que la función de SageMaker ejecución tiene acceso de escritura. roleArnDeben tener permisos para SageMaker poder acceder a Amazon S3 CloudWatch, Amazon y otros servicios en su nombre. Para obtener más información sobre la creación de una SageMaker ExecutionRole, consulte SageMaker Funciones. Aplique el archivo YAML mediante el siguiente comando:

    kubectl apply -f xgboost-mnist-trainingjob.yaml

Cree un diagrama TrainingJob utilizando un Helm

Puedes usar Helm Charts para correr TrainingJobs.

  1. Clona el GitHub repositorio para obtener la fuente mediante el siguiente comando:

    git clone https://github.com/aws/amazon-sagemaker-operator-for-k8s.git
  2. Vaya a la carpeta amazon-sagemaker-operator-for-k8s/hack/charts/training-jobs/ y edite el archivo values.yaml para reemplazar valores como rolearn y outputpath por valores que correspondan a su cuenta. El RoLearn debe tener permisos para SageMaker poder acceder a Amazon S3 CloudWatch, Amazon y otros servicios en su nombre. Para obtener más información sobre la creación de una SageMaker ExecutionRole, consulte SageMaker Funciones.

Cree el TrainingJob

Con los roles y los buckets de Amazon S3 reemplazados por los valores correspondientes en values.yaml, puede crear un trabajo de entrenamiento con el siguiente comando:

helm install . --generate-name

El resultado debería tener el siguiente aspecto:

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.

Verificación del entrenamiento con gráficos de Helm

Para comprobar que el gráfico de Helm se creó correctamente, ejecute:

helm ls

El resultado debería tener el siguiente aspecto:

NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION chart-12345678 default 1 2019-11-20 23:35:49.9136092 +0000 UTC deployed sagemaker-k8s-trainingjob-0.1.0 rolebased-12345678 default 1 2019-11-20 23:14:59.6777082 +0000 UTC deployed sagemaker-k8s-operator-0.1.0

helm install crea un recurso TrainingJob de Kubernetes. El operador inicia el trabajo de formación actual SageMaker y actualiza el recurso de TrainingJob Kubernetes para reflejar el estado del trabajo en cuestión. SageMaker Se le cobrará por SageMaker los recursos que utilice durante su trabajo. No incurrirá en ningún cargo una vez que su trabajo finalice o se detenga.

Nota: SageMaker no te permite actualizar un trabajo de entrenamiento como corredor. No puede editar ningún parámetro ni volver a aplicar el archivo de configuración. Cambie el nombre de los metadatos o elimine el trabajo existente y cree uno nuevo. Al igual que ocurre con los operadores de trabajos de entrenamiento existentes, como TFJob en Kubeflow, update no se admite.

Lista TrainingJobs

Utilice el siguiente comando para enumerar todos los trabajos creados con el operador de Kubernetes:

kubectl get TrainingJob

La salida que enumera todos los trabajos debe tener el siguiente aspecto:

kubectl get trainingjobs NAME STATUS SECONDARY-STATUS CREATION-TIME SAGEMAKER-JOB-NAME xgboost-mnist-from-for-s3 InProgress Starting 2019-11-20T23:42:35Z xgboost-mnist-from-for-s3-examplef11eab94e0ed4671d5a8f

Un trabajo de entrenamiento aún aparece en la lista después de que el trabajo se haya completado o haya producido un error. Puede eliminar un trabajo TrainingJob de la lista con los pasos Eliminar TrainingJobs. Los trabajos que se hayan completado o interrumpido no incurren en ningún cargo por SageMaker los recursos.

TrainingJob valores de estado

El campo STATUS puede tener uno de los siguientes valores:

  • Completed

  • InProgress

  • Failed

  • Stopped

  • Stopping

Estos estados provienen directamente de la documentación SageMaker oficial de la API.

Además del SageMaker estado oficial, es posible que lo STATUS sea. SynchronizingK8sJobWithSageMaker Esto significa que el operador aún no ha procesado el trabajo.

Valores de estado secundarios

Los estados secundarios provienen directamente de la documentación SageMaker oficial de la API. Contienen información más detallada sobre el estado del trabajo.

Describa un TrainingJob

Puede obtener más detalles sobre el trabajo de entrenamiento mediante el comando kubectl describe. Por lo general, se utiliza para solucionar un problema o comprobar los parámetros de un trabajo de entrenamiento. Para obtener información sobre el trabajo de entrenamiento, utilice el siguiente comando:

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

La salida del trabajo de entrenamiento debería tener el siguiente aspecto:

Name: xgboost-mnist-from-for-s3 Namespace: default Labels: <none> Annotations: <none> API Version: sagemaker.aws.amazon.com/v1 Kind: TrainingJob Metadata: Creation Timestamp: 2019-11-20T23:42:35Z Finalizers: sagemaker-operator-finalizer Generation: 2 Resource Version: 23119 Self Link: /apis/sagemaker.aws.amazon.com/v1/namespaces/default/trainingjobs/xgboost-mnist-from-for-s3 UID: 6d7uiui-0bef-11ea-b94e-0ed467example Spec: Algorithm Specification: Training Image: 8256416981234.dkr.ecr.us-east-2.amazonaws.com/xgboost:1 Training Input Mode: File Hyper Parameters: Name: eta Value: 0.2 Name: gamma Value: 4 Name: max_depth Value: 5 Name: min_child_weight Value: 6 Name: num_class Value: 10 Name: num_round Value: 10 Name: objective Value: multi:softmax Name: silent Value: 0 Input Data Config: Channel Name: train Compression Type: None Content Type: text/csv Data Source: S 3 Data Source: S 3 Data Distribution Type: FullyReplicated S 3 Data Type: S3Prefix S 3 Uri: https://s3-us-east-2.amazonaws.com/my-bucket/sagemaker/xgboost-mnist/train/ Channel Name: validation Compression Type: None Content Type: text/csv Data Source: S 3 Data Source: S 3 Data Distribution Type: FullyReplicated S 3 Data Type: S3Prefix S 3 Uri: https://s3-us-east-2.amazonaws.com/my-bucket/sagemaker/xgboost-mnist/validation/ Output Data Config: S 3 Output Path: s3://my-bucket/sagemaker/xgboost-mnist/xgboost/ Region: us-east-2 Resource Config: Instance Count: 1 Instance Type: ml.m4.xlarge Volume Size In GB: 5 Role Arn: arn:aws:iam::12345678910:role/service-role/AmazonSageMaker-ExecutionRole Stopping Condition: Max Runtime In Seconds: 86400 Training Job Name: xgboost-mnist-from-for-s3-6d7fa0af0bef11eab94e0example Status: Cloud Watch Log URL: https://us-east-2.console.aws.amazon.com/cloudwatch/home?region=us-east-2#logStream:group=/aws/sagemaker/TrainingJobs;prefix=<example>;streamFilter=typeLogStreamPrefix Last Check Time: 2019-11-20T23:44:29Z Sage Maker Training Job Name: xgboost-mnist-from-for-s3-6d7fa0af0bef11eab94eexample Secondary Status: Downloading Training Job Status: InProgress Events: <none>

Ver registros de TrainingJobs

Utilice el siguiente comando para ver los registros del trabajo de entrenamiento kmeans-mnist:

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

El resultado debería tener un aspecto similar al siguiente. Los registros de las instancias se ordenan cronológicamente.

"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

Eliminar TrainingJobs

Usa el siguiente comando para detener un trabajo de formación en Amazon SageMaker:

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

Este comando elimina el trabajo de SageMaker formación de Kubernetes. Este comando devuelve la siguiente salida:

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

Si el trabajo sigue en curso SageMaker, el trabajo se detiene. No se le cobrará ningún cargo por los SageMaker recursos una vez que el trabajo se detenga o se complete.

Nota: SageMaker no elimina los trabajos de formación. Los trabajos interrumpidos siguen apareciendo en la SageMaker consola. El delete comando tarda unos 2 minutos en limpiar los recursos SageMaker.

¿El HyperParameterTuningJob operador

Los operadores del trabajo de ajuste de hiperparámetros concilian la especificación de la tarea de ajuste de hiperparámetros especificada SageMaker iniciándola. SageMaker Puede obtener más información sobre los trabajos de ajuste de SageMaker hiperparámetros en la documentación de la API. SageMaker CreateHyperParameterTuningJob

Crea una HyperparameterTuningJob usando un archivo YAML

  1. Descargue el archivo YAML de muestra para el trabajo de ajuste de hiperparámetros mediante el siguiente comando:

    wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/xgboost-mnist-hpo.yaml
  2. Edite el archivo xgboost-mnist-hpo.yaml para reemplazar el parámetro roleArn por su sagemaker-execution-role. Para que el trabajo de ajuste del hiperparámetro se realice correctamente, también debe cambiar los valores s3InputPath y s3OutputPath por los que correspondan a su cuenta. Aplique las actualizaciones del archivo YAML mediante el siguiente comando:

    kubectl apply -f xgboost-mnist-hpo.yaml

Crea una HyperparameterTuningJob usando un gráfico de Helm

Puede usar gráficos de Helm para ejecutar trabajos de ajuste de hiperparámetros.

  1. Clone el GitHub repositorio para obtener la fuente mediante el siguiente comando:

    git clone https://github.com/aws/amazon-sagemaker-operator-for-k8s.git
  2. Vaya a la carpeta amazon-sagemaker-operator-for-k8s/hack/charts/hyperparameter-tuning-jobs/.

  3. Edite el archivo values.yaml para reemplazar el parámetro roleArn por su sagemaker-execution-role. Para que el trabajo de ajuste del hiperparámetro se realice correctamente, también debe cambiar los valores s3InputPath y s3OutputPath por los que correspondan a su cuenta.

Cree el HyperparameterTuningJob

Con los roles y las rutas de Amazon S3 reemplazados por los valores correspondientes en values.yaml, puede crear un trabajo de ajuste de hiperparámetros con el siguiente comando:

helm install . --generate-name

El resultado debería tener un aspecto similar al siguiente:

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.

Verificación de la instalación del gráfico

Para comprobar que el gráfico de Helm se creó correctamente, ejecute el siguiente comando:

helm ls

El resultado debería tener el siguiente aspecto:

NAME NAMESPACE REVISION UPDATED chart-1474292948 default 1 2019-11-20 23:35:49.9136092 +0000 UTC deployed sagemaker-k8s-hyperparametertuningjob-0.1.0 STATUS CHART APP VERSION chart-1574292948 default 1 2019-11-20 23:35:49.9136092 +0000 UTC deployed sagemaker-k8s-trainingjob-0.1.0 rolebased-1574291698 default 1 2019-11-20 23:14:59.6777082 +0000 UTC deployed sagemaker-k8s-operator-0.1.0

helm install crea un recurso HyperParameterTuningJob de Kubernetes. El operador inicia el trabajo de optimización de hiperparámetros real SageMaker y actualiza el recurso de HyperParameterTuningJob Kubernetes para reflejar el estado del trabajo realizado. SageMaker Se le cobrará por los SageMaker recursos utilizados durante la duración de su trabajo. No incurrirá en ningún cargo una vez que su trabajo finalice o se detenga.

Nota: SageMaker no permite actualizar un trabajo de ajuste de hiperparámetros en ejecución. No puede editar ningún parámetro ni volver a aplicar el archivo de configuración. Debe cambiar el nombre de los metadatos o eliminar el trabajo existente y crear uno nuevo. Al igual que ocurre con los operadores de trabajos de entrenamiento existentes, como TFJob en Kubeflow, update no se admite.

Lista HyperparameterTuningJobs

Utilice el siguiente comando para enumerar todos los trabajos creados con el operador de Kubernetes:

kubectl get hyperparametertuningjob

El resultado debería tener el siguiente aspecto:

NAME STATUS CREATION-TIME COMPLETED INPROGRESS ERRORS STOPPED BEST-TRAINING-JOB SAGEMAKER-JOB-NAME xgboost-mnist-hpo Completed 2019-10-17T01:15:52Z 10 0 0 0 xgboostha92f5e3cf07b11e9bf6c06d6-009-4c7a123 xgboostha92f5e3cf07b11e9bf6c123

Un trabajo de ajuste de hiperparámetros aún aparece en la lista después de que el trabajo se haya completado o haya producido un error. Puede eliminar un hyperparametertuningjob de la lista con los siguientes pasos en Eliminar un HyperparameterTuningJob. Los trabajos que se hayan completado o interrumpido no incurren en ningún cargo por SageMaker los recursos.

Valores de estado del trabajo de ajuste de hiperparámetros

El campo STATUS puede tener uno de los siguientes valores:

  • Completed

  • InProgress

  • Failed

  • Stopped

  • Stopping

Estos estados provienen directamente de la documentación SageMaker oficial de la API.

Además del SageMaker estado oficial, es posible que lo STATUS sea. SynchronizingK8sJobWithSageMaker Esto significa que el operador aún no ha procesado el trabajo.

Contadores de estado

La salida tiene varios contadores, como COMPLETED y INPROGRESS. Representan el número de trabajos de entrenamiento que se han completado y están en curso, respectivamente. Para obtener más información sobre cómo se determinan, consulte TrainingJobStatusCountersla documentación de la SageMaker API.

Lo mejor TrainingJob

Esta columna contiene el nombre del TrainingJob que mejor optimizó la métrica seleccionada.

Para ver un resumen de los hiperparámetros ajustados, ejecute:

kubectl describe hyperparametertuningjob xgboost-mnist-hpo

Para ver información detallada acerca del TrainingJob, ejecute:

kubectl describe trainingjobs <job name>

Engendrado TrainingJobs

También puede hacer un seguimiento de los 10 trabajos de entrenamiento en Kubernetes lanzados por HyperparameterTuningJob si ejecuta el siguiente comando:

kubectl get trainingjobs

Describe un HyperparameterTuningJob

Puede obtener los detalles de la depuración mediante el comando describe kubectl.

kubectl describe hyperparametertuningjob xgboost-mnist-hpo

Además de la información sobre el trabajo de ajuste, el SageMaker Operator for Kubernetes también muestra en la salida cuál es el mejor trabajo de entrenamiento encontrado por el trabajo de ajuste de hiperparámetros, de la siguiente manera: describe

Name: xgboost-mnist-hpo Namespace: default Labels: <none> Annotations: kubectl.kubernetes.io/last-applied-configuration: {"apiVersion":"sagemaker.aws.amazon.com/v1","kind":"HyperparameterTuningJob","metadata":{"annotations":{},"name":"xgboost-mnist-hpo","namespace":... API Version: sagemaker.aws.amazon.com/v1 Kind: HyperparameterTuningJob Metadata: Creation Timestamp: 2019-10-17T01:15:52Z Finalizers: sagemaker-operator-finalizer Generation: 2 Resource Version: 8167 Self Link: /apis/sagemaker.aws.amazon.com/v1/namespaces/default/hyperparametertuningjobs/xgboost-mnist-hpo UID: a92f5e3c-f07b-11e9-bf6c-06d6f303uidu Spec: Hyper Parameter Tuning Job Config: Hyper Parameter Tuning Job Objective: Metric Name: validation:error Type: Minimize Parameter Ranges: Integer Parameter Ranges: Max Value: 20 Min Value: 10 Name: num_round Scaling Type: Linear Resource Limits: Max Number Of Training Jobs: 10 Max Parallel Training Jobs: 10 Strategy: Bayesian Training Job Early Stopping Type: Off Hyper Parameter Tuning Job Name: xgboostha92f5e3cf07b11e9bf6c06d6 Region: us-east-2 Training Job Definition: Algorithm Specification: Training Image: 12345678910.dkr.ecr.us-east-2.amazonaws.com/xgboost:1 Training Input Mode: File Input Data Config: Channel Name: train Content Type: text/csv Data Source: s3DataSource: s3DataDistributionType: FullyReplicated s3DataType: S3Prefix s3Uri: https://s3-us-east-2.amazonaws.com/my-bucket/sagemaker/xgboost-mnist/train/ Channel Name: validation Content Type: text/csv Data Source: s3DataSource: s3DataDistributionType: FullyReplicated s3DataType: S3Prefix s3Uri: https://s3-us-east-2.amazonaws.com/my-bucket/sagemaker/xgboost-mnist/validation/ Output Data Config: s3OutputPath: https://s3-us-east-2.amazonaws.com/my-bucket/sagemaker/xgboost-mnist/xgboost Resource Config: Instance Count: 1 Instance Type: ml.m4.xlarge Volume Size In GB: 5 Role Arn: arn:aws:iam::123456789012:role/service-role/AmazonSageMaker-ExecutionRole Static Hyper Parameters: Name: base_score Value: 0.5 Name: booster Value: gbtree Name: csv_weights Value: 0 Name: dsplit Value: row Name: grow_policy Value: depthwise Name: lambda_bias Value: 0.0 Name: max_bin Value: 256 Name: max_leaves Value: 0 Name: normalize_type Value: tree Name: objective Value: reg:linear Name: one_drop Value: 0 Name: prob_buffer_row Value: 1.0 Name: process_type Value: default Name: rate_drop Value: 0.0 Name: refresh_leaf Value: 1 Name: sample_type Value: uniform Name: scale_pos_weight Value: 1.0 Name: silent Value: 0 Name: sketch_eps Value: 0.03 Name: skip_drop Value: 0.0 Name: tree_method Value: auto Name: tweedie_variance_power Value: 1.5 Stopping Condition: Max Runtime In Seconds: 86400 Status: Best Training Job: Creation Time: 2019-10-17T01:16:14Z Final Hyper Parameter Tuning Job Objective Metric: Metric Name: validation:error Value: Objective Status: Succeeded Training End Time: 2019-10-17T01:20:24Z Training Job Arn: arn:aws:sagemaker:us-east-2:123456789012:training-job/xgboostha92f5e3cf07b11e9bf6c06d6-009-4sample Training Job Name: xgboostha92f5e3cf07b11e9bf6c06d6-009-4c7a3059 Training Job Status: Completed Training Start Time: 2019-10-17T01:18:35Z Tuned Hyper Parameters: Name: num_round Value: 18 Hyper Parameter Tuning Job Status: Completed Last Check Time: 2019-10-17T01:21:01Z Sage Maker Hyper Parameter Tuning Job Name: xgboostha92f5e3cf07b11e9bf6c06d6 Training Job Status Counters: Completed: 10 In Progress: 0 Non Retryable Error: 0 Retryable Error: 0 Stopped: 0 Total Error: 0 Events: <none>

Vea los registros de HyperparameterTuningJobs

Los trabajos de ajuste de hiperparámetros no tienen registros, pero todos los trabajos de entrenamiento lanzados por ellos sí los tienen. Puede acceder a estos registros como si se tratara de un trabajo de entrenamiento normal. Para obtener más información, consulte Ver registros de TrainingJobs.

Eliminar un HyperparameterTuningJob

Utilice el siguiente comando para detener un trabajo de hiperparámetro en SageMaker.

kubectl delete hyperparametertuningjob xgboost-mnist-hpo

Este comando elimina el trabajo de ajuste de hiperparámetros y los trabajos de entrenamiento asociados del clúster de Kubernetes y los detiene. SageMaker Los trabajos que se han detenido o completado no incurren en ningún cargo por los recursos. SageMaker SageMaker no elimina los trabajos de ajuste de hiperparámetros. Los trabajos detenidos siguen mostrándose en la SageMaker consola.

El resultado debería tener el siguiente aspecto:

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

Nota: El comando delete tarda unos 2 minutos en limpiar los recursos SageMaker.

¿El BatchTransformJob operador

Los operadores de tareas de transformación por lotes concilian la especificación de la tarea de transformación SageMaker por lotes especificada iniciándola. SageMaker Puede obtener más información sobre el trabajo de transformación SageMaker por lotes en la documentación de la SageMaker CreateTransformJob API.

Crea un BatchTransformJob archivo YAML

  1. Descargue el archivo YAML de muestra para el trabajo de transformación por lotes con el siguiente comando:

    wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/xgboost-mnist-batchtransform.yaml
  2. Edite el archivo xgboost-mnist-batchtransform.yaml para cambiar los parámetros necesarios y sustituirlos por sus datos de entrada y por s3OutputPath los buckets de Amazon S3 a los que el rol de SageMaker ejecución tiene acceso de escritura. inputdataconfig

  3. Aplique el archivo YAML mediante el siguiente comando:

    kubectl apply -f xgboost-mnist-batchtransform.yaml

Cree una BatchTransformJob utilizando un gráfico de Helm

Puede usar gráficos de Helm para ejecutar trabajos de transformación por lotes.

Obtención del directorio de instaladores de Helm

Clone el GitHub repositorio para obtener la fuente mediante el siguiente comando:

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

Configuración del gráfico de Helm

Vaya a la carpeta amazon-sagemaker-operator-for-k8s/hack/charts/batch-transform-jobs/.

Edite el values.yaml archivo para sustituirlo por sus datos de entrada y OutputPath por sus buckets de S3 a los que la función de SageMaker ejecución tiene acceso de escritura. inputdataconfig

Cree un BatchTransformJob

  1. Utilice el siguiente comando para crear un trabajo de transformación por lotes:

    helm install . --generate-name

    El resultado debería tener el siguiente aspecto:

    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 comprobar que el gráfico de Helm se creó correctamente, ejecute el siguiente 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

    Este comando crea un recurso de BatchTransformJob Kubernetes. El operador lanza el trabajo de transformación real SageMaker y actualiza el recurso de BatchTransformJob Kubernetes para reflejar el estado del trabajo en. SageMaker Se le cobrará por los SageMaker recursos utilizados durante la duración de su trabajo. No incurrirá en ningún cargo una vez que su trabajo finalice o se detenga.

Nota: SageMaker no le permite actualizar un trabajo de transformación por lotes en ejecución. No puede editar ningún parámetro ni volver a aplicar el archivo de configuración. Debe cambiar el nombre de los metadatos o eliminar el trabajo existente y crear uno nuevo. Al igual que ocurre con los operadores de trabajos de entrenamiento existentes, como TFJob en Kubeflow, update no se admite.

Lista BatchTransformJobs

Utilice el siguiente comando para enumerar todos los trabajos creados con el operador de Kubernetes:

kubectl get batchtransformjob

El resultado debería tener el siguiente aspecto:

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

Un trabajo de transformación por lotes aún aparece en la lista después de que el trabajo se haya completado o haya producido un error. Puede eliminar un hyperparametertuningjob de la lista con los siguientes pasos en Eliminar un BatchTransformJob. Los trabajos que se hayan completado o interrumpido no incurren en ningún cargo por SageMaker los recursos.

Valores de estado de transformación por lotes

El campo STATUS puede tener uno de los siguientes valores:

  • Completed

  • InProgress

  • Failed

  • Stopped

  • Stopping

Estos estados provienen directamente de la documentación SageMaker oficial de la API.

Además del SageMaker estado oficial, es posible que lo STATUS sea. SynchronizingK8sJobWithSageMaker Esto significa que el operador aún no ha procesado el trabajo.

Describe un BatchTransformJob

Puede obtener los detalles de la depuración mediante el comando describe kubectl.

kubectl describe batchtransformjob xgboost-mnist-batch-transform

El resultado debería tener el siguiente aspecto:

Name: xgboost-mnist-batch-transform Namespace: default Labels: <none> Annotations: kubectl.kubernetes.io/last-applied-configuration: {"apiVersion":"sagemaker.aws.amazon.com/v1","kind":"BatchTransformJob","metadata":{"annotations":{},"name":"xgboost-mnist","namespace"... API Version: sagemaker.aws.amazon.com/v1 Kind: BatchTransformJob Metadata: Creation Timestamp: 2019-11-18T03:44:00Z Finalizers: sagemaker-operator-finalizer Generation: 2 Resource Version: 21990924 Self Link: /apis/sagemaker.aws.amazon.com/v1/namespaces/default/batchtransformjobs/xgboost-mnist UID: a88fb198-09b5-11ea-ac44-0aa8a9UIDNUM Spec: Model Name: TrainingJob-20190814SMJOb-IKEB Region: us-east-1 Transform Input: Content Type: text/csv Data Source: S 3 Data Source: S 3 Data Type: S3Prefix S 3 Uri: s3://my-bucket/mnist_kmeans_example/input Transform Job Name: xgboost-mnist-a88fb19809b511eaac440aa8a9SMJOB Transform Output: S 3 Output Path: s3://my-bucket/mnist_kmeans_example/output Transform Resources: Instance Count: 1 Instance Type: ml.m4.xlarge Status: Last Check Time: 2019-11-19T22:50:40Z Sage Maker Transform Job Name: xgboost-mnist-a88fb19809b511eaac440aaSMJOB Transform Job Status: Completed Events: <none>

Ver registros de BatchTransformJobs

Utilice el siguiente comando para ver los registros del trabajo de transformación por lotes xgboost-mnist:

kubectl smlogs batchtransformjob xgboost-mnist-batch-transform

Eliminar un BatchTransformJob

Utilice el siguiente comando para detener un trabajo de transformación por lotes en SageMaker.

kubectl delete batchTransformJob xgboost-mnist-batch-transform

El resultado debería tener el siguiente aspecto:

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

Este comando elimina el trabajo de transformación por lotes del clúster de Kubernetes y lo detiene. SageMaker Los trabajos que se han detenido o completado no incurren en ningún cargo por los recursos. SageMaker Eliminar tarda unos 2 minutos en limpiar los recursos. SageMaker

Nota: SageMaker no elimina los trabajos de transformación por lotes. Los trabajos detenidos siguen mostrándose en la SageMaker consola.

¿El HostingDeployment operador

HostingDeployment Los operadores admiten la creación y eliminación de un punto final, así como la actualización de un punto final existente, para realizar inferencias en tiempo real. El operador de despliegue de alojamiento concilia las especificaciones de trabajo de despliegue de alojamiento especificadas SageMaker mediante la creación de modelos, configuraciones de puntos finales y puntos finales en ellos. SageMaker Puedes obtener más información sobre la inferencia en la documentación de la API. SageMaker SageMaker CreateEndpoint

Configura un recurso HostingDeployment

Descargue el archivo YAML de muestra para el trabajo de implementación de alojamiento con el siguiente comando:

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

El archivo xgboost-mnist-hostingdeployment.yaml tiene los siguientes componentes que se pueden editar según sea necesario:

  • ProductionVariants. Una variante de producción es un conjunto de instancias que sirven a un único modelo. SageMaker equilibra la carga entre todas las variantes de producción según los pesos establecidos.

  • Models. Un modelo son los contenedores y el ARN del rol de ejecución necesarios para atender a un modelo. Requiere al menos un contenedor.

  • Containers. Un contenedor especifica el conjunto de datos y la imagen de servicio. Si utiliza su propio algoritmo personalizado en lugar de un algoritmo proporcionado por él SageMaker, el código de inferencia debe cumplir los requisitos. SageMaker Para obtener más información, consulte Uso de sus propios algoritmos con SageMaker.

Cree un HostingDeployment

Para crear un HostingDeployment, utilice kubectl para aplicar el archivo hosting.yaml con el siguiente comando:

kubectl apply -f hosting.yaml

SageMaker crea un punto final con la configuración especificada. Se le cobrarán gastos por SageMaker los recursos utilizados durante la vida útil de su terminal. No incurrirá en ningún cargo una vez que se elimine su punto de conexión.

El proceso de creación debería tardar aproximadamente 10 minutos.

Lista HostingDeployments

Para comprobar que HostingDeployment se ha creado, utilice el siguiente comando:

kubectl get hostingdeployments

El resultado debería tener el siguiente aspecto:

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

HostingDeployment valores de estado

El campo de estado puede tener uno de los siguientes valores:

  • SynchronizingK8sJobWithSageMaker: el operador se está preparando para crear el punto de conexión.

  • ReconcilingEndpoint: el operador está creando, actualizando o eliminando los recursos del punto de conexión. Si HostingDeployment permanece en este estado, utilícelo kubectl describe para ver el motivo en el Additional campo.

  • OutOfService: el punto de conexión no está disponible para recibir solicitudes entrantes.

  • Creating: CreateEndpointse está ejecutando.

  • Updating: UpdateEndpointo UpdateEndpointWeightsAndCapacitiesse está ejecutando.

  • SystemUpdating: el punto de conexión se encuentra en fase de mantenimiento y no se puede actualizar, eliminar ni reescalar hasta que se haya completado. Esta operación de mantenimiento no cambia ningún valor especificado por el cliente, como la configuración de la VPC, el AWS KMS cifrado, el modelo, el tipo de instancia o el recuento de instancias.

  • RollingBack: el punto de conexión no puede escalar verticalmente ni reducir verticalmente ni cambiar el peso de sus variantes y está en proceso de volver a su configuración anterior. Una vez finalizada la reversión, el punto de conexión vuelve a un estado InService. Este estado de transición solo se aplica a un punto final que tenga activado el escalado automático y que esté experimentando cambios en el peso o la capacidad de las variantes como parte de una UpdateEndpointWeightsAndCapacitiesllamada o cuando la UpdateEndpointWeightsAndCapacitiesoperación se convoque de forma explícita.

  • InService: el punto de conexión está disponible para procesar solicitudes entrantes.

  • Deleting: DeleteEndpointestá en ejecución.

  • Failed: no se pudo crear, actualizar ni reescalar el punto de conexión. Utilice DescribeEndpoint: FailureReason para obtener información sobre la falla. DeleteEndpointes la única operación que se puede realizar en un punto final defectuoso.

Describa un HostingDeployment

Puede obtener los detalles de la depuración mediante el comando describe kubectl.

kubectl describe hostingdeployment

El resultado debería tener el siguiente aspecto:

Name: host-xgboost Namespace: default Labels: <none> Annotations: kubectl.kubernetes.io/last-applied-configuration: {"apiVersion":"sagemaker.aws.amazon.com/v1","kind":"HostingDeployment","metadata":{"annotations":{},"name":"host-xgboost","namespace":"def..." API Version: sagemaker.aws.amazon.com/v1 Kind: HostingDeployment Metadata: Creation Timestamp: 2019-11-22T19:40:00Z Finalizers: sagemaker-operator-finalizer Generation: 1 Resource Version: 4258134 Self Link: /apis/sagemaker.aws.amazon.com/v1/namespaces/default/hostingdeployments/host-xgboost UID: def0e83e-0d5f-11ea-aa45-0a3507uiduid Spec: Containers: Container Hostname: xgboost Image: 123456789012.dkr.ecr.us-east-2.amazonaws.com/xgboost:latest Model Data URL: s3://my-bucket/inference/xgboost-mnist/model.tar.gz Models: Containers: xgboost Execution Role Arn: arn:aws:iam::123456789012:role/service-role/AmazonSageMaker-ExecutionRole Name: xgboost-model Primary Container: xgboost Production Variants: Initial Instance Count: 1 Instance Type: ml.c5.large Model Name: xgboost-model Variant Name: all-traffic Region: us-east-2 Status: Creation Time: 2019-11-22T19:40:04Z Endpoint Arn: arn:aws:sagemaker:us-east-2:123456789012:endpoint/host-xgboost-def0e83e0d5f11eaaaexample Endpoint Config Name: host-xgboost-1-def0e83e0d5f11e-e08f6c510d5f11eaaa450aexample Endpoint Name: host-xgboost-def0e83e0d5f11eaaa450a350733ba06 Endpoint Status: Creating Endpoint URL: https://runtime.sagemaker.us-east-2.amazonaws.com/endpoints/host-xgboost-def0e83e0d5f11eaaaexample/invocations Last Check Time: 2019-11-22T19:43:57Z Last Modified Time: 2019-11-22T19:40:04Z Model Names: Name: xgboost-model Value: xgboost-model-1-def0e83e0d5f11-df5cc9fd0d5f11eaaa450aexample Events: <none>

El campo de estado proporciona más información mediante los siguientes campos:

  • Additional: información adicional sobre el estado de la implementación de alojamiento. Este campo es opcional y solo se rellena en caso de error.

  • Creation Time: Cuándo se creó el punto final en SageMaker.

  • Endpoint ARN: El ARN del SageMaker punto final.

  • Endpoint Config Name: el SageMaker nombre de la configuración del punto final.

  • Endpoint Name: el SageMaker nombre del punto final.

  • Endpoint Status: el estado del punto de conexión.

  • Endpoint URL: La URL de HTTPS que se puede utilizar para acceder al punto de conexión. Para obtener más información, consulte Implementación de un modelo en los servicios de SageMaker alojamiento.

  • FailureReason: si un comando de creación, actualización o eliminación produce un error, la causa se muestra aquí.

  • Last Check Time: la última vez que el operador comprobó el estado del punto de conexión.

  • Last Modified Time: la última vez que se modificó el punto de conexión.

  • Model Names: un par clave-valor de nombres de HostingDeployment modelos y nombres de SageMaker modelos.

Invocación del punto de conexión

Una vez que el estado del punto final esInService, puede invocarlo de dos maneras: mediante la AWS CLI, que realiza la autenticación y firma las solicitudes de URL, o mediante un cliente HTTP como cURL. Si utilizas tu propio cliente, tendrás que realizar tú mismo la firma y autenticación de las URL de la AWS versión 4.

Para invocar el punto final mediante la AWS CLI, ejecute el siguiente comando. Asegúrese de reemplazar la región y el nombre del punto final por el nombre de la región y el nombre del SageMaker punto final. Esta información se puede obtener de la salida 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 ejemplo, si su región es us-east-2 y el nombre de la configuración de su punto de conexión es host-xgboost-f56b6b280d7511ea824b129926example, el siguiente comando invocará el punto de conexión:

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

Aquí, 4.95847082138 es la predicción del modelo para los datos simulados.

Actualice HostingDeployment

  1. Una vez HostingDeployment que tiene un estado deInService, se puede actualizar. Su puesta en servicio puede tardar unos 10 minutos. HostingDeployment Para verificar que el estado sea InService, utilice el siguiente comando:

    kubectl get hostingdeployments
  2. Se HostingDeployment puede actualizar antes de que aparezca el estadoInService. El operador espera a que llegue el SageMaker punto final InService antes de aplicar la actualización.

    Para aplicar una actualización, modifique el archivo hosting.yaml. Por ejemplo, cambie el campo initialInstanceCount de 1 a 2 de la siguiente manera:

    apiVersion: sagemaker.aws.amazon.com/v1 kind: HostingDeployment metadata: name: host-xgboost spec: region: us-east-2 productionVariants: - variantName: all-traffic modelName: xgboost-model initialInstanceCount: 2 instanceType: ml.c5.large models: - name: xgboost-model executionRoleArn: arn:aws:iam::123456789012:role/service-role/AmazonSageMaker-ExecutionRole primaryContainer: xgboost containers: - xgboost containers: - containerHostname: xgboost modelDataUrl: s3://my-bucket/inference/xgboost-mnist/model.tar.gz image: 123456789012.dkr.ecr.us-east-2.amazonaws.com/xgboost:latest
  3. Guarda el archivo y use kubectl para aplicar la actualización de la siguiente manera. Debería ver el cambio de estado de InService a ReconcilingEndpoint y, a continuación, a 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 implementa un nuevo conjunto de instancias con sus modelos, cambia el tráfico para usar las nuevas instancias y agota las instancias antiguas. En cuanto comience este proceso, el estado pasará a ser Updating. Una vez completada la actualización, su punto de conexión pasa a ser InService. Este proceso puede tardar aproximadamente 10 minutos.

Elimine el HostingDeployment

  1. Se utiliza kubectl para eliminar un HostingDeployment con el siguiente comando:

    kubectl delete hostingdeployments host-xgboost

    El resultado debería tener el siguiente aspecto:

    hostingdeployment.sagemaker.aws.amazon.com "host-xgboost" deleted
  2. Para comprobar que se haya eliminado la implementación de alojamiento, utilice el siguiente comando:

    kubectl get hostingdeployments No resources found.

Los puntos finales que se hayan eliminado no incurrirán en ningún cargo por SageMaker los recursos.

El operador ProcessingJob

ProcessingJob los operadores se utilizan para lanzar los trabajos SageMaker de procesamiento de Amazon. Para obtener más información sobre el SageMaker procesamiento de trabajos, consulte CreateProcessingJob.

Cree un ProcessingJob archivo YAML

Sigue estos pasos para crear un trabajo de SageMaker procesamiento de Amazon mediante un archivo YAML:

  1. Descargue el script de preprocesamiento kmeans_preprocessing.py.

    wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/kmeans_preprocessing.py
  2. En uno de sus buckets de Amazon Simple Storage Service (Amazon S3), cree una carpeta mnist_kmeans_example/processing_code y cargue el script en la carpeta.

  3. Descargue el archivo kmeans-mnist-processingjob.yaml.

    wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/kmeans-mnist-processingjob.yaml
  4. Edite el archivo YAML para especificar su sagemaker-execution-role y reemplace todas las instancias de my-bucket por su bucket de S3.

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

    sagemaker-execution-roleDeben tener permisos para SageMaker poder acceder a su bucket de S3 CloudWatch, Amazon y otros servicios en su nombre. Para obtener más información sobre la creación de una función de ejecución, consulte SageMakerFunciones.

  5. Aplique el archivo YAML mediante uno de los siguientes comandos:

    Para una instalación basada en el clúster:

    kubectl apply -f kmeans-mnist-processingjob.yaml

    Para una instalación basada en el espacio de nombres:

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

Lista ProcessingJobs

Utilice uno de los siguientes comandos para enumerar todos los trabajos creados con el ProcessingJob operador. SAGEMAKER-JOB-NAME proviene de la metadata sección del archivo YAML.

Para una instalación basada en el clúster:

kubectl get ProcessingJob kmeans-mnist-processing

Para una instalación basada en el espacio de nombres:

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

El resultado debería tener un aspecto similar al siguiente:

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

La salida muestra todos los trabajos, independientemente de su estado. Para eliminar un trabajo de la lista, consulte Delete a Processing Job.

ProcessingJob Estado
  • SynchronizingK8sJobWithSageMaker: el trabajo se envía primero al clúster. El operador ha recibido la solicitud y se está preparando para crear el trabajo de procesamiento.

  • Reconciling: el operador está inicializando o recuperándose de errores transitorios, entre otros. Si el trabajo de procesamiento permanece en este estado, utilice el comando kubectl describe para ver el motivo en el campo Additional.

  • InProgress | Completed | Failed | Stopping | Stopped— Estado del trabajo SageMaker de procesamiento. Para obtener más información, consulte DescribeProcessingJob.

  • Error: el operador no puede recuperarse mediante la conciliación.

Los trabajos que se completen, se detengan o fallen no incurren en cargos adicionales por SageMaker los recursos.

Describa un ProcessingJob

Utilice uno de los siguientes comandos para obtener más detalles sobre un trabajo de procesamiento. Estos comandos se utilizan normalmente para depurar un problema o comprobar los parámetros de un trabajo de procesamiento.

Para una instalación basada en el clúster:

kubectl describe processingjob kmeans-mnist-processing

Para una instalación basada en el espacio de nombres:

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

La salida del trabajo de procesamiento debería tener un aspecto similar al siguiente.

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

Eliminar un ProcessingJob

Al eliminar un trabajo de procesamiento, el trabajo de SageMaker procesamiento se elimina de Kubernetes, pero el trabajo no se elimina de. SageMaker Si el estado del trabajo es, InProgress el trabajo SageMaker se detiene. Los trabajos de procesamiento que están parados no generan ningún cargo por SageMaker los recursos. Utilice uno de los siguientes comandos para eliminar un trabajo de procesamiento.

Para una instalación basada en el clúster:

kubectl delete processingjob kmeans-mnist-processing

Para una instalación basada en el espacio de nombres:

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

La salida del trabajo de procesamiento debería tener un aspecto similar al siguiente.

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

nota

SageMaker no elimina el trabajo de procesamiento. Los trabajos detenidos siguen mostrándose en la SageMaker consola. El delete comando tarda unos minutos en limpiar los recursos SageMaker.

HostingAutoscalingPolicy Operador (HAP)

El operador HostingAutoscalingPolicy (HAP) toma como entrada una lista de identificadores de recursos y aplica la misma política a cada uno de ellos. Cada ID de recurso es una combinación de un nombre de punto de conexión y un nombre de variante. El operador HAP realiza dos pasos: registra los ID de los recursos y, a continuación, aplica la política de escalado a cada ID de recurso. Delete deshace ambas acciones. Puede aplicar el HAP a un SageMaker punto final existente o puede crear un nuevo SageMaker punto final con el HostingDeployment operador. Puede obtener más información sobre el SageMaker escalado automático en la documentación de la política de escalado automático de la aplicación.

nota

En sus comandos kubectl, puede utilizar la forma abreviada,hap, en lugar de hostingautoscalingpolicy.

Cree una HostingAutoscalingPolicy utilizando un archivo YAML

Utilice un archivo YAML para crear un HostingAutoscalingPolicy (HAP) que aplique una métrica predefinida o personalizada a uno o varios puntos finales. SageMaker

Amazon SageMaker requiere valores específicos para aplicar el escalado automático a tu variante. Si estos valores no se indican en la especificación de YAML, el operador HAP aplica los siguientes valores predeterminados.

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

Utilice los siguientes ejemplos para crear una HAP que aplique una métrica predefinida o personalizada a uno o varios puntos de conexión.

Ejemplo 1: Aplicar una métrica predefinida a una única variante del punto de conexión

  1. Descargue el archivo YAML de muestra para la métrica predefinida con el siguiente comando:

    wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/hap-predefined-metric.yaml
  2. Edite el archivo YAML para especificar su endpointName, variantName y Region.

  3. Use uno de los siguientes comandos para aplicar una métrica predefinida a un único ID de recurso (combinación de nombre de punto de conexión y nombre de variante).

    Para una instalación basada en el clúster:

    kubectl apply -f hap-predefined-metric.yaml

    Para una instalación basada en el espacio de nombres:

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

Ejemplo 2: Aplicar una métrica personalizada a una única variante del punto de conexión

  1. Descargue el archivo YAML de muestra para la métrica personalizada con el siguiente comando:

    wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/hap-custom-metric.yaml
  2. Edite el archivo YAML para especificar su endpointName, variantName y Region.

  3. Use uno de los siguientes comandos para aplicar una métrica personalizada a un único ID de recurso (combinación de nombre de punto de conexión y nombre de variante) en lugar de la SageMakerVariantInvocationsPerInstance recomendada.

    nota

    Amazon SageMaker no comprueba la validez de tus especificaciones de YAML.

    Para una instalación basada en el clúster:

    kubectl apply -f hap-custom-metric.yaml

    Para una instalación basada en el espacio de nombres:

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

Ejemplo 3: Aplicar una política de escalado a varios puntos de conexión y variantes

Puede utilizar el operador HAP para aplicar la misma política de escalado a varios ID de recursos. Se crea una solicitud de scaling_policy independiente para cada ID de recurso (combinación de nombre de punto de conexión y nombre de variante).

  1. Descargue el archivo YAML de muestra para la métrica predefinida con el siguiente comando:

    wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/hap-predefined-metric.yaml
  2. Edita el archivo YAML para especificar su Region y varios valores de endpointName y variantName.

  3. Use uno de los siguientes comandos para aplicar una métrica predefinida a varios ID de recursos (combinaciones de nombre de punto de conexión y nombre de variante).

    Para una instalación basada en el clúster:

    kubectl apply -f hap-predefined-metric.yaml

    Para una instalación basada en el espacio de nombres:

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

Consideraciones HostingAutoscalingPolicies para varios puntos finales y variantes

Las siguientes consideraciones se aplican cuando se utilizan varios ID de recursos:

  • Si aplica una única política a varios ID de recursos, se crea un PolicyARN por ID de recurso. Cinco puntos de conexión tienen cinco PolicyARN. Al ejecutar el comando describe en la política, las respuestas se muestran como un solo trabajo e incluyen un solo estado de trabajo.

  • Si aplica una métrica personalizada a varios ID de recursos, se utiliza la misma dimensión o valor para todos los valores de ID de recurso (variante). Por ejemplo, si aplica una métrica de cliente a las instancias 1 a 5 y la dimensión de la variante de punto de conexión se asigna a la variante 1, cuando la variante 1 supera las métricas, todos los puntos de conexión se escalan verticalmente o reducen verticalmente.

  • El operador HAP admite la actualización de la lista de los ID de recursos. Si modifica, agrega o elimina los ID de recursos de la especificación, la política de escalado automático se elimina de la lista anterior de variantes y se aplica a las combinaciones de ID de recurso recién especificadas. Utilice el comando describe para enumerar los ID de recursos a los que se aplica la política actualmente.

Lista HostingAutoscalingPolicies

Utilice uno de los siguientes comandos para enumerar todos los HostingAutoscalingPolicies (HAP) creados con el operador HAP.

Para una instalación basada en el clúster:

kubectl get hap

Para una instalación basada en el espacio de nombres:

kubectl get hap -n <NAMESPACE>

El resultado debería tener un aspecto similar al siguiente:

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

Utilice el siguiente comando para comprobar el estado de su HostingAutoscalingPolicy (HAP).

kubectl get hap <job-name>

Se devuelve uno de los siguientes valores:

  • Reconciling: algunos tipos de errores muestran el estado como Reconciling en lugar de Error. Algunos ejemplos son errores del servidor y puntos de conexión en el estado Creating o Updating. Para obtener más detalles, consulte el campo Additional de los registros de estado o de los registros del operador.

  • Created

  • Error

Para ver el punto de conexión de escalado automático al que aplicó la política
  1. Abre la SageMaker consola de Amazon en https://console.aws.amazon.com/sagemaker/.

  2. En el panel lateral izquierdo, amplíe Inferencia.

  3. Elija Puntos de conexión.

  4. Seleccione el nombre del punto de conexión de interés.

  5. Desplácese hasta la sección Configuración del tiempo de ejecución del punto de conexión.

Describa un HostingAutoscalingPolicy

Use el siguiente comando para obtener más detalles sobre un HostingAutoscalingPolicy (HAP). Estos comandos se utilizan normalmente para solucionar un problema o comprobar los ID de recursos (combinaciones de nombres de punto de conexión y nombres de variantes) de una HAP.

kubectl describe hap <job-name>

Actualice un HostingAutoscalingPolicy

El operador HostingAutoscalingPolicy (HAP) admite las actualizaciones. Puede editar su especificación de YAML para cambiar los valores y luego volver a aplicar la política. El operador HAP elimina la política existente y aplica la nueva política.

Eliminar un HostingAutoscalingPolicy

Utilice uno de los siguientes comandos para eliminar una política HostingAutoscalingPolicy (HAP).

Para una instalación basada en el clúster:

kubectl delete hap hap-predefined

Para una instalación basada en el espacio de nombres:

kubectl delete hap hap-predefined -n <NAMESPACE>

Este comando elimina la política de escalado y anula el registro del objetivo de escalado en Kubernetes. Este comando devuelve la siguiente salida:

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

Actualice o elimine un punto final con un HostingAutoscalingPolicy

Para actualizar un punto final que tiene un HostingAutoscalingPolicy (HAP), utilice el kubectl delete comando para eliminar el HAP, actualizar el punto final y, a continuación, volver a aplicar el HAP.

Para eliminar un punto de conexión que tiene una HAP, utilice el comando kubectl delete para eliminar la HAP antes de eliminar el punto de conexión.