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 pour les emplois SageMaker de formation
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
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
TrainingPlanArnidentiques dans les demandesCreateTrainingJobsuivantes afin de réutiliser le même cluster.