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.
Contenido
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 configureen 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.
-
Creación del rol de IAM
Cree un archivo JSON denominado
sagemaker-trust-policy.jsoncon la siguiente política de confianza: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" -
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/AmazonSageMakerFullAccessaws iam attach-role-policy \ --role-name SageMakerExecutionRole \ --policy-arn arn:aws:iam::aws:policy/AmazonS3FullAccess -
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 textGuarde 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-nameTutorialServiceEnvironment\ --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-environmentsTutorialServiceEnvironment
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-namemy-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-queuesmy-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 con el siguiente contenido. my_training_job.jsonyour-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-queuemy-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 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-queuemy-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-queuemy-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-queuemy-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-queuemy-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-idyour-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-nameyour-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-queuemy-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-queuemy-sm-training-fifo-jq
Deshabilite y elimine el entorno de servicio:
aws batch update-service-environment \ --service-environmentTutorialServiceEnvironment\ --state DISABLED
Espere a que se deshabilite el entorno de servicio y, finalmente, elimínelo:
aws batch delete-service-environment \ --service-environmentTutorialServiceEnvironment
Recursos adicionales
Después de completar el tutorial, recomendamos consultar alguno de los siguientes temas:
-
Recomendamos usar PySDK para crear trabajos de servicio y enviarlos a la cola de trabajos, ya que contiene clases y utilidades auxiliares. Para ver un ejemplo del uso de PySDK, consulta los ejemplos de SageMaker IA
en GitHub. -
Obtener más información sobre Trabajos de servicio en AWS Batch.
-
Consulte Cargas útiles de trabajos de servicio en AWS Batch para las configuraciones del trabajo de entrenamiento más complejos.
-
Obtenga información sobre Envíe un trabajo de servicio en AWS Batch y la API
SubmitServiceJob. -
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.
-
Visite la documentación del SDK de Python para SageMaker IA
para obtener 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.