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.
Sumário
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.
-
Crie o perfil do IAM.
Crie um arquivo JSON chamado
sagemaker-trust-policy.json
com a seguinte política de confiança: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"
-
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
-
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
com o conteúdo a seguir. my_training_job.json
your-account-id
Substitua 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-namemy-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 AWSBatch
my-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:
-
Recomendamos usar o PySDK para criar e enviar trabalhos de serviço para sua fila de trabalhos, pois o PySDK tem classes auxiliares e utilitários. Para ver um exemplo de uso do PySDK, consulte exemplos de SageMaker IA
em. GitHub -
Saiba mais sobre Empregos de serviços em AWS Batch.
-
Explore configurações Cargas úteis de trabalho de serviço em AWS Batch de trabalho de treinamento mais complexas.
-
Saiba mais sobre Envie um trabalho de serviço em AWS Batch a
SubmitServiceJob
API. -
Mapeando AWS Batch o status do trabalho do serviço para o status de SageMaker IARevise para entender as transições de estado do trabalho.
-
Visite a documentação do SageMaker AI Python SDK
para ver formas mais completas de criar e enviar trabalhos de treinamento SageMaker usando Python. -
Explore SageMakerexemplos de notebooks
para fluxos de trabalho de aprendizado de máquina mais complexos.