¿Cómo empezar con AWS Batch la IA? SageMaker - 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.

¿Cómo empezar con AWS Batch la IA? SageMaker

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

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á dirigido a científicos de datos y desarrolladores responsables de configurar y ejecutar trabajos de entrenamiento en machine learning a gran escala.

Características 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

  • enviar trabajos de servicio mediante la API SubmitServiceJob,

  • supervisar el estado del trabajo y ver las salidas,

  • 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 es gratuita. Sin embargo, si se implementa esta solución, es posible que se generen gastos para los siguientes recursos:

Description (Descripción) Costo (dólares estadounidenses)
SageMaker Instancias de entrenamiento de 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 de Amazon S3 Costo mínimo de almacenamiento de las salidas de los trabajos de entrenamiento. 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.

  • 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 administrada de AmazonSageMakerFullAccess, 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

    Cree un archivo JSON denominado sagemaker-trust-policy.json con la siguiente política de confianza:

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

    Cree un 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. Asocie las políticas administradas

    Asocie 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. Observe el ARN del rol

    Obtenga el rol ARN que necesitará en los siguientes pasos:

    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: Crear el entorno de servicio

Un entorno de servicios define las limitaciones de capacidad para los trabajos de SageMaker formación. El entorno de servicio encapsula la cantidad máxima de instancias de entrenamiento 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 denominado 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 los roles vinculados a servicios 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 servicios, consulte Entornos de servicio para AWS Batch.

Paso 3: Crea tu 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 entregarán a su entorno de servicio según la disponibilidad de la capacidad.

Cree una cola SageMaker de trabajos 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. Creación de una cola de trabajos de entrenamiento de SageMaker en AWS Batch

Paso 4: Crear y enviar un trabajo de entrenamiento

Ahora creará un trabajo de entrenamiento sencillo y lo enviará a la lista de trabajos. En este ejemplo se utiliza un trabajo de entrenamiento 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 AWS de 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 allí la salida, 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 la carga útil del trabajo de servicio, consulte Cargas útiles de trabajos de servicio en AWS Batch. Y para obtener más información sobre el envío de trabajos de servicio, consulte Enví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.

Cómo ver los trabajos en ejecución en la 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 } ] }

Cómo ver los trabajos que se encuentran en el estado RUNNABLE:

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

Cómo obtener una instantánea de los próximos trabajos en la cola:

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

Cómo buscar 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 la asignación del estado de trabajos, consulte Asignar el estado del trabajo del AWS Batch servicio al estado de la SageMaker IA.

Paso 6: Ver la salida del trabajo

Una vez que termine 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" }

La salida del registro muestra el mensaje “hola, mundo” de su trabajo de entrenamiento, que confirma que el trabajo se ha ejecutado correctamente.

Paso 7: Eliminar los recursos del tutorial

Cuando haya completado este tutorial, elimine los recursos que creó para evitar la generación de gastos innecesarios.

En primer lugar, deshabilite y elimine la cola de trabajos:

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

Espere a que se deshabilite la cola de trabajos y, a continuación, elimínela:

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

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, finalmente, elimínelo:

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

Recursos adicionales

Después de completar el tutorial, recomendamos consultar alguno de los siguientes temas: