Primeros pasos con AWS Batch la SageMaker IA - AWS Batch

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.

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.

  1. 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"
  2. 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
  3. 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 my_training_job.json con el siguiente contenido. your-account-idSustitúyalo por tu ID de AWS cuenta:

nota

S3OutputPathes 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-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

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 AWSBatchmy-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: