Deep Learning Academy · Lezione

Profilare il collo di bottiglia

Individui dove vengono impiegati tempo e memoria

Lezione 3 di 413 passaggi

Profilare il collo di bottiglia è una lezione Deep Learning Academy gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Deep Learning Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Deep Learning Academy include 4 lezioni in totale.

Perché profilare prima

Prima di ottimizzare, scopra dove viene effettivamente impiegato il tempo. Andare a tentativi fa sprecare energie, mentre un rapido profile mostra i veri punti lenti.

Due colli di bottiglia comuni

L'addestramento di solito rallenta in uno di due punti: nel GPU compute che esegue i calcoli oppure nella pipeline dei dati che lo alimenta. È importante capire quale dei due sia il problema.

Misurare prima in modo approssimativo

Inizi in modo semplice misurando il tempo di una sezione del ciclo con l'orologio. Una lettura approssimativa di perf_counter spesso indica l'area giusta in pochi secondi.

import time
t = time.perf_counter()
# run one batch
print(time.perf_counter() - t)

Il lavoro della GPU è asincrono

CUDA viene eseguito in background, quindi i timer ingenui danno risultati ingannevoli. Chiami prima synchronize per assicurarsi che la GPU abbia davvero terminato prima di leggere l'orologio.

torch.cuda.synchronize()

Il profiler integrato

Per ottenere dettagli reali, usi il context manager torch.profiler. Registra la durata di ogni operazione sia sulla CPU sia sulla GPU.

from torch.profiler import profile

Avvolgere il codice da profilare

Esegua la parte che le interessa all'interno di un blocco profile. Selezionando le attività sia CPU sia CUDA, otterrà il quadro completo.

with profile(activities=[ProfilerActivity.CPU, ProfilerActivity.CUDA]) as prof:
    model(x)

Leggere la tabella

Stampi i risultati ordinati per costo per vedere in cima le operazioni più pesanti. La tabella key_averages raggruppa le operazioni identiche.

print(prof.key_averages().table(sort_by='cuda_time_total'))

Individuare un collo di bottiglia nei dati

Se la GPU rimane spesso inattiva in attesa, il suo DataLoader è troppo lento. Di solito è possibile colmare questa lacuna aumentando il numero di worker o usando dati memorizzati nella cache.

Individuare un collo di bottiglia nel calcolo

Se una matmul o una conv domina la tabella, il limite è il compute puro. La leva da usare è la precisione mista oppure un modello più piccolo.

Controllare anche la memoria

Il profiler può anche riportare la memoria di picco. Monitorare profile_memory rivela quali layer ne consumano di più e indica cosa ridurre.

with profile(profile_memory=True) as prof:
    model(x)

Misurare, modificare, misurare di nuovo

L'ottimizzazione è un ciclo: profilare, apportare una modifica e poi profilare di nuovo. Si affidi ai numeri, non alle intuizioni, per verificare che una correzione sia stata davvero utile.

Verifica rapida

La GPU rimane spesso inattiva tra un batch e l'altro. Qual è il probabile collo di bottiglia?

Riepilogo

Profiler prima di ottimizzare: usi synchronize per ottenere misurazioni affidabili, usi torch.profiler per trovare le operazioni più pesanti, poi intervenga sui dati o sul calcolo e misuri di nuovo. 🔍

Gratis per iniziare

Impara Python con un tutor IA — gratis

Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.

Corsi
30
Lezioni
120

Domande Frequenti

La lezione «Profilare il collo di bottiglia» è gratuita?

Sì — il testo completo di «Profilare il collo di bottiglia» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Deep Learning Academy, passa a CoddyKit PRO. Il corso Deep Learning Academy include 4 lezioni in totale.

Cosa imparerò in «Profilare il collo di bottiglia»?

Individui dove vengono impiegati tempo e memoria Eserciti Deep Learning Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Deep Learning Academy?

Non è richiesta alcuna esperienza precedente. Deep Learning Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.

Quanto tempo richiede la lezione «Profilare il collo di bottiglia»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Deep Learning Academy?

Sì. Ogni lezione Deep Learning Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Precisione mista con autocast e GradScaler
  2. Accumulo dei gradienti per batch grandi
  3. Profilare il collo di bottiglia
  4. Ridurre l'uso della memoria della GPU
← Torna a Deep Learning Academy