Opérateur ProcessingJob - Amazon SageMaker

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, veuillez consulter CreateProcessingJob.

Création de 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 my-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://<my-bucket>/mnist_kmeans_example/output/ ... processingInputs: ... s3Input: s3Uri: s3://<my-bucket>/mnist_kmeans_example/processing_code/kmeans_preprocessing.py

    Le sagemaker-execution-role doit disposer d'autorisations pour que SageMaker 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, veuillez consulter Rôles SageMaker.

  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, veuillez consulter Delete a Processing Job.

É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 – État de la tâche de traitement SageMaker. Pour de plus amples informations, veuillez consulter 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.

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 pas de SageMaker. Si l'état de la tâche dans SageMaker est InProgress, elle est arrêtée. Les tâches de traitement qui sont arrêtées n'entraînent pas de frais pour les ressources SageMaker. 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 ne supprime pas la tâche de traitement. Les tâches arrêtées continuent de s'afficher dans la console SageMaker. La commande delete prend quelques minutes pour nettoyer les ressources de SageMaker.