Rapport interactif de SageMaker Debugger - 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.

Rapport interactif de SageMaker Debugger

Recevez des rapports de profilage générés automatiquement par Debugger. Le rapport Debugger fournit des informations sur vos tâches d'entraînement et suggère des recommandations pour améliorer les performances de votre modèle. La capture d'écran suivante montre un collage du rapport de profilage Debugger. Pour en savoir plus, veuillez consulter la section Rapport de profilage SageMaker Debugger.

Note

Vous pouvez télécharger un rapport Debugger pendant que votre tâche d'entraînement est en cours d'exécution ou une fois la tâche terminée. Pendant l'entraînement, Debugger met à jour le rapport reflétant le statut d'évaluation des règles actuelles. Vous ne pouvez télécharger un rapport Debugger complet qu'une fois la tâche d'entraînement terminée.

Important

Dans les rapports, les diagrammes et les recommandations sont fournis à titre informatif et ne sont pas définitifs. Vous êtes tenu de réaliser votre propre évaluation indépendante des informations.


            Exemple de rapport récapitulatif de tâche d'entraînement Debugger

Rapport de profilage SageMaker Debugger

Pour toutes les tâches d'entraînement SageMaker, la règle ProfilerReport de SageMaker Debugger invoque toutes les règles de surveillance et de profilage et regroupe l'analyse des règles dans un rapport complet. En suivant ce guide, téléchargez le rapport à l'aide du kit SDK Python Amazon SageMaker ou de la console S3, et découvrez ce que vous pouvez interpréter à partir des résultats de profilage.

Important

Dans le rapport, les diagrammes et les recommandations sont fournis à titre informatif et ne sont pas définitifs. Vous êtes tenu de réaliser votre propre évaluation indépendante des informations.

Téléchargement du rapport de profilage de SageMaker Debugger

Téléchargez le rapport de profilage SageMaker Debugger pendant que votre tâche d'entraînement est en cours d'exécution ou une fois la tâche terminée à l'aide du kit Amazon SageMaker Python SDK et de l'AWS Command Line Interface (CLI).

Note

Pour obtenir le rapport de profilage généré par SageMaker Debugger, vous devez utiliser la règle ProfilerReport intégrée fournie par SageMaker Debugger. Pour activer la règle avec votre tâche d'entraînement, consultez Configuration des règles de profilage intégrées.

Astuce

Vous pouvez également télécharger le rapport en un clic via le tableau de bord de SageMaker Studio Debugger Insights. Cela ne nécessite aucun script supplémentaire pour télécharger le rapport. Pour savoir comment télécharger le rapport depuis Studio, consultez Ouvrez le tableau de bord Amazon SageMaker Debugger Insights.

Download using SageMaker Python SDK and AWS CLI
  1. Vérifiez l'URI de base de sortie S3 par défaut de la tâche en cours.

    estimator.output_path
  2. Vérifiez le nom de la tâche en cours.

    estimator.latest_training_job.job_name
  3. Le rapport de profilage Debugger est stocké sous <default-s3-output-base-uri>/<training-job-name>/rule-output. Configurez le chemin de sortie de la règle comme suit :

    rule_output_path = estimator.output_path + estimator.latest_training_job.job_name + "/rule-output"
  4. Pour vérifier si le rapport est généré, listez les répertoires et les fichiers de façon récursive sous rule_output_path en utilisant aws s3 ls avec l'option --recursive.

    ! aws s3 ls {rule_output_path} --recursive

    Cela devrait renvoyer une liste complète des fichiers sous un dossier généré automatiquement et nommé ProfilerReport-1234567890. Le nom du dossier est une combinaison de chaînes : ProfilerReport et une balise unique à 10 chiffres basée sur l'horodatage Unix lorsque la règle ProfilerReport est lancée.

    
                                        Exemple de sortie de règle

    profiler-report.html est un rapport de profilage généré automatiquement par Debugger. Les fichiers restants sont les composants d'analyse des règles intégrées stockés dans JSON et un bloc-notes Jupyter, qui sont utilisés pour être agrégés dans le rapport.

  5. Téléchargez les fichiers de façon récursive en utilisant aws s3 cp. La commande suivante enregistre tous les fichiers de sortie de règle dans le dossier ProfilerReport-1234567890 sous le répertoire de travail actuel.

    ! aws s3 cp {rule_output_path} ./ --recursive
    Astuce

    Si vous utilisez un serveur de bloc-notes Jupyter, exécutez !pwd pour vérifier le répertoire de travail actuel.

  6. Sous le répertoire /ProfilerReport-1234567890/profiler-output, ouvrez profiler-report.html. Si vous utilisez JupyterLab, choisissez Trust HTML (Faire confiance au HTML) pour voir le rapport de profilage généré automatiquement par Debugger.

    
                                        Exemple de sortie de règle
  7. Ouvrez le fichier profiler-report.ipynb pour voir comment le rapport est généré. Vous pouvez également personnaliser et étendre le rapport de profilage à l'aide du fichier de bloc-notes Jupyter.

Download using Amazon S3 Console
  1. Connectez-vous à la AWS Management Console et ouvrez la console Amazon S3 à l'adresse https://console.aws.amazon.com/s3/.

  2. Recherchez le compartiment S3 de base. Par exemple, si vous n'avez pas spécifié de nom de tâche de base, le nom du compartiment S3 de base doit être au format suivant : sagemaker-<region>-111122223333. Recherchez le compartiment S3 de base à l'aide du champ Find bucket by name (Rechercher des compartiments par nom).

    
                                        Exemple d'utilisation de l'URI du compartiment S3 de sortie de règle
  3. Dans le compartiment S3 de base, recherchez le nom de la tâche d'entraînement en spécifiant votre préfixe de nom de tâche dans le champ de saisie Find objects by prefix (Rechercher des objets par préfixe). Choisissez le nom de la tâche d'entraînement.

    
                                        Exemple d'utilisation de l'URI du compartiment S3 de sortie de règle
  4. Le compartiment S3 de la tâche d'entraînement doit contenir trois sous-dossiers pour les données d'entraînement collectées par Debugger : debug-output/, profiler-output/ et rule-output/. Choisissez rule-output/.

    
                                        Exemple d'utilisation de l'URI du compartiment S3 de sortie de règle
  5. Dans le dossier rule-output/, choisissez ProfilerReport-1234567890, puis le fichier profiler-output/. Le dossier profiler-output/ contient profiler-report.html (le rapport de profilage généré automatiquement en html), profiler-report.ipynb (un bloc-notes Jupyter avec des scripts qui sont utilisés pour générer le rapport) et profiler-report/ (contient les fichiers JSON d'analyse de règle qui sont utilisés comme composants du rapport).

  6. Sélectionnez le fichier profiler-report.html et choisissez Actions, puis Download (Télécharger).

    
                                        Exemple d'utilisation de l'URI du compartiment S3 de sortie de règle
  7. Ouvrez le fichier téléchargé profiler-report.html dans un navigateur web.

Note

Si vous avez démarré votre tâche d'entraînement sans configurer les paramètres spécifiques à Debugger, Debugger génère le rapport uniquement en fonction des règles de surveillance du système, car les paramètres Debugger ne sont pas configurés pour enregistrer les métriques de cadre. Pour activer le profilage des métriques de cadre et recevoir un rapport de profilage Debugger étendu, configurez le paramètre profiler_config lors de la création ou de la mise à jour des estimateurs SageMaker.

Pour découvrir comment configurer le paramètre profiler_config avant de démarrer une tâche d'entraînement, consultez Configuration du profilage du framework.

Pour mettre à jour la tâche d'entraînement actuelle et activer le profilage des métriques de cadre, consultez Update Debugger Framework Profiling Configuration.

Démonstration du rapport de profilage Debugger

Cette section présente le rapport de profilage de Debugger section par section. Le rapport de profilage est généré sur la base des règles intégrées de surveillance et de profilage. Le rapport affiche des résultats uniquement pour les règles qui ont détecté des problèmes.

Important

Dans le rapport, les diagrammes et les recommandations sont fournis à titre informatif et ne sont pas définitifs. Vous êtes tenu de réaliser votre propre évaluation indépendante des informations.

Résumé des tâches d'entraînement

Le début du rapport présente un résumé de votre tâche d'entraînement. Dans cette section, vous pouvez voir les durées et les horodatages aux différentes phases d'entraînement.


                        Exemple de rapport de profilage Debugger

Le tableau récapitulatif comprend les informations suivantes :

  • start_time : heure exacte à laquelle la tâche d'entraînement a démarré.

  • end_time : heure exacte à laquelle la tâche d'entraînement s'est terminée.

  • job_duration_in_seconds : durée totale d'entraînement de l'heure de début (start_time) à l'heure de fin (end_time).

  • training_loop_start : heure exacte à laquelle la première étape de la première époque a démarré.

  • training_loop_end : heure exacte à laquelle la dernière étape de la dernière époque s'est terminée.

  • training_loop_duration_in_seconds : durée totale entre l'heure de début de la boucle d'entraînement et l'heure de fin de la boucle d'entraînement.

  • initialization_in_seconds : temps consacré à l'initialisation de la tâche d'entraînement. La phase d'initialisation couvre la période de l'heure de début (start_time) à l'heure de début de la bouche d'entraînement (training_loop_start). Le temps d'initialisation concerne la compilation du script d'entraînement, le démarrage du script d'entraînement, la création et l'initialisation du modèle, l'initialisation des instances EC2 et le téléchargement des données d'entraînement.

  • finalization_in_seconds : temps consacré à la finalisation de la tâche d'entraînement, par exemple pour la fin de l'entraînement du modèle, la mise à jour des artefacts du modèle et la fermeture des instances EC2. La phase de finalisation couvre la période allant de l'heure de fin de la boucle d'entraînement (training_loop_end) à l'heure de fin (end_time).

  • initialisation (%) : pourcentage de temps passé sur l'initialisation par rapport à la durée totale de la tâche en secondes.

  • training loop (%) : pourcentage de temps passé sur la boucle d'entraînement par rapport à la durée totale de la tâche en secondes.

  • finalization (%) : pourcentage de temps passé sur la finalisation par rapport à la durée totale de la tâche en secondes.

Statistiques d'utilisation du système

Dans cette section, vous pouvez voir une présentation des statistiques d'utilisation du système.


                        Exemple de rapport de profilage Debugger

Le rapport de profilage Debugger inclut les informations suivantes :

  • node : répertorie le nom des nœuds. Si vous utilisez un entraînement distribué sur plusieurs nœuds (plusieurs instances EC2), les noms de nœuds sont au format algo-n.

  • metric : métriques système collectées par Debugger : CPU, GPU, mémoire CPU, mémoire GPU, I/O et métriques réseau.

  • unit : unité des métriques système.

  • max : valeur maximale de chaque métrique système.

  • p99 : 99e percentile de chaque utilisation du système.

  • p95 : 95e percentile de chaque utilisation du système.

  • p50 : 50e percentile (médian) de chaque utilisation du système.

  • min : valeur minimale de chaque métrique système.

Résumé des métriques de cadre

Dans cette section, les diagrammes à secteurs suivants montrent la répartition des opérations de cadre sur les CPU et les GPU.


                        Exemple de rapport de profilage Debugger

Chacun des diagrammes à secteurs analyse les métriques de cadre collectés sur différents aspects, comme suit :

  • Ratio between TRAIN/EVAL phase and others (Rapport entre la phase ENTR/ÉVAL et les autres) : affiche le rapport entre les durées passées sur les différentes phases d'entraînement.

  • Ratio between forward and backward pass (Rapport entre la transmission vers l'avant et la transmission vers l'arrière) : affiche le rapport entre les durées passées sur la transmission vers l'avant et vers l'arrière dans la boucle d'entraînement.

  • Ratio between CPU/GPU operators (Rapport entre les opérateurs CPU/GPU) : affiche le rapport entre le temps passé sur les opérateurs exécutés sur CPU ou GPU, tels que les opérateurs convolutifs.

  • Métriques générales enregistrées dans le cadre : affiche le rapport entre le temps passé sur les principales métriques de cadre, telles que le chargement des données, la transmission vers l'avant et la transmission vers l'arrière.

Présentation : opérateurs CPU

Cette section fournit des informations détaillées sur les opérateurs de CPU. Le tableau indique le pourcentage de temps et le temps cumulé absolu passé sur les opérateurs de CPU les plus fréquemment appelés.


                            Exemple de rapport de profilage Debugger
Présentation : opérateurs GPU

Cette section fournit des informations détaillées sur les opérateurs GPU. Le tableau indique le pourcentage de temps et le temps cumulé absolu passé sur les opérateurs GPU les plus fréquemment appelés.


                            Exemple de rapport de profilage Debugger

Résumé des règles

Dans cette section, Debugger regroupe les résultats d'évaluation des règles, les analyses, les descriptions de règles et les suggestions.


                        Exemple de rapport de profilage Debugger

Analyse de la boucle d'entraînement : durée des étapes

Dans cette section, vous trouverez des statistiques détaillées sur les durées d'étapes sur chaque cœur de GPU de chaque nœud. Debugger évalue les valeurs moyennes, maximales, p99, p95, p50 et minimales des durées d'étape, ainsi que les valeurs aberrantes d'étape. L'histogramme suivant montre les durées d'étape capturées sur différents composants master et GPU. Vous pouvez activer ou désactiver l'histogramme de chaque composant en choisissant les légendes sur le côté droit. Vous pouvez vérifier si un GPU particulier est à l'origine des valeurs aberrantes de durée d'étape.


                        Exemple de rapport de profilage Debugger

Analyse d'utilisation du GPU

Cette section présente les statistiques détaillées sur l'utilisation du cœur de GPU basée sur la règle LowGPUUtilization. Elle résume également les statistiques d'utilisation du GPU et les valeurs moyennes, p95 et p5 pour déterminer si la tâche d'entraînement sous-utilise les GPU.

Taille de lot

Cette section présente les statistiques détaillées de l'utilisation totale des CPU, de l'utilisation des GPU individuels et des empreintes de mémoire GPU. La règle BatchSize détermine si vous devez modifier la taille du lot pour mieux utiliser les GPU. Vous pouvez vérifier si la taille du lot est trop petite, ce qui entraîne une sous-utilisation, ou trop grande, ce qui entraîne une surutilisation et des problèmes de mémoire insuffisante. Dans le diagramme, les cases montrent les intervalles de percentiles p25 et p75 (remplis respectivement en violet foncé et en jaune vif) à partir de la médiane (p50). Les barres d'erreur indiquent le 5e percentile pour la limite inférieure et le 95e percentile pour la limite supérieure.


                        Exemple de rapport de profilage Debugger

Goulets d'étranglement de CPU

Dans cette section, vous pouvez explorer les goulets d'étranglement de CPU détectés par la règle CPUBottleneck à partir de votre tâche d'entraînement. La règle vérifie si l'utilisation du CPU est supérieure à cpu_threshold (90 % par défaut) et si l'utilisation du GPU est inférieure à gpu_threshold (10 % par défaut).


                        Exemple de rapport de profilage Debugger

Les graphiques à secteurs affichent les informations suivantes :

  • Low GPU usage caused by CPU bottlenecks (Faible utilisation du GPU causée par des goulets d'étranglement du CPU : affiche le rapport des points de données entre ceux dont l'utilisation du GPU est supérieure et inférieure au seuil et ceux qui correspondent aux critères de goulet d'étranglement du CPU.

  • Ratio between TRAIN/EVAL phase and others (Rapport entre la phase ENTR/ÉVAL et les autres) : affiche le rapport entre les durées passées sur les différentes phases d'entraînement.

  • Ratio between forward and backward pass (Rapport entre la transmission vers l'avant et la transmission vers l'arrière) : affiche le rapport entre les durées passées sur la transmission vers l'avant et vers l'arrière dans la boucle d'entraînement.

  • Ratio between CPU/GPU operators (Rapport entre les opérateurs CPU/GPU) : affiche le rapport entre les durées passées sur les GPU et les CPU par les opérateurs Python, tels que les processus de chargeur de données et les opérateurs de transmission vers l'avant et vers l'arrière.

  • General metrics recorded in framework (Métriques générales enregistrées dans le cadre) : affiche les principales métriques de cadre et le rapport entre les durées passées sur les métriques.

Goulets d'étranglement des E/S

Dans cette section, vous trouverez un résumé des goulets d'étranglement des I/O. La règle évalue le temps d'attente d'I/O et les taux d'utilisation du GPU et surveille si le temps passé sur les demandes d'I/O dépasse un seuil en pourcentage du temps d'entraînement total. Cela peut indiquer des goulets d'étranglement d'I/O où les GPU attendent que les données arrivent du stockage.

Équilibrage de charge dans un entraînement multi-GPU

Dans cette section, vous pouvez identifier le problème d'équilibrage de la charge de travail entre les GPU.


                        Exemple de rapport de profilage Debugger

Analyse de mémoire GPU

Dans cette section, vous pouvez analyser l'utilisation de la mémoire GPU collectée par la règle GPUMemoryIncrease. Dans le diagramme, les cases montrent les intervalles de percentiles p25 et p75 (remplis respectivement en violet foncé et en jaune vif) à partir de la médiane (p50). Les barres d'erreur indiquent le 5e percentile pour la limite inférieure et le 95e percentile pour la limite supérieure.


                        Exemple de rapport de profilage Debugger