Começando a usar AWS Batch a SageMaker IA - AWS Batch

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Começando a usar AWS Batch a SageMaker IA

AWS Batch os trabalhos de serviço permitem que você envie trabalhos de SageMaker treinamento por meio de filas de AWS Batch trabalhos com recursos de agendamento, priorização e enfileiramento. Este tutorial demonstra como configurar e executar um trabalho de SageMaker treinamento simples usando trabalhos AWS Batch de serviço.

Visão geral

Este tutorial demonstra como configurar trabalhos de AWS Batch serviço para trabalhos SageMaker de treinamento usando o. AWS CLI

Público-alvo

Este tutorial foi desenvolvido para cientistas de dados e desenvolvedores responsáveis por configurar e executar trabalhos de treinamento de aprendizado de máquina em grande escala.

Características usadas

Este tutorial mostra como usar o AWS CLI para:

  • Crie um ambiente de serviço para trabalhos SageMaker de treinamento

  • Crie uma fila SageMaker de trabalhos de treinamento

  • Envie trabalhos de serviço usando a SubmitServiceJob API

  • Monitore o status do trabalho e visualize os resultados

  • CloudWatch Registros de acesso para trabalhos de treinamento

Tempo necessário

Ele levará aproximadamente 15 minutos para ser concluído.

Restrições regionais

Este tutorial pode ser concluído em qualquer AWS região em que tanto a IA AWS Batch quanto a SageMaker IA estejam disponíveis.

Custos de uso de recursos

Não há cobrança pela criação de uma AWS conta. No entanto, ao implementar essa solução, você pode incorrer em custos com os seguintes recursos:

Descrição Custo (dólares dos EUA)
SageMaker Instâncias de treinamento de IA Você paga por cada instância de treinamento de SageMaker IA usada. Para obter mais informações sobre preços, consulte Preços do SageMaker AI.
Armazenamento Amazon S3 Custo mínimo para armazenar resultados de trabalhos de treinamento. Para obter mais informações, consulte Definição de preço do Amazon S3.

Pré-requisitos

Antes de iniciar este tutorial, você deve instalar e configurar as seguintes ferramentas e recursos necessários para criar e gerenciar tanto os recursos de IA AWS Batch quanto os recursos de SageMaker IA.

  • AWS CLI— Uma ferramenta de linha de comando para trabalhar com AWS serviços, incluindo AWS Batch SageMaker IA. Este guia exige que você use a versão 2.8.6 ou posterior. Para obter mais informações, consulte Como instalar, atualizar e desinstalar a AWS CLI no Guia do usuário da AWS Command Line Interface . Depois de instalar o AWS CLI, recomendamos que você também o configure. Para obter mais informações, consulte Configuração rápida com o aws configure no Manual do usuário do AWS Command Line Interface .

Etapa 1: criar uma função de execução de SageMaker IA

SageMaker A IA usa funções de execução para realizar operações em seu nome usando outros AWS serviços. Você deve criar uma função de execução e conceder permissões de SageMaker IA para usar os serviços e recursos necessários para trabalhos de treinamento. Use a política AmazonSageMakerFullAccess gerenciada, pois ela inclui permissões para o Amazon S3.

nota

Use as instruções a seguir para criar a função de execução de SageMaker IA para este tutorial.

Antes de criar uma função de execução para seu ambiente de produção, recomendamos que você analise Como usar funções de execução de SageMaker IA no guia do desenvolvedor de SageMaker IA.

  1. Crie o perfil do IAM.

    Crie um arquivo JSON chamado sagemaker-trust-policy.json com a seguinte política de confiança:

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

    Crie a função do IAM usando a política de confiança:

    aws iam create-role \ --role-name SageMakerExecutionRole \ --assume-role-policy-document file://sagemaker-trust-policy.json \ --description "Execution role for SageMaker training jobs"
  2. Anexe políticas gerenciadas

    Anexe as políticas gerenciadas necessárias à função:

    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. Observe o ARN da função

    Obtenha o ARN da função, que você precisará em etapas posteriores:

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

    Salve esse ARN conforme você o usará ao criar sua carga útil de trabalho de treinamento.

Etapa 2: Crie seu ambiente de serviço

Um ambiente de serviço define as restrições de capacidade para trabalhos de SageMaker treinamento. O ambiente de serviço encapsula o número máximo de instâncias de treinamento que podem ser executadas simultaneamente.

Importante

Quando você cria seu primeiro ambiente de serviço para SageMaker treinamento, cria AWS Batch automaticamente uma função vinculada ao serviço chamada AWSServiceRoleForAWSBatchWithSagemaker em sua conta. Essa função permite AWS Batch colocar em fila e gerenciar trabalhos SageMaker de treinamento em seu nome. Para obter mais informações sobre essa função vinculada ao serviço e suas permissões, consulte. Usando funções para AWS Batch com SageMaker IA

Crie um ambiente de serviço que possa lidar com até 5 instâncias:

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

Saída:

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

Verifique se seu ambiente de serviço foi criado com sucesso:

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

Saída:

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

Para obter mais informações sobre ambientes de serviço, consulteAmbientes de serviço para AWS Batch.

Etapa 3: Crie sua fila SageMaker de trabalhos

Uma fila de SageMaker trabalhos gerencia o agendamento e a execução dos trabalhos de serviço. Os trabalhos enviados para essa fila serão enviados para seu ambiente de serviço com base na capacidade disponível.

Crie uma fila SageMaker de trabalhos de treinamento:

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

Saída:

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

Verifique se sua fila de trabalhos foi criada com sucesso:

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

Saída:

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

Para obter mais informações sobre filas de SageMaker trabalhos, consulteCrie uma fila SageMaker de trabalhos de treinamento em AWS Batch.

Etapa 4: criar e enviar um trabalho de treinamento

Agora você criará um trabalho de treinamento simples e o enviará para sua fila de trabalhos. Este exemplo usa um trabalho de treinamento básico do tipo “hello world” que demonstra a funcionalidade do trabalho de serviço.

Crie um arquivo chamado my_training_job.json com o conteúdo a seguir. your-account-idSubstitua pelo ID AWS da sua conta:

nota

S3OutputPathé necessário para criar o trabalho de SageMaker treinamento, mas os resultados deste tutorial não são armazenados no bucket do Amazon S3 e você pode usar o caminho no seguinte JSON. Em seu ambiente de produção, você precisará de um bucket Amazon S3 válido para armazenar a saída, se quiser.

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

Envie o trabalho de treinamento usando a 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

Saída:

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

Para obter mais informações sobre cargas de trabalho de serviço, consulteCargas úteis de trabalho de serviço em AWS Batch. Para obter mais informações sobre o envio de trabalhos de serviços, consulteEnvie um trabalho de serviço em AWS Batch.

Etapa 5: Monitorar o status do trabalho

Você pode monitorar seus trabalhos de treinamento usando o seguinte AWS Batch APIs: DescribeServiceJobListServiceJobs, GetJobQueueSnapshote. Esta seção mostra maneiras diferentes de verificar o status do trabalho e as informações da fila.

Veja os trabalhos em execução na sua fila:

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

Saída:

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

Veja as vagas que estão no RUNNABLE estado:

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

Tenha uma visão geral dos próximos trabalhos em sua fila:

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

Saída:

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

Pesquise vagas por nome:

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

Saída:

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

Para obter mais informações sobre o mapeamento do estado do trabalho, consulteMapeando AWS Batch o status do trabalho do serviço para o status de SageMaker IA.

Etapa 6: Exibir a saída do trabalho

Depois que seu trabalho for concluído, você poderá visualizar a saída e os registros por meio da SageMaker IA APIs. AWS Batch

Obtenha informações detalhadas sobre seu trabalho em AWS Batch:

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

Saída:

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

Esse comando retorna informações abrangentes do trabalho, incluindo o ARN do trabalho de SageMaker treinamento, que você pode usar para acessar o trabalho diretamente por meio SageMaker da IA:

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

Para ver os CloudWatch registros do seu trabalho de treinamento, primeiro obtenha o nome do fluxo de registros:

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

Saída:

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

Em seguida, recupere os registros usando o nome do fluxo de registros da resposta anterior:

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

Saída:

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

A saída do log mostra a mensagem “hello world” do seu trabalho de treinamento, confirmando que o trabalho foi executado com êxito.

Etapa 7: limpe os recursos do seu tutorial

Ao terminar o tutorial, limpe os recursos que você criou para evitar cobranças contínuas.

Primeiro, desative e exclua a fila de trabalhos:

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

Aguarde até que a fila de trabalhos seja desativada e, em seguida, exclua-a:

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

Em seguida, desative e exclua o ambiente de serviço:

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

Aguarde até que o ambiente de serviço seja desativado e, em seguida, exclua-o:

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

Recursos adicionais

Depois de concluir o tutorial, talvez você queira explorar os seguintes tópicos: