

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.

# Utilización de los planes de SageMaker formación para trabajos de formación
<a name="training-plan-utilization-for-training-jobs"></a>

Puede utilizar un plan de SageMaker formación para sus trabajos de formación especificando el plan de su elección al crear un trabajo de formación.

**nota**  
El plan de entrenamiento debe tener el estado `Scheduled` o `Active` para poder utilizarlo en un trabajo de entrenamiento.

Si la capacidad requerida no está disponible de inmediato para un trabajo de entrenamiento, el trabajo debe esperar hasta que esté disponible, hasta que se cumpla `StoppingCondition` o hasta que el trabajo haya estado `Pending` de capacidad durante 2 días, lo que ocurra primero. Si se cumple la condición de parada, el trabajo se detiene. Si un trabajo ha estado pendiente durante 2 días, se termina con un `InsufficientCapacityError`.

**importante**  
**Proceso de terminación de la capacidad reservada:** tiene acceso completo a todas las instancias reservadas hasta 30 minutos antes de la hora de finalización de la capacidad reservada. Cuando queden 30 minutos de capacidad reservada, los planes de SageMaker formación inician el proceso de finalización de cualquier instancia en ejecución dentro de esa capacidad reservada.  
Para asegurarse de no perder el progreso debido a estas terminaciones, le recomendamos revisar sus trabajos de entrenamiento.

## Punto de comprobación del trabajo de entrenamiento
<a name="training-jobs-checkpointing"></a>

Cuando utilice planes de SageMaker formación para sus trabajos de SageMaker formación, asegúrese de incluir puntos de control en su guion de formación. Esto le permite guardar el progreso del entrenamiento antes de que caduque la capacidad reservada. Los puntos de comprobación son especialmente importantes cuando se trabaja con capacidades reservadas, ya que permiten reanudar el entrenamiento desde el último punto guardado si el trabajo se interrumpe entre dos capacidades reservadas o cuando el plan de entrenamiento alcance la fecha de finalización.

Para ello, puede usar la variable de entorno `SAGEMAKER_CURRENT_CAPACITY_BLOCK_EXPIRATION_TIMESTAMP`. Esta variable ayuda a determinar cuándo iniciar el proceso de puntos de comprobación. Al incorporar esta lógica en el script de entrenamiento, debe asegurarse de que el progreso del modelo se guarde en los intervalos adecuados.

Este es un ejemplo de cómo puede implementar esta lógica de puntos de comprobación en el script de entrenamiento de Python:

```
import os
import time
from datetime import datetime, timedelta

def is_close_to_expiration(threshold_minutes=30):
    # Retrieve the expiration timestamp from the environment variable
    expiration_time_str = os.environ.get('SAGEMAKER_CURRENT_CAPACITY_BLOCK_EXPIRATION_TIMESTAMP', '0')
    
    # If the timestamp is not set (default '0'), return False
    if expiration_time_str == '0':
        return False
    
    # Convert the timestamp string (in milliseconds) to a datetime object
    expiration_time = datetime(1970, 1, 1) + timedelta(milliseconds=int(expiration_time_str))
    
    # Calculate the time difference between now and the expiration time
    time_difference = expiration_time - datetime.now()
    
    # Return True if we're within the threshold time of expiration
    return time_difference < timedelta(minutes=threshold_minutes)

def start_checkpointing():
    # Placeholder function for checkpointing logic
    print("Starting checkpointing process...")
    # TODO: Implement actual checkpointing logic here
    # For example:
    # - Save model state
    # - Save optimizer state
    # - Save current epoch and iteration numbers
    # - Save any other relevant training state

# Main training loop
num_epochs = 100
final_checkpointing_done = False
for epoch in range(num_epochs):
    # TODO: Replace this with your actual training code
    # For example:
    # - Load a batch of data
    # - Forward pass
    # - Calculate loss
    # - Backward pass
    # - Update model parameters
    
    # Check if we're close to capacity expiration and haven't done final checkpointing
    if not final_checkpointing_done and is_close_to_expiration():
        start_checkpointing()
        final_checkpointing_done = True
    
    # Simulate some training time (remove this in actual implementation)
    time.sleep(1)
print("Training completed.")
```

**nota**  
El aprovisionamiento de tareas de formación sigue un orden First-In-First-Out (FIFO), pero a un trabajo de clúster más pequeño que se cree más adelante se le puede asignar capacidad antes que a un trabajo de clúster más grande creado anteriormente, si no se puede cumplir con el trabajo más grande.
SageMaker la formación de una piscina caliente gestionada es compatible con los planes de formación. SageMaker Para volver a utilizar el clúster, debe proporcionar valores `TrainingPlanArn` idénticos en las solicitudes `CreateTrainingJob` posteriores.

**Topics**
+ [Punto de comprobación del trabajo de entrenamiento](#training-jobs-checkpointing)
+ [Crea un trabajo de entrenamiento con la consola de IA SageMaker](use-training-plan-for-training-jobs-using-console.md)
+ [Cree un trabajo de formación con la API y AWS CLI el SageMaker SDK](use-training-plan-for-training-jobs-using-api-cli-sdk.md)

# Crea un trabajo de entrenamiento con la consola de IA SageMaker
<a name="use-training-plan-for-training-jobs-using-console"></a>

Puedes usar un plan de SageMaker entrenamiento para tus trabajos de entrenamiento mediante la interfaz de usuario de SageMaker IA. Al crear un trabajo de entrenamiento, se le sugieren los planes disponibles si la instancia elegida y la región coinciden con los planes disponibles.

Para crear un trabajo de entrenamiento utilizando la capacidad reservada de un plan de entrenamiento en la SageMaker consola:

1. Ve a la consola de SageMaker IA en [https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/).

1. En el panel de navegación izquierdo, elija **Entrenamiento** y, a continuación, **Trabajos de entrenamiento**.

1. Elija el botón **Crear trabajo de entrenamiento**.

1. Al configurar los recursos para el trabajo de entrenamiento, busque la sección **Capacidad de instancia**. Si hay planes disponibles que coincidan con el tipo de instancia y la región que haya elegido, se mostrarán aquí. Seleccione un plan de entrenamiento que se ajuste a sus necesidades de capacidad de computación.

   Si no hay planes adecuados disponibles, puede ajustar el tipo de instancia o la región o continuar sin utilizar ningún plan de entrenamiento.

1. Tras seleccionar un plan de entrenamiento (o si decide continuar sin plan), complete la configuración del trabajo de entrenamiento y elija **Crear trabajo de entrenamiento** para iniciar el proceso.

![\[SageMaker Página de la consola de IA para crear un nuevo trabajo de formación. La página muestra varias opciones de configuración, como los ajustes del trabajo, las opciones de algoritmo, la configuración de los recursos, la selección del plan de entrenamiento y las condiciones de detención.\]](http://docs.aws.amazon.com/es_es/sagemaker/latest/dg/images/training-plans/tp-create-training-job.png)


Revise y lance el trabajo. El trabajo se ejecutará en cuando el plan de entrenamiento esté `Active`, pero pendiente de la capacidad.

# Cree un trabajo de formación con la API y AWS CLI el SageMaker SDK
<a name="use-training-plan-for-training-jobs-using-api-cli-sdk"></a>

Para utilizar planes de SageMaker formación para su trabajo de SageMaker formación, especifique el `TrainingPlanArn` parámetro del plan deseado en la operación de la [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html)API `ResourceConfig` al llamar. Puede utilizar exactamente un plan por trabajo.

**importante**  
El campo `InstanceType` establecido en la sección `ResourceConfig` de la solicitud `CreateTrainingJob` debe coincidir con el `InstanceType` de su plan de entrenamiento.

## Ejecute un trabajo de entrenamiento en un plan mediante la CLI
<a name="training-job-cli"></a>

El siguiente ejemplo muestra cómo crear un trabajo de SageMaker formación y asociarlo a un plan de formación proporcionado mediante el `TrainingPlanArn` atributo del `create-training-job` AWS CLI comando. 

Para obtener más información sobre cómo crear un trabajo de formación mediante el AWS CLI [CreateTrainingJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html)comando, consulte [https://docs.aws.amazon.com/cli/latest/reference/sagemaker/create-training-job.html](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/create-training-job.html).

```
# Create a training job
aws sagemaker create-training-job \
  --training-job-name training-job-name \
  ...
    
  --resource-config '{
        "InstanceType": "ml.p5.48xlarge",
        "InstanceCount": 8,
        "VolumeSizeInGB": 10,
        "TrainingPlanArn": "training-plan-arn"
        }
    }' \
    ...
```

Este comando de AWS CLI ejemplo crea un nuevo trabajo de entrenamiento en SageMaker IA al incluir un plan de entrenamiento en el `--resource-config` argumento.

```
aws sagemaker create-training-job \
  --training-job-name job-name \
  --role-arn arn:aws:iam::111122223333:role/DataAndAPIAccessRole \
  --algorithm-specification '{"TrainingInputMode": "File","TrainingImage": "111122223333.dkr.ecr.us-east-1.amazonaws.com/algo-image:tag", "ContainerArguments": [" "]}' \
  --input-data-config '[{"ChannelName":"training","DataSource":{"S3DataSource":{"S3DataType":"S3Prefix","S3Uri":"s3://bucketname/input","S3DataDistributionType":"ShardedByS3Key"}}}]' \
  --output-data-config '{"S3OutputPath": "s3://bucketname/output"}' \
  --resource-config '{"VolumeSizeInGB":10,"InstanceCount":4,"InstanceType":"ml.p5.48xlarge", "TrainingPlanArn" : "arn:aws:sagemaker:us-east-1:111122223333:training-plan/plan-name"}' \
  --stopping-condition '{"MaxRuntimeInSeconds": 1800}' \
  --region us-east-1
```

Tras crear el trabajo de entrenamiento, puede comprobar que se haya asignado correctamente al plan de entrenamiento llamando a la API `DescribeTrainingJob`.

```
aws sagemaker describe-training-job --training-job-name training-job-name
```

## Ejecute un trabajo de formación según un plan con el SDK de Python para SageMaker IA
<a name="training-job-sdk"></a>

Como alternativa, puedes crear un trabajo de formación asociado a un plan de formación mediante el [SDK de SageMaker Python](https://sagemaker.readthedocs.io/en/stable/v2.html).

Si utilizas el SDK de SageMaker Python de JupyterLab Studio para crear un trabajo de formación, asegúrate de que la función de ejecución utilizada por el espacio que ejecuta la JupyterLab aplicación tenga los permisos necesarios para utilizar los planes de SageMaker formación. Para obtener más información sobre los permisos necesarios para usar los planes de SageMaker formación, consulte[IAM para planes de SageMaker formación](training-plan-iam-permissions.md).

El siguiente ejemplo muestra cómo crear un trabajo de SageMaker formación y asociarlo a un plan de formación proporcionado mediante el `training_plan` atributo del `Estimator` objeto cuando se utiliza el SDK de SageMaker Python.

Para obtener más información sobre el SageMaker estimador, consulte [Usar un SageMaker estimador para ejecutar un](https://docs.aws.amazon.com/sagemaker/latest/dg/docker-containers-adapt-your-own-private-registry-estimator.html) trabajo de formación.

```
import sagemaker
import boto3
from sagemaker import get_execution_role
from sagemaker.estimator import Estimator
from sagemaker.inputs import TrainingInput

# Set up the session and SageMaker client
session = boto3.Session()
region = session.region_name
sagemaker_session = session.client('sagemaker')

# Get the execution role for the training job
role = get_execution_role()

# Define the input data configuration
trainingInput = TrainingInput(
    s3_data='s3://input-path',
    distribution='ShardedByS3Key',
    s3_data_type='S3Prefix'
)

estimator = Estimator(
    entry_point='train.py',
    image_uri="123456789123.dkr.ecr.{}.amazonaws.com/image:tag",
    role=role,
    instance_count=4,
    instance_type='ml.p5.48xlarge',
    training_plan="training-plan-arn",
    volume_size=20,
    max_run=3600,
    sagemaker_session=sagemaker_session,
    output_path="s3://output-path"
)

# Create the training job
estimator.fit(inputs=trainingInput, job_name=job_name)
```

Tras crear el trabajo de entrenamiento, puede comprobar que se haya asignado correctamente al plan de entrenamiento llamando a la API `DescribeTrainingJob`.

```
# Check job details
sagemaker_session.describe_training_job(TrainingJobName=job_name)
```