

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 planes de SageMaker formación en puestos 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 mediante la API, AWS CLI, SageMaker SDK](use-training-plan-for-training-jobs-using-api-cli-sdk.md)