0Pricing
Deep Learning Academy · Lezione

Accumulo dei gradienti per batch grandi

Simuli batch grandi su GPU di piccole dimensioni

Accumulo dei gradienti per batch grandi è una lezione Deep Learning Academy gratuita su CoddyKit. Questa è la lezione 2 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.

Il problema dei batch grandi

I batch grandi spesso rendono l'addestramento più stabile, ma richiedono anche molta memoria della GPU. Una scheda di piccole dimensioni non può contenere un batch enorme tutto in una volta.

Il concetto fondamentale

Gradient accumulation suddivide un batch grande in piccoli blocchi. I relativi gradienti vengono sommati e si esegue un solo aggiornamento, come se l'intero batch fosse stato elaborato insieme.

I gradienti si accumulano già

PyTorch aggiunge ogni passaggio backward a .grad invece di sostituirlo. Questo comportamento predefinito è esattamente ciò su cui si basa l'accumulo.

Scegliere il numero di accumuli

Scelga quanti mini-batch debbano formare un aggiornamento. Con un valore di quattro per accum_steps, quattro batch piccoli si comportano come un unico batch quattro volte più grande.

accum_steps = 4

Non azzerare a ogni step

Il cambiamento fondamentale riguarda il momento: usi zero_grad solo all'inizio di un ciclo di accumulo, non dopo ogni singolo mini-batch.

if step % accum_steps == 0:
    optimizer.zero_grad()

Ridimensionare la loss

Divida la loss di ogni mini-batch per accum_steps prima del backward. In questo modo il gradiente medio resta identico a quello ottenuto eseguendo subito il batch completo.

loss = loss_fn(model(x), y) / accum_steps
loss.backward()

Eseguire lo step solo quando è completo

Dopo aver accumulato un numero sufficiente di mini-batch, chiami optimizer.step. I gradienti accumulati rappresentano ora l'intero batch grande.

if (step + 1) % accum_steps == 0:
    optimizer.step()

Lo schema completo

Metta tutto insieme: ridimensioni la loss ed esegua il backward a ogni step, ma faccia step e zero solo una volta per ciclo. Il ciclo rimane semplice.

for step, (x, y) in enumerate(loader):
    loss = loss_fn(model(x), y) / accum_steps
    loss.backward()
    if (step + 1) % accum_steps == 0:
        optimizer.step()
        optimizer.zero_grad()

La memoria resta contenuta

In memoria viene mantenuto un solo mini-batch alla volta. Ecco perché una GPU di dimensioni moderate può simulare un batch molte volte più grande della propria capacità effettiva.

Il compromesso

L'accumulo scambia tempo con memoria: più passaggi forward e backward per ogni aggiornamento fanno sì che ogni batch effettivo richieda un po' più di tempo per essere completato.

Attenzione alla Batch Norm

La batch norm continua a vedere solo il mini-batch piccolo, quindi le sue statistiche sono più rumorose di quelle prodotte da un vero batch grande. Lo tenga presente.

Verifica rapida

Sta accumulando i gradienti su 4 mini-batch. Quando deve chiamare optimizer.step()?

Riepilogo

Divida un batch grande in blocchi, divida la loss per accum_steps, esegua il backward su ogni blocco ed esegua lo step una sola volta per ciclo, simulando un batch grande con poca memoria. 🧮

Domande Frequenti

La lezione «Accumulo dei gradienti per batch grandi» è gratuita?

Sì — il testo completo di «Accumulo dei gradienti per batch grandi» è 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 «Accumulo dei gradienti per batch grandi»?

Simuli batch grandi su GPU di piccole dimensioni 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 2 di 4.

Quanto tempo richiede la lezione «Accumulo dei gradienti per batch grandi»?

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