Monitoraggio predefinito del sistema e profilazione personalizzata del framework con diverse opzioni 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à.

Monitoraggio predefinito del sistema e profilazione personalizzata del framework con diverse opzioni di profilazione

Questa sezione fornisce informazioni sulle classi di configurazione di profilazione supportate, oltre a un esempio di configurazione. È possibile utilizzare le seguenti classi di configurazione della profilazione per gestire le opzioni di profilazione del framework:

  • DetailedProfilingConfig— Specificare una fase o un intervallo di tempo di destinazione per profilare le operazioni del framework utilizzando i profiler del framework nativi (profiler e TensorFlow PyTorch profiler). Ad esempio, se utilizzati TensorFlow, gli hook Debugger consentono al profiler di raccogliere metriche del TensorFlow framework specifiche. TensorFlow La profilazione dettagliata consente di profilare tutti gli operatori del framework in una fase previa (prima della prima fase), all'interno delle fasi e tra le fasi di un processo di addestramento.

    Nota

    La profilazione dettagliata potrebbe aumentare in modo significativo il consumo di memoria. GPU Non è consigliabile abilitare la profilazione dettagliata per più di un paio di fasi.

  • DataloaderProfilingConfig— Specificate una fase o un intervallo di tempo target per profilare i processi di caricamento dei dati del framework di deep learning. Debugger raccoglie tutti gli eventi di caricamento dati dei framework.

    Nota

    La profilazione del data loader potrebbe ridurre le prestazioni di addestramento durante la raccolta di informazioni dai caricatori di dati. Non è consigliabile abilitare la profilazione del data loader per più di un paio di fasi.

    Debugger è preconfigurato per annotare i processi di caricamento dei dati solo per i container di deep learning AWS . Debugger non può profilare i processi di caricamento dei dati da altri container di addestramento personalizzati o esterni.

  • PythonProfilingConfig— Specificare un passo o un intervallo di tempo di destinazione per profilare le funzioni Python. Puoi anche scegliere tra due profiler Python: cProfile e Pyinstrument.

    • cProfile— Il profiler Python standard. cProfile raccoglie informazioni per ogni operatore Python chiamato durante l'addestramento. ConcProfile, Debugger consente di risparmiare tempo e annotazioni cumulativi per ogni chiamata di funzione, fornendo dettagli completi sulle funzioni Python. Nel deep learning, ad esempio, le funzioni più frequentemente chiamate potrebbero essere i filtri convoluzionali e gli operatori di backward pass e profilare ognuna di esse. cProfile Per l' cProfile opzione, puoi selezionare ulteriormente un'opzione di timer: tempo totale, ora e CPU tempo di spegnimento. CPU Sebbene sia possibile profilare ogni chiamata di funzione eseguita sui processori (CPUsia cheGPU) in CPU tempo, è possibile identificare anche i colli di bottiglia di I/O o di rete con l'opzione off- time. CPU L'impostazione predefinita è il tempo totale e Debugger esegue i profili sia in modalità offline che in modalità non attiva. CPU CPU ConcProfile, è possibile approfondire ogni singola funzione durante l'analisi dei dati del profilo.

    • Pyinstrument: Pyinstrument è un profiler Python a basso costo che funziona in base al campionamento. Con l'opzione Pyinstrument, Debugger campiona gli eventi di profilazione ogni millisecondo. Poiché Pyinstrument misura il tempo trascorso dall'orologio da parete anziché il CPU tempo, l'opzione Pyinstrument può essere una scelta migliore rispetto all' cProfile opzione per ridurre il rumore di profilazione (filtrando le chiamate a funzioni irrilevanti che sono cumulativamente veloci) e catturare gli operatori che in realtà richiedono molta elaborazione (cumulativamente lenti) per addestrare il modello. Con Pyinstrument, puoi vedere un albero di chiamate di funzioni e comprendere meglio la struttura e la causa principale della lentezza.

    Nota

    L'attivazione della profilazione Python potrebbe rallentare il tempo complessivo di formazione. cProfile profila gli operatori Python più frequentemente chiamati ad ogni chiamata, quindi il tempo di elaborazione della profilazione aumenta rispetto al numero di chiamate. Per Pyinstrument, il tempo di profilazione cumulativo aumenta rispetto al tempo a causa del meccanismo di campionamento.

La configurazione di esempio seguente mostra la struttura completa quando si utilizzano le diverse opzioni di profilazione con valori specificati.

import time from sagemaker.debugger import (ProfilerConfig, FrameworkProfile, DetailedProfilingConfig, DataloaderProfilingConfig, PythonProfilingConfig, PythonProfiler, cProfileTimer) profiler_config=ProfilerConfig( system_monitor_interval_millis=500, framework_profile_params=FrameworkProfile( detailed_profiling_config=DetailedProfilingConfig( start_step=5, num_steps=1 ), dataloader_profiling_config=DataloaderProfilingConfig( start_step=7, num_steps=1 ), python_profiling_config=PythonProfilingConfig( start_step=9, num_steps=1, python_profiler=PythonProfiler.CPROFILE, cprofile_timer=cProfileTimer.TOTAL_TIME ) ) )

Per ulteriori informazioni sulle opzioni di profilazione disponibili DetailedProfilingConfigDataloaderProfilingConfig, consulta e PythonProfilingConfigin Amazon SageMaker Python SDK.