Usa Amazon SageMaker Profiler per profilare le attività sulle risorse di AWS calcolo - 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à.

Usa Amazon SageMaker Profiler per profilare le attività sulle risorse di AWS calcolo

Amazon SageMaker Profiler è attualmente in versione di anteprima ed è disponibile gratuitamente nell'assistenza. Regioni AWS La versione generalmente disponibile di Amazon SageMaker Profiler (se disponibile) può includere funzionalità e prezzi diversi da quelli offerti in anteprima.

Amazon SageMaker Profiler è una funzionalità di Amazon SageMaker che fornisce una visualizzazione dettagliata delle risorse di AWS calcolo fornite durante l'addestramento dei modelli di deep learning. SageMaker Si concentra sulla profilazione dell'utilizzo di CPU e GPU, sul funzionamento del kernel sulle GPU, sul lancio del kernel sulle CPU, sulle operazioni di sincronizzazione, sulle operazioni di memoria tra CPU e GPU, sulle latenze tra i lanci del kernel e le esecuzioni corrispondenti e sul trasferimento di dati tra CPU e GPU. SageMaker Profiler offre anche un'interfaccia utente (UI) che visualizza il profilo, un riepilogo statistico degli eventi profilati e la cronologia di un processo di formazione per tracciare e comprendere la relazione temporale degli eventi tra GPU e CPU.

Nota

SageMaker Profiler supporta PyTorch TensorFlow ed è disponibile in AWS Deep Learning Containers per SageMaker. Per ulteriori informazioni, consulta Immagini di framework e tipi Regioni AWS di istanze supportati.

Per i data scientist

L'addestramento di modelli di deep learning su un cluster di elaborazione di grandi dimensioni presenta spesso dei problemi di ottimizzazione computazionale, come colli di bottiglia, latenze di avvio del kernel, limiti di memoria e basso utilizzo delle risorse.

Per identificare tali problemi di prestazioni computazionali, è necessario analizzare più a fondo le risorse di calcolo per comprendere quali kernel introducono latenze e quali operazioni causano colli di bottiglia. I data scientist possono trarre vantaggio dall'utilizzo dell'interfaccia utente di SageMaker Profiler per visualizzare il profilo dettagliato dei lavori di formazione. L'interfaccia utente fornisce un pannello di controllo dotato di grafici di riepilogo e un'interfaccia di sequenza temporale per tenere traccia di ogni evento sulle risorse di calcolo. I data scientist possono anche aggiungere annotazioni personalizzate per tenere traccia di alcune parti del lavoro di formazione utilizzando i moduli SageMaker Profiler Python.

Per gli amministratori

Tramite la pagina di destinazione Profiler nella SageMaker console o nel SageMaker dominio, puoi gestire gli utenti dell'applicazione Profiler se sei amministratore di un account o di un dominio. AWS SageMaker Ogni utente del dominio può accedere alla propria applicazione Profiler con le autorizzazioni concesse. In qualità di amministratore di SageMaker dominio e utente del dominio, puoi creare ed eliminare l'applicazione Profiler in base al livello di autorizzazione di cui disponi.

Immagini di framework e tipi Regioni AWS di istanze supportati

Questa funzionalità supporta i seguenti framework di machine learning e Regioni AWS.

Nota

Per utilizzare questa funzionalità, assicurati di avere almeno la versione 2.180.0 di Python SageMaker SDK installata.

SageMaker immagini del framework preinstallate con Profiler SageMaker

SageMaker Profiler è preinstallato nei seguenti AWS Deep Learning Containers per. SageMaker

PyTorchimmagini

PyTorch versioni AWS URI dell'immagine DLC
2.2.0

763104351884 .dkr.ecr. <region>.amazonaws.com/pytorch-training:2.2.0-gpu-py310-cu121-ubuntu20.04-sagemaker

2.1.0

763104351884 .dkr.ecr. <region>.amazonaws.com/pytorch-training:2.1.0-gpu-py310-cu121-ubuntu20.04-sagemaker

2.0.1

763104351884 .dkr.ecr. <region>.amazonaws.com/pytorch-training:2.0.1-gpu-py310-cu118-ubuntu20.04-sagemaker

763104351884 .dkr.ecr. <region>.amazonaws.com/pytorch-training:2.0.1-gpu-py310-cu121-ubuntu20.04-sagemaker

1.13.1

763104351884 .dkr.ecr. <region>.amazonaws.com/pytorch-training:1.13.1-gpu-py39-cu117-ubuntu20.04-sagemaker

TensorFlow immagini

TensorFlow versioni AWS URI dell'immagine DLC
2.13.0

763104351884 .dkr.ecr. <region>.amazonaws.com/tensorflow-training:2.13.0-gpu-py310-cu118-ubuntu20.04-sagemaker

2.12.0

763104351884 .dkr.ecr. <region>.amazonaws.com/tensorflow-training:2.12.0-gpu-py310-cu118-ubuntu20.04-sagemaker

2.11.0

763104351884 .dkr.ecr. <region>.amazonaws.com/tensorflow-training:2.11.0-gpu-py39-cu112-ubuntu20.04-sagemaker

Importante

La distribuzione e la manutenzione dei contenitori del framework nelle tabelle precedenti sono soggette alla Framework Support Policy gestita dal servizio AWS Deep Learning Containers. Ti consigliamo vivamente di eseguire l'aggiornamento alle versioni del framework attualmente supportate, se utilizzi versioni precedenti del framework che non sono più supportate.

Nota

Se desideri utilizzare SageMaker Profiler per altre immagini del framework o per le tue immagini Docker, puoi installare SageMaker Profiler utilizzando i file binari del pacchetto Profiler SageMaker Python forniti nella sezione seguente.

SageMaker File binari del pacchetto Python di Profiler

Se desideri configurare il tuo contenitore Docker, utilizzare SageMaker Profiler in altri contenitori predefiniti per PyTorch e TensorFlow, oppure installare il pacchetto Profiler SageMaker Python localmente, usa uno dei seguenti file binari. A seconda delle versioni di Python e CUDA presenti nell'ambiente, scegliete una delle seguenti opzioni.

PyTorch

TensorFlow

Per ulteriori informazioni su come installare SageMaker Profiler utilizzando i file binari, vedere. (Opzionale) Installa il pacchetto SageMaker Profiler Python

Supportato Regioni AWS

SageMaker Profiler è disponibile nelle seguenti Regioni AWS versioni.

  • Stati Uniti orientali (Virginia settentrionale) (us-east-1)

  • Stati Uniti orientali (Ohio) (us-east-2)

  • Stati Uniti occidentali (Oregon) (us-west-2)

  • Europa (Francoforte) (eu-central-1)

  • Europa (Irlanda) (eu-west-1)

Tipi di istanze supportati

SageMaker Profiler supporta la profilazione dei lavori di formazione sui seguenti tipi di istanze.

Profilazione di CPU e GPU

  • ml.g4dn.12xlarge

  • ml.g5.24xlarge

  • ml.g5.48xlarge

  • ml.p3dn.24xlarge

  • ml.p4de.24xlarge

  • ml.p4d.24xlarge

  • ml.p5.48xlarge

Solo profilazione GPU

  • ml.g5.2xlarge

  • ml.g5.4xlarge

  • ml.g5.8xlarge

  • ml.g5.16.xlarge

Prerequisiti

L'elenco seguente mostra i prerequisiti per iniziare a utilizzare Profiler. SageMaker

  • Un SageMaker dominio configurato con Amazon VPC nel tuo AWS account.

    Per istruzioni sulla configurazione di un dominio, consulta Onboard to Amazon SageMaker domain using quick setup. È inoltre necessario aggiungere profili utente di dominio per consentire ai singoli utenti di accedere all'applicazione Profiler UI. Per ulteriori informazioni, consulta Aggiungere e rimuovere profili utente di SageMaker dominio.

  • L'elenco seguente costituisce la serie minima di autorizzazioni per l'utilizzo dell'applicazione dell’interfaccia utente di Profilatore.

    • sagemaker:CreateApp

    • sagemaker:DeleteApp

    • sagemaker:DescribeTrainingJob

    • sagemaker:Search

    • s3:GetObject

    • s3:ListBucket

Prepara ed esegui un processo di formazione con SageMaker Profiler

La configurazione per l'esecuzione di un processo di formazione con SageMaker Profiler prevede due passaggi: adattamento dello script di formazione e configurazione del SageMaker training job launcher.

Passaggio 1: adattare lo script di formazione utilizzando i moduli SageMaker Profiler Python

Per iniziare a registrare le esecuzioni del kernel sulle GPU mentre il processo di formazione è in esecuzione, modifica lo script di addestramento utilizzando i moduli SageMaker Profiler Python. Importa la libreria e aggiungi i metodi start_profiling() e stop_profiling() per definire l’inizio e la fine della profilazione. È inoltre possibile utilizzare annotazioni personalizzate opzionali per aggiungere evidenziatori nello script di addestramento per visualizzare le attività hardware durante particolari operazioni in ogni fase.

Nota che gli annotatori estraggono le operazioni dalle GPU. Per le operazioni di profilazione nelle CPU, non è necessario aggiungere ulteriori annotazioni. La profilazione della CPU viene attivata anche quando specifichi la configurazione di profilazione, con la quale ti eserciterai in Fase 2: Creare uno stimatore del SageMaker framework e attivare Profiler SageMaker .

Nota

La profilazione di un intero processo di addestramento non è l'uso più efficiente delle risorse. Consigliamo di profilare al massimo 300 fasi di un processo di addestramento.

Importante

Il rilascio del comporta un cambiamento epocale. 14 dicembre 2023 Il nome del pacchetto SageMaker Profiler Python viene modificato smppy da a. smprof Questo è efficace nei SageMaker Framework Containers per la versione TensorFlow 2.12 e successive.

Se si utilizza una delle versioni precedenti dei SageMaker Framework Containers come la TensorFlow v2.11.0, il pacchetto Profiler SageMaker Python è ancora disponibile come. smppy Se non siete sicuri della versione o del nome del pacchetto da utilizzare, sostituite l'istruzione import del pacchetto SageMaker Profiler con il seguente frammento di codice.

try: import smprof except ImportError: # backward-compatability for TF 2.11 and PT 1.13.1 images import smppy as smprof

Approccio 1. Usa il gestore di contesto smprof.annotate per annotare funzioni complete

È possibile racchiudere funzioni complete con il gestore di contesto. smprof.annotate() Questo wrapper è consigliato se si desidera creare profili per funzioni anziché per righe di codice. Lo script di esempio seguente mostra come implementare il gestore di contesto per racchiudere il ciclo di addestramento e le funzioni complete in ogni iterazione.

import smprof SMProf = smprof.SMProfiler.instance() config = smprof.Config() config.profiler = { "EnableCuda": "1", } SMProf.configure(config) SMProf.start_profiling() for epoch in range(args.epochs): if world_size > 1: sampler.set_epoch(epoch) tstart = time.perf_counter() for i, data in enumerate(trainloader, 0): with smprof.annotate("step_"+str(i)): inputs, labels = data inputs = inputs.to("cuda", non_blocking=True) labels = labels.to("cuda", non_blocking=True) optimizer.zero_grad() with smprof.annotate("Forward"): outputs = net(inputs) with smprof.annotate("Loss"): loss = criterion(outputs, labels) with smprof.annotate("Backward"): loss.backward() with smprof.annotate("Optimizer"): optimizer.step() SMProf.stop_profiling()

Approccio 2. Usa smprof.annotation_begin() e smprof.annotation_end() per annotare una riga di codice specifica nelle funzioni

Inoltre, puoi definire annotazioni per profilare righe di codice specifiche. È possibile impostare il punto di inizio e il punto di fine esatti della profilazione a livello di singole righe di codice, non in base alle funzioni. Ad esempio, nello script seguente, step_annotator viene definito all'inizio di ogni iterazione e termina alla fine dell'iterazione. Nel frattempo, vengono definiti altri annotatori dettagliati per ciascuna operazione, i quali racchiudono le operazioni di destinazione durante ogni iterazione.

import smprof SMProf = smprof.SMProfiler.instance() config = smprof.Config() config.profiler = { "EnableCuda": "1", } SMProf.configure(config) SMProf.start_profiling() for epoch in range(args.epochs): if world_size > 1: sampler.set_epoch(epoch) tstart = time.perf_counter() for i, data in enumerate(trainloader, 0): step_annotator = smprof.annotation_begin("step_" + str(i)) inputs, labels = data inputs = inputs.to("cuda", non_blocking=True) labels = labels.to("cuda", non_blocking=True) optimizer.zero_grad() forward_annotator = smprof.annotation_begin("Forward") outputs = net(inputs) smprof.annotation_end(forward_annotator) loss_annotator = smprof.annotation_begin("Loss") loss = criterion(outputs, labels) smprof.annotation_end(loss_annotator) backward_annotator = smprof.annotation_begin("Backward") loss.backward() smprof.annotation_end(backward_annotator) optimizer_annotator = smprof.annotation_begin("Optimizer") optimizer.step() smprof.annotation_end(optimizer_annotator) smprof.annotation_end(step_annotator) SMProf.stop_profiling()

Dopo aver annotato e configurato i moduli di avvio del profiler, salvate lo script da inviare utilizzando un SageMaker training job launcher nel passaggio 2 successivo. L’utilità di avvio di esempio presuppone che lo script di addestramento sia denominato train_with_profiler_demo.py.

Fase 2: Creare uno stimatore del SageMaker framework e attivare Profiler SageMaker

La procedura seguente mostra come preparare uno stimatore di SageMaker framework per l'addestramento utilizzando SageMaker Python SDK.

  1. Configura un oggetto profiler_config utilizzando i moduli ProfilerConfig e Profiler nel modo seguente

    from sagemaker import ProfilerConfig, Profiler profiler_config = ProfilerConfig( profile_params = Profiler(cpu_profiling_duration=3600) )

    Di seguito è riportata la descrizione del modulo Profiler e il relativo argomento.

    • Profiler: Il modulo per attivare SageMaker Profiler con il job di formazione.

      • cpu_profiling_duration (int): specifica la durata in secondi per la profilazione sulle CPU. L’impostazione predefinita è 3600 secondi.

  2. Crea uno stimatore di SageMaker framework con l'profiler_configoggetto creato nel passaggio precedente. Il codice seguente mostra un esempio di creazione di uno PyTorch stimatore. Se vuoi creare uno TensorFlow stimatore, importa sagemaker.tensorflow.TensorFlow invece e specifica una delle TensorFlowversioni supportate da SageMaker Profiler. Per ulteriori informazioni sui framework e i tipi di istanza supportati, consulta SageMaker immagini del framework preinstallate con Profiler SageMaker .

    import sagemaker from sagemaker.pytorch import PyTorch estimator = PyTorch( framework_version="2.0.0", role=sagemaker.get_execution_role(), entry_point="train_with_profiler_demo.py", # your training job entry point source_dir=source_dir, # source directory for your training script output_path=output_path, base_job_name="sagemaker-profiler-demo", hyperparameters=hyperparameters, # if any instance_count=1, # Recommended to test with < 8 instance_type=ml.p4d.24xlarge, profiler_config=profiler_config )
  3. Avvia il processo di addestramento eseguendo il metodo fit. Con wait=False, puoi silenziare i registri dei processi di addestramento e lasciarli funzionare in background.

    estimator.fit(wait=False)

Durante l'esecuzione del processo di addestramento o dopo il completamento del processo, puoi passare all'argomento successivo in Apri l'applicazione SageMaker Profiler UI e iniziare a esplorare e visualizzare i profili salvati.

Se desideri accedere direttamente ai dati del profilo salvati nel bucket Amazon S3, usa lo script seguente per recuperare l'URI S3.

import os # This is an ad-hoc function to get the S3 URI # to where the profile output data is saved def get_detailed_profiler_output_uri(estimator): config_name = None for processing in estimator.profiler_rule_configs: params = processing.get("RuleParameters", dict()) rule = config_name = params.get("rule_to_invoke", "") if rule == "DetailedProfilerProcessing": config_name = processing.get("RuleConfigurationName") break return os.path.join( estimator.output_path, estimator.latest_training_job.name, "rule-output", config_name, ) print( f"Profiler output S3 bucket: ", get_detailed_profiler_output_uri(estimator) )

(Opzionale) Installa il pacchetto SageMaker Profiler Python

Per utilizzare SageMaker Profiler su PyTorch immagini del TensorFlow framework non elencate o su un contenitore Docker personalizzato per la formazione, puoi installare SageMaker Profiler utilizzando uno dei. SageMaker immagini del framework preinstallate con Profiler SageMaker SageMaker File binari del pacchetto Python di Profiler

Opzione 1: installa il pacchetto SageMaker Profiler durante l'avvio di un processo di formazione

Se desideri utilizzare SageMaker Profiler per lavori di formazione utilizzando TensorFlow immagini PyTorch o immagini non elencateSageMaker immagini del framework preinstallate con Profiler SageMaker , crea un requirements.txt file e posizionalo nel percorso specificato per il source_dir parametro dello stimatore del SageMaker framework nel Passaggio 2. Per ulteriori informazioni sulla configurazione di un requirements.txt file in generale, consulta Uso di librerie di terze parti nella documentazione di SageMaker Python SDK. Nel requirements.txt file, aggiungi uno dei percorsi dei bucket S3 per. SageMaker File binari del pacchetto Python di Profiler

# requirements.txt https://smppy.s3.amazonaws.com/tensorflow/cu112/smprof-0.3.332-cp39-cp39-linux_x86_64.whl

Opzione 2: installa il pacchetto SageMaker Profiler nei tuoi contenitori Docker personalizzati

Se utilizzi un contenitore Docker personalizzato per la formazione, aggiungine uno SageMaker File binari del pacchetto Python di Profiler al tuo Dockerfile.

# Install the smprof package version compatible with your CUDA version RUN pip install https://smppy.s3.amazonaws.com/tensorflow/cu112/smprof-0.3.332-cp39-cp39-linux_x86_64.whl

Per indicazioni sulla gestione di un contenitore Docker personalizzato per la formazione SageMaker in generale, vedi Adattamento del tuo contenitore di formazione.

Apri l'applicazione SageMaker Profiler UI

È possibile accedere all'applicazione SageMaker Profiler UI tramite le seguenti opzioni.

Opzione 1: avvia l'interfaccia utente di SageMaker Profiler dalla pagina dei dettagli del dominio

Se hai accesso alla SageMaker console, puoi scegliere questa opzione.

Vai alla pagina dei dettagli del dominio

La procedura seguente mostra come accedere alla pagina dei dettagli del dominio.

  1. Apri la SageMaker console Amazon all'indirizzo https://console.aws.amazon.com/sagemaker/.

  2. Nel riquadro di navigazione a sinistra, scegli Domini.

  3. Dall'elenco dei domini, seleziona il dominio in cui desideri avviare l'applicazione SageMaker Profiler.

Avvia l'applicazione SageMaker Profiler UI

La procedura seguente mostra come avviare l'applicazione SageMaker Profiler destinata a un profilo utente.

  1. Nella pagina dei dettagli del dominio, scegli la scheda Profili utente.

  2. Identifica il profilo utente per il quale desideri avviare l'applicazione SageMaker Profiler UI.

  3. Scegli Avvia per il profilo utente selezionato, quindi scegli Profilatore.

Opzione 2: avvia l'applicazione SageMaker Profiler UI dalla landing page di SageMaker Profiler nella console SageMaker

La procedura seguente descrive come avviare l'applicazione SageMaker Profiler UI dalla landing page di SageMaker Profiler nella console. SageMaker Se hai accesso alla SageMaker console, puoi scegliere questa opzione.

  1. Apri la SageMaker console Amazon all'indirizzo https://console.aws.amazon.com/sagemaker/.

  2. Nel pannello di navigazione a sinistra, seleziona Profililatore.

  3. In Inizia, seleziona il dominio in cui desideri avviare l'applicazione Studio Classic. Se il profilo utente appartiene a un solo dominio, non è disponibile l'opzione per la selezione di un dominio.

  4. Seleziona il profilo utente per il quale desideri avviare l'applicazione SageMaker Profiler UI. Se nel dominio non è presente alcun profilo utente, scegli Crea profilo utente. Per ulteriori informazioni sulla creazione di un nuovo profilo utente, consulta Add and Remove User Profiles.

  5. Scegli Apri Profilatore.

Opzione 3: usa la funzione di avvio delle applicazioni nell'SDK SageMaker Python

Se sei un utente di SageMaker dominio e hai accesso solo a SageMaker Studio, puoi accedere all'applicazione SageMaker Profiler UI tramite SageMaker Studio Classic eseguendo la funzione. sagemaker.interactive_apps.detail_profiler_app.DetailProfilerApp

Tieni presente che SageMaker Studio Classic è la precedente esperienza dell'interfaccia utente di Studio prima di re:Invent 2023 e viene migrata come applicazione in un'interfaccia utente di Studio di nuova progettazione a re:Invent 2023. L'applicazione SageMaker Profiler UI è disponibile a livello di dominio e richiede quindi l' SageMaker ID di dominio e il nome del profilo utente. Attualmente, la DetailedProfilerApp funzione funziona solo all'interno dell'applicazione SageMaker Studio Classic; la funzione raccoglie correttamente le informazioni sul dominio e sul profilo utente da SageMaker Studio Classic.

Per il dominio, gli utenti del dominio e Studio creato prima di re:Invent 2023, Studio Classic sarebbe l'esperienza predefinita a meno che tu non lo abbia aggiornato seguendo le istruzioni in Migrazione da Amazon SageMaker Studio Classic. In questo caso, non sono necessarie ulteriori azioni e puoi avviare direttamente l'applicazione SageMaker Profiler UI eseguendo la funzione. DetailProfilerApp

Se hai creato un nuovo dominio e Studio dopo re:Invent 2023, avvia l'applicazione Studio Classic all'interno dell'interfaccia utente di Studio, quindi esegui la DetailProfilerApp funzione per avviare l'applicazione Profiler UI. SageMaker

Tieni presente che la DetailedProfilerApp funzione non funziona in altri IDE di SageMaker machine learning, come l'applicazione Studio, l' JupyterLab applicazione SageMaker SageMaker Studio Code Editor e le istanze Notebook. SageMaker Se esegui la DetailedProfilerApp funzione in questi IDE, restituisce un URL alla pagina di destinazione di Profiler nella SageMaker console, anziché un collegamento diretto per aprire l'applicazione Profiler UI.

Esplora i dati di output del profilo visualizzati nell'interfaccia utente di Profiler SageMaker

Questa sezione illustra l'interfaccia utente di SageMaker Profiler e fornisce suggerimenti su come utilizzarla e trarne informazioni.

Caricamento del profilo

Quando apri l'interfaccia utente SageMaker di Profiler, viene visualizzata la pagina Carica profilo. Per caricare e generare il pannello di controllo e la sequenza temporale, segui la procedura seguente.

Per caricare il profilo di un processo di addestramento
  1. Dalla sezione Elenco dei processi di addestramento, utilizza la casella di controllo per scegliere il processo di addestramento per il quale desideri caricare il profilo.

  2. Scegli Carica. Il nome del processo dovrebbe apparire nella sezione Profilo caricato nella parte superiore.

  3. Scegli il pulsante di opzione a sinistra del nome del processo per generare il pannello di controllo e la sequenza temporale. Tieni presente che quando scegli il pulsante di opzione, l'interfaccia utente apre automaticamente il pannello di controllo. Tieni inoltre presente che se generi le visualizzazioni mentre lo stato del lavoro e lo stato di caricamento sembrano ancora in corso, l'interfaccia utente di SageMaker Profiler genera grafici del dashboard e una cronologia con i dati del profilo più recenti raccolti dal processo di formazione in corso o dai dati del profilo parzialmente caricati.

Suggerimento

È possibile caricare e visualizzare un profilo alla volta. Per caricare un altro profilo, devi prima scaricare il profilo precedentemente caricato. Per scaricare un profilo, utilizza l'icona del cestino all'estremità destra del profilo nella sezione Profilo caricato.

Una schermata della pagina Load profile nell'interfaccia utente di Profiler SageMaker

Pannello di controllo

Dopo aver completato il caricamento e la selezione del processo di addestramento, l'interfaccia utente apre la pagina Pannello di controllo, dotata, per impostazione predefinita, dei seguenti pannelli.

  • Tempo attivo della GPU: questo grafico a torta mostra la percentuale di tempo di attività rispetto al tempo di inattività della GPU. Puoi verificare se le tue GPU sono più attive che inattive durante l'intero processo di addestramento. Il tempo di avvità della GPU si basa sui punti dati del profilo con un tasso di utilizzo superiore allo 0%, mentre il tempo di inattività della GPU è costituito dai punti dati profilati con un utilizzo dello 0%.

  • Utilizzo della GPU nel tempo: questo grafico di sequenza temporale mostra il tasso di utilizzo medio della GPU nel tempo per nodo, aggregando tutti i nodi in un unico grafico. Puoi verificare se le GPU presentano un carico di lavoro sbilanciato, problemi di sottoutilizzo, colli di bottiglia o problemi di inattività durante determinati intervalli di tempo. Per tenere traccia del tasso di utilizzo a livello di singola GPU e delle relative esecuzioni del kernel, utilizza Interfaccia della sequenza temporale. Tieni presente che la raccolta delle attività GPU inizia dal punto in cui hai aggiunto la funzione di avvio del profilatore nello script di addestramento e SMProf.start_profiling() si ferma in SMProf.stop_profiling().

  • Tempo di attività della CPU: questo grafico a torta mostra la percentuale di tempo di attività rispetto al tempo di inattività della GPU. Puoi verificare se le tue CPU sono più attive che inattive durante l'intero processo di addestramento. Il tempo di avvità della CPU si basa sui punti dati profilati con un tasso di utilizzo superiore allo 0%, mentre il tempo di inattività della CPU è costituito dai punti dati profilati con un utilizzo dello 0%.

  • Utilizzo della CPU nel tempo: questo grafico di sequenza temporale mostra il tasso di utilizzo medio della CPU nel tempo per nodo, aggregando tutti i nodi in un unico grafico. Puoi verificare se le CPU sono bloccate o sottoutilizzate durante determinati intervalli di tempo. Per tenere traccia del tasso di utilizzo delle CPU in linea con l'utilizzo della singola GPU e le esecuzioni del kernel, usa Interfaccia della sequenza temporale. Tieni presente che i parametri di utilizzo iniziano dall'inizio dell'inizializzazione del processo.

  • Tempo impiegato da tutti i kernel GPU: questo grafico a torta mostra tutti i kernel della GPU utilizzati durante il processo di addestramento. Per impostazione predefinita, mostra i 15 principali kernel della GPU come singoli settori e tutti gli altri kernel in un settore. Passa il mouse sui settori per visualizzare informazioni più dettagliate. Il valore mostra il tempo totale di funzionamento dei kernel della GPU in secondi, mentre la percentuale si basa sull'intero tempo del profilo.

  • Tempo impiegato dai 15 principali kernel GPU: questo grafico a torta mostra tutti i kernel della GPU utilizzati durante il processo di addestramento. Mostra i 15 principali kernel GPU suddivisi per singoli settori. Passa il mouse sui settori per visualizzare informazioni più dettagliate. Il valore mostra il tempo totale di funzionamento dei kernel della GPU in secondi, mentre la percentuale si basa sull'intero tempo del profilo.

  • Numero di lanci di tutti i kernel GPU: questo grafico a torta mostra il numero di conteggi per ogni kernel GPU lanciato durante il processo di addestramento. Mostra i 15 principali kernel della GPU come singoli settori e tutti gli altri kernel in un settore. Passa il mouse sui settori per visualizzare informazioni più dettagliate. Il valore mostra il numero totale dei kernel GPU lanciati e la percentuale si basa sul conteggio totale di tutti i kernel.

  • Numero di lanci dei 15 principali kernel GPU: questo grafico a torta mostra il numero di conteggi di ogni kernel GPU lanciato durante il processo di addestramento. Mostra i 15 principali kernel GPU. Passa il mouse sui settori per visualizzare informazioni più dettagliate. Il valore mostra il numero totale dei kernel GPU lanciati e la percentuale si basa sul conteggio totale di tutti i kernel.

  • Distribuzione dell’orario della fase: questo istogramma mostra la distribuzione delle durate delle fasi sulle GPU. Questo grafico viene generato solo dopo aver aggiunto l’annotatore delle fasi allo script di addestramento.

  • Distribuzione della precisione del kernel: questo grafico a torta mostra la percentuale di tempo impiegato per eseguire i kernel in diversi tipi di dati, come FP32, FP16, INT32 e INT8.

  • Distribuzione dell'attività della GPU: questo grafico a torta mostra la percentuale di tempo dedicato alle attività della GPU, come l'esecuzione dei kernel, la memoria (memcpy e memset) e la sincronizzazione (sync).

  • Distribuzione delle operazioni di memoria della GPU: questo grafico a torta mostra la percentuale di tempo impiegato per le operazioni di memoria della GPU. Visualizza le attività memcopy e aiuta a capire se il processo di addestramento dedica troppo tempo a determinate operazioni di memoria.

  • Crea un nuovo istogramma: crea un nuovo diagramma di un parametro personalizzato che hai annotato manualmente durante Passaggio 1: adattare lo script di formazione utilizzando i moduli SageMaker Profiler Python. Quando aggiungi un'annotazione personalizzata a un nuovo istogramma, seleziona o digita il nome dell'annotazione che hai aggiunto nello script di addestramento. Ad esempio, nello script di addestramento dimostrativo della fase 1, step, Forward, Backward, Optimize e Loss sono le annotazioni personalizzate. Durante la creazione di un nuovo istogramma, i nomi delle annotazioni dovrebbero apparire nel menu a discesa per la selezione delle metriche. Se scegli Backward, l'interfaccia utente aggiunge al pannello di controllo l'istogramma del tempo impiegato per i passaggi all'indietro durante il periodo di tempo profilato. Questo tipo di istogramma è utile per verificare se vi sono valori anomali che richiedono tempi anormalmente più lunghi e determinano problemi con i colli di bottiglia.

Gli screenshot seguenti mostrano il rapporto tra tempo di attività di GPU e CPU e il tasso di utilizzo medio di GPU e CPU rispetto al tempo per nodo di calcolo.

Una schermata della pagina Dashboard nell'interfaccia utente di Profiler SageMaker

Lo screenshot seguente mostra un esempio di grafici a torta per confrontare quante volte vengono avviati i kernel della GPU e per misurare il tempo impiegato per eseguirli. Nei pannelli Tempo impiegato da tutti i kernel GPU e Numero di avvii di tutti i kernel GPU, puoi anche specificare un numero intero nel campo di immissione per k per regolare il numero di legende da mostrare nei grafici. Ad esempio, se specifichi 10, i grafici mostrano rispettivamente i primi 10 kernel più eseguiti e lanciati.

Una schermata della pagina Dashboard nell'interfaccia utente di Profiler SageMaker

Lo screenshot seguente mostra un esempio di istogramma della durata delle fasi e dei grafici a torta per la distribuzione di precisione del kernel, la distribuzione dell'attività della GPU e la distribuzione delle operazioni di memoria della GPU.

Una schermata della pagina Dashboard nell'interfaccia utente di Profiler SageMaker

Interfaccia della sequenza temporale

Per ottenere una visualizzazione dettagliata delle risorse di calcolo a livello di operazioni e kernel pianificati sulle CPU ed eseguiti sulle GPU, utilizza l'interfaccia Sequenza temporale.

È possibile ingrandire e rimpicciolire e spostarsi a sinistra o a destra nell'interfaccia della sequenza temporale utilizzando il mouse, i tasti [w, a, s, d] o i quattro tasti freccia sulla tastiera.

Suggerimento

Per ulteriori suggerimenti sui tasti di scelta rapida per interagire con l'interfaccia della Sequenza temporale, scegli Tasti di scelta rapida nel riquadro a sinistra.

Le tracce della sequenza temporale sono organizzate in una struttura ad albero, che fornisce informazioni dal livello di host a quello del dispositivo. Ad esempio, se esegui N istanze con otto GPU ciascuna, la struttura della sequenza temporale di ciascuna istanza sarebbe la seguente.

  • algo-inode: questi sono i SageMaker tag a cui assegnare i lavori alle istanze assegnate. La cifra inode viene assegnata in modo casuale. Ad esempio, se utilizzi 4 istanze, questa sezione si espande da algo-1 ad algo-4.

    • CPU: in questa sezione, puoi controllare il tasso di utilizzo medio della CPU e i contatori delle prestazioni.

    • GPU: in questa sezione puoi controllare il tasso di utilizzo medio della GPU, il tasso di utilizzo della GPU singola e i kernel.

      • Utilizzo SUM: i tassi di utilizzo medi della GPU per istanza.

      • HOST-0 PID-123: un nome univoco assegnato a ciascuna traccia del processo. L'acronimo PID è l'ID del processo e il numero aggiunto è il numero ID del processo registrato durante l'acquisizione dei dati dal processo. Questa sezione mostra le seguenti informazioni relative al processo.

        • Utilizzo della GPU-inum_gpu: il tasso di utilizzo della inum_gpuesima GPU nel tempo.

        • Dispositivo GPU-inum_gpu: il kernel viene eseguito sull'inum_gpu-esimo dispositivo GPU.

          • stream icuda_stream: stream CUDA che mostrano l'esecuzione del kernel sul dispositivo GPU. Per ulteriori informazioni sugli stream CUDA, consulta le diapositive in formato PDF all'indirizzo CUDA C/C++ Streams and Concurrency fornito da NVIDIA.

        • Host GPU-inum_gpu: il kernel viene avviato sull'host GPU inum_gpuesino.

I seguenti screenshot mostrano la sequenza temporale del profilo di un processo di addestramento eseguito su ml.p4d.24xlarge istanze dotate di 8 GPU NVIDIA A100 Tensor Core ciascuna.

Di seguito è riportata una visualizzazione ingrandita del profilo, che mostra una dozzina di fasi, tra cui un data loader intermittente tra step_232 e step_233 per il recupero del batch di dati successivo.

Uno screenshot della pagina Timeline dell'interfaccia utente di SageMaker Profiler, che visualizza il profilo di un esempio di lavoro di formazione.

Per ogni CPU è possibile tenere traccia dell'utilizzo della CPU e dei contatori delle prestazioni, come "clk_unhalted_ref.tsc" e "itlb_misses.miss_causes_a_walk", che sono indicativi delle istruzioni eseguite sulla CPU.

Per ogni GPU, puoi visualizzare una sequenza temporale dell'host e una sequenza temporale del dispositivo. Gli avvii del kernel si trovano sulla sequenza temporale dell'host e le esecuzioni del kernel si trovano sulla sequenza temporale del dispositivo. Inoltre, puoi visualizzare le annotazioni (ad esempio Avanti, Indietro e Ottimizza) se hai aggiunto uno script di addestramento nella sequenza temporale dell'host della GPU.

Nella visualizzazione della timeline, puoi anche tenere traccia delle coppie di kernel. launch-and-run Questo aiuta a capire come viene eseguito un avvio del kernel pianificato su un host (CPU) sul dispositivo GPU corrispondente.

Suggerimento

Premi il tasto f per ingrandire il kernel selezionato.

Lo screenshot seguente è una vista ingrandita in step_233 e in step_234 dallo screenshot precedente. La sequenza temporale selezionata nello screenshot seguente è l'operazione AllReduce, una fase essenziale di comunicazione e sincronizzazione nell'addestramento distribuito, eseguita sul dispositivo GPU-0. Nello screenshot, nota che l'avvio del kernel nell'host GPU-0 si connette al kernel eseguito nel flusso 1 del dispositivo GPU-0, indicato con la freccia di colore ciano.

Una schermata della pagina Timeline nell'interfaccia utente di Profiler SageMaker

Inoltre, quando selezioni una sequenza temporale, nel riquadro inferiore dell'interfaccia utente vengono visualizzate due schede informative, come mostrato nello screenshot precedente. La scheda Selezione corrente mostra i dettagli del kernel selezionato e l’avvio del kernel connesso dall'host. La direzione di connessione è sempre dall'host (CPU) al dispositivo (GPU) poiché ogni kernel GPU viene sempre richiamato da una CPU. La scheda Connessioni mostra la coppia di avvio ed esecuzione del kernel scelta. È possibile selezionarne una per spostarla al centro della vista Sequenza temporale.

Il seguente screenshot ingrandisce ulteriormente l’operazione AllReduce della coppia di avvio ed esecuzione.

Una schermata della pagina Timeline nell'interfaccia utente di Profiler SageMaker

Informazioni

In Informazioni, puoi accedere alle informazioni sul processo di addestramento caricato, come il tipo di istanza, nomi della risorsa Amazon (ARN) delle risorse di calcolo fornite per il processo, i nomi dei nodi e gli iperparametri.

Impostazioni

Per impostazione predefinita, l'istanza dell'applicazione SageMaker Profiler UI è configurata per chiudersi dopo 2 ore di inattività. In Impostazioni, usa le seguenti impostazioni per regolare il timer di spegnimento automatico.

  • Abilita l’arresto automatico dell'app: sceglilo e impostalo su Abilitato per consentire all'applicazione di chiudersi automaticamente dopo il numero di ore di tempo di inattività specificato. Per disattivare la funzionalità di arresto automatico, scegli Disabilitato.

  • Soglia di arresto automatico in ore: se scegli Abilitato per Abilita arresto automatico dell'app, puoi impostare il tempo di soglia in ore per l’arresto automatico dell'applicazione. Per impostazione predefinita, il valore è 2.

Domande frequenti sull'utilizzo di Profiler SageMaker

Utilizza le seguenti domande frequenti per trovare risposte sull'uso di SageMaker Profiler.

D: Ricevo un messaggio di errore, ModuleNotFoundError: No module named 'smppy'

Dal dicembre 2023, il nome del pacchetto SageMaker Profiler Python è cambiato smppy da smprof a per risolvere un problema di nome di pacchetto duplicatosmppy; è già utilizzato da un pacchetto open source.

Pertanto, se lo utilizzi smppy da prima di dicembre 2023 e riscontri questo ModuleNotFoundError problema, potrebbe essere dovuto al nome del pacchetto non aggiornato nello script di formazione mentre hai installato il smprof pacchetto più recente o ne utilizzi uno dei più recenti. SageMaker immagini del framework preinstallate con Profiler SageMaker In questo caso, assicuratevi di sostituire tutte le menzioni di smppy con smprof nel copione di allenamento.

Durante l'aggiornamento del nome del pacchetto SageMaker Profiler Python negli script di addestramento, per evitare confusione sulla versione del nome del pacchetto da usare, considera l'utilizzo di un'istruzione di importazione condizionale come mostrato nel seguente frammento di codice.

try: import smprof except ImportError: # backward-compatability for TF 2.11 and PT 1.13.1 images import smppy as smprof

Tieni inoltre presente che, se lo hai utilizzato smppy durante l'aggiornamento alla TensorFlow versione PyTorch o alle versioni più recenti, assicurati di installare il pacchetto più recente seguendo le istruzioni all'indirizzo. smprof (Opzionale) Installa il pacchetto SageMaker Profiler Python

D: Ricevo un messaggio di errore, ModuleNotFoundError: No module named 'smprof'

Innanzitutto, assicurati di utilizzare uno dei SageMaker Framework Containers ufficialmente supportati. Se non utilizzi uno di questi, puoi installare il smprof pacchetto seguendo le istruzioni all'indirizzo(Opzionale) Installa il pacchetto SageMaker Profiler Python.

D: Non riesco a importare ProfilerConfig

Se non riesci a importare ProfilerConfig nel tuo job launcher lo script utilizzando SageMaker Python SDK, il tuo ambiente locale o il kernel Jupyter potrebbero avere una versione notevolmente obsoleta di Python SDK. SageMaker Assicurati di aggiornare l'SDK alla versione più recente.

$ pip install --upgrade sagemaker

D: Ricevo un messaggio di errore, aborted: core dumped when importing smprof into my training script

In una versione precedente dismprof, questo problema si verifica con PyTorch 2.0+ e PyTorch Lightning. Per risolvere il problema, installa anche il smprof pacchetto più recente seguendo le istruzioni all'indirizzo. (Opzionale) Installa il pacchetto SageMaker Profiler Python

D: Non riesco a trovare l'interfaccia utente di SageMaker Profiler in Studio. SageMaker Come posso trovarla?

Se hai accesso alla SageMaker console, scegli una delle seguenti opzioni.

Se sei un utente di dominio e non hai accesso alla SageMaker console, puoi accedere all'applicazione tramite SageMaker Studio Classic. In questo caso, scegli la seguente opzione.

Considerazioni

Considerate quanto segue quando usate SageMaker Profiler.