Uso de trabajos de Amazon SageMaker AI
Esta sección se basa en la versión original de los SageMaker AI Operators for Kubernetes
importante
Se va a detener el desarrollo y el soporte técnico de la versión original de los operadores de SageMaker para Kubernetes
Si actualmente utiliza la versión v1.2.2 o una versión anterior de los operadores de SageMaker para Kubernetes
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 los operadores de SageMaker para Kubernetes, consulte Anuncio de la finalización del soporte de la versión original de los operadores de SageMaker AI para Kubernetes.
Para ejecutar un trabajo de Amazon SageMaker AI con los operadores para Kubernetes, puede aplicar un archivo YAML o utilizar los gráficos de Helm suministrados.
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.
Contenido
El operador TrainingJob
Los operadores de trabajos de entrenamiento concilian las especificaciones del trabajo de entrenamiento especificado con SageMaker AI lanzándolos automáticamente en SageMaker AI. Puede obtener más información sobre los trabajos de entrenamiento de SageMaker AI en la documentación de la API CreateTrainingJob de SageMaker AI.
Temas
Creación de un TrainingJob mediante un archivo YAML
-
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 -
Edite el archivo
xgboost-mnist-trainingjob.yamlpara sustituir el parámetroroleArnpor su<sagemaker-execution-role>youtputPathpor el bucket de Amazon S3 al que el rol de ejecución de SageMaker AI tiene acceso de escritura. ElroleArndebe tener permisos para que SageMaker AI pueda acceder a Amazon S3, Amazon CloudWatch y otros servicios en su nombre. Para obtener más información sobre la creación de un ExecutionRole de SageMaker AI, consulte Roles de SageMaker AI. Aplique el archivo YAML mediante el siguiente comando:kubectl apply -f xgboost-mnist-trainingjob.yaml
Creación de un TrainingJob mediante un gráfico de Helm
Puede usar gráficos de Helm para ejecutar TrainingJobs.
-
Clone el repositorio de GitHub para obtener el origen mediante el siguiente comando:
git clone https://github.com/aws/amazon-sagemaker-operator-for-k8s.git -
Vaya a la carpeta
amazon-sagemaker-operator-for-k8s/hack/charts/training-jobs/y edite el archivovalues.yamlpara reemplazar valores comorolearnyoutputpathpor valores que correspondan a su cuenta. El RoleARN debe tener permisos para que SageMaker AI pueda acceder a Amazon S3, Amazon CloudWatch y otros servicios en su nombre. Para obtener más información sobre la creación de un ExecutionRole de SageMaker AI, consulte Roles de SageMaker AI.
Creación del 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 entrenamiento real en SageMaker AI y actualiza el recurso TrainingJob de Kubernetes para que refleje el estado del trabajo en SageMaker AI. Se le cobrará por los recursos de SageMaker AI que utilice durante el trabajo. No incurrirá en ningún cargo una vez que su trabajo finalice o se detenga.
Nota: SageMaker AI no permite actualizar un trabajo de entrenamiento en ejecución. 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.
Enumeración de 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 Eliminación de TrainingJobs. Los trabajos que se hayan completado o interrumpido no incurrirán en ningún cargo por parte de los recursos de SageMaker AI.
Valores de estado de TrainingJob
El campo STATUS puede tener uno de los siguientes valores:
-
Completed -
InProgress -
Failed -
Stopped -
Stopping
Estos estados provienen directamente de la documentación de la API oficial de SageMaker AI.
Además del estado oficial de SageMaker AI, es posible que el STATUS sea SynchronizingK8sJobWithSageMaker. Esto significa que el operador aún no ha procesado el trabajo.
Valores de estado secundarios
Estos estados secundarios provienen directamente de la documentación de la API oficial de SageMaker AI. Contienen información más detallada sobre el estado del trabajo.
Descripción de 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 los 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
Eliminación de TrainingJobs
Utilice el siguiente comando para detener un trabajo de entrenamiento en Amazon SageMaker AI:
kubectl delete trainingjob xgboost-mnist-from-for-s3
Este comando elimina el trabajo de entrenamiento de SageMaker 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 SageMaker AI, se detiene. No incurrirá en ningún cargo de recursos de SageMaker AI cuando finalice o detenga el trabajo.
Nota: SageMaker AI no elimina los trabajos de entrenamiento. Los trabajos detenidos siguen apareciendo en la consola de SageMaker AI. El comando delete tarda unos 2 minutos en limpiar los recursos de SageMaker AI.
El operador HyperparameterTuningJob
Los operadores del trabajo de ajuste de hiperparámetros concilian las especificaciones del trabajo de ajuste de hiperparámetros especificado con SageMaker AI lanzándolo en SageMaker AI. Puede obtener más información sobre los trabajos de ajuste de hiperparámetros de SageMaker AI en la documentación de la API CreateHyperParameterTuningJob de SageMaker AI.
Temas
Creación de un HyperparameterTuningJob mediante un archivo YAML
-
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 -
Edite el archivo
xgboost-mnist-hpo.yamlpara reemplazar el parámetroroleArnpor susagemaker-execution-role. Para que el trabajo de ajuste del hiperparámetro se realice correctamente, también debe cambiar los valoress3InputPathys3OutputPathpor los que correspondan a su cuenta. Aplique las actualizaciones del archivo YAML mediante el siguiente comando:kubectl apply -f xgboost-mnist-hpo.yaml
Creación de un HyperparameterTuningJob mediante un gráfico de Helm
Puede usar gráficos de Helm para ejecutar trabajos de ajuste de hiperparámetros.
-
Clone el repositorio de GitHub para obtener el origen mediante el siguiente comando:
git clone https://github.com/aws/amazon-sagemaker-operator-for-k8s.git -
Vaya a la carpeta
amazon-sagemaker-operator-for-k8s/hack/charts/hyperparameter-tuning-jobs/. -
Edite el archivo
values.yamlpara reemplazar el parámetroroleArnpor susagemaker-execution-role. Para que el trabajo de ajuste del hiperparámetro se realice correctamente, también debe cambiar los valoress3InputPathys3OutputPathpor los que correspondan a su cuenta.
Creación del 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 lanza el trabajo de optimización de hiperparámetros propiamente dicho en SageMaker AI y actualiza el recurso HyperParameterTuningJob de Kubernetes para que refleje el estado del trabajo en SageMaker AI. Se le cobrará por los recursos de SageMaker AI que utilice durante el trabajo. No incurrirá en ningún cargo una vez que su trabajo finalice o se detenga.
Nota: SageMaker AI 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.
Enumeración de 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 Eliminación de un HyperparameterTuningJob. Los trabajos que se hayan completado o interrumpido no incurrirán en ningún cargo por parte de los recursos de SageMaker AI.
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 de la API oficial de SageMaker AI.
Además del estado oficial de SageMaker AI, es posible que el 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 TrainingJobStatusCounters en la documentación de la API de SageMaker.
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>
TrainingJobs generados
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
Descripción de 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 AI para Kubernetes también muestra el mejor trabajo de entrenamiento encontrado por el trabajo de ajuste de hiperparámetros en la salida describe, de la siguiente manera:
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>
Ver 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 los registros de TrainingJobs.
Eliminación de un HyperparameterTuningJob
Utilice el siguiente comando para detener un trabajo de hiperparámetros en SageMaker AI.
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 SageMaker AI. Los trabajos que se hayan detenido o completado no incurrirán en ningún cargo por parte de los recursos de SageMaker AI. SageMaker AI no elimina los trabajos de ajuste de hiperparámetros. Los trabajos detenidos siguen apareciendo en la consola de SageMaker AI.
El resultado debería tener el siguiente aspecto:
hyperparametertuningjob.sagemaker.aws.amazon.com "xgboost-mnist-hpo" deleted
Nota: El comando de eliminación tarda unos 2 minutos en limpiar los recursos de SageMaker AI.
El operador BatchTransformJob
Los operadores de trabajos de transformación por lotes concilian las especificaciones del trabajo de transformación por lotes indicado con SageMaker AI lanzándolo automáticamente en SageMaker AI. Puede obtener más información sobre los trabajos de transformación por lotes de SageMaker AI en la documentación de la API CreateTransformJob de SageMaker AI.
Temas
Creación de un BatchTransformJob mediante un archivo YAML
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-
Edite el archivo
xgboost-mnist-batchtransform.yamlpara cambiar los parámetros necesarios y sustituir lainputdataconfigpor sus datos de entrada ys3OutputPathpor los buckets de Amazon S3 a los que el rol de ejecución de SageMaker AI tiene acceso de escritura. -
Aplique el archivo YAML mediante el siguiente comando:
kubectl apply -f xgboost-mnist-batchtransform.yaml
Creación de un BatchTransformJob mediante 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 repositorio de GitHub para obtener el origen 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 archivo values.yaml para sustituir la inputdataconfig por sus datos de entrada y outputPath por los buckets de S3 a los que el rol de ejecución de SageMaker AI tiene acceso de escritura.
Creación de un BatchTransformJob
-
Utilice el siguiente comando para crear un trabajo de transformación por lotes:
helm install . --generate-nameEl 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. -
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.0Este comando crea un recurso de
BatchTransformJobKubernetes. El operador lanza el trabajo de transformación real en SageMaker AI y actualiza el recursoBatchTransformJobde Kubernetes para que refleje el estado del trabajo en SageMaker AI. Se le cobrará por los recursos de SageMaker AI que utilice durante el trabajo. No incurrirá en ningún cargo una vez que su trabajo finalice o se detenga.
Nota: SageMaker AI 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.
Enumeración de 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 Eliminación de un BatchTransformJob. Los trabajos que se hayan completado o interrumpido no incurrirán en ningún cargo por parte de los recursos de SageMaker AI.
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 de la API oficial de SageMaker AI.
Además del estado oficial de SageMaker AI, es posible que el STATUS sea SynchronizingK8sJobWithSageMaker. Esto significa que el operador aún no ha procesado el trabajo.
Descripción de 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>
Vea los 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
Eliminación de un BatchTransformJob
Utilice el siguiente comando para detener un trabajo de transformación por lotes en SageMaker AI.
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 SageMaker AI. Los trabajos que se hayan detenido o completado no incurrirán en ningún cargo por parte de los recursos de SageMaker AI. La eliminación tarda unos 2 minutos en limpiar los recursos de SageMaker AI.
Nota: SageMaker AI no elimina los trabajos de transformación por lotes. Los trabajos detenidos siguen apareciendo en la consola de SageMaker AI.
El operador HostingDeployment
Los operadores HostingDeployment admiten la creación y eliminación de un punto de conexión, así como la actualización de un punto de conexión existente, para realizar inferencias en tiempo real. El operador de implementación de alojamiento concilia las especificaciones del trabajo de implementación de alojamiento especificado con SageMaker AI mediante la creación de modelos, configuraciones de puntos de conexión y puntos de conexión en SageMaker AI. Puede obtener más información sobre la inferencia de SageMaker AI en la documentación de la API CreateEndpoint de SageMaker AI.
Temas
Configuración de un recurso de 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 atienden a un único modelo. SageMaker AI 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 que proporcione SageMaker AI, el código de inferencia deberá cumplir los requisitos de SageMaker AI. Para obtener más información, consulte Using Your Own Algorithms with Amazon SageMaker AI.
Creación de un HostingDeployment
Para crear un HostingDeployment, utilice kubectl para aplicar el archivo hosting.yaml con el siguiente comando:
kubectl apply -f hosting.yaml
SageMaker AI crea un punto de conexión con la configuración especificada. Se le cobrará por los recursos de SageMaker AI que utilice durante la vida útil del punto de conexión. 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.
Enumeración de HostingDeployments
Para verificar que HostingDeployment se creó, 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
Valores de estado de HostingDeployment
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 el HostingDeployment permanece en este estado, utilicekubectl describepara ver el motivo en el campoAdditional. -
OutOfService: el punto de conexión no está disponible para recibir solicitudes entrantes. -
Creating: se está ejecutando CreateEndpoint. -
Updating: se están ejecutando UpdateEndpoint o UpdateEndpointWeightsAndCapacities. -
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 cifrado de AWS KMS, 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 estadoInService. Este estado de transición solo se aplica a un punto de conexión 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 llamada UpdateEndpointWeightsAndCapacities o cuando se llama explícitamente a la operación UpdateEndpointWeightsAndCapacities. -
InService: el punto de conexión está disponible para procesar solicitudes entrantes. -
Deleting: se está ejecutando DeleteEndpoint. -
Failed: no se pudo crear, actualizar ni reescalar el punto de conexión. Utilice DescribeEndpoint:FailureReason para obtener información sobre el error. DeleteEndpoint es la única operación que se puede realizar en un punto de conexión con errores.
Descripción de 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: momento en que se creó el punto de conexión en SageMaker AI. -
Endpoint ARN: ARN del punto de conexión de SageMaker AI. -
Endpoint Config Name: nombre de la configuración del punto de conexión de SageMaker AI. -
Endpoint Name: nombre del punto de conexión de SageMaker AI. -
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 Deploy a Model on SageMaker AI Hosting Services. -
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 del modelo de HostingDeployment y nombres del modelo de SageMaker AI.
Invocación del punto de conexión
Una vez que el estado del punto de conexión es InService, 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 utiliza su propio cliente, tendrá que realizar usted mismo la firma y autenticación de la URL de AWS v4.
Para invocar el punto de conexión mediante la AWS CLI, ejecute el siguiente comando. Asegúrese de sustituir la región y el nombre del punto de conexión por la región de su punto de conexión y el nombre del punto de conexión de SageMaker AI. 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.
Actualización de HostingDeployment
-
Una vez que un HostingDeployment tiene el estado
InService, se puede actualizar. HostingDeployment puede tardar unos 10 minutos en estar en servicio. Para verificar que el estado seaInService, utilice el siguiente comando:kubectl get hostingdeployments -
HostingDeployment se puede actualizar antes de que se muestre el estado
InService. El operador espera a que el punto de conexión de SageMaker AI seaInServiceantes de aplicar la actualización.Para aplicar una actualización, modifique el archivo
hosting.yaml. Por ejemplo, cambie el campoinitialInstanceCountde 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 -
Guarda el archivo y use
kubectlpara aplicar la actualización de la siguiente manera. Debería ver el cambio de estado deInServiceaReconcilingEndpointy, a continuación, aUpdating.$ 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 AI implementa un nuevo conjunto de instancias con sus modelos, cambia el tráfico para que use las nuevas instancias y agota las 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.
Eliminación del HostingDeployment
Use
kubectlpara eliminar un HostingDeployment con el siguiente comando:kubectl delete hostingdeployments host-xgboostEl resultado debería tener el siguiente aspecto:
hostingdeployment.sagemaker.aws.amazon.com "host-xgboost" deleted-
Para comprobar que se haya eliminado la implementación de alojamiento, utilice el siguiente comando:
kubectl get hostingdeployments No resources found.
Los puntos de conexión que se hayan eliminado no incurrirán en ningún cargo por los recursos de SageMaker AI.
El operador ProcessingJob
Los operadores ProcessingJob se utilizan para lanzar los trabajos de procesamiento de Amazon SageMaker. Para obtener más información sobre los trabajos de procesamiento de SageMaker, consulte CreateProcessingJob.
Temas
Creación de un ProcessingJob mediante un archivo YAML
Siga estos pasos para crear un trabajo de procesamiento de Amazon SageMaker mediante un archivo YAML:
-
Descargue el script de preprocesamiento
kmeans_preprocessing.py.wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/kmeans_preprocessing.py -
En uno de sus buckets de Amazon Simple Storage Service (Amazon S3), cree una carpeta
mnist_kmeans_example/processing_codey cargue el script en la carpeta. -
Descargue el archivo
kmeans-mnist-processingjob.yaml.wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/kmeans-mnist-processingjob.yaml -
Edite el archivo YAML para especificar su
sagemaker-execution-roley reemplace todas las instancias deamzn-s3-demo-bucketpor 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.pyEl
sagemaker-execution-roledebe tener permisos para que SageMaker AI pueda acceder a su bucket de S3, Amazon CloudWatch y otros servicios en su nombre. Para obtener más información sobre la creación de un rol de ejecución, consulte Roles de SageMaker AI. -
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.yamlPara una instalación basada en el espacio de nombres:
kubectl apply -f kmeans-mnist-processingjob.yaml -n<NAMESPACE>
Enumeración de ProcessingJobs
Utilice uno de los siguientes comandos para enumerar todos los trabajos creados con el operador ProcessingJob. El SAGEMAKER-JOB-NAME proviene de la sección de metadata 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.
Estado de ProcessingJob
-
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 comandokubectldescribepara ver el motivo en el campoAdditional. -
InProgress | Completed | Failed | Stopping | Stopped: estado del trabajo de procesamiento de SageMaker. Para obtener más información, consulte DescribeProcessingJob. -
Error: el operador no puede recuperarse mediante la conciliación.
Los trabajos que se hayan completado, detenido o que hayan fallado no incurrirán en ningún cargo adicional por parte de los recursos de SageMaker AI.
Descripción de 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>
Eliminación de un ProcessingJob
Al eliminar un trabajo de procesamiento, el trabajo de procesamiento de SageMaker AI se elimina de Kubernetes, pero no se elimina de SageMaker AI. Si el estado del trabajo en SageMaker AI es InProgress, el trabajo se detiene. Los trabajos que se hayan detenido no incurrirán en ningún cargo por parte de los recursos de SageMaker AI. 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 AI no elimina el trabajo de procesamiento. Los trabajos detenidos siguen apareciendo en la consola de SageMaker AI. El comando delete tarda unos pocos minutos en limpiar los recursos de SageMaker AI.
El operador HostingAutoscalingPolicy (HAP)
El operador HostingAutoscalingPolicy (HAP) toma como entrada una lista de ID 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 punto de conexión de SageMaker AI existente o puede crear un nuevo punto de conexión de SageMaker AI mediante el operador HostingDeployment. Puede obtener más información sobre el escalado automático de SageMaker AI 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.
Temas
Creación de una HostingAutoscalingPolicy mediante un archivo YAML
Utilice un archivo YAML para crear una HostingAutoscalingPolicy (HAP) que aplique una métrica predefinida o personalizada a uno o varios puntos de conexión de SageMaker AI.
Amazon SageMaker AI precisa valores específicos para aplicar el escalado automático a la 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
-
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 -
Edite el archivo YAML para especificar su
endpointName,variantNameyRegion. -
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.yamlPara 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
-
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 -
Edite el archivo YAML para especificar su
endpointName,variantNameyRegion. -
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
SageMakerVariantInvocationsPerInstancerecomendada.nota
Amazon SageMaker AI no comprueba la validez de la especificación de YAML.
Para una instalación basada en el clúster:
kubectl apply -f hap-custom-metric.yamlPara 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).
-
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 -
Edita el archivo YAML para especificar su
Regiony varios valores deendpointNameyvariantName. -
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.yamlPara una instalación basada en el espacio de nombres:
kubectl apply -f hap-predefined-metric.yaml -n<NAMESPACE>
Consideraciones de HostingAutoscalingPolicies para varios puntos de conexión 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
describeen 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
describepara enumerar los ID de recursos a los que se aplica la política actualmente.
Enumeración de HostingAutoscalingPolicies
Utilice uno de los siguientes comandos para enumerar todas las HostingAutoscalingPolicies (HAP) creadas 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 verificar 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 comoReconcilingen lugar deError. Algunos ejemplos son errores del servidor y puntos de conexión en el estadoCreatingoUpdating. Para obtener más detalles, consulte el campoAdditionalde los registros de estado o de los registros del operador. CreatedError
Para ver el punto de conexión de escalado automático al que aplicó la política
-
Abra la consola de Amazon SageMaker AI en https://console.aws.amazon.com/sagemaker/
. -
En el panel lateral izquierdo, amplíe Inferencia.
-
Elija Puntos de conexión.
-
Seleccione el nombre del punto de conexión de interés.
-
Desplácese hasta la sección Configuración del tiempo de ejecución del punto de conexión.
Descripción de una HostingAutoscalingPolicy
Utilice el siguiente comando para obtener más detalles sobre una 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>
Actualización de una HostingAutoscalingPolicy
El operador HostingAutoscalingPolicy (HAP) admite 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.
Eliminación de una HostingAutoscalingPolicy
Utilice uno de los siguientes comandos para eliminar una política de 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
Actualización o eliminación de un punto de conexión con una HostingAutoscalingPolicy
Para actualizar un punto de conexión que tenga una HostingAutoscalingPolicy (HAP), utilice el comando kubectl delete para eliminar la HAP, actualizar el punto de conexión y, a continuación, volver a aplicar la 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.