Guida introduttiva all'intelligenza artificiale AWS Batch SageMaker - AWS Batch

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Guida introduttiva all'intelligenza artificiale AWS Batch SageMaker

AWS Batch i lavori di assistenza consentono di inviare lavori di SageMaker formazione tramite code di AWS Batch lavoro con funzionalità di pianificazione, prioritizzazione e messa in coda. Questo tutorial dimostra come configurare ed eseguire un semplice processo di formazione utilizzando i job di servizio. SageMaker AWS Batch

Panoramica

Questo tutorial illustra come configurare i lavori di AWS Batch servizio per i lavori di SageMaker formazione utilizzando. AWS CLI

Destinatari

Questo tutorial è progettato per data scientist e sviluppatori responsabili della creazione e dell'esecuzione di corsi di formazione sull'apprendimento automatico su larga scala.

Funzionalità utilizzate

Questo tutorial mostra come utilizzare il file AWS CLI per:

  • Creare un ambiente di servizio per i lavori di SageMaker formazione

  • Crea una coda SageMaker di lavori di formazione

  • Invia lavori di assistenza utilizzando l'API SubmitServiceJob

  • Monitora lo stato del lavoro e visualizza i risultati

  • Registri di CloudWatch accesso per i lavori di formazione

Tempo richiesto

Il completamento di questo tutorial richiede circa 15 minuti.

Restrizioni regionali

Questo tutorial può essere completato in qualsiasi AWS regione in cui siano disponibili AWS Batch sia l'IA che l' SageMaker intelligenza artificiale.

Costi di utilizzo delle risorse

La creazione di un AWS account è gratuita. Tuttavia, l'implementazione di questa soluzione potrebbe comportare costi per le seguenti risorse:

Descrizione Costo (dollari USA)
SageMaker Istanze di formazione basata sull'intelligenza artificiale Paghi per ogni istanza di SageMaker AI Training utilizzata. Per ulteriori informazioni sui prezzi, consulta SageMaker AI Pricing.
Archiviazione Amazon S3 Costo minimo per l'archiviazione dei risultati dei lavori di formazione. Per ulteriori informazioni, consulta Prezzi di Amazon S3.

Prerequisiti

Prima di iniziare questo tutorial, devi installare e configurare i seguenti strumenti e risorse necessari per creare e gestire sia AWS Batch le risorse di SageMaker intelligenza artificiale.

Fase 1: Creare un ruolo di esecuzione SageMaker AI

SageMaker L'intelligenza artificiale utilizza i ruoli di esecuzione per eseguire operazioni per tuo conto utilizzando altri AWS servizi. È necessario creare un ruolo di esecuzione e concedere all' SageMaker IA le autorizzazioni per utilizzare i servizi e le risorse necessari per i lavori di formazione. Utilizza la policy AmazonSageMakerFullAccess gestita in quanto include le autorizzazioni per Amazon S3.

Nota

Utilizza le seguenti istruzioni per creare il ruolo di esecuzione SageMaker AI per questo tutorial.

Prima di creare un ruolo di esecuzione per il tuo ambiente di produzione, ti consigliamo di leggere «Come usare i ruoli di esecuzione SageMaker AI» nella guida per sviluppatori SageMaker AI.

  1. Crea il ruolo IAM

    Crea un file JSON denominato sagemaker-trust-policy.json con la seguente politica di fiducia:

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

    Crea il ruolo IAM utilizzando la policy di fiducia:

    aws iam create-role \ --role-name SageMakerExecutionRole \ --assume-role-policy-document file://sagemaker-trust-policy.json \ --description "Execution role for SageMaker training jobs"
  2. Allega politiche gestite

    Allega le politiche gestite richieste al ruolo:

    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. Nota il ruolo ARN

    Ottieni il ruolo ARN, che ti servirà nei passaggi successivi:

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

    Salva questo ARN perché lo utilizzerai per creare il payload del tuo lavoro di formazione.

Fase 2: Crea il tuo ambiente di servizio

Un ambiente di servizio definisce i vincoli di capacità per i lavori di SageMaker formazione. L'ambiente di servizio incapsula il numero massimo di istanze di addestramento che possono essere eseguite contemporaneamente.

Importante

Quando crei il tuo primo ambiente di servizio per SageMaker Training, crea AWS Batch automaticamente un ruolo collegato al servizio chiamato nel tuo account. AWSServiceRoleForAWSBatchWithSagemaker Questo ruolo consente di AWS Batch mettere in coda e gestire i lavori di SageMaker formazione per tuo conto. Per ulteriori informazioni su questo ruolo collegato al servizio e sulle relative autorizzazioni, consulta. Utilizzo dei ruoli per AWS Batch l'intelligenza artificiale SageMaker

Crea un ambiente di servizio in grado di gestire fino a 5 istanze:

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

Output:

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

Verifica che l'ambiente di servizio sia stato creato correttamente:

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

Output:

{ "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": {} } ] }

Per ulteriori informazioni sugli ambienti di servizio, vedereAmbienti di servizio per AWS Batch.

Fase 3: Crea la tua coda SageMaker di lavoro

Una coda di SageMaker lavoro gestisce la pianificazione e l'esecuzione dei lavori di servizio. I lavori inviati a questa coda verranno inviati all'ambiente di servizio in base alla capacità disponibile.

Crea una coda per i lavori di SageMaker formazione:

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

Output:

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

Verifica che la tua coda di lavoro sia stata creata correttamente:

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

Output:

{ "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": {} } ] }

Per ulteriori informazioni sulle code di SageMaker lavoro, consulta. Crea una coda SageMaker di lavoro di formazione in AWS Batch

Fase 4: Creare e inviare un lavoro di formazione

Ora creerai un semplice lavoro di formazione e lo invierai alla tua lista di lavoro. Questo esempio utilizza un corso di formazione di base «hello world» che dimostra la funzionalità di Service Job.

Creare un archivio denominato my_training_job.json con i seguenti contenuti. Sostituisci your-account-id con l'ID AWS del tuo account:

Nota

S3OutputPathè necessario per creare il processo di SageMaker formazione, ma i risultati di questo tutorial non sono archiviati nel bucket Amazon S3 ed è possibile utilizzare il percorso nel seguente formato JSON. Nel tuo ambiente di produzione avrai bisogno di un bucket Amazon S3 valido per archiviare lì l'output, se lo desideri.

{ "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 } }

Invia il lavoro di formazione utilizzando 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

Output:

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

Per ulteriori informazioni sui payload dei lavori di assistenza, consultaCarichi utili per lavori di assistenza in AWS Batch. Per ulteriori informazioni sull'invio di lavori di assistenza, vedere. Invia un lavoro di assistenza in AWS Batch

Fase 5: Monitoraggio dello stato del lavoro

Puoi monitorare i tuoi lavori di formazione utilizzando quanto segue AWS Batch APIs: DescribeServiceJob, ListServiceJobs, e GetJobQueueSnapshot. Questa sezione mostra diversi modi per controllare lo stato dei lavori e le informazioni sulla coda.

Visualizza i lavori in esecuzione nella coda:

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

Output:

{ "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 } ] }

Visualizza i lavori che si trovano nello RUNNABLE stato:

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

Ottieni un'istantanea dei lavori imminenti in coda:

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

Output:

{ "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 } }

Cerca offerte di lavoro per nome:

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

Output:

{ "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" } ] }

Per ulteriori informazioni sulla mappatura dello stato del lavoro, vedereMappatura dello stato AWS Batch del lavoro del servizio allo stato dell' SageMaker IA.

Fase 6: Visualizzazione dell'output del lavoro

Una volta completato il lavoro, puoi visualizzarne l'output e i log sia tramite l'intelligenza artificiale AWS Batch . SageMaker APIs

Ottieni informazioni dettagliate sul tuo lavoro da: AWS Batch

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

Output:

{ "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 } }

Questo comando restituisce informazioni complete sul lavoro, incluso l'ARN del lavoro di SageMaker formazione, che puoi utilizzare per accedere al lavoro direttamente tramite SageMaker AI:

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

Per visualizzare CloudWatch i log del tuo processo di formazione, per prima cosa ottieni il nome del flusso di log:

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

Output:

{ "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 } ] }

Quindi recupera i log utilizzando il nome del flusso di log della risposta precedente:

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

Output:

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

L'output del registro mostra il messaggio «hello world» del processo di formazione, che conferma che il processo è stato eseguito correttamente.

Passaggio 7: ripulisci le risorse del tutorial

Quando hai finito con il tutorial, pulisci le risorse che hai creato per evitare addebiti continui.

Innanzitutto, disabilita ed elimina la coda dei lavori:

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

Attendi che la coda dei lavori sia disabilitata, quindi eliminala:

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

Quindi, disabilita ed elimina l'ambiente di servizio:

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

Attendi che l'ambiente di servizio sia disabilitato, quindi eliminalo:

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

Risorse aggiuntive

Dopo aver completato il tutorial, potresti voler esplorare i seguenti argomenti: