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 CreateHyperParameterTuningJob
APIau 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'CreateHyperParameterTuningJob
opé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 } ], ..., }, ..., }