Data loader di profilazione - Amazon SageMaker

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Data loader di profilazione

In PyTorch, gli iteratori del caricatore di dati, come SingleProcessingDataLoaderIter eMultiProcessingDataLoaderIter, vengono avviati all'inizio di ogni iterazione su un set di dati. Durante la fase di inizializzazione, PyTorch attiva i processi di lavoro in base al numero configurato di lavoratori, stabilisce una coda di dati per recuperare dati e thread. pin_memory

Per utilizzare lo strumento di analisi della profilazione del caricatore di PyTorch dati, importa la seguente classe: PT_dataloader_analysis

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

Passa i dati di profilazione recuperati come oggetto dati del frame Pandas nella sezione: Accedi ai dati di profilazione utilizzando lo strumento di analisi dei dati pandas

pt_analysis = PT_dataloader_analysis(pf)

Le seguenti funzioni sono disponibili per l'oggetto pt_analysis:

La classe S3SystemMetricsReader SMDebug legge i parametri di sistema dal bucket S3 specificato nel parametro s3_trial_path.

  • pt_analysis.analyze_dataloaderIter_initialization()

    L'analisi restituisce la durata mediana e massima per queste inizializzazioni. Se sono presenti valori anomali (ovvero la durata è superiore a 2* mediana), la funzione stampa l'ora di inizio e di fine di tali durate. Questi possono essere usati per ispezionare le metriche di sistema durante tali intervalli di tempo.

    L'elenco seguente mostra quali analisi sono disponibili con questo metodo di classe:

    • Che tipo di iteratori del data loader sono stati inizializzati.

    • Il numero di worker per iteratore.

    • Controlla se l'iteratore è stato inizializzato con o senza pin_memory.

    • Numero di volte in cui gli iteratori sono stati inizializzati durante l'addestramento.

  • pt_analysis.analyze_dataloaderWorkers()

    L'elenco seguente mostra quali analisi sono disponibili con questo metodo di classe:

    • Il numero di processi di lavoro che sono stati scorporati durante l'intero addestramento.

    • Durata mediana e massima dei processi di lavoro.

    • Ora di inizio e fine per i processi di lavoro che sono valori anomali.

  • pt_analysis.analyze_dataloader_getnext()

    L'elenco seguente mostra quali analisi sono disponibili con questo metodo di classe:

    • Numero di GetNext chiamate effettuate durante l'allenamento.

    • Durata media e massima in microsecondi delle chiamate. GetNext

    • Ora di inizio, ora di fine, durata e ID del lavoratore per la durata anomala della chiamata GetNext.

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

    Debugger raccoglie l'ora di inizio e di fine di tutte le chiamate. GetNext È possibile trovare la quantità di tempo impiegata dallo script di addestramento su un batch di dati. All'interno della finestra temporale specificata, è possibile identificare le chiamate che non contribuiscono direttamente all’addestramento. Queste chiamate possono provenire dalle seguenti operazioni: calcolo della precisione, aggiunta delle perdite per scopi di debug o registrazione e stampa delle informazioni di debug. Operazioni come queste possono richiedere molte risorse di calcolo o richiedere molto tempo. Possiamo identificare tali operazioni correlando il profiler Python, i parametri di sistema e i parametri del framework.

    L'elenco seguente mostra quali analisi sono disponibili con questo metodo di classe:

    • Analizza il tempo impiegato per ogni batch di datiBatchTime_in_seconds, trovando la differenza tra l'ora di inizio delle chiamate correnti e quelle successive. GetNext

    • Individua i valori anomali in BatchTime_in_seconds e l'ora di inizio e di fine di tali valori anomali.

    • Ottieni i parametri del sistema e del framework durante questi timestamp BatchTime_in_seconds. Questo indica dove è stato impiegato il tempo.

  • pt_analysis.plot_the_window()

    Traccia un grafico temporale tra un timestamp di inizio e il timestamp di fine.