Commencer à utiliser AWS Batch l' SageMaker IA - AWS Batch

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Commencer à utiliser AWS Batch l' SageMaker IA

AWS Batch les tâches de service vous permettent de soumettre des tâches de SageMaker formation par le biais de files AWS Batch d'attente de tâches avec des fonctionnalités de planification, de priorisation et de mise en file d'attente. Ce didacticiel explique comment configurer et exécuter une tâche de SageMaker formation simple à l'aide de tâches AWS Batch de service.

Présentation

Ce didacticiel explique comment configurer des tâches AWS Batch de service pour des tâches de SageMaker formation à l'aide du AWS CLI.

Public visé

Ce didacticiel est destiné aux scientifiques des données et aux développeurs chargés de configurer et d'exécuter des tâches de formation en apprentissage automatique à grande échelle.

Fonctionnalités utilisées

Ce didacticiel vous montre comment utiliser le AWS CLI pour :

  • Créer un environnement de service pour les emplois SageMaker de formation

  • Création d'une file d'attente SageMaker de tâches de formation

  • Soumettre des tâches de service à l'aide de l'SubmitServiceJobAPI

  • Surveillez l'état des tâches et visualisez les résultats

  • CloudWatch Journaux d'accès aux offres de formation

Temps requis

Ce didacticiel dure environ 15 minutes.

Restrictions régionales

Ce didacticiel peut être suivi dans n'importe quelle AWS région où les deux AWS Batch et SageMaker l'IA sont disponibles.

Coûts d'utilisation des ressources

La création d'un AWS compte est gratuite. Cependant, la mise en œuvre de cette solution peut entraîner des coûts pour les ressources suivantes :

Description Coût (dollar américain)
SageMaker Instances de formation à l'IA Vous payez pour chaque instance d' SageMaker AI Training utilisée. Pour plus d'informations sur la tarification, consultez la section Tarification de l'SageMaker IA.
Stockage Amazon S3 Coût minimal pour le stockage des résultats des tâches de formation. Pour plus d’informations, consultez Tarification Amazon S3.

Prérequis

Avant de commencer ce didacticiel, vous devez installer et configurer les outils et ressources suivants dont vous avez besoin pour créer et gérer à la fois AWS Batch des ressources d' SageMaker intelligence artificielle.

  • AWS CLI— Un outil de ligne de commande pour travailler avec AWS les services, y compris AWS Batch l' SageMaker IA. Ce guide nécessite que vous utilisiez la version 2.8.6 ou ultérieure. Pour plus d'informations, consultez la section Installation, mise à jour et désinstallation du AWS CLI dans le guide de l'AWS Command Line Interface utilisateur. Après l'avoir installé AWS CLI, nous vous recommandons de le configurer également. Pour plus d'informations, consultez la section Configuration rapide avec aws configure dans le Guide de AWS Command Line Interface l'utilisateur.

Étape 1 : Création d'un rôle d'exécution SageMaker AI

SageMaker L'IA utilise des rôles d'exécution pour effectuer des opérations en votre nom à l'aide d'autres AWS services. Vous devez créer un rôle d'exécution et accorder à l' SageMaker IA les autorisations nécessaires pour utiliser les services et les ressources nécessaires aux tâches de formation. Utilisez la politique AmazonSageMakerFullAccess gérée car elle inclut des autorisations pour Amazon S3.

Note

Suivez les instructions ci-dessous pour créer le rôle d'exécution SageMaker AI pour ce didacticiel.

Avant de créer un rôle d'exécution pour votre environnement de production, nous vous recommandons de consulter le guide du développeur SageMaker AI intitulé Comment utiliser les rôles d'exécution de l'SageMaker IA.

  1. Création du rôle IAM

    Créez un fichier JSON nommé sagemaker-trust-policy.json avec la politique de confiance suivante :

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "sagemaker.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

    Créez le rôle IAM à l'aide de la politique de confiance :

    aws iam create-role \ --role-name SageMakerExecutionRole \ --assume-role-policy-document file://sagemaker-trust-policy.json \ --description "Execution role for SageMaker training jobs"
  2. Joindre des politiques gérées

    Associez les politiques gérées requises au rôle :

    aws iam attach-role-policy \ --role-name SageMakerExecutionRole \ --policy-arn arn:aws:iam::aws:policy/AmazonSageMakerFullAccess
    aws iam attach-role-policy \ --role-name SageMakerExecutionRole \ --policy-arn arn:aws:iam::aws:policy/AmazonS3FullAccess
  3. Notez le rôle ARN

    Obtenez l'ARN du rôle, dont vous aurez besoin ultérieurement :

    aws iam get-role --role-name SageMakerExecutionRole --query 'Role.Arn' --output text

    Enregistrez cet ARN tel que vous l'utiliserez lors de la création de la charge utile de votre tâche de formation.

Étape 2 : Création de votre environnement de service

Un environnement de service définit les contraintes de capacité pour les postes de SageMaker formation. L'environnement de service encapsule le nombre maximum d'instances de formation pouvant être exécutées simultanément.

Important

Lorsque vous créez votre premier environnement de service pour SageMaker Training, un rôle lié au service est AWS Batch automatiquement créé AWSServiceRoleForAWSBatchWithSagemaker dans votre compte. Ce rôle permet de AWS Batch mettre en file d'attente et de gérer les tâches de SageMaker formation en votre nom. Pour plus d'informations sur ce rôle lié à un service et ses autorisations, consultez. Utiliser les rôles pour utiliser AWS Batch l' SageMaker IA

Créez un environnement de service capable de gérer jusqu'à 5 instances :

aws batch create-service-environment \ --service-environment-name TutorialServiceEnvironment \ --service-environment-type SAGEMAKER_TRAINING \ --capacity-limits capacityUnit=NUM_INSTANCES,maxCapacity=5

Sortie :

{ "serviceEnvironmentName": "TutorialServiceEnvironment", "serviceEnvironmentArn": "arn:aws:batch:your-region:your-account-id:service-environment/TutorialServiceEnvironment" }

Vérifiez que votre environnement de service a bien été créé :

aws batch describe-service-environments --service-environments TutorialServiceEnvironment

Sortie :

{ "serviceEnvironments": [ { "serviceEnvironmentName": "TutorialServiceEnvironment", "serviceEnvironmentArn": "arn:aws:batch:your-region:your-account-id:service-environment/TutorialServiceEnvironment", "serviceEnvironmentType": "SAGEMAKER_TRAINING", "state": "ENABLED", "status": "VALID", "capacityLimits": [ { "maxCapacity": 5, "capacityUnit": "NUM_INSTANCES" } ], "tags": {} } ] }

Pour plus d'informations sur les environnements de service, consultezEnvironnements de service pour AWS Batch.

Étape 3 : Créez votre file SageMaker d'attente de tâches

Une file d'attente de SageMaker tâches gère la planification et l'exécution des tâches de service. Les tâches soumises à cette file d'attente seront envoyées à votre environnement de service en fonction de la capacité disponible.

Créez une file d'attente SageMaker de tâches de formation :

aws batch create-job-queue \ --job-queue-name my-sm-training-fifo-jq \ --job-queue-type SAGEMAKER_TRAINING \ --priority 1 \ --service-environment-order order=1,serviceEnvironment=TutorialServiceEnvironment

Sortie :

{ "jobQueueName": "my-sm-training-fifo-jq", "jobQueueArn": "arn:aws:batch:your-region:your-account-id:job-queue/my-sm-training-fifo-jq" }

Vérifiez que votre file d'attente de tâches a bien été créée :

aws batch describe-job-queues --job-queues my-sm-training-fifo-jq

Sortie :

{ "jobQueues": [ { "jobQueueName": "my-sm-training-fifo-jq", "jobQueueArn": "arn:aws:batch:your-region:your-account-id:job-queue/my-sm-training-fifo-jq", "state": "ENABLED", "status": "VALID", "statusReason": "JobQueue Healthy", "priority": 1, "computeEnvironmentOrder": [], "serviceEnvironmentOrder": [ { "order": 1, "serviceEnvironment": "arn:aws:batch:your-region:your-account-id:service-environment/TutorialServiceEnvironment" } ], "jobQueueType": "SAGEMAKER_TRAINING", "tags": {} } ] }

Pour plus d'informations sur les files SageMaker d'attente de tâches, consultezCréez une file d'attente SageMaker de tâches de formation dans AWS Batch.

Étape 4 : Création et soumission d'un poste de formation

Vous allez maintenant créer une tâche de formation simple et la soumettre à votre liste d'offres d'emploi. Cet exemple utilise une tâche de formation de base « Bonjour tout le monde » qui illustre les fonctionnalités d'une tâche de service.

Créez un fichier nommé my_training_job.json avec le contenu suivant. Remplacez your-account-id par votre identifiant de AWS compte :

Note

S3OutputPathest nécessaire pour créer la tâche de SageMaker formation, mais les résultats de ce didacticiel ne sont pas stockés dans le compartiment Amazon S3 et vous pouvez utiliser le chemin dans le JSON suivant. Dans votre environnement de production, vous aurez besoin d'un compartiment Amazon S3 valide pour y stocker la sortie si vous le souhaitez.

{ "TrainingJobName": "my-simple-training-job", "RoleArn": "arn:aws:iam::your-account-id:role/SageMakerExecutionRole", "AlgorithmSpecification": { "TrainingInputMode": "File", "TrainingImage": "763104351884.dkr.ecr.us-west-2.amazonaws.com/pytorch-training:2.0.0-cpu-py310", "ContainerEntrypoint": [ "echo", "hello world" ] }, "ResourceConfig": { "InstanceType": "ml.c5.xlarge", "InstanceCount": 1, "VolumeSizeInGB": 1 }, "OutputDataConfig": { "S3OutputPath": "s3://your-s3-bucket/output" }, "StoppingCondition": { "MaxRuntimeInSeconds": 30 } }

Soumettez le poste de formation à l'aide de l'SubmitServiceJobAPI :

aws batch submit-service-job \ --job-queue my-sm-training-fifo-jq \ --job-name my-batch-sm-job \ --service-job-type SAGEMAKER_TRAINING \ --retry-strategy attempts=1 \ --timeout-config attemptDurationSeconds=60 \ --service-request-payload file://my_training_job.json

Sortie :

{ "jobArn": "arn:aws:batch:your-region:your-account-id:service-job/your-job-id", "jobName": "my-batch-sm-job", "jobId": "your-job-id" }

Pour plus d'informations sur les charges utiles des tâches de service, consultezCharges utiles des tâches de maintenance dans AWS Batch. Pour plus d'informations sur la soumission de tâches de service, consultezSoumettre une offre d'emploi dans le secteur des services AWS Batch.

Étape 5 : Surveiller l'état du travail

Vous pouvez suivre vos tâches de formation à l'aide des AWS Batch APIs méthodes suivantes : DescribeServiceJobListServiceJobs, et GetJobQueueSnapshot. Cette section présente différentes méthodes pour vérifier l'état des tâches et les informations relatives à la file d'attente.

Consultez les tâches en cours dans votre file d'attente :

aws batch list-service-jobs \ --job-queue my-sm-training-fifo-jq --job-status RUNNING

Sortie :

{ "jobSummaryList": [ { "latestAttempt": { "serviceResourceId": { "name": "TrainingJobArn", "value": "arn:aws:sagemaker:your-region:your-account-id:training-job/AWSBatch<my-simple-training-job><your-attempt-id>" } }, "createdAt": 1753718760, "jobArn": "arn:aws:batch:your-region:your-account-id:service-job/your-job-id", "jobId": "your-job-id", "jobName": "my-batch-sm-job", "serviceJobType": "SAGEMAKER_TRAINING", "status": "RUNNING", "startedAt": 1753718820 } ] }

Afficher les offres d'emploi disponibles dans l'RUNNABLEÉtat :

aws batch list-service-jobs \ --job-queue my-sm-training-fifo-jq --job-status RUNNABLE

Obtenez un aperçu des tâches à venir dans votre file d'attente :

aws batch get-job-queue-snapshot --job-queue my-sm-training-fifo-jq

Sortie :

{ "frontOfQueue": { "jobs": [ { "jobArn": "arn:aws:batch:your-region:your-account-id:service-job/your-job-id", "earliestTimeAtPosition": 1753718880 }, { "jobArn": "arn:aws:batch:your-region:your-account-id:service-job/your-job-id-2", "earliestTimeAtPosition": 1753718940 } ], "lastUpdatedAt": 1753718970 } }

Rechercher des offres d'emploi par nom :

aws batch list-service-jobs \ --job-queue my-sm-training-fifo-jq \ --filters name=JOB_NAME,values="my-batch-sm-job"

Sortie :

{ "jobSummaryList": [ { "latestAttempt": { "serviceResourceId": { "name": "TrainingJobArn", "value": "arn:aws:sagemaker:your-region:your-account-id:training-job/AWSBatch<my-simple-training-job><your-attempt-id>" } }, "createdAt": 1753718760, "jobArn": "arn:aws:batch:your-region:your-account-id:service-job/your-job-id", "jobId": "your-job-id", "jobName": "my-batch-sm-job", "serviceJobType": "SAGEMAKER_TRAINING", "status": "RUNNING" } ] }

Pour plus d'informations sur le mappage de l'état des tâches, consultezMappage AWS Batch de l'état de la tâche du service avec SageMaker le statut de.

Étape 6 : Afficher le résultat de la tâche

Une fois votre tâche terminée, vous pouvez consulter ses résultats et ses journaux grâce à l' SageMaker IA APIs. AWS Batch

Obtenez des informations détaillées sur votre travail auprès de AWS Batch :

aws batch describe-service-job \ --job-id your-job-id

Sortie :

{ "attempts": [ { "serviceResourceId": { "name": "TrainingJobArn", "value": "arn:aws:sagemaker:your-region:your-account-id:training-job/AWSBatch<my-simple-training-job><your-attempt-id>" }, "startedAt": 1753718820, "stoppedAt": 1753718880, "statusReason": "Received status from SageMaker: Training job completed" } ], "createdAt": 1753718760, "jobArn": "arn:aws:batch:your-region:your-account-id:service-job/your-job-id", "jobId": "your-job-id", "jobName": "my-batch-sm-job", "jobQueue": "arn:aws:batch:your-region:your-account-id:job-queue/my-sm-training-fifo-jq", "latestAttempt": { "serviceResourceId": { "name": "TrainingJobArn", "value": "arn:aws:sagemaker:your-region:your-account-id:training-job/AWSBatch<my-simple-training-job><your-attempt-id>" } }, "retryStrategy": { "attempts": 1, "evaluateOnExit": [] }, "serviceRequestPayload": "your-training-job-request-json", "serviceJobType": "SAGEMAKER_TRAINING", "startedAt": 1753718820, "status": "SUCCEEDED", "statusReason": "Received status from SageMaker: Training job completed", "stoppedAt": 1753718880, "tags": {}, "timeoutConfig": { "attemptDurationSeconds": 60 } }

Cette commande renvoie des informations complètes sur la tâche, y compris l'ARN de la tâche de SageMaker formation, que vous pouvez utiliser pour accéder à la tâche directement via l' SageMaker IA :

aws sagemaker describe-training-job \ --training-job-name AWSBatch<my-simple-training-job><your-attempt-id>

Pour consulter les CloudWatch journaux relatifs à votre tâche de formation, obtenez d'abord le nom du flux de journaux :

aws logs describe-log-streams \ --log-group-name /aws/sagemaker/TrainingJobs \ --log-stream-name-prefix AWSBatchmy-simple-training-job

Sortie :

{ "logStreams": [ { "logStreamName": "your-log-stream-name", "creationTime": 1753718830, "firstEventTimestamp": 1753718840, "lastEventTimestamp": 1753718850, "lastIngestionTime": 1753718860, "uploadSequenceToken": upload-sequence-token, "arn": "arn:aws:logs:your-region:your-account-id:log-group:/aws/sagemaker/TrainingJobs:log-stream:AWSBatch<my-simple-training-job><your-attempt-id>/algo-1-algo-id", "storedBytes": 0 } ] }

Récupérez ensuite les journaux en utilisant le nom du flux de journaux indiqué dans la réponse précédente :

aws logs get-log-events \ --log-group-name /aws/sagemaker/TrainingJobs \ --log-stream-name your-log-stream-name

Sortie :

{ "events": [ { "timestamp": 1753718845, "message": "hello world", "ingestionTime": 1753718865 } ], "nextForwardToken": "next-forward-token", "nextBackwardToken": "next-backward-token" }

La sortie du journal affiche le message « Bonjour tout le monde » envoyé par votre tâche de formation, confirmant que la tâche a été exécutée correctement.

Étape 7 : Nettoyez les ressources de votre didacticiel

Lorsque vous avez terminé le didacticiel, nettoyez les ressources que vous avez créées pour éviter des frais récurrents.

Tout d'abord, désactivez et supprimez la file d'attente des tâches :

aws batch update-job-queue \ --job-queue my-sm-training-fifo-jq \ --state DISABLED

Attendez que la file d'attente des tâches soit désactivée, puis supprimez-la :

aws batch delete-job-queue \ --job-queue my-sm-training-fifo-jq

Ensuite, désactivez et supprimez l'environnement de service :

aws batch update-service-environment \ --service-environment TutorialServiceEnvironment \ --state DISABLED

Attendez que l'environnement de service soit désactivé, puis supprimez-le :

aws batch delete-service-environment \ --service-environment TutorialServiceEnvironment

Ressources supplémentaires

Une fois le didacticiel terminé, vous souhaiterez peut-être explorer les sujets suivants :