Surveillance et analyse des tâches d'entraînement à l'aide de métriques Amazon CloudWatch - Amazon SageMaker

Surveillance et analyse des tâches d'entraînement à l'aide de métriques Amazon CloudWatch

Une tâche d'entraînement Amazon SageMaker est un processus itératif d'enseignement d'un modèle pour effectuer des prédictions en présentant des exemples à partir d'un jeu de données d'entraînement. En règle générale, un algorithme d'entraînement calcule plusieurs métriques, telles que les erreurs d'entraînement et la précision des prédictions. Ces métriques permettent de diagnostiquer si le modèle apprend bien et généralisera pour effectuer des prédictions sur des données inconnues. L'algorithme d'entraînement écrit les valeurs de ces métriques dans des journaux, que SageMaker surveille et envoie à Amazon CloudWatch en temps réel. Pour analyser les performances de votre tâche d'entraînement, vous pouvez afficher des graphes de ces métriques dans CloudWatch. Lorsqu'une tâche d'entraînement est terminée, vous pouvez également obtenir une liste des valeurs de métriques qu'elle calcule dans son itération finale en appelant l'opération DescribeTrainingJob.

Note

Amazon CloudWatch prend en charge les métriques personnalisées haute résolution. Son niveau de résolution maximum est de 1 seconde. Cependant, plus la résolution est élevée, plus la durée de vie des métriques CloudWatch est courte. Pour une résolution d'une fréquence de 1 seconde, les métriques CloudWatch sont disponibles pendant 3 heures. Pour plus d'informations sur la résolution et la durée de vie des métriques CloudWatch, consultez GetMetricStatistics dans la référence de l'API Amazon CloudWatch.

Astuce

Si vous souhaitez profiler votre tâche d'entraînement avec un niveau de résolution plus élevé jusqu'à une granularité de 100 millisecondes (0,1 seconde) et stocker les métriques d'entraînement indéfiniment dans Amazon S3 pour une analyse personnalisée à tout moment, envisagez d'utiliser Amazon SageMaker Debugger. SageMaker Debugger fournit des règles intégrées pour détecter automatiquement les problèmes d'entraînement courants. Il détecte les problèmes d'utilisation des ressources matérielles (tels que les goulots d'étranglement du processeur, du GPU et des I/O) et les problèmes de modèle non convergents (tels que le surajustement, les gradients de disparition et l'explosion des tenseurs). SageMaker Debugger fournit également des visualisations via Studio et son rapport de profilage. Pour explorer les visualisations du débogueur, consultez Démonstration du tableau de bord SageMaker Debugger Insights, Démonstration du rapport de profilage Debugger et Analyser les données à l'aide de la bibliothèque client SMDebug.

Définissez les métriques d'entraînement

SageMaker analyse automatiquement les journaux des tâches d'entraînement et envoie les métriques d'entraînement à CloudWatch. Par défaut, SageMaker envoie les métriques d'utilisation des ressources système répertoriées dans Tâches SageMaker et métriques de point de terminaison. Si vous souhaitez que SageMaker analyse les journaux et envoie des métriques personnalisées à partir d'une tâche d'entraînement de votre propre algorithme à CloudWatch, vous devez spécifier des définitions de métriques en transmettant le nom des métriques et des expressions régulières lorsque vous configurez une demande de tâche d'entraînement SageMaker.

Vous pouvez spécifier les métriques que vous souhaitez suivre à l'aide de la console SageMaker, du kit SDK Python SageMaker ou de l'API SageMaker de bas niveau.

Si vous utilisez votre propre algorithme, procédez comme suit :

  • Assurez-vous que l'algorithme émet les métriques que vous souhaitez collecter pour les journaux.

  • Définissez une expression régulière qui analyse les journaux en détail pour capturer les valeurs des métriques que vous voulez envoyer à CloudWatch.

Par exemple, supposons que votre algorithme émette les métriques suivantes pour les erreurs d'entraînement et de validation :

Train_error=0.138318; Valid_error=0.324557;

Si vous souhaitez surveiller ces deux métriques dans CloudWatch, le dictionnaire des définitions de métriques doit ressembler à l'exemple suivant :

[ { "Name": "train:error", "Regex": "Train_error=(.*?);" }, { "Name": "validation:error", "Regex": "Valid_error=(.*?);" } ]

Dans l'expression régulière pour la métrique train:error définie dans l'exemple précédent, la première partie de l'expression régulière trouve le texte exact « Train_error= » et l'expression (.*?); capture tous les caractères jusqu'à ce que le premier caractère point-virgule apparaisse. Dans cette expression, la parenthèse indiquent au regex de capturer ce qui est à l'intérieur de celle-ci, . signifie n'importe quel caractère, * signifie aucun ou plusieurs caractères et ? signifie capturer uniquement jusqu'à ce que la première instance du caractère ;.

Définir les métriques à l'aide du kit SDK Python SageMaker

Définissez les métriques que vous voulez envoyer à CloudWatch en spécifiant une liste de noms de métriques et d'expressions régulières en tant qu'argument metric_definitions lorsque vous initialisez un objet Estimator. Par exemple, si vous voulez contrôler les deux métriques train:error et validation:error dans CloudWatch, votre initialisation Estimator se présente comme suit :

import sagemaker from sagemaker.estimator import Estimator estimator = Estimator( image_uri="your-own-image-uri", role=sagemaker.get_execution_role(), sagemaker_session=sagemaker.Session(), instance_count=1, instance_type='ml.c4.xlarge', metric_definitions=[ {'Name': 'train:error', 'Regex': 'Train_error=(.*?);'}, {'Name': 'validation:error', 'Regex': 'Valid_error=(.*?);'} ] )

Pour plus d'informations sur l'entraînement à l'aide des estimateurs du kit SDK Python Amazon SageMaker, consultez Sagemaker Python SDK sur GitHub.

Définir les métriques à l'aide de la console SageMaker

Si vous choisissez l'option Your own algorithm container in ECR (Votre propre conteneur d'algorithmes dans ECR) comme source d'algorithme dans la console SageMaker lorsque vous créez une tâche d'entraînement, ajoutez les définitions de métriques dans la section Metrics (Métriques). La capture d'écran suivante montre à quoi cela devrait ressembler après avoir ajouté les exemples de noms de métriques et les expressions régulières correspondantes.

Définir des métriques à l'aide de l'API SageMaker de bas niveau

Définissez les métriques que vous voulez envoyer à CloudWatch en spécifiant une liste de noms de métriques et d'expressions régulières dans le champ MetricDefinitions du paramètre d'entrée AlgorithmSpecification que vous transmettez à l'opération CreateTrainingJob. Par exemple, si vous voulez contrôler les deux métriques train:error et validation:error dans CloudWatch, votre AlgorithmSpecification se présente comme suit :

"AlgorithmSpecification": { "TrainingImage": your-own-image-uri, "TrainingInputMode": "File", "MetricDefinitions" : [ { "Name": "train:error", "Regex": "Train_error=(.*?);" }, { "Name": "validation:error", "Regex": "Valid_error=(.*?);" } ] }

Pour de plus amples informations sur la définition et l'exécution d'une tâche d'entraînement à l'aide de l'API SageMaker de bas niveau, veuillez consulter CreateTrainingJob.

Surveillance des métriques d'une tâche d'entraînement (Console CloudWatch)

Vous pouvez surveiller les métriques émises par une tâche d'entraînement en temps réel dans la console CloudWatch.

Surveillance des métriques d'une tâche d'entraînement (Console CloudWatch)

  1. Ouvrez la console CloudWatch à l'adresse https://console.aws.amazon.com/cloudwatch.

  2. Choisissez Métriques, puis /aws/sagemaker/TrainingJobs.

  3. Choisissez TrainingJobName.

  4. Sous l'onglet All metrics (Toutes les métriques), choisissez les noms des métriques d'entraînement que vous souhaitez surveiller.

  5. Sous l'onglet Graphed metrics (Graphique des métriques), configurez les options du graphique. Pour de plus amples informations sur l'utilisation des graphes CloudWatch, veuillez consulter Graph Metrics (Métriques en graphe) dans le Guide de l'utilisateur Amazon CloudWatch.

Surveillance des métriques d'une tâche d'entraînement (Console SageMaker)

Vous pouvez surveiller les métriques émises par une tâche d'entraînement en temps réel à l'aide de la console SageMaker.

Surveillance des métriques d'une tâche d'entraînement (Console SageMaker)

  1. Ouvrez la console SageMaker à l'adresse https://console.aws.amazon.com/sagemaker.

  2. Sélectionnez Training jobs (Tâches d'entraînement), puis choisissez la tâche d'entraînement dont vous souhaitez consulter les métriques.

  3. Choisissez TrainingJobName.

  4. Dans la section Monitor (Surveillance), vous pouvez consulter les graphiques d'utilisation des instances et les métriques des algorithmes.

Exemple : Affichage d'une courbe d'entraînement et de validation

En règle générale, vous divisez les données sur lesquelles vous entraînez votre modèle en jeux de données d'entraînement et de validation. Vous utilisez l'ensemble de données d'entraînement pour entraîner les paramètres du modèle qui sont utilisés pour effectuer des prédictions sur l'ensemble de données d'entraînement. Puis, vous testez la qualité des prédictions du modèle en calculant les prédictions pour l'ensemble de données de validation. Pour analyser les performances d'une tâche d'entraînement, vous tracez habituellement une courbe d'entraînement et une courbe de validation.

L'affichage d'un graphique qui illustre la précision des ensembles de données d'entraînement et de validation au fil du temps peut vous aider à améliorer la performance de votre modèle. Par exemple, si la précision de l'ensemble de données d'entraînement continue d'augmenter au fil du temps, mais qu'à un moment donné, la précision de l'ensemble de données de validation commence à diminuer, il est probable que votre modèle soit surajusté. Pour résoudre ce problème, vous pouvez ajuster votre modèle (par exemple, augmentation de la régularisation).

Pour cet exemple, vous pouvez utiliser l'exemple lmage-classification-full-training qui se trouve dans la section Example notebooks (Exemples de blocs-notes) de votre instance de bloc-notes SageMaker. Si vous n'avez pas d'instance de bloc-notes SageMaker, créez-en une en suivant les instructions décrites sous Étape 1 : créer une instance de bloc-notes Amazon SageMaker. Si vous préférez, vous pouvez suivre l'End-to-End Multiclass Image Classification Example (Modèle de classification d'images multi-classes de bout en bout) dans le modèle de bloc-notes sur GitHub. Vous avez également besoin d'un compartiment Amazon S3 pour stocker les données d'entraînement et pour la sortie du modèle.

Pour consulter une courbe d'entraînement et une courbe de validation

  1. Ouvrez la console SageMaker à l'adresse https://console.aws.amazon.com/sagemaker.

  2. Choisissez Blocs-notes, puis Instances de blocs-notes.

  3. Choisissez l'instance de bloc-notes que vous souhaitez utiliser, puis choisissez Ouvrir.

  4. Dans le tableau de bord de votre instance de bloc-notes, choisissez SageMaker Exemples (Exemples SageMaker).

  5. Développez la section Introduction to Amazon Algorithms (Introduction aux algorithmes Amazon), puis choisissez Use (Utilisation) en regard de Image-classification-fulltraining.ipynb.

  6. Choisissez Create copy (Créer une copie). SageMaker crée une copie modifiable du bloc-notes Image-classification-full-training.ipynb dans votre instance de bloc-notes.

  7. Exécutez toutes les cellules du bloc-notes jusqu'à la section Inference (Inférence). Vous n'avez pas besoin de déployer un point de terminaison ou d'obtenir une inférence pour cet exemple.

  8. Une fois que la tâche d'entraînement démarre, ouvrez la console CloudWatch à l'adresse https://console.aws.amazon.com/cloudwatch.

  9. Choisissez Métriques, puis /aws/sagemaker/TrainingJobs.

  10. Choisissez TrainingJobName.

  11. Sous l'onglet All metrics (Toutes les métriques), sélectionnez les métriques train:accuracy et validation:accuracy pour la tâche d'entraînement que vous avez créée dans le bloc-notes.

  12. Sur le graphique, sélectionnez une zone avec une valeur de métrique sur laquelle zoomer. Vous devriez voir un résultat similaire à l'exemple suivant.