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.
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
Definire obiettivi di latenza, qualità e costi prima dell'implementazione.
Benchmark in condizioni di carico e dati realistiche.
Monitoraggio dello strumento per errori, deriva e impatto sull'utente.
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.
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.