Profilage des chargeurs de données - 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.

Profilage des chargeurs de données

Dans PyTorch, les itérateurs du chargeur de données, tels que SingleProcessingDataLoaderIter etMultiProcessingDataLoaderIter, sont lancés au début de chaque itération sur un ensemble de données. Pendant la phase d'initialisation, PyTorch active les processus de travail en fonction du nombre de travailleurs configuré, établit une file d'attente de données pour récupérer les données et pin_memory les threads.

Pour utiliser l'outil d'analyse de profilage du chargeur de PyTorch données, importez la PT_dataloader_analysis classe suivante :

from smdebug.profiler.analysis.utils.pytorch_dataloader_analysis import PT_dataloader_analysis

Transmettez les données de profilage récupérées en tant qu'objet de données de cadre Pandas dans la section Accès aux données de profilage à l'aide de l'outil d'analyse de données Pandas :

pt_analysis = PT_dataloader_analysis(pf)

Les fonctions suivantes peuvent être utilisées pour l'objet pt_analysis :

La classe SMDebug S3SystemMetricsReader lit les métriques système à partir du compartiment S3 spécifié dans le paramètre s3_trial_path.

  • pt_analysis.analyze_dataloaderIter_initialization()

    L'analyse génère la durée médiane et maximale de ces initialisations. En cas de valeurs aberrantes (c'est-à-dire que la durée est supérieure à 2 fois la valeur médiane), la fonction affiche les heures de début et de fin pour ces durées. Celles-ci peuvent être utilisées pour inspecter les métriques système pendant ces intervalles de temps.

    La liste suivante indique l'analyse disponible à partir de cette méthode de classe :

    • Type d'itérateurs de chargeur de données initialisés.

    • Nombre de composants par itérateur.

    • Vérifiez si l'itérateur a été initialisé avec ou sans pin_memory.

    • Nombre de fois où les itérateurs ont été initialisés pendant l'entraînement.

  • pt_analysis.analyze_dataloaderWorkers()

    La liste suivante indique l'analyse disponible à partir de cette méthode de classe :

    • Nombre de processus de composant qui ont été détachés pendant toute la durée de l'entraînement.

    • Durée médiane et maximale pour les processus de composant.

    • Heure de début et de fin pour les processus de composant qui sont des anomalies.

  • pt_analysis.analyze_dataloader_getnext()

    La liste suivante indique l'analyse disponible à partir de cette méthode de classe :

    • Nombre d' GetNext appels passés pendant la formation.

    • Durée médiane et maximale en microsecondes pour les GetNext appels.

    • Heure de début, heure de fin, durée et identifiant du travailleur pour la durée exceptionnelle de l' GetNextappel.

  • pt_analysis.analyze_batchtime(start_timestamp, end_timestamp, select_events=[".*"], select_dimensions=[".*"])

    Debugger collecte les heures de début et de fin de tous les GetNext appels. Vous pouvez trouver le temps passé par le script d'entraînement sur un lot de données. Dans la fenêtre de la période spécifiée, vous pouvez identifier les appels qui ne contribuent pas directement à l'entraînement. Ces appels peuvent provenir des opérations suivantes : calcul de la précision, ajout des pertes à des fins de débogage ou de journalisation, et impression des informations de débogage. Des opérations comme celles-ci peuvent être exigeantes en calcul ou en temps. Nous pouvons identifier de telles opérations en corrélant le profileur Python, les métriques système et les métriques de cadre.

    La liste suivante indique l'analyse disponible à partir de cette méthode de classe :

    • Profilez le temps passé sur chaque lot de données en déterminant la différence entre l'heure de début des appels en cours et celle des GetNext appels suivants. BatchTime_in_seconds

    • Recherchez les valeurs aberrantes dans BatchTime_in_seconds ainsi que l'heure de début et de fin pour ces valeurs aberrantes.

    • Obtenez les métriques système et de cadre au cours de ces horodatages BatchTime_in_seconds. Cela indique à quoi le temps a été consacré.

  • pt_analysis.plot_the_window()

    Trace un graphique chronologique entre un horodatage de début et l'horodatage de fin.