

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
<a name="getting-started-sagemaker"></a>

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.

**Contents**
+ [Descripción general de](#getting-started-sagemaker-context)
+ [Requisitos previos](#getting-started-sagemaker-prerequisites)
+ [Paso 1: Crear un rol de ejecución de SageMaker IA](#getting-started-sagemaker-step-1)
+ [Paso 2: Crear el entorno de servicio](#getting-started-sagemaker-step-2)
+ [Paso 3: Crea tu cola de SageMaker trabajos](#getting-started-sagemaker-step-3)
+ [Paso 4: Crear y enviar un trabajo de entrenamiento](#getting-started-sagemaker-step-4)
+ [Paso 5: Supervisar el estado del trabajo](#getting-started-sagemaker-step-5)
+ [Paso 6: Ver la salida del trabajo](#getting-started-sagemaker-step-6)
+ [Paso 7: Eliminar los recursos del tutorial](#getting-started-sagemaker-step-7)
+ [Recursos adicionales](#getting-started-sagemaker-additional-resources)

## Descripción general de
<a name="getting-started-sagemaker-context"></a>

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 no conlleva ningún cargo. Sin embargo, si se implementa esta solución, es posible que se generen gastos para los siguientes recursos:      
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/batch/latest/userguide/getting-started-sagemaker.html)

## Requisitos previos
<a name="getting-started-sagemaker-prerequisites"></a>

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](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html) 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`](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html#cli-configure-quickstart-config) en la *Guía del usuario de AWS Command Line Interface *.

## Paso 1: Crear un rol de ejecución de SageMaker IA
<a name="getting-started-sagemaker-step-1"></a>

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](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-roles.html) en la *[guía para desarrolladores de SageMaker IA](https://docs.aws.amazon.com/sagemaker/latest/dg/whatis.html)*.

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"
   ```

1. 

**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
   ```

1. 

**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
<a name="getting-started-sagemaker-step-2"></a>

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](using-service-linked-roles-batch-sagemaker.md).

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](service-environments.md).

## Paso 3: Crea tu cola de SageMaker trabajos
<a name="getting-started-sagemaker-step-3"></a>

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](create-sagemaker-job-queue.md)

## Paso 4: Crear y enviar un trabajo de entrenamiento
<a name="getting-started-sagemaker-step-4"></a>

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-id*Sustitúyalo por tu ID AWS de 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 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 [SubmitServiceJob](https://docs.aws.amazon.com/batch/latest/APIReference/API_SubmitServiceJob.html)API:

```
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](service-job-payload.md). 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](service-job-submit.md).

## Paso 5: Supervisar el estado del trabajo
<a name="getting-started-sagemaker-step-5"></a>

Puede supervisar sus trabajos de formación mediante lo siguiente AWS Batch APIs: [DescribeServiceJob[ListServiceJobs](https://docs.aws.amazon.com/batch/latest/APIReference/API_ListServiceJobs.html)](https://docs.aws.amazon.com/batch/latest/APIReference/API_DescribeServiceJob.html), y [GetJobQueueSnapshot](https://docs.aws.amazon.com/batch/latest/APIReference/API_GetJobQueueSnapshot.html). 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](service-job-status.md).

## Paso 6: Ver la salida del trabajo
<a name="getting-started-sagemaker-step-6"></a>

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
<a name="getting-started-sagemaker-step-7"></a>

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
<a name="getting-started-sagemaker-additional-resources"></a>

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](https://github.com/aws/amazon-sagemaker-examples) en GitHub.
+ Obtener más información sobre [Trabajos de servicio en AWS Batch](service-jobs.md).
+ Consulte [Cargas útiles de trabajos de servicio en AWS Batch](service-job-payload.md) para las configuraciones del trabajo de entrenamiento más complejos.
+ Obtenga información sobre [Envíe un trabajo de servicio en AWS Batch](service-job-submit.md) y la API `SubmitServiceJob`.
+ Revise [Asignar el estado del trabajo del AWS Batch servicio al estado de la SageMaker IA](service-job-status.md) para comprender las transiciones entre los estados de trabajo.
+ Visite la [documentación del SDK de Python para SageMaker IA](https://sagemaker.readthedocs.io/en/stable/) 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](https://github.com/aws/amazon-sagemaker-examples) de trabajo de aprendizaje automático más complejos.