Fusionner les calendriers de différents fichiers de suivi de profilage - Amazon SageMaker

Fusionner les calendriers de différents fichiers de suivi de profilage

La bibliothèque client SMDebug fournit des outils d'analyse de profilage et de visualisation pour fusionner les chronologies des métriques système, des métriques de cadre et des données de profilage Python collectées par Debugger.

Astuce

Avant de continuer, vous devez définir un objet TrainingJob qui sera utilisé dans tous les exemples de cette page. Pour plus d'informations sur la configuration d'un objet TrainingJob, veuillez consulter Accéder aux données de surveillance et de profilage.

La classe MergedTimeline fournit des outils permettant d'intégrer et de mettre en corrélation différentes informations de profilage dans une seule chronologie. Après que Debugger capture les données de profilage et les annotations de différentes phases d'une tâche d'entraînement, les fichiers JSON des événements de suivi sont enregistrés dans un répertoire tracefolder par défaut.

  • Pour les annotations dans les couches Python, les fichiers de suivi sont enregistrés dans *pythontimeline.json.

  • Pour les annotations dans les couches TensorFlow C++, les fichiers de suivi sont enregistrés dans *model_timeline.json.

  • Le profileur Tensorflow enregistre les événements dans un fichier *trace.json.gz.

Astuce

Si vous souhaitez répertorier tous les fichiers de suivi JSON, utilisez la commande AWS CLI suivante :

! aws s3 ls {tj.profiler_s3_output_path} --recursive | grep '\.json$'

Comme le montre la capture d'écran animée suivante, placer et aligner les événements de suivi capturés à partir des différentes sources de profilage dans un seul graphique peut fournir un aperçu de l'ensemble des événements se produisant dans les différentes phases de la tâche d'entraînement.


                Exemple de chronologie fusionnée
Astuce

Pour interagir avec la chronologie fusionnée de l'appli de suivi à l'aide d'un clavier, utilisez la touche W pour zoomer, la touche A pour aller vers la gauche, la touche S pour dézoomer et la touche D pour aller vers la droite.

Les fichiers JSON de suivi d'événements multiples peuvent être fusionnés dans un fichier JSON d'événement de suivi à l'aide de l'opération d'API MergedTimeline suivante et de la méthode de classe du module smdebug.profiler.analysis.utils.merge_timelines.

from smdebug.profiler.analysis.utils.merge_timelines import MergedTimeline combined_timeline = MergedTimeline(path, file_suffix_filter, output_directory) combined_timeline.merge_timeline(start, end, unit)

L'opération d'API MergedTimeline transmet les paramètres suivants :

  • path (str) : spécifie un dossier racine (/profiler-output) qui contient des fichiers de suivi de profilage système et de cadre. Vous pouvez localiser la sortie profiler-output à l'aide de la méthode de classe d'estimateur SageMaker ou de l'objet TrainingJob. Par exemple, estimator.latest_job_profiler_artifacts_path() ou tj.profiler_s3_output_path.

  • file_suffix_filter (liste) : spécifiez une liste de filtres de suffixe de fichier pour fusionner les chronologies. Les filtres de suffixe disponibles sont ["model_timeline.json", "pythontimeline.json", "trace.json.gz"]. Si ce paramètre n'est pas spécifié manuellement, tous les fichiers de suivi sont fusionnés par défaut.

  • output_directory (str) : spécifiez un chemin d'accès pour enregistrer le fichier JSON de chronologie fusionné. La valeur par défaut est le répertoire spécifié pour le paramètre path.

La méthode de classe merge_timeline() transmet les paramètres suivants pour exécuter le processus de fusion :

  • start (ent) : spécifiez l'heure de début (en microsecondes et au format Unix) ou l'étape de démarrage pour fusionner les chronologies.

  • end (ent) : spécifiez l'heure de fin (en microsecondes et au format Unix) ou l'étape de fin pour fusionner les chronologies.

  • unit (str) : choisissez entre "time" et "step". La valeur par défaut est "time".

À l'aide des exemples de codes suivants, exécutez la méthode merge_timeline() et téléchargez le fichier JSON fusionné.

  • Fusionnez la chronologie avec l'option d'unité "time". L'exemple de code suivant fusionne tous les fichiers de suivi disponibles entre l'heure de début Unix (heure Unix absolue zéro) et l'heure Unix actuelle, ce qui signifie que vous pouvez fusionner les chronologies pour toute la durée de l'entraînement.

    import time from smdebug.profiler.analysis.utils.merge_timelines import MergedTimeline from smdebug.profiler.profiler_constants import CONVERT_TO_MICROSECS combined_timeline = MergedTimeline(tj.profiler_s3_output_path, output_directory="./") combined_timeline.merge_timeline(0, int(time.time() * CONVERT_TO_MICROSECS))
  • Fusionnez la chronologie avec l'option d'unité "step". L'exemple de code suivant fusionne toutes les chronologies disponibles entre l'étape 3 et l'étape 9.

    from smdebug.profiler.analysis.utils.merge_timelines import MergedTimeline combined_timeline = MergedTimeline(tj.profiler_s3_output_path, output_directory="./") combined_timeline.merge_timeline(3, 9, unit="step")

Ouvrez l'appli de suivi Chrome à l'adresse chrome://tracing sur un navigateur Chrome et ouvrez le fichier JSON. Vous pouvez explorer la sortie pour tracer la chronologie fusionnée.