Accedi ai dati delle statistiche di profilazione in Python - 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à.

Accedi ai dati delle statistiche di profilazione in Python

La profilazione Python fornisce metriche del framework relative alle funzioni e agli operatori Python negli script di formazione e nei framework di deep learning. SageMaker

Modalità e fasi di addestramento per la profilazione in Python

Per profilare intervalli specifici durante l'addestramento al fine di partizionare le statistiche per ciascuno di questi intervalli, Debugger fornisce strumenti per impostare modalità e fasi.

Per le modalità di addestramento, utilizza la seguente classe PythonProfileModes:

from smdebug.profiler.python_profile_utils import PythonProfileModes

Questa classe offre le seguenti opzioni:

  • PythonProfileModes.TRAIN: utilizzala se desideri profilare le fasi target della fase di addestramento. Questa opzione di modalità è disponibile solo per. TensorFlow

  • PythonProfileModes.EVAL: utilizzala se desideri profilare le fasi target della fase di valutazione. Questa opzione di modalità è disponibile solo per TensorFlow.

  • PythonProfileModes.PREDICT: utilizzala se desideri profilare le fasi target della fase di previsione. Questa opzione di modalità è disponibile solo per TensorFlow.

  • PythonProfileModes.GLOBAL: utilizzala se desideri profilare le fasi target nella fase globale, che include le tre fasi precedenti. Questa opzione di modalità è disponibile solo per PyTorch.

  • PythonProfileModes.PRE_STEP_ZERO: utilizzala se desideri profilare le fasi target nella fase di inizializzazione prima che inizi la prima fase di addestramento della prima epoca. Questa fase include l'invio iniziale del lavoro, il caricamento degli script di addestramento sulle istanze EC2, la preparazione delle istanze EC2 e il download dei dati di input. Questa opzione di modalità è disponibile per entrambi TensorFlow e PyTorch.

  • PythonProfileModes.POST_HOOK_CLOSE: utilizzala se desideri profilare le fasi di destinazione nella fase di finalizzazione dopo il completamento del processo di addestramento e la chiusura dell'hook Debugger. Questa fase include la profilazione dei dati mentre i processi di addestramento vengono finalizzati e completati. Questa opzione di modalità è disponibile per entrambi TensorFlow e PyTorch.

Per le fasi di addestramento, utilizza la seguente classe StepPhase:

from smdebug.profiler.analysis.utils.python_profile_analysis_utils import StepPhase

Questa classe offre le seguenti opzioni:

  • StepPhase.START: utilizzala per specificare il punto iniziale della fase di inizializzazione.

  • StepPhase.STEP_START: utilizzala per specificare la fase iniziale della fase di addestramento.

  • StepPhase.FORWARD_PASS_END: utilizzala per specificare le fasi in cui termina il passaggio in avanti. Questa opzione è disponibile solo per PyTorch.

  • StepPhase.STEP_END: utilizzala per specificare le fasi finali della fase di addestramento. Questa opzione è disponibile solo per TensorFlow.

  • StepPhase.END: utilizzala per specificare il punto finale della fase di finalizzazione (post-hook-close). Se l'hook di callback non è chiuso, non si verifica la profilazione della fase di finalizzazione.

Strumenti di analisi della profilazione in Python

Debugger supporta la profilazione Python con due strumenti di profilazione:

  • cProfile — Il profiler Python standard. cProfile raccoglie i parametri del framework sul tempo di CPU per ogni funzione chiamata quando la profilazione era abilitata.

  • Pyinstrument — Si tratta di un profiler Python a basso sovraccarico che campiona eventi di profilazione ogni millisecondi.

Per saperne di più sulle opzioni di profilazione di Python e su ciò che viene raccolto, consulta Inizia un processo di addestramento con il monitoraggio del sistema predefinito e la profilazione del framework personalizzata con diverse opzioni di profilazione.

Vengono forniti i seguenti metodi delle classi PythonProfileAnalysis, cProfileAnalysis, PyinstrumentAnalysis per recuperare e analizzare i dati di profilazione Python. Ogni funzione carica i dati più recenti dall'URI S3 predefinito.

from smdebug.profiler.analysis.python_profile_analysis import PythonProfileAnalysis, cProfileAnalysis, PyinstrumentAnalysis

Per impostare gli oggetti di profilazione Python per l'analisi, utilizzate le PyinstrumentAnalysis classi cProfileAnalysis or come mostrato nel seguente codice di esempio. Mostra come impostare un oggetto cProfileAnalysis e, se desideri utilizzare PyinstrumentAnalysis, sostituisci il nome della classe.

python_analysis = cProfileAnalysis( local_profile_dir=tf_python_stats_dir, s3_path=tj.profiler_s3_output_path )

I seguenti metodi sono disponibili per le classi cProfileAnalysis e PyinstrumentAnalysis per recuperare i dati delle statistiche di profilazione Python:

  • python_analysis.fetch_python_profile_stats_by_time(start_time_since_epoch_in_secs, end_time_since_epoch_in_secs)— Immette l'ora di inizio e l'ora di fine e restituisce le statistiche della funzione delle statistiche di fase i cui orari di inizio o di fine si sovrappongono all'intervallo fornito.

  • python_analysis.fetch_python_profile_stats_by_step(start_step, end_step, mode, start_phase, end_phase)— Comprende una fase iniziale e una fase finale e restituisce le statistiche della funzione di tutte le statistiche di fase il cui profilo step soddisfa start_step <= step < end_step.

    • start_step e end_step (str) — Specifica la fase iniziale e la fase finale per recuperare i dati delle statistiche di profilazione Python.

    • mode(str) — Specifica la modalità di addestramento del lavoro utilizzando la classe enumeratore PythonProfileModes. Il valore predefinito è PythonProfileModes.TRAIN. Le opzioni disponibili sono fornite nella sezione Modalità e fasi di addestramento per la profilazione Python.

    • start_phase(str) — Specifica la fase iniziale nelle fasi di destinazione utilizzando la classe enumeratore StepPhase. Questo parametro consente la profilazione tra le diverse fasi dell’addestramento. Il valore predefinito è StepPhase.STEP_START. Le opzioni disponibili sono fornite nella sezione Modalità e fasi di addestramento per la profilazione Python.

    • end_phase(str) — Specifica la fase finale nelle fasi di destinazione utilizzando la classe enumeratore StepPhase. Questo parametro imposta la fase finale dell'addestramento. Le opzioni disponibili sono le stesse del parametro start_phase. Il valore predefinito è StepPhase.STEP_END. Le opzioni disponibili sono fornite nella sezione Modalità e fasi di addestramento per la profilazione Python.

  • python_analysis.fetch_profile_stats_between_modes(start_mode, end_mode)— Recupera le statistiche dalla profilazione Python tra le modalità di inizio e fine.

  • python_analysis.fetch_pre_step_zero_profile_stats()— Recupera le statistiche dalla profilazione Python fino alla fase 0.

  • python_analysis.fetch_post_hook_close_profile_stats()— Recupera le statistiche dalla profilazione Python dopo la chiusura dell'hook.

  • python_analysis.list_profile_stats()— Restituisce una DataFrame delle statistiche di profilazione di Python. Ogni riga contiene i metadati per ogni istanza di profilazione e il file di statistiche corrispondente (uno per fase).

  • python_analysis.list_available_node_ids()— Restituisce un elenco degli ID dei nodi disponibili per le statistiche di profilazione Python.

I metodi specifici della classe cProfileAnalysis:

  • fetch_profile_stats_by_training_phase()— Recupera e aggrega le statistiche di profilazione Python per ogni possibile combinazione di modalità di inizio e fine. Ad esempio, se le fasi di addestramento e convalida vengono eseguite mentre è abilitata la profilazione dettagliata, le combinazioni sono (PRE_STEP_ZERO, TRAIN), (TRAIN, TRAIN), (TRAIN, EVAL), (EVAL, EVAL) e (EVAL, POST_HOOK_CLOSE). Tutti i file di statistiche all'interno di ciascuna di queste combinazioni vengono aggregati.

  • fetch_profile_stats_by_job_phase()— Recupera e aggrega le statistiche di profilazione di Python per fase di processo. Le fasi di processo sono initialization (profilazione fino alla fase 0), training_loop (addestramento e convalida) e finalization (profilazione dopo la chiusura dell'hook).