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.
Fusion des chronologies de plusieurs fichiers de trace de profil
La bibliothèque SMDebug cliente fournit des outils d'analyse et de visualisation du profilage pour fusionner les chronologies des métriques du système, des métriques du framework et des données de profilage Python collectées par Debugger.
Astuce
Avant de continuer, vous devez définir un TrainingJob objet qui sera utilisé dans les exemples de cette page. Pour plus d'informations sur la configuration d'un TrainingJob objet, consultezAccès aux données du profil.
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 trace 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.

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 les localiser à l'profiler-output
aide de la méthode de classe SageMaker AI estimator ou de l'objet. TrainingJob Par exemple,estimator.latest_job_profiler_artifacts_path()
outj.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ètrepath
.
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"
. L’argument 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.