Rapport de profilage SageMaker Debugger
Pour toutes les tâches d'entraînement SageMaker, la règle ProfilerReportDebugger 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
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écharger un rapport de profilage Debugger
Téléchargez le rapport de profilage 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 SDK Python Amazon SageMaker
Vous pouvez également télécharger le rapport en un clic et sans scripting supplémentaire via le tableau de bord Insights de SageMaker Studio Debugger. Pour savoir comment télécharger le rapport depuis Studio, consultez Ouvrir le tableau de bord Amazon SageMaker Debugger Insights.
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 en savoir plus sur la configuration du paramètre profiler_config
avant de démarrer une tâche d'entraînement, consultez Configurer le profilage du cadre Debugger.
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.
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.
Rubriques
- Résumé des tâches d'entraînement
- Statistiques d'utilisation du système
- Résumé des métriques de cadre
- Résumé des règles
- Analyse de la boucle d'entraînement — Durée des étapes
- Analyse d'utilisation du GPU
- Taille de lot
- Goulets d'étranglement CPU
- Goulets d'étranglement des I/O
- Équilibrage de charge dans l'entraînement multi-GPU
- Analyse de mémoire GPU
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.

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.

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.

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.

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.

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.

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.

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.

Goulets d'étranglement 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).

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 I/O
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 l'entraînement multi-GPU
Dans cette section, vous pouvez identifier le problème d'équilibrage de l'application entre les GPU.

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.
