Utilisation des tâches Amazon SageMaker AI - Amazon SageMaker AI

Utilisation des tâches Amazon SageMaker AI

Cette section est basée sur la version originale des opérateurs SageMaker AI pour Kubernetes.

Important

Nous arrêtons le développement et le support technique de la version d’origine de SageMaker Operators for Kubernetes.

Si vous utilisez actuellement la version v1.2.2 ou inférieure de SageMaker Operators for Kubernetes, nous vous recommandons de migrer vos ressources vers le contrôleur de service ACK pour Amazon SageMaker. Le contrôleur de service ACK est une nouvelle génération d'opérateurs SageMaker pour Kubernetes, basée sur AWS Controllers for Kubernetes (ACK).

Pour en savoir plus sur les étapes de migration, consultez Migrer les ressources vers la dernière version d'Operators.

Pour obtenir des réponses aux questions fréquentes concernant la fin de la prise en charge de la version d’origine de SageMaker Operators for Kubernetes, consultez Annonce de la fin de la prise en charge de la version d’origine des opérateurs SageMaker AI pour Kubernetes

Pour exécuter une tâche Amazon SageMaker AI à l’aide des opérateurs pour Kubernetes, vous pouvez appliquer un fichier YAML ou utiliser les Charts de Helm fournis.

Tous les exemples de tâches d’opérateur dans les tutoriels suivants utilisent des exemples de données provenant d’un jeu de données MNIST public. Pour exécuter ces exemples, téléchargez le jeu de données dans votre compartiment Amazon S3. Vous pouvez trouver le jeu de données dans la section Download the MNIST Dataset.

Opérateur TrainingJob

Les opérateurs de tâches d’entraînement rapprochent votre spécification de tâche d’entraînement spécifiée avec SageMaker AI en la lançant pour vous dans SageMaker AI. Pour en savoir plus sur les tâches d’entraînement SageMaker, consultez la Documentation relative à l’API CreateTrainingJob de SageMaker AI.

Création d’une tâche TrainingJob à l’aide d’un fichier YAML

  1. Téléchargez l’exemple de fichier YAML pour l’entraînement à l’aide de la commande suivante :

    wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/xgboost-mnist-trainingjob.yaml
  2. Modifiez le fichier xgboost-mnist-trainingjob.yaml pour remplacer le paramètre roleArn par votre <sagemaker-execution-role> et outputPath par votre compartiment Amazon S3 auquel le rôle d’exécution SageMaker AI a un accès en écriture. L’élément roleArn doit disposer d’autorisations pour que SageMaker AI puisse accéder à Amazon S3, à Amazon CloudWatch et à d’autres services en votre nom. Pour plus d’informations sur la création d’un élément SageMaker AI ExecutionRole, consultez Rôles SageMaker AI. Appliquez le fichier YAML à l’aide de la commande suivante :

    kubectl apply -f xgboost-mnist-trainingjob.yaml

Création de TrainingJob à l'aide d'un Chart de Helm

Vous pouvez utiliser les Charts de Helm pour exécuter des TrainingJobs.

  1. Clonez le référentiel GitHub pour obtenir la source à l'aide de la commande suivante :

    git clone https://github.com/aws/amazon-sagemaker-operator-for-k8s.git
  2. Accédez au dossier amazon-sagemaker-operator-for-k8s/hack/charts/training-jobs/ et modifiez le fichier values.yaml pour remplacer des valeurs comme rolearn et outputpath par des valeurs qui correspondent à votre compte. L’élément RoleARN doit disposer d’autorisations pour que SageMaker AI puisse accéder à Amazon S3, à Amazon CloudWatch et à d’autres services en votre nom. Pour plus d’informations sur la création d’un élément SageMaker AI ExecutionRole, consultez Rôles SageMaker AI.

Création de TrainingJob

Lorsque les rôles et les compartiments Amazon S3 ont été remplacés par des valeurs appropriées dans values.yaml, vous pouvez créer une tâche d'entraînement à l'aide de la commande suivante :

helm install . --generate-name

Le résultat doit être similaire à ce qui suit :

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.

Vérification de votre Chart de Helm d'entraînement

Pour vérifier que le Chart de Helm a bien été créé, exécutez :

helm ls

Le résultat doit être similaire à ce qui suit :

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 crée une ressource Kubernetes TrainingJob. L’opérateur lance la tâche d’entraînement proprement dite dans SageMaker AI et met à jour la ressource Kubernetes TrainingJob pour refléter le statut de la tâche dans SageMaker AI. Vous engagez des frais pour les ressources SageMaker AI utilisées pendant la durée de votre tâche. Vous ne payez pas de frais une fois votre tâche terminée ou arrêtée.

Remarque : SageMaker AI ne vous permet pas de mettre à jour une tâche d’entraînement en cours d’exécution. Vous ne pouvez pas modifier un paramètre et réappliquer le fichier de configuration. Modifiez le nom des métadonnées ou supprimez la tâche existante et créez-en une autre. À l'instar des opérateurs de tâche d'entraînement existants tels que TFJob dans Kubeflow, update n'est pas pris en charge.

Répertorier les TrainingJobs

Utilisez la commande suivante pour répertorier toutes les tâches créées à l'aide de l'opérateur Kubernetes :

kubectl get TrainingJob

Le résultat pour toutes les tâches répertoriées doit ressembler à ce qui suit :

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

Une tâche d’entraînement reste répertoriée après son achèvement ou son échec. Vous pouvez supprimer une tâche TrainingJob de la liste en suivant la procédure Suppression de TrainingJobs. Les tâches achevées ou arrêtées n’entraînent pas de frais pour les ressources SageMaker AI.

Valeurs du statut de TrainingJob

Le champ STATUS peut comporter l’une des valeurs suivantes :

  • Completed

  • InProgress

  • Failed

  • Stopped

  • Stopping

Ces statuts proviennent directement de la documentation sur les API officielle de SageMaker AI.

En plus du statut officiel de SageMaker AI, il est possible que le STATUS soit SynchronizingK8sJobWithSageMaker. Cela signifie que l’opérateur n’a pas encore traité la tâche.

Valeurs du statut secondaire

Les statuts secondaires proviennent directement de la documentation sur les API officielle de SageMaker AI. Ils contiennent des informations plus détaillées sur le statut de la tâche.

Description de TrainingJob

Vous pouvez obtenir plus d'informations sur la tâche d'entraînement en utilisant la commande describe kubectl. Elle est généralement utilisée pour déboguer un problème ou vérifier les paramètres d'une tâche d'entraînement. Pour obtenir des informations sur votre tâche d'entraînement, utilisez la commande suivante :

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

Le résultat de votre tâche d'entraînement doit ressembler à ce qui suit :

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>

Affichage des journaux à partir de TrainingJobs

Utilisez la commande suivante pour consulter les journaux depuis la tâche d'entraînement kmeans-mnist :

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

Votre sortie doit ressembler à ce qui suit : Les journaux des instances sont classés par ordre chronologique.

"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

Suppression de TrainingJobs

Utilisez la commande suivante pour arrêter une tâche d’entraînement sur Amazon SageMaker AI :

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

Cette commande supprime la tâche d’entraînement SageMaker de Kubernetes. Cette commande renvoie le résultat suivant :

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

Si la tâche est toujours en cours sur SageMaker AI, elle s’arrête. Vous ne payez pas de frais pour vos ressources SageMaker AI une fois votre tâche terminée ou arrêtée.

Remarque : SageMaker AI ne supprime pas les tâches d’entraînement. Les tâches arrêtées continuent de s’afficher sur la console SageMaker AI. La commande delete prend environ 2 minutes pour nettoyer les ressources de SageMaker AI.

Opérateur HyperParameterTuningJob

Les opérateurs de tâche de réglage d’hyperparamètre rapprochent la spécification de votre tâche de réglage hyperparamètre spécifiée avec SageMaker AI en la lançant dans SageMaker AI. Pour en savoir plus sur les tâches de réglage des hyperparamètres de SageMaker AI, consultez la documentation relative à l’API CreateHyperParameterTuningJob de SageMaker AI.

Création d’une tâche HyperParameterTuningJob à l’aide d’un fichier YAML

  1. Téléchargez l'exemple de fichier YAML pour la tâche de réglage d'hyperparamètre à l'aide de la commande suivante :

    wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/xgboost-mnist-hpo.yaml
  2. Modifiez le fichier xgboost-mnist-hpo.yaml pour remplacer le paramètre roleArn par votre sagemaker-execution-role. Pour que la tâche de réglage d'hyperparamètre aboutisse, vous devez également modifier les valeurs s3InputPath et s3OutputPath qui correspondent à votre compte. Appliquez le fichier YAML de mises à jour à l'aide de la commande suivante :

    kubectl apply -f xgboost-mnist-hpo.yaml

Créer un HyperParameterTuningJob à l'aide d'un Chart de Helm

Vous pouvez utiliser les Charts de Helm pour exécuter des tâches de réglage d'hyperparamètre.

  1. Clonez le référentiel GitHub pour obtenir la source à l'aide de la commande suivante :

    git clone https://github.com/aws/amazon-sagemaker-operator-for-k8s.git
  2. Accédez au dossier amazon-sagemaker-operator-for-k8s/hack/charts/hyperparameter-tuning-jobs/.

  3. Modifiez le fichier values.yaml pour remplacer le paramètre roleArn par votre sagemaker-execution-role. Pour que la tâche de réglage d'hyperparamètre aboutisse, vous devez également modifier les valeurs s3InputPath et s3OutputPath qui correspondent à votre compte.

Créer le HyperParameterTuningJob

Lorsque les rôles et les chemins Amazon S3 ont été remplacés par des valeurs appropriées dans values.yaml, vous pouvez créer une tâche de réglage d'hyperparamètre à l'aide de la commande suivante :

helm install . --generate-name

Votre sortie doit ressembler à ce qui suit :

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.

Vérification de l'installation du Chart

Pour vérifier que le Chart de Helm a bien été créé, exécutez la commande suivante :

helm ls

Le résultat doit être similaire à ce qui suit :

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 crée une ressource Kubernetes HyperParameterTuningJob. L’opérateur lance la tâche d’optimisation d’hyperparamètre à proprement dit dans SageMaker AI et met à jour la ressource Kubernetes HyperParameterTuningJob pour refléter le statut de la tâche dans SageMaker AI. Vous engagez des frais pour les ressources SageMaker AI utilisées pendant la durée de votre tâche. Vous ne payez pas de frais une fois votre tâche terminée ou arrêtée.

Remarque : SageMaker AI ne vous permet pas de mettre à jour une tâche de réglage des hyperparamètres en cours d’exécution. Vous ne pouvez pas modifier un paramètre et réappliquer le fichier de configuration. Vous devez modifier le nom des métadonnées ou supprimer la tâche existante et en créer une autre. À l’instar des opérateurs de tâche d’entraînement existants tels que TFJob dans Kubeflow, update n’est pas pris en charge.

Répertorier les HyperparameterTuningJobs

Utilisez la commande suivante pour répertorier toutes les tâches créées à l'aide de l'opérateur Kubernetes :

kubectl get hyperparametertuningjob

Le résultat doit être similaire à ce qui suit :

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

Une tâche de réglage d’hyperparamètre reste répertoriée après son achèvement ou son échec. Vous pouvez supprimer une tâche hyperparametertuningjob de la liste en suivant la procédure Suppression d’HyperparameterTuningJob. Les tâches achevées ou arrêtées n’entraînent pas de frais pour les ressources SageMaker AI.

Valeurs de statut de tâche de réglage des hyperparamètres

Le champ STATUS peut comporter l’une des valeurs suivantes :

  • Completed

  • InProgress

  • Failed

  • Stopped

  • Stopping

Ces statuts proviennent directement de la documentation sur les API officielle de SageMaker AI.

En plus du statut officiel de SageMaker AI, il est possible que le STATUS soit SynchronizingK8sJobWithSageMaker. Cela signifie que l’opérateur n’a pas encore traité la tâche.

Compteurs de statut

Le résultat a plusieurs compteurs, comme COMPLETED et INPROGRESS. Il s'agit du nombre de tâches d'entraînement terminées et en cours, respectivement. Pour plus d’informations sur la façon dont ces éléments sont déterminés, consultez TrainingJobStatusCounters dans la documentation relative à l’API SageMaker.

Meilleure TrainingJob

Cette colonne contient le nom de la TrainingJob qui optimisait le mieux la métrique sélectionnée.

Pour afficher un résumé des hyperparamètres réglés, exécutez :

kubectl describe hyperparametertuningjob xgboost-mnist-hpo

Pour afficher des informations détaillées sur les TrainingJob, exécutez :

kubectl describe trainingjobs <job name>

TrainingJobs générées

Vous pouvez également suivre les 10 tâches d'entraînement à Kubernetes démarrées par HyperparameterTuningJob en exécutant la commande suivante :

kubectl get trainingjobs

Décrit une HyperParameterTuningJob

Vous pouvez obtenir des détails de débogage à l’aide de la commande describe kubectl.

kubectl describe hyperparametertuningjob xgboost-mnist-hpo

En plus des informations sur la tâche de réglage, l’opérateur SageMaker AI pour Kubernetes expose également la meilleure tâche d’entraînement trouvée par la tâche de réglage des hyperparamètres dans la sortie describe comme suit :

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>

Affichage des journaux à partir d’HyperParameterTuningJobs

Les tâches de réglage d'hyperparamètre n'ont pas de journaux, mais toutes les tâches d'entraînement qu'ils démarrent ont des journaux. Ces journaux sont accessibles comme s’il s’agissait d’une tâche d’entraînement normale. Pour plus d’informations, consultez Affichage des journaux à partir de TrainingJobs.

Suppression d’HyperparameterTuningJob

Utilisez la commande suivante pour arrêter une tâche d’hyperparamètre dans SageMaker AI.

kubectl delete hyperparametertuningjob xgboost-mnist-hpo

Cette commande supprime la tâche de réglage des hyperparamètres et les tâches d’entraînement associées de votre cluster Kubernetes et les arrête dans SageMaker AI. Les tâches arrêtées ou achevées n’entraînent pas de frais pour les ressources SageMaker AI. SageMaker AI ne supprime pas les tâches de réglage des hyperparamètres. Les tâches arrêtées continuent de s’afficher sur la console SageMaker AI.

Le résultat doit être similaire à ce qui suit :

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

Remarque : la commande de suppression prend environ 2 minutes pour nettoyer les ressources de SageMaker AI.

Opérateur BatchTransformJob

Les opérateurs de tâches de transformation par lots rapprochent votre spécification de tâche de transformation par lots spécifiée avec SageMaker AI en la lançant dans SageMaker AI. Pour en savoir plus sur la tâche de transformation par lots SageMaker AI, consultez la documentation relative à l’API CreateTransformJob de SageMaker AI.

Création d’une tâche BatchTransformJob à l’aide d’un fichier YAML

  1. Téléchargez l’exemple de fichier YAML pour la tâche de transformation par lots à l’aide de la commande suivante :

    wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/xgboost-mnist-batchtransform.yaml
  2. Modifiez le fichier xgboost-mnist-batchtransform.yaml pour modifier les paramètres nécessaires en vue de remplacer inputdataconfig par vos données d’entrée et s3OutputPath par vos compartiments Amazon S3 auxquels le rôle d’exécution SageMaker AI a un accès en écriture.

  3. Appliquez le fichier YAML à l’aide de la commande suivante :

    kubectl apply -f xgboost-mnist-batchtransform.yaml

Création d'une tâche BatchTransformJob à l'aide d'un Chart de Helm

Vous pouvez utiliser les Charts de Helm pour exécuter des tâches de transformation par lots.

Obtenir le répertoire du programme d'installation de Helm

Clonez le référentiel GitHub pour obtenir la source à l'aide de la commande suivante :

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

Configuration du Chart de Helm

Accédez au dossier amazon-sagemaker-operator-for-k8s/hack/charts/batch-transform-jobs/.

Modifiez le fichier values.yaml pour remplacer inputdataconfig par vos données d’entrée et outputPath par vos compartiments S3 auxquels le rôle d’exécution SageMaker AI a un accès en écriture.

Création de BatchTransformJob

  1. Utilisez la commande suivante pour créer une tâche de transformation par lots :

    helm install . --generate-name

    Le résultat doit être similaire à ce qui suit :

    NAME: chart-1574292948 LAST DEPLOYED: Wed Nov 20 23:35:49 2019 NAMESPACE: default STATUS: deployed REVISION: 1 TEST SUITE: None NOTES: Thanks for installing the sagemaker-k8s-batch-transform-job.
  2. Pour vérifier que le Chart de Helm a bien été créé, exécutez la commande suivante :

    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

    Cette commande crée une ressource Kubernetes BatchTransformJob. L’opérateur lance la tâche de transformation proprement dite dans SageMaker AI et met à jour la ressource Kubernetes BatchTransformJob pour refléter le statut de la tâche dans SageMaker AI. Vous engagez des frais pour les ressources SageMaker AI utilisées pendant la durée de votre tâche. Vous ne payez pas de frais une fois votre tâche terminée ou arrêtée.

Remarque : SageMaker AI ne vous permet pas de mettre à jour une tâche de transformation par lots en cours d’exécution. Vous ne pouvez pas modifier un paramètre et réappliquer le fichier de configuration. Vous devez modifier le nom des métadonnées ou supprimer la tâche existante et en créer une autre. À l'instar des opérateurs de tâche d'entraînement existants tels que TFJob dans Kubeflow, update n'est pas pris en charge.

Répertorier les BatchTransformJobs

Utilisez la commande suivante pour répertorier toutes les tâches créées à l'aide de l'opérateur Kubernetes :

kubectl get batchtransformjob

Le résultat doit être similaire à ce qui suit :

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

Une tâche de transformation par lots reste répertoriée après son achèvement ou son échec. Vous pouvez supprimer une tâche hyperparametertuningjob de la liste en suivant la procédure Suppression de BatchTransformJob. Les tâches achevées ou arrêtées n’entraînent pas de frais pour les ressources SageMaker AI.

Valeurs de statut de transformation par lots

Le champ STATUS peut comporter l’une des valeurs suivantes :

  • Completed

  • InProgress

  • Failed

  • Stopped

  • Stopping

Ces statuts proviennent directement de la documentation sur les API officielle de SageMaker AI.

En plus du statut officiel de SageMaker AI, il est possible que le STATUS soit SynchronizingK8sJobWithSageMaker. Cela signifie que l’opérateur n’a pas encore traité la tâche.

Description de BatchTransformJob

Vous pouvez obtenir des détails de débogage à l'aide de la commande describe kubectl.

kubectl describe batchtransformjob xgboost-mnist-batch-transform

Le résultat doit être similaire à ce qui suit :

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>

Affichage des journaux à partir de BatchTransformJobs

Utilisez la commande suivante pour consulter les journaux depuis la tâche de transformation par lots xgboost-mnist :

kubectl smlogs batchtransformjob xgboost-mnist-batch-transform

Suppression de BatchTransformJob

Utilisez la commande suivante pour arrêter une tâche de transformation par lots dans SageMaker AI.

kubectl delete batchTransformJob xgboost-mnist-batch-transform

Le résultat doit être similaire à ce qui suit :

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

Cette commande supprime la tâche de transformation par lots de votre cluster Kubernetes et l’arrête dans SageMaker AI. Les tâches arrêtées ou achevées n’entraînent pas de frais pour les ressources SageMaker AI. La commande de suppression prend environ 2 minutes pour nettoyer les ressources de SageMaker AI.

Remarque : SageMaker AI ne supprime pas les tâches de transformation par lots. Les tâches arrêtées continuent de s’afficher sur la console SageMaker AI.

Opérateur HostingDeployment

Les opérateurs HostingDeployment prennent en charge la création et la suppression d’un point de terminaison, ainsi que la mise à jour d’un point de terminaison existant, pour une inférence en temps réel. L’opérateur de déploiement d’hébergement rapproche la spécification de votre tâche de déploiement d’hébergement spécifiée avec SageMaker AI en créant des modèles, des configurations de point de terminaison et des points de terminaison dans SageMaker AI. Pour en savoir plus sur l’inférence SageMaker AI, consultez la documentation relative à l’API CreateEndpoint de SageMaker AI.

Configuration d’une ressource HostingDeployment

Téléchargez l'exemple de fichier YAML pour la tâche de déploiement d'hébergement à l'aide de la commande suivante :

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

Le fichier xgboost-mnist-hostingdeployment.yaml contient les composants suivants qui peuvent être modifiés selon les besoins :

  • ProductionVariants. Une variante de production est un ensemble d’instances servant un seul modèle. SageMaker AI équilibre la charge entre toutes les variantes de production en fonction des pondérations définies.

  • Modèles. Un modèle est l'ARN des conteneurs et du rôle d'exécution nécessaire pour servir un modèle. Il nécessite au moins un seul conteneur.

  • Conteneurs. Un conteneur spécifie le jeu de données et l’image de service. Si vous utilisez votre propre algorithme personnalisé au lieu d’un algorithme fourni par SageMaker AI, le code d’inférence doit répondre aux exigences de SageMaker AI. Pour plus d’informations, consultez Utilisation de vos propres algorithmes avec SageMaker AI.

Création d’un HostingDeployment

Pour créer un HostingDeployment, utilisez kubectl pour appliquer le fichier hosting.yaml à l’aide de la commande suivante :

kubectl apply -f hosting.yaml

SageMaker AI crée un point de terminaison avec la configuration spécifiée. Vous engagez des frais pour les ressources SageMaker AI utilisées pendant la durée de vie votre point de terminaison. Vous ne payez pas de frais une fois votre point de terminaison supprimé.

Le processus de création prend environ 10 minutes.

Répertorier les HostingDeployments

Pour vérifier que l'HostingDeployment a été créé, utilisez la commande suivante :

kubectl get hostingdeployments

Le résultat doit être similaire à ce qui suit :

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

Valeurs de statut d'HostingDeployment

Le champ d'état peut avoir l'une des valeurs suivantes :

  • SynchronizingK8sJobWithSageMaker : l'opérateur se prépare à créer le point de terminaison.

  • ReconcilingEndpoint : l'opérateur crée, met à jour ou supprime des ressources de point de terminaison. Si l’HostingDeployment reste dans cet état, utilisez kubectl describe pour connaître la raison dans le champ Additional.

  • OutOfService : le point de terminaison n'est pas disponible pour recevoir les demandes entrantes.

  • Creating : CreateEndpoint est en cours d'exécution.

  • Updating : UpdateEndpoint ou UpdateEndpointWeightsAndCapacities est en cours d'exécution.

  • SystemUpdating : le point de terminaison fait l'objet d'une maintenance et ne peut pas être mis à jour, supprimé ou remis à l'échelle tant qu'il n'est pas terminé. Cette opération de maintenance ne modifie pas les valeurs spécifiées par le client telles que la configuration du VPC, le chiffrement AWS KMS, le modèle, le type d'instance ou le nombre d'instances.

  • RollingBack : le point de terminaison ne parvient pas à effectuer une augmentation ou une réduction d'échelle, ni à modifier son poids de variante et il est en cours de restauration vers sa configuration précédente. Une fois la restauration terminée, le point de terminaison revient à un statut InService. Ce statut de transition s'applique uniquement à un point de terminaison dont la mise à l'échelle automatique est activée et qui subit des modifications de poids de variante ou de capacité dans le cadre d'un appel UpdateEndpointWeightsAndCapacities ou lorsque l'opération UpdateEndpointWeightsAndCapacities est appelée explicitement.

  • InService : le point de terminaison est disponible pour traiter les demandes entrantes.

  • Deleting : DeleteEndpoint est en cours d'exécution.

  • Failed : le point de terminaison n'a pas pu être créé, mis à jour ou remis à l'échelle. Utilisez DescribeEndPoint:FailureReason pour obtenir des informations sur l’échec. DeleteEndpoint est la seule opération qui peut être effectuée sur un point de terminaison défaillant.

Description d'HostingDeployment

Vous pouvez obtenir des détails de débogage à l'aide de la commande describe kubectl.

kubectl describe hostingdeployment

Le résultat doit être similaire à ce qui suit :

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>

Le champ de statut fournit plus d'informations à l'aide des champs suivants :

  • Additional : informations supplémentaires sur l'état du déploiement d'hébergement. Ce champ est facultatif et n’est renseigné qu’en cas d’erreur.

  • Creation Time : lorsque le point de terminaison a été créé dans SageMaker AI.

  • Endpoint ARN : ARN du point de terminaison SageMaker AI.

  • Endpoint Config Name : nom SageMaker AI de la configuration du point de terminaison.

  • Endpoint Name : nom SageMaker AI du point de terminaison.

  • Endpoint Status : état du point de terminaison.

  • Endpoint URL : URL HTTPS qui peut être utilisée pour accéder au point de terminaison. Pour plus d’informations, consultez Déploiement d’un modèle sur les services d’hébergement SageMaker AI.

  • FailureReason : si une commande de création, de mise à jour ou de suppression échoue, la cause est indiquée ici.

  • Last Check Time : dernière fois que l'opérateur a vérifié l'état du point de terminaison.

  • Last Modified Time : date et heure de la dernière modification du point de terminaison.

  • Model Names : paire clé-valeur de noms de modèles HostingDeployment aux noms de modèles SageMaker AI.

Invocation du point de terminaison

Une fois que l'état du point de terminaison est InService, vous pouvez appeler le point de terminaison de deux manières : à l'aide de la CLI AWS, qui effectue l'authentification et la signature des demandes d'URL, ou à l'aide d'un client HTTP comme cURL. Si vous utilisez votre propre client, vous devez effectuer la signature et authentification d'URL AWS v4 par vous-même.

Pour invoquer le point de terminaison à l’aide de la CLI AWS, exécutez la commande suivante. Assurez-vous de remplacer la région et le nom du point de terminaison par la région de votre point de terminaison et le nom du point de terminaison SageMaker AI. Ces informations peuvent être obtenues à partir du résultat 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

Par exemple, si votre région est us-east-2 et votre nom de configuration de point de terminaison est host-xgboost-f56b6b280d7511ea824b129926example, la commande suivante invoquerait le point de terminaison :

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

Ici, 4.95847082138 est la prédiction du modèle pour les données simulées.

Mise à jour d'HostingDeployment

  1. Une fois qu'un HostingDeployment a l'état InService, il peut être mis à jour. Environ 10 minutes peuvent être nécessaires pour que l'HostingDeployment soit en service. Utilisez la commande suivante pour vérifier que l'état est InService :

    kubectl get hostingdeployments
  2. HostingDeployment peut être mis à jour avant que l’état ne soit InService. L’opérateur attend que le point de terminaison SageMaker AI soit InService avant d’appliquer la mise à jour.

    Pour appliquer une mise à jour, modifiez le fichier hosting.yaml. Par exemple, remplacez le champ initialInstanceCount de 1 à 2 comme suit :

    apiVersion: sagemaker.aws.amazon.com/v1 kind: HostingDeployment metadata: name: host-xgboost spec: region: us-east-2 productionVariants: - variantName: all-traffic modelName: xgboost-model initialInstanceCount: 2 instanceType: ml.c5.large models: - name: xgboost-model executionRoleArn: arn:aws:iam::123456789012:role/service-role/AmazonSageMaker-ExecutionRole primaryContainer: xgboost containers: - xgboost containers: - containerHostname: xgboost modelDataUrl: s3://amzn-s3-demo-bucket/inference/xgboost-mnist/model.tar.gz image: 123456789012.dkr.ecr.us-east-2.amazonaws.com/xgboost:latest
  3. Enregistrez le fichier, puis utilisez kubectl pour appliquer votre mise à jour comme suit. Vous devez voir l’état passer de InService à ReconcilingEndpoint, puis à Updating.

    $ kubectl apply -f hosting.yaml hostingdeployment.sagemaker.aws.amazon.com/host-xgboost configured $ kubectl get hostingdeployments NAME STATUS SAGEMAKER-ENDPOINT-NAME host-xgboost ReconcilingEndpoint host-xgboost-def0e83e0d5f11eaaa450a350abcdef $ kubectl get hostingdeployments NAME STATUS SAGEMAKER-ENDPOINT-NAME host-xgboost Updating host-xgboost-def0e83e0d5f11eaaa450a3507abcdef

SageMaker AI déploie un nouvel ensemble d’instances avec vos modèles, bascule le trafic pour utiliser les nouvelles instances et draine les anciennes instances. Dès que ce processus commence, l’état devient Updating. Une fois la mise à jour terminée, votre point de terminaison devient InService. Ce processus prend environ 10 minutes.

Suppression de l'HostingDeployment

  1. Utiliser kubectl pour supprimer un HostingDeployment à l'aide de la commande suivante :

    kubectl delete hostingdeployments host-xgboost

    Le résultat doit être similaire à ce qui suit :

    hostingdeployment.sagemaker.aws.amazon.com "host-xgboost" deleted
  2. Pour vérifier que le déploiement d’hébergement a été supprimé, utilisez la commande suivante :

    kubectl get hostingdeployments No resources found.

Les points de terminaison supprimés n’entraînent pas de frais pour les ressources SageMaker AI.

Opérateur ProcessingJob

Les opérateurs ProcessingJob sont utilisés pour lancer des tâches de traitement Amazon SageMaker. Pour plus d’informations sur les tâches de traitement SageMaker, consultez CreateProcessingJob.

Création d'une tâche ProcessingJob à l'aide d'un fichier YAML

Procédez comme suit pour créer une tâche de traitement Amazon SageMaker à l'aide d'un fichier YAML :

  1. Téléchargez le script de pré-traitement kmeans_preprocessing.py.

    wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/kmeans_preprocessing.py
  2. Dans l'un de vos compartiments Amazon Simple Storage Service (Amazon S3), créez un dossier mnist_kmeans_example/processing_code et téléchargez-y le script.

  3. Téléchargez le fichier kmeans-mnist-processingjob.yaml.

    wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/kmeans-mnist-processingjob.yaml
  4. Modifiez le fichier YAML pour spécifier votre sagemaker-execution-role et remplacez toutes les instances de amzn-s3-demo-bucket par votre compartiment S3.

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

    Le rôle sagemaker-execution-role doit disposer d’autorisations pour que SageMaker AI puisse accéder à votre compartiment S3, à Amazon CloudWatch et à d’autres services en votre nom. Pour plus d’informations sur la création d’un rôle d’exécution, consultez Rôles SageMaker AI.

  5. Appliquez le fichier YAML à l’aide de l’une des commandes suivantes.

    Pour l'installation à portée de cluster :

    kubectl apply -f kmeans-mnist-processingjob.yaml

    Pour l'installation à portée de l'espace de noms :

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

Répertorier les ProcessingJobs

Utilisez l'une des commandes suivantes pour répertorier toutes les tâches créées à l'aide de l'opérateur ProcessingJob. SAGEMAKER-JOB-NAME provient de la section metadata du fichier YAML.

Pour l'installation à portée de cluster :

kubectl get ProcessingJob kmeans-mnist-processing

Pour l'installation à portée de l'espace de noms :

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

Votre sortie doit ressembler à ce qui suit :

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

Le résultat répertorie toutes les tâches, quel que soit leur statut. Pour supprimer une tâche de la liste, consultez Suppression d’une tâche de traitement.

État du ProcessingJob
  • SynchronizingK8sJobWithSageMaker – La tâche est d'abord envoyée au cluster. L'opérateur a reçu la demande et se prépare à créer la tâche de traitement.

  • Reconciling – L'opérateur est en train d'initialiser ou de récupérer des erreurs transitoires, avec d'autres. Si la tâche de traitement reste dans cet état, utilisez la commande kubectl describe pour connaître la raison dans le champ Additional.

  • InProgress | Completed | Failed | Stopping | Stopped : statut de la tâche de traitement SageMaker. Pour plus d’informations, consultez DescribeProcessingJob.

  • Error : l’opérateur ne peut pas récupérer via un rapprochement.

Les tâches arrêtées, achevées ou échouées n’entraînent pas de frais supplémentaires pour les ressources SageMaker AI.

Description d’un ProcessingJob

Utilisez l'une des commandes suivantes pour obtenir plus de détails sur une tâche de traitement. Ces commandes sont généralement utilisées pour déboguer un problème ou vérifier les paramètres d'une tâche de traitement.

Pour l'installation à portée de cluster :

kubectl describe processingjob kmeans-mnist-processing

Pour l'installation à portée de l'espace de noms :

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

Le résultat de votre tâche de traitement doit ressembler à ce qui suit :

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

Suppression de ProcessingJob

Lorsque vous supprimez une tâche de traitement, la tâche de traitement SageMaker est supprimée de Kubernetes, mais la tâche n’est pas supprimée de SageMaker AI. Si le statut de la tâche dans SageMaker AI est InProgress, la tâche est arrêtée. Les tâches de traitement qui sont arrêtées n’entraînent pas de frais pour les ressources SageMaker AI. Utilisez l’une des commandes suivantes pour supprimer une tâche de traitement.

Pour l'installation à portée de cluster :

kubectl delete processingjob kmeans-mnist-processing

Pour l'installation à portée de l'espace de noms :

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

Le résultat de votre tâche de traitement doit ressembler à ce qui suit :

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

Note

SageMaker AI ne supprime pas la tâche de traitement. Les tâches arrêtées continuent de s’afficher dans la console SageMaker AI. La commande delete prend quelques minutes pour nettoyer les ressources de SageMaker AI.

Opérateur HostingAutoScalingPolicy (HAP)

L’opérateur HostingAutoScalingPolicy (HAP) prend une liste d’ID de ressource en tant qu’entrée et applique la même politique à chacun d’eux. Chaque ID de ressource est une combinaison d'un nom de point de terminaison et d'un nom de variante. L’opérateur HAP effectue deux étapes : il enregistre les ID de ressource, puis applique la politique de mise à l’échelle à chaque ID de ressource. Delete annule les deux actions. Vous pouvez appliquer l’opérateur HAP à un point de terminaison SageMaker AI existant ou créer un nouveau point de terminaison SageMaker AI à l’aide de l’opérateur HostingDeployment. Vous pouvez en savoir plus sur la mise à l’échelle automatique de SageMaker AI dans la Documentation sur la politique de mise à l’échelle automatique de l’application.

Note

Dans vos commandes kubectl, vous pouvez utiliser le format court, hap, à la place de hostingautoscalingpolicy.

Création d’une ressource HostingAutoScalingPolicy à l’aide d’un fichier YAML

Utilisez un fichier YAML pour créer un opérateur HostingAutoscalingPolicy (HAP) qui applique une métrique prédéfinie ou personnalisée à un ou plusieurs points de terminaison SageMaker AI.

Amazon SageMaker AI nécessite des valeurs spécifiques pour appliquer la mise à l’échelle automatique à votre variante. Si ces valeurs ne sont pas spécifiées dans la spécification YAML, l’opérateur HAP applique les valeurs par défaut suivantes.

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

Utilisez les exemples suivants pour créer une HAP qui applique une métrique prédéfinie ou personnalisée à un ou plusieurs points de terminaison.

Exemple 1 : Application d'une métrique prédéfinie à une variante de point de terminaison unique

  1. Téléchargez l'exemple de fichier YAML pour une métrique prédéfinie à l'aide de la commande suivante :

    wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/hap-predefined-metric.yaml
  2. Modifiez le fichier YAML pour spécifier votre endpointName, votre variantName et votre Region.

  3. Utilisez l'une des commandes suivantes pour appliquer une métrique prédéfinie à un seul ID de ressource (combinaison de nom de point de terminaison et de nom de variante).

    Pour l'installation à portée de cluster :

    kubectl apply -f hap-predefined-metric.yaml

    Pour l'installation à portée de l'espace de noms :

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

Exemple 2 : Application d'une métrique personnalisée à une variante de point de terminaison unique

  1. Téléchargez l'exemple de fichier YAML pour une métrique personnalisée à l'aide de la commande suivante :

    wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/hap-custom-metric.yaml
  2. Modifiez le fichier YAML pour spécifier votre endpointName, votre variantName et votre Region.

  3. Utilisez l’une des commandes suivantes pour appliquer une métrique personnalisée à un seul ID de ressource (combinaison de nom de point de terminaison et de nom de variante) à la place de la SageMakerVariantInvocationsPerInstance recommandée.

    Note

    Amazon SageMaker AI ne vérifie pas la validité de votre spécification YAML.

    Pour l’installation à portée de cluster :

    kubectl apply -f hap-custom-metric.yaml

    Pour l'installation à portée de l'espace de noms :

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

Exemple 3 : Application d'une politique de mise à l'échelle à plusieurs points de terminaison et variantes

Vous pouvez utiliser l'opérateur HAP pour appliquer la même politique de mise à l'échelle à plusieurs ID de ressources. Une demande scaling_policy distincte est créée pour chaque ID de ressource (combinaison de nom de point de terminaison et de nom de variante).

  1. Téléchargez l'exemple de fichier YAML pour une métrique prédéfinie à l'aide de la commande suivante :

    wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/hap-predefined-metric.yaml
  2. Modifiez le fichier YAML pour spécifier votre Region et plusieurs valeurs endpointName et variantName.

  3. Utilisez l'une des commandes suivantes pour appliquer une métrique prédéfinie à plusieurs ID de ressources (combinaisons de nom de point de terminaison et de nom de variante).

    Pour l'installation à portée de cluster :

    kubectl apply -f hap-predefined-metric.yaml

    Pour l'installation à portée de l'espace de noms :

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

Considérations relatives aux ressources HostingAutoScalingPolicy pour plusieurs points de terminaison et variantes

Les considérations suivantes s'appliquent lorsque vous utilisez plusieurs ID de ressources :

  • Si vous appliquez une politique unique sur plusieurs ID de ressources, un PolicyARN est créé pour chaque ID de ressource. Cinq points de terminaison ont cinq PolicyARN. Lorsque vous exécutez la commande describe sur la politique, les réponses apparaissent comme une tâche et incluent un statut de tâche unique.

  • Si vous appliquez une métrique personnalisée à plusieurs ID de ressource, la même dimension ou valeur est utilisée pour toutes les valeurs (variantes) d'ID de ressource. Par exemple, si vous appliquez une métrique client pour les instances 1 à 5 et que la dimension de variante de point de terminaison est mappée à la variante 1, lorsque la variante 1 dépasse les métriques, tous les points de terminaison sont augmentés ou réduits.

  • L'opérateur HAP prend en charge la mise à jour de la liste des ID de ressources. Si vous modifiez, ajoutez ou supprimez des ID de ressource à la spécification, la politique de scalabilité automatique est supprimée de la liste précédente de variantes et appliquée aux combinaisons d'ID de ressource récemment spécifiées. Utilisez la commande describe pour répertorier les ID de ressources auxquels la politique est actuellement appliquée.

Répertorier les HostingAutoScalingPolicies

Utilisez l'une des commandes suivantes pour répertorier toutes les HAP (HostingAutoScalingPolicies) créées à l'aide de l'opérateur HAP.

Pour l'installation à portée de cluster :

kubectl get hap

Pour l'installation à portée de l'espace de noms :

kubectl get hap -n <NAMESPACE>

Votre sortie doit ressembler à ce qui suit :

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

Utilisez la commande suivante pour vérifier l'état de votre HostingAutoScalingPolicy (HAP).

kubectl get hap <job-name>

L'une des valeurs suivantes est renvoyée :

  • Reconciling – Certains types d'erreurs affichent l'état Reconciling au lieu de Error. Certains exemples sont des erreurs côté serveur et des points de terminaison à l'état Creating ou Updating. Vérifiez le champ Additional dans les journaux d'état ou d'opérateur pour plus d'informations.

  • Created

  • Error

Pour afficher le point de terminaison de scalabilité automatique auquel vous avez appliqué la politique
  1. Ouvrez la console Amazon SageMaker AI à l’adresse https://console.aws.amazon.com/sagemaker/.

  2. Dans le panneau latéral gauche, développez Inférence (Inférence).

  3. Choisissez Endpoints (Points de terminaison).

  4. Sélectionnez le nom du point de terminaison qui vous intéresse.

  5. Faites défiler jusqu'à la section Endpoint runtime settings (Paramètres d'exécution du point de terminaison).

Description d'HostingAutoScalingPolicy

Utilisez la commande suivante pour obtenir plus de détails sur une HostingAutoScalingPolicy (HAP). Ces commandes sont généralement utilisées pour déboguer un problème ou vérifier les ID de ressource (combinaisons de noms de point de terminaison et de noms de variante) d'un HAP.

kubectl describe hap <job-name>

Mise à jour d'HostingAutoScalingPolicy

L'opérateur HostingAutoScalingPolicy (HAP) prend en charge les mises à jour. Vous pouvez modifier votre spécification YAML afin de modifier les valeurs, puis appliquer à nouveau la politique. L'opérateur HAP supprime la politique existante et applique la nouvelle.

Suppression d'HostingAutoScalingPolicy

Utilisez l'une des commandes suivantes pour supprimer une politique HostingAutoScalingPolicy (HAP).

Pour l'installation à portée de cluster :

kubectl delete hap hap-predefined

Pour l'installation à portée de l'espace de noms :

kubectl delete hap hap-predefined -n <NAMESPACE>

Cette commande supprime la politique de mise à l'échelle et annule l'enregistrement de la cible de mise à l'échelle de Kubernetes. Cette commande renvoie le résultat suivant :

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

Mise à jour ou suppression d'un point de terminaison avec une HostingAutoScalingPolicy

Pour mettre à jour un point de terminaison qui a une HostingAutoScalingPolicy (HAP), utilisez la commande kubectl delete pour supprimer l'HAP, mettre à jour le point de terminaison, puis réappliquer l'HAP.

Pour supprimer un point de terminaison qui possède une HAP, utilisez la commande kubectl delete pour supprimer l’HAP avant de supprimer le point de terminaison.