Utilice Amazon SageMaker AI Jobs - Amazon SageMaker AI

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.

Utilice Amazon SageMaker AI Jobs

Esta sección se basa en la versión original de SageMaker AI 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 AI Operators para Kubernetes

Para ejecutar un trabajo de Amazon SageMaker AI 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 puestos de formación concilian las especificaciones de su puesto de formación especificadas con la SageMaker IA y las lanzan automáticamente en SageMaker IA. Puedes obtener más información sobre los trabajos de SageMaker formación en la documentación de la CreateTrainingJob API de SageMaker IA.

Crea una TrainingJob con 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 ejecución de SageMaker IA tiene acceso de escritura. roleArnDeben tener permisos para que la SageMaker IA pueda 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 IA ExecutionRole, consulte Funciones de SageMaker IA. 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 que la SageMaker IA pueda 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 IA ExecutionRole, consulte Funciones de SageMaker IA.

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 lanza el trabajo de formación propiamente dicho en SageMaker IA y actualiza el recurso de TrainingJob Kubernetes para reflejar el estado del trabajo en IA. SageMaker Se te cobrará por los recursos de SageMaker IA que utilices durante tu trabajo. No incurrirá en ningún cargo una vez que su trabajo finalice o se detenga.

Nota: La SageMaker IA no te permite actualizar un trabajo de entrenamiento para correr. 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 TFJob en Kubeflow, no se admite el trabajo de formación de operadores actuales. update

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 conllevan ningún cargo por los recursos de SageMaker IA.

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 oficial de la API de SageMaker IA.

Además del estado oficial de SageMaker IA, 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 oficial de la API de la SageMaker IA. Contienen información más detallada sobre el estado del trabajo.

Describe 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/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>

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 AI:

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 en la SageMaker IA, se detiene. No se le cobrará ningún cargo por los recursos de SageMaker IA una vez que su trabajo se detenga o finalice.

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

¿El HyperParameterTuningJob operador

Los operadores de tareas de ajuste de hiperparámetros concilian la especificación de la tarea de ajuste de hiperparámetros especificada con la SageMaker IA lanzándola en IA. SageMaker Puedes obtener más información sobre los trabajos de ajuste de hiperparámetros de SageMaker IA en la documentación de la API de IA. 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 real de optimización de hiperparámetros en la SageMaker IA y actualiza el recurso de HyperParameterTuningJob Kubernetes para reflejar el estado del trabajo en la IA. SageMaker Se te cobrará por los recursos de SageMaker IA que utilices durante tu trabajo. No incurrirá en ningún cargo una vez que su trabajo finalice o se detenga.

Nota: La SageMaker IA 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 conllevan ningún cargo por los recursos de SageMaker IA.

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 oficial de la API de SageMaker IA.

Además del estado oficial de SageMaker IA, 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, consulta 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 operador de SageMaker IA para Kubernetes también muestra en el resultado 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/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>

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ámetros en la SageMaker IA.

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 en la IA. SageMaker Los trabajos que se hayan interrumpido o completado no conllevan ningún cargo por los recursos de IA. SageMaker SageMaker La IA no elimina los trabajos de ajuste de hiperparámetros. Los trabajos interrumpidos siguen apareciendo en la consola de SageMaker IA.

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 de la SageMaker IA.

¿El BatchTransformJob operador

Los operadores de trabajos de transformación por lotes concilian la especificación de su trabajo de transformación por lotes especificada con la SageMaker IA lanzándola en SageMaker IA. Puedes obtener más información sobre el trabajo de transformación por lotes de SageMaker IA en la documentación de la CreateTransformJob API de SageMaker IA.

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 s3OutputPath por los buckets de Amazon S3 a los que la función de ejecución de SageMaker IA 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 ejecución de la SageMaker IA tenga acceso de escritura. inputdataconfig

Crea 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 propiamente dicho en la SageMaker IA y actualiza el recurso de BatchTransformJob Kubernetes para reflejar el estado del trabajo en la IA. SageMaker Se te cobrará por los recursos de SageMaker IA que utilices durante tu trabajo. No incurrirá en ningún cargo una vez que su trabajo finalice o se detenga.

Nota: La SageMaker IA no 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 conllevan ningún cargo por los recursos de SageMaker IA.

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 oficial de la API de SageMaker IA.

Además del estado oficial de SageMaker IA, 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://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>

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

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 en la IA. SageMaker Los trabajos que se hayan interrumpido o completado no conllevan ningún cargo por los recursos de IA. SageMaker Eliminar tarda unos 2 minutos en limpiar los recursos de la SageMaker IA.

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

¿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 con la SageMaker IA mediante la creación de modelos, configuraciones de puntos finales y puntos de enlace en la IA. SageMaker Puedes obtener más información sobre la inferencia de IA en la documentación de la API de SageMaker IA. 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 La IA equilibra la carga entre todas las variantes de producción de acuerdo con 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 la SageMaker IA, el código de inferencia debe cumplir SageMaker los requisitos de la IA. Para obtener más información, consulte Uso de sus propios algoritmos con SageMaker IA.

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 La IA crea un punto final con la configuración especificada. Se le cobrará por los recursos de SageMaker IA 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://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>

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: Cuando se creó el punto final en la SageMaker IA.

  • Endpoint ARN: El ARN del punto final de la SageMaker IA.

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

  • Endpoint Name: el nombre de SageMaker IA 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 alojamiento de SageMaker IA.

  • 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 de nombres de modelos con valores clave y nombres de HostingDeployment modelos de SageMaker IA.

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 punto final de la SageMaker IA del 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.

¡Actualiza 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 punto final de la SageMaker IA 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://amzn-s3-demo-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 La IA 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 los recursos de SageMaker IA.

¿El operador ProcessingJob

ProcessingJob los operadores se utilizan para lanzar los trabajos SageMaker de procesamiento de Amazon. Para obtener más información sobre los trabajos de SageMaker procesamiento, 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 amzn-s3-demo-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://<amzn-s3-demo-bucket>/mnist_kmeans_example/output/ ... processingInputs: ... s3Input: s3Uri: s3://<amzn-s3-demo-bucket>/mnist_kmeans_example/processing_code/kmeans_preprocessing.py

    sagemaker-execution-roleDeben tener permisos para que la SageMaker IA pueda 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 un rol de ejecución, consulte Funciones de SageMaker IA.

  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 los recursos de SageMaker IA.

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

Cuando eliminas un trabajo de procesamiento, el trabajo de SageMaker procesamiento se elimina de Kubernetes, pero no de AI. SageMaker Si el estado del trabajo en SageMaker IA es, InProgress el trabajo se detiene. Los trabajos de procesamiento que están parados no incurre en ningún cargo por los recursos de SageMaker IA. 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 La IA no elimina el trabajo de procesamiento. Los trabajos interrumpidos siguen mostrándose en la consola de SageMaker IA. El delete comando tarda unos minutos en limpiar los recursos de la SageMaker IA.

HostingAutoscalingPolicy Operador (HAP)

El operador HostingAutoscalingPolicy (HAP) toma una lista de recursos IDs como entrada 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 el recurso IDs y, a continuación, aplica la política de escalado a cada ID de recurso. Deletedeshace ambas acciones. Puede aplicar el HAP a un punto final de SageMaker IA existente o puede crear un nuevo punto final de SageMaker IA con el HostingDeployment operador. Puedes obtener más información sobre el escalado automático de la SageMaker IA en la documentación de la política de escalado automático de aplicaciones.

nota

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

Cree un archivo HostingAutoscalingPolicy con un archivo YAML

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

Amazon SageMaker AI 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 AI no comprueba la validez de las 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 recursos. IDs 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. Utilice uno de los siguientes comandos para aplicar una métrica predefinida a varios recursos IDs (combinaciones de nombre de terminal 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

Cuando se utilizan varios recursos IDs, se tienen en cuenta las siguientes consideraciones:

  • Si aplica una sola política en varios recursos IDs, se crea una PolicyArn por ID de recurso. Cinco puntos finales tienen cinco políticas. ARNs 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 recursos IDs, se utiliza la misma dimensión o valor para todos los valores del identificador del 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 recursos IDs. Si modifica, agrega o elimina un recurso IDs 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 identificadores de recursos recién especificadas. Utilice el describecomando para enumerar el recurso IDs al que se aplica la política actualmente.

Lista HostingAutoscalingPolicies

Utilice uno de los siguientes comandos para enumerar todos los HostingAutoscalingPolicies (HAPs) 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 consola Amazon SageMaker AI 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 el recurso IDs (combinaciones de nombre de terminal y nombre de variante) de un 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.