Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Primeros pasos con AWS Batch la SageMaker IA
AWS Batch Los trabajos de servicio le permiten enviar trabajos de SageMaker formación a través de colas de AWS Batch trabajos con funciones de programación, priorización y preparación de colas. En este tutorial se muestra cómo configurar y ejecutar un trabajo de SageMaker formación sencillo mediante AWS Batch trabajos de servicio.
Contenido
Descripción general
En este tutorial se muestra cómo configurar los trabajos AWS Batch de servicio para los trabajos de SageMaker formación mediante el AWS CLI.
- Público objetivo
-
Este tutorial está diseñado para científicos de datos y desarrolladores responsables de configurar y ejecutar trabajos de formación en aprendizaje automático a gran escala.
- Funciones utilizadas
-
En este tutorial se muestra cómo utilizarlas AWS CLI para:
-
Crear un entorno de servicios para los trabajos SageMaker de formación
-
Cree una cola SageMaker de trabajos de formación
-
Envíe trabajos de servicio mediante la API
SubmitServiceJob
-
Supervise el estado de los trabajos y visualice los resultados
-
Acceda a CloudWatch los registros para los trabajos de formación
-
- Tiempo requerido
-
Debe tardar aproximadamente 15 minutos en completar este tutorial.
- Restricciones regionales
-
Este tutorial se puede completar en cualquier AWS región en la que estén disponibles AWS Batch tanto la SageMaker IA como la IA.
- Costos de uso de recursos
-
La creación de una AWS cuenta no conlleva ningún cargo. Sin embargo, al implementar esta solución, es posible que incurra en costos por los siguientes recursos:
Descripción Costo (dólares estadounidenses) SageMaker Instancias de formación en IA Usted paga por cada instancia de entrenamiento de SageMaker IA utilizada. Para obtener más información sobre los precios, consulta SageMaker AI Pricing . Almacenamiento en Amazon S3 Coste mínimo de almacenamiento de los resultados de los trabajos de formación. Para obtener más información, consulte Precios de Amazon S3 .
Requisitos previos
Antes de comenzar este tutorial, debe instalar y configurar las siguientes herramientas y recursos que necesita para crear y administrar tanto AWS Batch los recursos de SageMaker IA como los siguientes.
-
AWS CLI— Una herramienta de línea de comandos para trabajar con AWS servicios, incluida AWS Batch la SageMaker IA. Esta guía requiere que utilices la versión 2.8.6 o posterior. Para obtener más información, consulte Instalar, actualizar y desinstalar la AWS CLI en la Guía del usuario de AWS Command Line Interface . Tras instalar el AWS CLI, le recomendamos que también lo configure. Para obtener más información, consulte Configuración rápida con
aws configure
en la Guía del usuario de AWS Command Line Interface .
Paso 1: Crear un rol de ejecución de SageMaker IA
SageMaker La IA utiliza las funciones de ejecución para realizar operaciones en su nombre mediante otros AWS
servicios. Debe crear un rol de ejecución y conceder permisos a la SageMaker IA para usar los servicios y recursos necesarios para los trabajos de formación. Utilice la política AmazonSageMakerFullAccess
gestionada, ya que incluye permisos para Amazon S3.
nota
Siga las instrucciones siguientes para crear el rol de ejecución de SageMaker IA para este tutorial.
Antes de crear una función de ejecución para su entorno de producción, le recomendamos que consulte la guía Cómo utilizar las funciones de ejecución de SageMaker IA en la guía para desarrolladores de SageMaker IA.
-
Creación del rol de IAM
Crea un archivo JSON
sagemaker-trust-policy.json
con el nombre de la siguiente política de confianza:{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "sagemaker.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
Cree el rol de IAM mediante la política de confianza:
aws iam create-role \ --role-name SageMakerExecutionRole \ --assume-role-policy-document file://sagemaker-trust-policy.json \ --description "Execution role for SageMaker training jobs"
-
Adjunte políticas gestionadas
Adjunte las políticas administradas necesarias al rol:
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
-
Tenga en cuenta la función ARN
Obtenga el rol ARN, que necesitará en pasos posteriores:
aws iam get-role --role-name SageMakerExecutionRole --query 'Role.Arn' --output text
Guarde este ARN, ya que lo usará al crear la carga útil de su trabajo de entrenamiento.
Paso 2: Cree su entorno de servicio
Un entorno de servicios define las limitaciones de capacidad para los trabajos de SageMaker formación. El entorno de servicio encapsula el número máximo de instancias de formación que se pueden ejecutar simultáneamente.
importante
Cuando crea su primer entorno de servicios para la SageMaker formación, crea AWS Batch
automáticamente un rol vinculado al servicio llamado AWSServiceRoleForAWSBatchWithSagemaker
en su cuenta. Esta función te permite AWS Batch poner en cola los trabajos de SageMaker formación y gestionarlos en tu nombre. Para obtener más información sobre este rol vinculado a un servicio y sus permisos, consulte. Uso de roles para la IA AWS Batch SageMaker
Cree un entorno de servicios que pueda gestionar hasta 5 instancias:
aws batch create-service-environment \ --service-environment-name
TutorialServiceEnvironment
\ --service-environment-type SAGEMAKER_TRAINING \ --capacity-limits capacityUnit=NUM_INSTANCES,maxCapacity=5
Salida:
{ "serviceEnvironmentName": "
TutorialServiceEnvironment
", "serviceEnvironmentArn": "arn:aws:batch:your-region
:your-account-id
:service-environment/TutorialServiceEnvironment
" }
Compruebe que el entorno de servicio se haya creado correctamente:
aws batch describe-service-environments --service-environments
TutorialServiceEnvironment
Salida:
{ "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 obtener más información sobre los entornos de servicio, consulteEntornos de servicio para AWS Batch.
Paso 3: Cree su cola de SageMaker trabajos
Una cola de SageMaker trabajos gestiona la programación y la ejecución de los trabajos de servicio. Los trabajos enviados a esta cola se enviarán a su entorno de servicio en función de la capacidad disponible.
Cree una cola de trabajos SageMaker de formación:
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
Salida:
{ "jobQueueName": "
my-sm-training-fifo-jq
", "jobQueueArn": "arn:aws:batch:your-region
:your-account-id
:job-queue/my-sm-training-fifo-jq
" }
Compruebe que la cola de trabajos se haya creado correctamente:
aws batch describe-job-queues --job-queues
my-sm-training-fifo-jq
Salida:
{ "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 obtener más información sobre las colas de SageMaker trabajos, consulte. Cree una cola SageMaker de trabajos de formación en AWS Batch
Paso 4: Crear y enviar un trabajo de formación
Ahora crearás un trabajo de formación sencillo y lo enviarás a tu lista de trabajos. En este ejemplo, se utiliza un trabajo de formación básico de «hola mundo» que demuestra la funcionalidad del trabajo de servicio.
Cree un archivo llamado
con el siguiente contenido. my_training_job.json
your-account-id
Sustitúyalo por tu ID de AWS
cuenta:
nota
S3OutputPath
es necesario para crear el trabajo de SageMaker formación, pero los resultados de este tutorial no se almacenan en el bucket de Amazon S3 y puede utilizar la ruta en el siguiente JSON. En su entorno de producción, necesitará un bucket de Amazon S3 válido para almacenar la salida allí si así lo desea.
{ "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 } }
Envíe el trabajo de formación mediante la 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
Salida:
{ "jobArn": "arn:aws:batch:
your-region
:your-account-id
:service-job/your-job-id
", "jobName": "my-batch-sm-job
", "jobId": "your-job-id
" }
Para obtener más información sobre las cargas útiles de los trabajos de servicio, consulteCargas útiles de trabajos de servicio en AWS Batch. Para obtener más información sobre el envío de trabajos de servicio, consulteEnvíe un trabajo de servicio en AWS Batch.
Paso 5: Supervisar el estado del trabajo
Puede supervisar sus trabajos de formación mediante lo siguiente AWS Batch APIs: DescribeServiceJobListServiceJobs, y GetJobQueueSnapshot. En esta sección se muestran diferentes formas de comprobar el estado de los trabajos y la información de las colas.
Vea los trabajos en ejecución de su cola:
aws batch list-service-jobs \ --job-queue
my-sm-training-fifo-jq
--job-status RUNNING
Salida:
{ "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 } ] }
Vea los trabajos que se encuentran en el RUNNABLE
estado:
aws batch list-service-jobs \ --job-queue
my-sm-training-fifo-jq
--job-status RUNNABLE
Obtenga una instantánea de los próximos trabajos en espera:
aws batch get-job-queue-snapshot --job-queue
my-sm-training-fifo-jq
Salida:
{ "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 } }
Busque trabajos por nombre:
aws batch list-service-jobs \ --job-queue
my-sm-training-fifo-jq
\ --filters name=JOB_NAME,values="my-batch-sm-job
"
Salida:
{ "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 obtener más información sobre el mapeo del estado de los trabajos, consulteAsignar el estado del trabajo del AWS Batch servicio al estado de la SageMaker IA.
Paso 6: Ver el resultado del trabajo
Una vez que finalice su trabajo, podrá ver su resultado y sus registros a través de la SageMaker IA APIs. AWS Batch
Obtenga información detallada sobre su trabajo en AWS Batch:
aws batch describe-service-job \ --job-id
your-job-id
Salida:
{ "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 } }
Este comando devuelve información completa sobre el trabajo, incluido el SageMaker ARN del trabajo de formación, que puede utilizar para acceder al trabajo directamente a través SageMaker de la IA:
aws sagemaker describe-training-job \ --training-job-name AWSBatch
<my-simple-training-job>
<your-attempt-id>
Para ver los CloudWatch registros de tu trabajo de formación, primero obtén el nombre del flujo de registro:
aws logs describe-log-streams \ --log-group-name /aws/sagemaker/TrainingJobs \ --log-stream-name-prefix AWSBatch
my-simple-training-job
Salida:
{ "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 } ] }
A continuación, recupere los registros con el nombre del flujo de registro de la respuesta anterior:
aws logs get-log-events \ --log-group-name /aws/sagemaker/TrainingJobs \ --log-stream-name
your-log-stream-name
Salida:
{ "events": [ { "timestamp": 1753718845, "message": "hello world", "ingestionTime": 1753718865 } ], "nextForwardToken": "
next-forward-token
", "nextBackwardToken": "next-backward-token
" }
El resultado del registro muestra el mensaje «hola mundo» de tu trabajo de formación, que confirma que el trabajo se ha ejecutado correctamente.
Paso 7: Limpia los recursos de tu tutorial
Cuando termines con el tutorial, limpia los recursos que has creado para evitar que se te siga cobrando.
En primer lugar, desactiva y elimina la cola de trabajos:
aws batch update-job-queue \ --job-queue
my-sm-training-fifo-jq
\ --state DISABLED
Espere a que se desactive la cola de trabajos y, a continuación, elimínela:
aws batch delete-job-queue \ --job-queue
my-sm-training-fifo-jq
A continuación, deshabilite y elimine el entorno de servicio:
aws batch update-service-environment \ --service-environment
TutorialServiceEnvironment
\ --state DISABLED
Espere a que se deshabilite el entorno de servicio y, a continuación, elimínelo:
aws batch delete-service-environment \ --service-environment
TutorialServiceEnvironment
Recursos adicionales
Después de completar el tutorial, es posible que desee explorar los siguientes temas:
-
Recomendamos usar PySDK para crear trabajos de servicio y enviarlos a su cola de trabajos, ya que PySDK tiene clases y utilidades auxiliares. Para ver un ejemplo del uso de PySDK, consulte los ejemplos de IA en. SageMaker
GitHub -
Obtener más información sobre Trabajos de servicio en AWS Batch.
-
Explore configuraciones Cargas útiles de trabajos de servicio en AWS Batch de trabajos de formación más complejas.
-
Obtenga información sobre la API Envíe un trabajo de servicio en AWS Batch y la
SubmitServiceJob
API. -
Revise Asignar el estado del trabajo del AWS Batch servicio al estado de la SageMaker IA para comprender las transiciones entre los estados de trabajo.
-
Visita la documentación del SDK de Python para SageMaker IA
para ver más formas ricas en funciones de crear y enviar trabajos de SageMaker formación con Python. -
Consulta SageMakerejemplos de cuadernos para flujos
de trabajo de aprendizaje automático más complejos.