Définition de métriques et de variables d'environnement - 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 de métriques et de variables d'environnement

Une tâche de réglage optimise les hyperparamètres pour les tâches d'entraînement qu'elle lance en utilisant une métrique pour évaluer les performances. Ce guide explique comment définir des métriques afin que vous puissiez utiliser un algorithme personnalisé pour l'entraînement ou utiliser un algorithme intégré d'Amazon SageMaker. Ce guide explique également comment spécifier des variables d'environnement lors d'une tâche de réglage automatique du modèle (AMT).

Définition de métriques

Le réglage des SageMaker hyperparamètres Amazon analyse votre algorithme d'apprentissage automatique stdout et vos stderr flux pour trouver des indicateurs, tels que la perte ou la précision de la validation. Les métriques indiquent les performances du modèle sur le jeu de données.

Les sections suivantes expliquent comment utiliser deux types d'algorithmes d'entraînement : intégrés et personnalisés.

Utiliser un algorithme intégré pour l'entraînement

Si vous utilisez l'un des algorithmes SageMaker intégrés, les métriques sont déjà définies pour vous. De plus, les algorithmes intégrés envoient automatiquement des métriques au réglage des hyperparamètres à des fins d'optimisation. Ces statistiques sont également enregistrées dans les CloudWatch journaux Amazon. Pour plus d'informations, consultez la section Enregistrer SageMaker des événements Amazon avec Amazon CloudWatch.

Pour la métrique d'objectif pour la tâche de réglage, choisissez l'une des métriques émises par l'algorithme intégré. Pour obtenir la liste des métriques disponibles, consultez la section consacrée au réglage du modèle pour l'algorithme approprié dans Utiliser les algorithmes SageMaker intégrés d'Amazon ou les modèles pré-entraînés.

Vous pouvez choisir jusqu'à 40 métriques pour surveiller votre tuning job (tâche de réglage). Sélectionnez l'une de ces métriques comme métrique objective. La tâche de réglage des hyperparamètres renvoie la training job (tâche d'entraînement) qui a donné les meilleurs résultats par rapport à la métrique objective.

Note

Le réglage des hyperparamètres envoie automatiquement un hyperparamètre supplémentaire _tuning_objective_metric pour transmettre votre métrique objective à la tâche de réglage à utiliser pendant l'entraînement.

Utiliser un algorithme personnalisé pour l'entraînement

Cette section explique comment définir vos propres métriques afin d'utiliser votre propre algorithme personnalisé pour l'entraînement. Pour ce faire, assurez-vous que votre algorithme écrit au moins une métrique sur stderr ou stdout. Le réglage des hyperparamètres analyse ces flux pour trouver des métriques d'algorithme qui indiquent les performances du modèle sur le jeu de données.

Vous pouvez définir des métriques personnalisées en spécifiant un nom et une expression régulière pour chaque métrique surveillée par votre tâche de réglage. Transmettez ensuite ces définitions métriques CreateHyperParameterTuningJobAPIau TrainingJobDefinition paramètre du MetricDefinitions champ deAlgorithmSpecification.

L'exemple suivant montre une sortie d'un journal écrit sur stderr ou stdout par un algorithme d'entraînement.

GAN_loss=0.138318; Scaled_reg=2.654134; disc:[-0.017371,0.102429] real 93.3% gen 0.0% disc-combined=0.000000; disc_train_loss=1.374587; Loss = 16.020744; Iteration 0 took 0.704s; Elapsed=0s

L'exemple de code suivant montre comment utiliser des expressions régulières dans Python (regex). Ceci est utilisé pour effectuer une recherche dans la sortie du journal d'échantillons et capturer les valeurs numériques de quatre métriques différentes.

[ { "Name": "ganloss", "Regex": "GAN_loss=(.*?);", }, { "Name": "disc-combined", "Regex": "disc-combined=(.*?);", }, { "Name": "discloss", "Regex": "disc_train_loss=(.*?);", }, { "Name": "loss", "Regex": "Loss = (.*?);", }, ]

Dans les expressions régulières, les parenthèses () sont utilisées pour regrouper des parties de l'expression régulière.

  • Pour la métrique loss définie dans l'exemple de code, l'expression (.*?); capture n'importe quel caractère compris entre le texte exact "Loss=" et le premier point-virgule (;).

  • Le caractère . indique à l'expression régulière de correspondre à n'importe quel caractère.

  • Le caractère * signifie qu'il doit correspondre à zéro ou plusieurs caractères.

  • Le caractère ? signifie de capturer uniquement jusqu'à la première instance du caractère ;.

La métrique de perte définie dans l'exemple de code capturera Loss = 16.020744 à partir de la sortie de l'échantillon.

Choisissez l'une des métriques que vous avez définies comme métrique d'objectif pour la tâche de réglage. Si vous utilisez le SageMaker API, spécifiez la valeur de la name clé dans le HyperParameterTuningJobObjective champ du HyperParameterTuningJobConfig paramètre que vous envoyez à l'CreateHyperParameterTuningJobopération.

Spécification de variables d'environnement

SageMaker AMToptimise les hyperparamètres d'une tâche de réglage afin de trouver les meilleurs paramètres pour les performances du modèle. Vous pouvez utiliser les variables d'environnement pour configurer votre tâche de réglage afin de modifier son comportement. Vous pouvez également utiliser les variables d'environnement que vous avez utilisées pendant l'entraînement au sein de votre tâche de réglage.

Si vous souhaitez utiliser une variable d'environnement issue de votre tâche de réglage ou spécifier une nouvelle variable d'environnement, entrez une valeur de Environment chaîne pour SageMaker HyperParameterTrainingJobDefinitionAPI. Transmettez cette définition du poste de formation au CreateHyperParameterTuningJobAPI.

Par exemple, la variable d'environnement SM_LOG_LEVEL peut être définie sur les valeurs suivantes pour adapter la sortie à partir d'un conteneur Python.

NOTSET=0 DEBUG=10 INFO=20 WARN=30 ERROR=40 CRITICAL=50

Par exemple, pour définir le niveau de journalisation sur 10 afin de déboguer les journaux de vos conteneurs, définissez la variable d'environnement dans le HyperParameterTrainingJobDefinition, comme suit.

{ "HyperParameterTuningJobConfig": { ..., } "TrainingJobDefinition": { ..., "Environment" : [ { "SM_LOG_LEVEL": 10 } ], ..., }, ..., }