Définition des plages d'hyperparamètres - Amazon SageMaker

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.

Définition des plages d'hyperparamètres

Ce guide explique comment utiliser les SageMaker API pour définir des plages d'hyperparamètres. Il fournit également une liste des types de mise à l'échelle des hyperparamètres que vous pouvez utiliser.

Le choix des plages et des hyperparamètres influe grandement sur les performances de votre tâche de réglage. Le réglage des hyperparamètres trouve les meilleures valeurs d'hyperparamètres pour votre modèle en effectuant des recherches sur une range (plage) de valeurs que vous spécifiez pour chacun des hyperparamètres réglables. Vous pouvez également spécifier jusqu'à 100 static hyperparameters (hyperparamètres statiques) qui ne changent pas au cours de la tâche de réglage. Vous pouvez utiliser jusqu'à 100 hyperparamètres au total (statiques et réglables). Pour plus d'informations sur le choix des plages et des hyperparamètres, consultez Bonnes pratiques pour le réglage des hyper-paramètres. Vous pouvez également utiliser le réglage automatique pour trouver les paramètres de réglage optimaux. Pour plus d'informations, consultez la section Réglage automatique suivante.

Note

SageMaker Le réglage automatique du modèle (AMT) peut ajouter des hyperparamètres supplémentaires qui contribuent à la limite de 100 hyperparamètres au total. Actuellement, pour transmettre votre indicateur objectif à la tâche de réglage à utiliser pendant l'entraînement, il est SageMaker ajouté _tuning_objective_metric automatiquement.

Hyperparamètres statiques

Utilisez les hyperparamètres statiques dans les cas suivants : Par exemple, vous pouvez utiliser AMT pour régler votre modèle avec param1 (un paramètre ajustable) et param2 (un paramètre statique). Si c'est le cas, utilisez un espace de recherche pour param1 situé entre deux valeurs et transmettez param2 en tant qu'hyperparamètre statique, comme suit.

param1: ["range_min","range_max"] param2: "static_value"

La structure des hyperparamètres statiques est la suivante :

"StaticHyperParameters": { "objective" : "reg:squarederror", "dropout_rate": "0.3" }

Vous pouvez utiliser l' SageMaker API Amazon pour spécifier des paires clé-valeur dans le StaticHyperParameterschamp du HyperParameterTrainingJobDefinition paramètre que vous transmettez à l'CreateHyperParameterTuningJobopération.

Hyperparamètres dynamiques

Vous pouvez utiliser l' SageMaker API pour définir des plages d'hyperparamètres. Spécifiez les noms des hyperparamètres et des plages de valeurs dans le champ ParameterRanges du paramètre HyperParameterTuningJobConfig que vous transmettez à l'opération CreateHyperParameterTuningJob.

Le champ ParameterRanges comporte trois sous-champs : catégoriel, entier et continu. Vous pouvez définir jusqu'à 30 hyperparamètres réglables au total (catégoriels + entiers + continus) sur lesquels effectuer des recherches.

Note

Chaque hyperparamètre catégoriel peut avoir au maximum 30 valeurs différentes.

La structure des hyperparamètres dynamiques est la suivante :

"ParameterRanges": { "CategoricalParameterRanges": [ { "Name": "tree_method", "Values": ["auto", "exact", "approx", "hist"] } ], "ContinuousParameterRanges": [ { "Name": "eta", "MaxValue" : "0.5", "MinValue": "0", "ScalingType": "Auto" } ], "IntegerParameterRanges": [ { "Name": "max_depth", "MaxValue": "10", "MinValue": "1", "ScalingType": "Auto" } ] }

Si vous créez une tâche de réglage à l'aide d'une stratégie Grid, vous ne pouvez spécifier que des valeurs catégorielles. Vous n'avez pas besoin de fournir les MaxNumberofTrainingJobs. Cette valeur est déduite du nombre total de configurations pouvant être produites à partir de vos paramètres catégoriels. Si elle est spécifiée, la valeur de MaxNumberOfTrainingJobs doit être égale au nombre total de combinaisons catégorielles distinctes possibles.

Réglage automatique

Pour économiser du temps et des ressources lors de la recherche de plages d'hyperparamètres, de ressources ou de métriques d'objectif, le réglage automatique peut automatiquement deviner les valeurs optimales pour certains champs d'hyperparamètres. Utilisez le réglage automatique afin de trouver les valeurs optimales pour les champs suivants :

  • ParameterRanges— Les noms et les plages d'hyperparamètres qu'une tâche de réglage peut optimiser.

  • ResourceLimits— Le maximum de ressources à utiliser lors d'une tâche de réglage. Ces ressources peuvent inclure le nombre maximum de tâches d'entraînement, le temps d'exécution maximal d'une tâche de réglage et le nombre maximal de tâches d'entraînement pouvant être exécutées simultanément.

  • TrainingJobEarlyStoppingType— Un indicateur qui met fin à une tâche de formation si celle-ci ne s'améliore pas de manière significative par rapport à un indicateur objectif. Activé par défaut. Pour plus d’informations, consultez Arrêter de manière précoce des tâches d'entraînement.

  • RetryStrategy— Le nombre de fois qu'il est nécessaire de réessayer une tâche de formation. Des valeurs non nulles pour RetryStrategy peuvent augmenter les chances de réussite de votre tâche.

  • Strategy : spécifie comment le réglage des hyperparamètres choisit les combinaisons de valeurs d'hyperparamètres à utiliser pour la tâche d'entraînement qu'il lance.

  • ConvergenceDetected— Indicateur indiquant que le réglage automatique du modèle (AMT) a détecté la convergence des modèles.

Pour utiliser le réglage automatique, procédez comme suit :

  1. Spécifiez l'hyperparamètre et un exemple de valeur dans le AutoParameters champ de l'ParameterRangesAPI.

  2. Activez le réglage automatique.

AMT déterminera si vos hyperparamètres et vos valeurs d'exemple sont éligibles au réglage automatique. Les hyperparamètres qui peuvent être utilisés dans le réglage automatique sont automatiquement affectés au type de plage de paramètres approprié. Ensuite, AMT utilise ValueHint pour sélectionner une plage optimale pour vous. Vous pouvez utiliser l'API DescribeHyperParameterTrainingJob pour afficher ces plages.

L'exemple suivant vous montre comment configurer une tâche de réglage avec le réglage automatique. Dans l'exemple de configuration, l'hyperparamètre max_depth possède ValueHint avec un exemple de valeur de 4.

config = { 'Autotune': {'Mode': 'Enabled'}, 'HyperParameterTuningJobName':'my-autotune-job', 'HyperParameterTuningJobConfig': { 'HyperParameterTuningJobObjective': {'Type': 'Minimize', 'MetricName': 'validation:rmse'}, 'ResourceLimits': {'MaxNumberOfTrainingJobs': 5, 'MaxParallelTrainingJobs': 1}, 'ParameterRanges': { 'AutoParameters': [ {'Name': 'max_depth', 'ValueHint': '4'} ] } }, 'TrainingJobDefinition': { .... }

Dans la continuité de l'exemple précédent, une tâche de réglage est créée une fois que la configuration précédente a été incluse dans un appel à l'API CreateHyperParameterTuningJob. Autotune convertit ensuite l'hyperparamètre max_depth en hyperparamètre. AutoParameters IntegerParameterRanges La réponse suivante d'une API DescribeHyperParameterTrainingJob montre que les valeurs optimales IntegerParameterRanges pour max_depth se situent entre 2 et 8.

{ 'HyperParameterTuningJobName':'my_job', 'HyperParameterTuningJobConfig': { 'ParameterRanges': { 'IntegerParameterRanges': [ {'Name': 'max_depth', 'MinValue': '2', 'MaxValue': '8'}, ], } }, 'TrainingJobDefinition': { ... }, 'Autotune': {'Mode': 'Enabled'} }

Types de mise à l'échelle des hyperparamètres

Pour les plages d'hyperparamètres entiers et continus, vous pouvez choisir l'échelle que vous souhaitez utiliser pour le réglage des hyperparamètres. Par exemple, pour effectuer une recherche dans la plage de valeurs, vous pouvez spécifier une valeur pour le champ ScalingType de la plage d'hyperparamètres. Vous pouvez choisir parmi les types de mise à l'échelle des hyperparamètres suivants :

Auto

SageMaker le réglage des hyperparamètres permet de choisir la meilleure échelle pour l'hyperparamètre.

Linéaire

Le réglage des hyperparamètres recherche les valeurs dans la plage des hyperparamètres à l'aide d'une échelle linéaire. En général, vous choisissez cette option si la plage de toutes les valeurs, de la plus petite à la plus grande, est relativement petite (dans un ordre de grandeur). La recherche uniforme de valeurs dans la plage permet une exploration raisonnable de l'ensemble de la plage.

Logarithmique

Le réglage des hyper-paramètres recherche les valeurs dans la plage des hyper-paramètres à l'aide d'une échelle logarithmique.

La mise à l'échelle logarithmique fonctionne uniquement pour les plages n'ont que des valeurs supérieures à 0.

Choisissez la mise à l'échelle logarithmique lorsque vous effectuez une recherche sur une plage qui s'étend sur plusieurs ordres de grandeur.

Par exemple, si vous réglez un modèle Régler un modèle d'apprentissage linéaire et que vous spécifiez une plage de valeurs comprise entre 0,0001 et 1,0 pour l'hyperparamètre learning_rate, tenez compte de ce qui suit : une recherche uniforme sur une échelle logarithmique permet d'obtenir un meilleur échantillon de l'ensemble de la plage que ne le ferait une recherche sur une échelle linéaire. En effet, une recherche sur une échelle linéaire consacrerait en moyenne 90 % de votre budget d'entraînement aux seules valeurs comprises entre 0,1 et 1,0. Par conséquent, il ne resterait que 10 % de votre budget d'entraînement pour les valeurs comprises entre 0,0001 et 0,1.

ReverseLogarithmic

Le réglage des hyperparamètres recherche les valeurs dans la plage des hyperparamètres à l'aide d'une échelle logarithmique inversée. La mise à l'échelle logarithmique inversée n'est prise en charge que pour les plages d'hyperparamètres continues. Elle n'est pas prise en charge pour les plages d'hyperparamètres de type entier.

Choisissez l'échelle logarithmique inversée lorsque vous effectuez une recherche sur une plage très sensible aux petites modifications très proches de 1.

La mise à l'échelle logarithmique inversée fonctionne uniquement pour les plages qui sont entièrement comprises dans la plage 0<=x<1,0.

Pour un exemple de bloc-notes utilisant la mise à l'échelle des hyperparamètres, consultez les exemples d' SageMaker hyperparamètres Amazon sur. GitHub