GUIDA TECNICA

Accumulo di gradienti

L'accumulo di gradienti consente di simulare batch di grandi dimensioni su una memoria GPU limitata sommando i gradienti su diversi mini-batch di piccole dimensioni prima di aggiornare i pesi.

2 minuti di letturaUltimo aggiornamento

Panoramica

It is the standard workaround for training big models when memory is the bottleneck.

Immersione profonda

Normalmente una fase di training elabora un batch, calcola i gradienti e aggiorna immediatamente i parametri. Con l'accumulo del gradiente, si eseguono diversi passaggi avanti e indietro su micro-batch più piccoli, sommando i relativi gradienti nei buffer dei parametri e richiamando il passaggio dell'ottimizzatore (e azzerando i gradienti) solo dopo N micro-batch. La dimensione effettiva del batch diventa la dimensione del micro-batch per N, anche se la memoria di picco contiene sempre e solo un micro-batch di attivazioni. Ciò è importante perché molte ricette di formazione presuppongono lotti di grandi dimensioni per statistiche stabili e perché modelli come i trasformatori di grandi dimensioni non possono contenere un lotto target completo su un singolo dispositivo. Il problema: le statistiche di normalizzazione batch vengono calcolate per micro-batch, quindi la norma di livello o la norma di gruppo si accoppiano meglio con l'accumulo ed è necessario ridimensionare correttamente la perdita per mantenere il giusto tasso di apprendimento effettivo.

Approfondimento tecnico

Poiché i gradienti di una perdita sommata sono additivi, accumulare gradienti su N micro-lotti è matematicamente equivalente a un grande lotto, a condizione che si calcoli correttamente la media. Le implementazioni in genere dividono ciascuna perdita di micro-batch per N prima dell'indietro, quindi il gradiente accumulato è uguale alla media sull'intero batch effettivo. Salti optimizationr.step() e zero_grad() fino all'ennesimo micro-batch, scambiando tempo di elaborazione aggiuntivo con una memoria di picco ridotta.

Impatto strategico

Costo e budget

Le decisioni relative all'architettura determinano prestazioni e costi operativi per anni.

Decisioni più chiare

La formazione tecnica aiuta i team a scegliere lo stack giusto, non solo quello più nuovo.

Controllo di qualità

Migliori scelte ingegneristiche riducono gli incidenti legati all’affidabilità nella produzione.

Il futuro dell’accumulo di gradienti

L'accumulo del gradiente rimarrà una leva predefinita poiché le dimensioni dei modelli superano la memoria del singolo dispositivo. Si combina sempre più con precisione mista, checkpoint di attivazione, sharding ZeRO e parallelismo della pipeline in framework come DeepSpeed ​​e FSDP. Aspettatevi un'automazione più rigorosa in cui le librerie ottimizzano automaticamente i passaggi di accumulo in base a un budget di memoria e una continua importanza per la messa a punto di modelli di grandi dimensioni su hardware modesto, comprese le GPU consumer, dove sblocca una formazione che sarebbe altrimenti impossibile.

Implementazione nel mondo reale

Messa a punto di un modello linguistico di grandi dimensioni su una singola GPU consumer accumulando oltre 8 o 16 micro-batch per raggiungere un batch effettivo di centinaia.

Addestramento di modelli di visione o segmentazione ad alta risoluzione in cui si adatta anche un lotto di 2, ma la ricetta richiede un lotto effettivo di 32.

Hugging Face Trainer e PyTorch Lightning espongono un'impostazione gradient_accumulation_steps utilizzata di routine nelle configurazioni con VRAM limitata.

Riproduzione dei risultati di un batch di grandi dimensioni di un documento su hardware più piccolo facendo corrispondere le dimensioni effettive del batch tramite l'accumulo.

Rischi e guardrail

L'ottimizzazione di un benchmark può nascondere debolezze di sistema più ampie.

I costi delle infrastrutture e della manutenzione sono spesso sottostimati.

Le lacune in termini di sicurezza e osservabilità possono aumentare man mano che i sistemi diventano più complessi.

Tabella di marcia per l'implementazione

1

Definire obiettivi di latenza, qualità e costi prima dell'implementazione.

2

Benchmark in condizioni di carico e dati realistiche.

3

Monitoraggio dello strumento per errori, deriva e impatto sull'utente.

4

Preparare percorsi di rollback e risposta agli incidenti prima della scalabilità.

Continua a esplorare

Free newsletter

Get the daily AI briefing

Three verified AI stories every weekday morning, written in plain English. Free forever, no ads.

One email each weekday. Unsubscribe in one click. We never sell or share your address.

Test yourself

Take the Gradient Accumulation quiz

Instant feedback on every answer, and a shareable certificate with a verifiable ID once you pass a course.

Inizia il quiz

Support free AI education. AI Understanding is a 501(c)(3) nonprofit — no ads, no paywall, ever. Make a donation

Prossima guida

Gradienti evanescenti ed esplosivi

Domande frequenti

What is Gradient Accumulation?

L'accumulo di gradienti consente di simulare batch di grandi dimensioni su una memoria GPU limitata sommando i gradienti su diversi mini-batch di piccole dimensioni prima di aggiornare i pesi. È la soluzione alternativa standard per l'addestramento di modelli di grandi dimensioni quando la memoria rappresenta il collo di bottiglia.

Cosa ti consente principalmente di fare l’accumulo del gradiente?

Sommando i gradienti su diversi micro-batch prima dell'aggiornamento, si imita un batch di grandi dimensioni senza tenerlo tutto in memoria contemporaneamente.

Durante l'accumulo, quando si richiama la fase dell'ottimizzatore e si azzerano i gradienti?

Accumuli gradienti in N micro-lotti e aggiorni solo una volta alla fine del ciclo.

Quale livello di normalizzazione si accoppia in modo più pulito con l'accumulo del gradiente?

La norma batch calcola le statistiche per micro-batch, quindi la norma del livello o del gruppo evita la mancata corrispondenza con piccoli micro-batch.