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.
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 de formation doit avoir le Active
statut Scheduled
ou être utilisé par un poste de formation.
Si la capacité requise n'est pas immédiatement disponible pour un poste de formation, le poste attend qu'elle soit disponible, soit que la capacité StoppingCondition
soit atteinte, ou que le poste soit disponible Pending
depuis 2 jours, selon la première éventualité. Si la condition d'arrêt est remplie, la tâche est arrêtée. Si une tâche est en attente depuis 2 jours, elle est interrompue par unInsufficientCapacityError
.
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'heure 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 interruptions, nous vous recommandons de vérifier vos tâches de formation.
Vérifiez votre poste de formation
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 de sauvegarder la progression de votre entraînement avant l'expiration d'une capacité réservée. Le point de contrôle est particulièrement important lorsque vous travaillez avec des capacités réservées, car il vous permet de reprendre la formation à partir du dernier point enregistré si votre travail est interrompu entre deux capacités réservées ou lorsque votre plan de formation arrive à sa date de fin.
Pour ce faire, vous pouvez utiliser la variable d'SAGEMAKER_CURRENT_CAPACITY_BLOCK_EXPIRATION_TIMESTAMP
environnement. Cette variable permet de déterminer à quel moment lancer le processus de point 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 point 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 to a datetime object
expiration_time = datetime.fromtimestamp(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 la réutilisation du cluster, vous devez fournir des
TrainingPlanArn
valeurs identiques dans lesCreateTrainingJob
demandes suivantes pour réutiliser le même cluster.