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
importante
Vamos a detener el desarrollo y el soporte técnico de la versión original de SageMaker Operators
Si actualmente utilizas la versión v1.2.2
o anterior de SageMaker Operators for 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 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.
Contenido
¿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.
Temas
Crea una TrainingJob con 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
xgboost-mnist-trainingjob.yaml
archivo para sustituir elroleArn
parámetro por su<sagemaker-execution-role>
bucket de Amazon S3 youtputPath
por el suyo al que la función de ejecución de SageMaker IA tiene acceso de escritura.roleArn
Deben 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.
-
Clona el GitHub repositorio para obtener la fuente 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.yaml
para reemplazar valores comorolearn
youtputpath
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
Temas
Crea una HyperparameterTuningJob usando 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.yaml
para reemplazar el parámetroroleArn
por susagemaker-execution-role
. Para que el trabajo de ajuste del hiperparámetro se realice correctamente, también debe cambiar los valoress3InputPath
ys3OutputPath
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.
-
Clone el GitHub repositorio para obtener la fuente 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.yaml
para reemplazar el parámetroroleArn
por susagemaker-execution-role
. Para que el trabajo de ajuste del hiperparámetro se realice correctamente, también debe cambiar los valoress3InputPath
ys3OutputPath
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.
Temas
Crea un BatchTransformJob 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.yaml
para cambiar los parámetros necesarios y sustituirlos por sus datos de entrada ys3OutputPath
por los buckets de Amazon S3 a los que la función de ejecución de SageMaker IA tiene acceso de escritura.inputdataconfig
-
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
-
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.
-
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 deBatchTransformJob
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
Temas
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ícelokubectl describe
para ver el motivo en elAdditional
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 estadoInService
. 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
-
Una vez HostingDeployment que tiene un estado de
InService
, se puede actualizar. Su puesta en servicio puede tardar unos 10 minutos. HostingDeployment Para verificar que el estado seaInService
, utilice el siguiente comando:kubectl get hostingdeployments
-
Se HostingDeployment puede actualizar antes de que aparezca el estado
InService
. El operador espera a que llegue el punto final de la SageMaker IAInService
antes de aplicar la actualización.Para aplicar una actualización, modifique el archivo
hosting.yaml
. Por ejemplo, cambie el campoinitialInstanceCount
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
-
Guarda el archivo y use
kubectl
para aplicar la actualización de la siguiente manera. Debería ver el cambio de estado deInService
aReconcilingEndpoint
y, 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 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
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
-
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.
Temas
Cree un ProcessingJob archivo YAML
Sigue estos pasos para crear un trabajo de SageMaker procesamiento de Amazon 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_code
y 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-role
y reemplace todas las instancias deamzn-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.pysagemaker-execution-role
Deben 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. -
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 comandokubectl
describe
para ver el motivo en el campoAdditional
. -
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. Delete
deshace 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
.
Temas
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
-
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
,variantName
yRegion
. -
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
-
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
,variantName
yRegion
. -
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).
-
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
Region
y varios valores deendpointName
yvariantName
. -
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
describe
comando 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 comoReconciling
en lugar deError
. Algunos ejemplos son errores del servidor y puntos de conexión en el estadoCreating
oUpdating
. Para obtener más detalles, consulte el campoAdditional
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
-
Abre la consola 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.
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.