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
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 Comment fonctionne le réglage des hyperparamètres avec Amazon SageMaker . 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.
Rubriques
Types de tâches de réglage avec démarrage à chaud
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 àDescribeHyperParameterTuningJob
nomméOverallBestTrainingJob
. La valeur de ce champ correspond à la tâche TrainingJobSummaryde formation présentant la meilleure valeur métrique objective parmi toutes les tâches de formation lancées par cette tâche de réglage et toutes les tâches parentales spécifiées pour la tâche de réglage Warm Start. 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
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
ouFailed
) 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
etblue
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 statiquered
dans la tâche parente, et si vous modifiez la valeur statique enblue
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 avecMyTuningJob2
comme tâche parente, et siMyTuningJob2
est elle-même une tâche de réglage avec démarrage à chaud, avecMyTuningJob1
comme tâche parente, les informations apprises lors de l'exécution deMyTuningJob1
ne sont pas utilisées pourMyTuningJob3
. Si vous souhaitez utiliser les informations deMyTuningJob1
, vous devez explicitement l'ajouter en tant que parente pourMyTuningJob3
. -
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
Pour un exemple de bloc-notes expliquant comment utiliser le réglage du démarrage à chaud, voir https://github.com/awslabs/amazon-sagemaker-examples/blob/master/hyperparameter_tuning/image_classification_warmstart/hpo_image_classification_warmstart.ipynbhpo_image_classification_warmstart.ipynb
. Pour ouvrir un bloc-notes, cliquez sur son onglet Use (Utiliser) et sélectionnez Create copy (Créer une copie).
Création d'une tâche de réglage avec démarrage à chaud
Vous pouvez utiliser le Python de bas niveau AWS SDK (Boto 3) ou le SageMaker Python de haut niveau SDK pour créer une tâche de réglage à chaud.
Rubriques
Create a Warm Start Tuning Job (niveau bas SageMaker API pour Python (Boto 3))
Pour utiliser le réglage avec démarrage à chaud, vous devez spécifier les valeurs d'un objet HyperParameterTuningJobWarmStartConfig
et les transmettre avec le champ WarmStartConfig
dans un appel à CreateHyperParameterTuningJob
.
Le code suivant montre comment créer un HyperParameterTuningJobWarmStartConfig
objet et le transmettre à une CreateHyperParameterTuningJob
tâche en utilisant le bas niveau SageMaker API 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 (SageMakerPythonSDK)
Pour utiliser Amazon SageMaker Python SDK
-
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 HyperparameterTunerobjet. -
Appelez la méthode
fit
de l'objetHyperparameterTuner
.
Pour plus d'informations sur l'utilisation d'Amazon SageMaker Python SDK
Cet exemple utilise un évaluateur qui utilise l'algorithme Classification des images – MXNet 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.
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)