

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.

# Exécution d'une tâche de réglage des hyperparamètres avec démarrage à chaud
<a name="automatic-model-tuning-warm-start"></a>

Utilisez le démarrage à chaud pour lancer une tâche de réglage d'hyperparamètres en utilisant une ou plusieurs tâches de réglage précédentes comme point de départ. Les résultats des tâches de réglage précédentes permettent d'indiquer les combinaisons d'hyperparamètres sur lesquelles se concentrer pour la nouvelle tâche de réglage. Le réglage des hyperparamètres utilise la recherche bayésienne ou la recherche aléatoire pour choisir des combinaisons de valeurs d'hyperparamètres à partir des plages que vous spécifiez. Pour de plus amples informations, veuillez consulter [Découvrez les stratégies de réglage des hyperparamètres disponibles dans Amazon AI SageMaker](automatic-model-tuning-how-it-works.md). L'emploi d'informations issues de tâches de réglage d'hyperparamètres précédentes peut améliorer les performances de la nouvelle tâche de réglage des hyperparamètres grâce à une recherche plus efficace de la meilleure combinaison des hyperparamètres.

**Note**  
En général, des tâches de réglage avec démarrage à chaud prennent plus longtemps à démarrer que les tâches de réglage des hyperparamètres standard, car les résultats des tâches parentes doivent être chargés avant de pouvoir lancer la tâche. L'augmentation du temps dépend du nombre total de tâches d'entraînement lancées par les tâches parentes.

Certaines raisons d'envisager un démarrage à chaud :
+ Pour augmenter progressivement le nombre de tâches d'entraînement sur plusieurs tâches de réglage en fonction des résultats obtenus après chaque itération.
+ Pour régler un modèle à l'aide des nouvelles données que vous avez reçues.
+ Pour modifier les plages d'hyperparamètres utilisées dans une tâche de réglage précédente, remplacer les hyperparamètres statiques par des réglables, ou remplacer les hyperparamètres réglables par des valeurs statiques.
+ Vous avez arrêté de façon précoce une tâche d'hyperparamètres précédente ou elle s'est arrêtée de manière inattendue.

**Topics**
+ [

## Types de tâches de réglage avec démarrage à chaud
](#tuning-warm-start-types)
+ [

## Restrictions relatives au réglage avec démarrage à chaud
](#warm-start-tuning-restrictions)
+ [

## Exemple de bloc-notes de réglage avec démarrage à chaud
](#warm-start-tuning-sample-notebooks)
+ [

## Création d'une tâche de réglage avec démarrage à chaud
](#warm-start-tuning-example)

## Types de tâches de réglage avec démarrage à chaud
<a name="tuning-warm-start-types"></a>

Il existe deux différents types de tâches de réglage avec démarrage à chaud :

`IDENTICAL_DATA_AND_ALGORITHM`  
La nouvelle tâche de réglage des hyperparamètres utilise les mêmes données d'entrée et la même image d'entraînement que les tâches d'entraînement parentes. Vous pouvez modifier les plages des hyperparamètres de la recherche et le nombre maximal de tâches d'entraînement lancées par la tâche de réglage des hyperparamètres. Vous pouvez également inverser les hyperparamètres de réglables à statiques, et inversement, mais le nombre total de d'hyperparamètres statiques et réglables doit être identique à celui de toutes les tâches parentes. Vous ne pouvez pas utiliser une nouvelle version de l'algorithme d'entraînement, à moins que les modifications de la nouvelle version n'affectent pas l'algorithme lui-même. Par exemple, les modifications qui améliorent la journalisation ou l'ajout de la prise en charge d'un autre format de données sont autorisées.  
Utilisez des données et un algorithme identiques lorsque vous utilisez les mêmes données d'entraînement que celles d'une tâche de réglage d'hyperparamètres précédente, mais que vous souhaitez augmenter le nombre total de tâches d'entraînement ou modifier des plages ou des valeurs d'hyperparamètres.  
Lorsque vous exécutez une tâche de réglage avec démarrage à chaud de type `IDENTICAL_DATA_AND_ALGORITHM`, un champ supplémentaire apparaît dans la réponse à [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeHyperParameterTuningJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeHyperParameterTuningJob.html) nommé `OverallBestTrainingJob`. La valeur de ce champ est [TrainingJobSummary](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TrainingJobSummary.html) pour la tâche d'entraînement avec la meilleure valeur de métrique d'objectif de toutes les tâches d'entraînement lancées par cette tâche de réglage et tous les tâches parentes spécifiées pour la tâche de réglage avec démarrage à chaud.

`TRANSFER_LEARNING`  
La nouvelle tâche de réglage des hyperparamètres peut inclure des données d'entrée, les plages d'hyperparamètres, un nombre maximal de tâches d'entraînement simultanées et un nombre maximal de tâches d'entraînement qui sont différents de ceux des tâches d'entraînement d'hyperparamètres parentes. Vous pouvez également inverser les hyperparamètres de réglables à statiques, et inversement, mais le nombre total de d'hyperparamètres statiques et réglables doit être identique à celui de toutes les tâches parentes. La version de l'image d'algorithme d'entraînement peut également être différente de celle utilisée pour la tâche de réglage d'hyperparamètres parente. Lorsque vous utilisez le transfert d'apprentissage, les modifications du jeu de données ou l'algorithme qui affectent de manière significative la valeur de la métrique d'objectif peuvent réduire l'utilité de l'utilisation du réglage avec démarrage à chaud.

## Restrictions relatives au réglage avec démarrage à chaud
<a name="warm-start-tuning-restrictions"></a>

Les restrictions suivantes s'appliquent à toutes les tâches de réglage avec démarrage à chaud :
+ Une tâche de réglage peut avoir un maximum de 5 tâches parentes, et toutes les tâches parentes doivent être dans un état final (`Completed`, `Stopped` ou `Failed`) avant de lancer la nouvelle tâche de réglage.
+ La métrique d'objectif utilisée pour la nouvelle tâche de réglage doit être identique à celle employée pour les tâches parentes.
+ Le nombre total d'hyperparamètres statiques et réglables doit être identique entre les tâches parentes et la nouvelle tâche de réglage. Pour cette raison, si vous pensez avoir besoin d'utiliser un hyperparamètre en tant que réglable dans une prochaine tâche de réglage avec démarrage à chaud, vous devez l'ajouter en tant qu'hyperparamètre statique lors de la création de la tâche de réglage.
+ Le type de chaque hyperparamètre (continu, entier, catégorie) ne doit pas changer entre les tâches parentes et la nouvelle tâche de réglage.
+ Le nombre du total des modifications entre les hyperparamètres réglables des tâches parentes et les hyperparamètres statiques de la nouvelle tâche de réglage, plus le nombre de modifications des valeurs des hyperparamètres statiques ne peut pas être supérieure à 10. Par exemple, si la tâche parente comporte un hyperparamètres catégorie réglable avec `red` et `blue` comme valeurs possibles, et si vous modifiez que cet hyperparamètre en tant que statique dans la nouvelle tâche, ceci compte pour 2 modifications sur les 10 autorisées au total. Si le même hyperparamètre avait une valeur statique `red` dans la tâche parente, et si vous modifiez la valeur statique en `blue` pour la nouvelle tâche de réglage, ceci compte également pour 2 modifications.
+ Le réglage avec démarrage à chaud est non récursif. Par exemple, si vous créez `MyTuningJob3` en tant que tâche de réglage avec démarrage à chaud avec `MyTuningJob2` comme tâche parente, et si `MyTuningJob2` est elle-même une tâche de réglage avec démarrage à chaud, avec `MyTuningJob1` comme tâche parente, les informations apprises lors de l'exécution de `MyTuningJob1` ne sont pas utilisées pour `MyTuningJob3`. Si vous souhaitez utiliser les informations de `MyTuningJob1`, vous devez explicitement l'ajouter en tant que parente pour `MyTuningJob3`.
+ Les tâches d'entraînement lancées par chaque tâche parente dans une tâche de réglage à démarrage à chaud sont comptabilisées par rapport aux 500 tâches d'entraînement maximum pour une tâche de réglage.
+ Les tâches de réglage des hyperparamètres créées avant le 1er octobre 2018 ne peuvent pas être utilisées en tant que tâches parentes pour les tâches de réglage avec démarrage à chaud.

## Exemple de bloc-notes de réglage avec démarrage à chaud
<a name="warm-start-tuning-sample-notebooks"></a>

Pour un exemple de bloc-notes montrant comment utiliser le réglage du démarrage à chaud, voir [https://github.com/awslabs/amazon-sagemaker-examples/blob/master/hyperparameter\$1tuning/image\$1classification\$1warmstart/hpo\$1image\$1classification\$1warmstart.ipynb](https://github.com/awslabs/amazon-sagemaker-examples/blob/master/hyperparameter_tuning/image_classification_warmstart/hpo_image_classification_warmstart.ipynb).

## Création d'une tâche de réglage avec démarrage à chaud
<a name="warm-start-tuning-example"></a>

Vous pouvez utiliser le AWS SDK de bas niveau pour Python (Boto 3) ou le SDK SageMaker Python AI de haut niveau pour créer une tâche de réglage à chaud.

**Topics**
+ [

### Create a Warm Start Tuning Job (API SageMaker AI de bas niveau pour Python (Boto 3))
](#warm-start-tuning-example-boto)
+ [

### Création d'un job de réglage Warm Start (SDK SageMaker AI Python)
](#warm-start-tuning-example-sdk)

### Create a Warm Start Tuning Job (API SageMaker AI de bas niveau pour Python (Boto 3))
<a name="warm-start-tuning-example-boto"></a>

Pour utiliser le réglage avec démarrage à chaud, vous devez spécifier les valeurs d'un objet [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_HyperParameterTuningJobWarmStartConfig.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_HyperParameterTuningJobWarmStartConfig.html) et les transmettre avec le champ `WarmStartConfig` dans un appel à [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateHyperParameterTuningJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateHyperParameterTuningJob.html).

Le code suivant montre comment créer un [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_HyperParameterTuningJobWarmStartConfig.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_HyperParameterTuningJobWarmStartConfig.html)objet et le transmettre à une [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateHyperParameterTuningJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateHyperParameterTuningJob.html)tâche en utilisant l'API SageMaker AI de bas niveau pour Python (Boto 3).

Création de l'objet `HyperParameterTuningJobWarmStartConfig` :

```
warm_start_config = {
          "ParentHyperParameterTuningJobs" : [
          {"HyperParameterTuningJobName" : 'MyParentTuningJob'}
          ],
          "WarmStartType" : "IdenticalDataAndAlgorithm"
}
```

Créez la tâche de réglage avec démarrage à chaud :

```
smclient = boto3.Session().client('sagemaker')
smclient.create_hyper_parameter_tuning_job(HyperParameterTuningJobName = 'MyWarmStartTuningJob',
   HyperParameterTuningJobConfig = tuning_job_config, # See notebook for tuning configuration
   TrainingJobDefinition = training_job_definition, # See notebook for job definition
   WarmStartConfig = warm_start_config)
```

### Création d'un job de réglage Warm Start (SDK SageMaker AI Python)
<a name="warm-start-tuning-example-sdk"></a>

Pour utiliser le [SDK Amazon SageMaker Python](https://sagemaker.readthedocs.io/en/stable) afin d'exécuter une tâche de réglage au démarrage à chaud, vous devez :
+ Spécifier les tâches parentes et le type de démarrage à chaud à l'aide d'un objet `WarmStartConfig`.
+ Passez l'`WarmStartConfig`objet comme valeur de l'`warm_start_config`argument d'un [HyperparameterTuner](https://sagemaker.readthedocs.io/en/stable/tuner.html)objet.
+ Appelez la méthode `fit` de l'objet `HyperparameterTuner`.

[Pour plus d'informations sur l'utilisation du [SDK Amazon SageMaker Python](https://sagemaker.readthedocs.io/en/stable) pour le réglage des hyperparamètres, consultez https://github.com/aws/ sagemaker-python-sdk \$1. sagemaker-automatic-model-tuning](https://github.com/aws/sagemaker-python-sdk#sagemaker-automatic-model-tuning)

Cet exemple utilise un évaluateur qui utilise l'algorithme [Classification des images - MXNet](image-classification.md) pour l'entraînement. Le code suivant définit les plages d'hyperparamètres sur lesquelles portent la recherche de la tâche de réglage avec démarrage à chaud afin de trouver la meilleure combinaison de valeurs. Pour plus d'informations sur la configuration des plages d'hyperparamètres, consultez [Définition des plages d'hyperparamètres](automatic-model-tuning-define-ranges.md).

```
hyperparameter_ranges = {'learning_rate': ContinuousParameter(0.0, 0.1),
                         'momentum': ContinuousParameter(0.0, 0.99)}
```

Le code suivant configure la tâche de réglage avec démarrage à chaud job en créant un objet `WarmStartConfig`.

```
from sagemaker.tuner import WarmStartConfig,WarmStartTypes

parent_tuning_job_name = "MyParentTuningJob"
warm_start_config = WarmStartConfig(warm_start_type=WarmStartTypes.IDENTICAL_DATA_AND_ALGORITHM, parents={parent_tuning_job_name})
```

Définissez ensuite les valeurs des hyperparamètres statiques, qui sont des hyperparamètres qui conservent la même valeur pour chaque tâche d'entraînement lancée par la tâche de réglage avec démarrage à chaud. Dans le code suivant, `imageclassification` est un évaluateur qui a été créé précédemment.

```
imageclassification.set_hyperparameters(num_layers=18,
                                        image_shape='3,224,224',
                                        num_classes=257,
                                        num_training_samples=15420,
                                        mini_batch_size=128,
                                        epochs=30,
                                        optimizer='sgd',
                                        top_k='2',
                                        precision_dtype='float32',
                                        augmentation_type='crop')
```

À présent, créez l'objet `HyperparameterTuner` et transmettez l'objet `WarmStartConfig` créé précédemment comme argument `warm_start_config`.

```
tuner_warm_start = HyperparameterTuner(imageclassification,
                            'validation:accuracy',
                            hyperparameter_ranges,
                            objective_type='Maximize',
                            max_jobs=10,
                            max_parallel_jobs=2,
                            base_tuning_job_name='warmstart',
                            warm_start_config=warm_start_config)
```

Terminez en appelant la méthode `fit` de l'objet `HyperparameterTuner` pour lancer la tâche de réglage avec démarrage à chaud.

```
tuner_warm_start.fit(
        {'train': s3_input_train, 'validation': s3_input_validation},
        include_cls_metadata=False)
```