

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Utilisation des plans de formation dans les emplois SageMaker de formation
<a name="training-plan-utilization-for-training-jobs"></a>

Vous pouvez utiliser un plan de SageMaker formation pour vos tâches de formation en spécifiant le plan de votre choix lors de la création d'un poste de formation.

**Note**  
Le plan d’entraînement doit avoir le statut `Scheduled` ou `Active` pour être utilisé par une tâche d’entraînement.

Si la capacité requise n’est pas immédiatement disponible pour une tâche d’entraînement, la tâche attend qu’elle soit disponible, que la condition `StoppingCondition` soit satisfaite ou que la tâche soit à l’état `Pending` pour la capacité depuis 2 jours, selon la première éventualité. Si la condition d’arrêt est satisfaite, la tâche est arrêtée. Si une tâche est en attente depuis 2 jours, elle est interrompue avec une erreur `InsufficientCapacityError`.

**Important**  
**Processus de résiliation de la capacité réservée :** vous avez un accès complet à toutes les instances réservées jusqu’à 30 minutes avant l’horaire de fin de la capacité réservée. Lorsqu'il vous reste 30 minutes dans votre capacité réservée, les plans de SageMaker formation commencent le processus consistant à mettre fin à toutes les instances en cours d'exécution dans les limites de cette capacité réservée.  
Pour vous assurer de ne pas perdre votre progression à cause de ces résiliations, nous vous recommandons d’effectuer un point de contrôle de vos tâches d’entraînement.

## Création de points de contrôle dans votre tâche d’entraînement
<a name="training-jobs-checkpointing"></a>

Lorsque vous utilisez des plans de SageMaker formation pour vos tâches de SageMaker formation, veillez à intégrer le point de contrôle dans votre script de formation. Cela vous permet d’enregistrer la progression de votre entraînement avant l’expiration d’une capacité réservée. La création de points de contrôle est particulièrement importante lorsque vous travaillez avec des capacités réservées, car elle vous permet de reprendre l’entraînement à partir du dernier point enregistré si votre tâche est interrompue entre deux capacités réservées ou lorsque votre plan d’entraînement arrive à sa date de fin.

Pour cela, vous pouvez utiliser la variable d’environnement `SAGEMAKER_CURRENT_CAPACITY_BLOCK_EXPIRATION_TIMESTAMP`. Cette variable permet de déterminer à quel moment initier le processus de création de points de contrôle. En incorporant cette logique dans votre script d’entraînement, vous vous assurez que la progression de votre modèle est enregistrée à des intervalles appropriés.

Voici un exemple de la façon dont vous pouvez implémenter cette logique de création de points de contrôle dans votre script d’entraînement 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.")
```

**Note**  
Le provisionnement des tâches de formation suit un ordre First-In-First-Out (FIFO), mais une tâche de cluster plus petite créée ultérieurement peut se voir attribuer une capacité avant une tâche de cluster plus importante créée plus tôt, si la tâche la plus importante ne peut pas être exécutée.
SageMaker le warm-pool géré par l'entraînement est compatible avec les plans d' SageMaker entraînement. Pour une réutilisation du cluster, vous devez fournir des valeurs `TrainingPlanArn` identiques dans les demandes `CreateTrainingJob` suivantes afin de réutiliser le même cluster.

**Topics**
+ [Création de points de contrôle dans votre tâche d’entraînement](#training-jobs-checkpointing)
+ [Création d'une tâche de formation à l'aide de la console SageMaker AI](use-training-plan-for-training-jobs-using-console.md)
+ [Créez un job de formation à l'aide de l'API, AWS CLI, SageMaker SDK](use-training-plan-for-training-jobs-using-api-cli-sdk.md)