

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
<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éez une tâche de formation à l'aide de la console SageMaker AI](use-training-plan-for-training-jobs-using-console.md)
+ [Créez une tâche de formation à l'aide de l'API AWS CLI, du SageMaker SDK](use-training-plan-for-training-jobs-using-api-cli-sdk.md)

# Créez une tâche de formation à l'aide de la console SageMaker AI
<a name="use-training-plan-for-training-jobs-using-console"></a>

Vous pouvez utiliser un plan de SageMaker formation pour vos tâches de formation à l'aide de l'interface utilisateur SageMaker AI. Lorsque vous créez une tâche d’entraînement, les plans disponibles vous sont suggérés si votre choix d’instance et votre région correspondent aux plans disponibles.

Pour créer une tâche de formation en utilisant la capacité réservée d'un plan de formation dans la SageMaker console :

1. Accédez à la console SageMaker AI à l'adresse [https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/).

1. Dans le volet de navigation de gauche, choisissez **Entraînement**, puis **Tâches d’entraînement**.

1. Choisissez le bouton **Créer une tâche d’entraînement**.

1. Lorsque vous configurez les ressources de votre tâche d’entraînement, recherchez la section **Capacité de l’instance**. S’il existe des plans disponibles qui correspondent au type d’instance et à la région que vous avez choisis, ils sont affichés ici. Sélectionnez un plan d’entraînement aligné sur vos besoins en matière de capacité de calcul.

   Si aucun plan adapté n’est disponible, vous pouvez ajuster le type d’instance ou la région, ou continuer sans utiliser de plan d’entraînement.

1. Après avoir sélectionné un plan d’entraînement (ou choisi de continuer sans plan), terminez le reste de la configuration de votre tâche d’entraînement et choisissez **Créer une tâche d’entraînement** pour démarrer le processus.

![\[SageMaker Page de console AI pour créer un nouveau poste de formation. La page affiche diverses options de configuration, notamment les paramètres de tâche, les options d’algorithme, la configuration des ressources, la sélection du plan d’entraînement et les conditions d’arrêt.\]](http://docs.aws.amazon.com/fr_fr/sagemaker/latest/dg/images/training-plans/tp-create-training-job.png)


Vérifiez et lancez votre tâche. Votre tâche commence à s’exécuter dès que le plan d’entraînement devient `Active`, en fonction de la capacité.

# Créez une tâche de formation à l'aide de l'API AWS CLI, du SageMaker SDK
<a name="use-training-plan-for-training-jobs-using-api-cli-sdk"></a>

Pour utiliser SageMaker des plans de SageMaker formation pour votre tâche de formation, spécifiez le `TrainingPlanArn` paramètre du plan souhaité `ResourceConfig` lors de l'appel de l'opération [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html)API. Vous pouvez utiliser un et un seul plan par tâche.

**Important**  
Le champ `InstanceType` défini dans la section `ResourceConfig` de la demande `CreateTrainingJob` doit correspondre à l’élément `InstanceType` de votre plan d’entraînement.

## Exécution d’une tâche d’entraînement sur un plan à l’aide de l’interface de ligne de commande
<a name="training-job-cli"></a>

L'exemple suivant montre comment créer une tâche de SageMaker formation et l'associer à un plan de formation fourni à l'aide de l'`TrainingPlanArn`attribut de la `create-training-job` AWS CLI commande. 

Pour plus d'informations sur la création d'une tâche de formation à l'aide de la AWS CLI [CreateTrainingJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html)commande, consultez [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"
        }
    }' \
    ...
```

Cet AWS CLI exemple de commande crée une nouvelle tâche de formation en SageMaker IA en utilisant un plan de formation dans l'`--resource-config`argument.

```
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
```

Après avoir créé la tâche d’entraînement, vous pouvez vérifier qu’elle a été correctement attribuée au plan d’entraînement en appelant l’API `DescribeTrainingJob`.

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

## Exécutez une tâche de formation sur un plan à l'aide du SDK SageMaker AI Python
<a name="training-job-sdk"></a>

Vous pouvez également créer une tâche de formation associée à un plan de formation à l'aide du [SDK SageMaker Python](https://sagemaker.readthedocs.io/en/stable/v2.html).

Si vous utilisez le SDK SageMaker Python depuis JupyterLab Studio pour créer une tâche de formation, assurez-vous que le rôle d'exécution utilisé par l'espace exécutant votre JupyterLab application dispose des autorisations requises pour utiliser les plans de SageMaker formation. Pour en savoir plus sur les autorisations requises pour utiliser les plans de SageMaker formation, consultez[IAM pour les plans de SageMaker formation](training-plan-iam-permissions.md).

L'exemple suivant montre comment créer une tâche de SageMaker formation et l'associer à un plan de formation fourni à l'aide de l'`training_plan`attribut de l'`Estimator`objet lors de l'utilisation du SDK SageMaker Python.

Pour plus d'informations sur l' SageMaker estimateur, voir [Utiliser un SageMaker estimateur pour exécuter une tâche de formation](https://docs.aws.amazon.com/sagemaker/latest/dg/docker-containers-adapt-your-own-private-registry-estimator.html).

```
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)
```

Après avoir créé la tâche d’entraînement, vous pouvez vérifier qu’elle a été correctement attribuée au plan d’entraînement en appelant l’API `DescribeTrainingJob`.

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