GUIDA TECNICA

Compromessi nel ricalcolo dell'attivazione

Il ricalcolo dell'attivazione (gradiente o checkpoint di attivazione) consente di risparmiare memoria GPU durante l'addestramento scartando le attivazioni intermedie nel passaggio in avanti e ricalcolandole durante il passaggio all'indietro.

2 minuti di letturaUltimo aggiornamento

Panoramica

It trades extra compute for the ability to train larger models or longer sequences on the same hardware.

Immersione profonda

La propagazione all'indietro necessita delle attivazioni del passaggio in avanti per calcolare i gradienti, quindi per impostazione predefinita gli output di ogni livello vengono archiviati: un enorme costo di memoria che cresce con la dimensione del modello, la dimensione del batch e la lunghezza della sequenza. Il ricalcolo dell'attivazione mantiene solo alcuni tensori "punto di controllo" (spesso solo i confini degli strati) e scarta il resto. Durante il passaggio all'indietro, esegue nuovamente il calcolo in avanti tra i checkpoint per rigenerare su richiesta le attivazioni scartate. Il risultato classico è che con i checkpoint posizionati su ogni livello sqrt(N), la memoria scende a circa O(sqrt(N)) aggiungendo circa un passaggio in avanti aggiuntivo (~ 33% in più di calcolo). Le varianti selettive ricalcolano solo le operazioni economiche ma che richiedono molta memoria (come l'attenzione o l'abbandono) mentre memorizzano nella cache quelle costose, ottenendo la maggior parte del risparmio di memoria con un sovraccarico di ricalcolo molto inferiore.

Approfondimento tecnico

Il compromesso fondamentale è la memoria rispetto ai FLOP. Il ricalcolo completo aggiunge all'incirca un passaggio in avanti aggiuntivo per passaggio (~ 30-40% più lento) ma può ridurre la memoria di attivazione di un ordine di grandezza. La mossa intelligente è il checkpoint selettivo: identificare le operazioni che occupano molta memoria ma che richiedono poco calcolo (softmax, layernorm, GELU, punteggi di attenzione) e ricalcolare solo quelle, mantenendo nella cache i risultati dei GEMM costosi, riducendo al minimo gli sprechi di calcolo.

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 dei compromessi di ricalcolo dell'attivazione

Il ricalcolo è sempre più automatizzato e selettivo. I framework ora profilano la memoria di ciascuna operazione e il costo FLOP per scegliere checkpoint ottimali e combinano il ricalcolo con l'offload di attivazione su CPU/NVMe e con strategie di parallelismo. Poiché la lunghezza del contesto e le dimensioni del modello continuano a crescere, è necessario aspettarsi policy guidate dal compilatore (in PyTorch, JAX/XLA) che scelgano automaticamente le decisioni di ricalcolo per operazione, oltre a una più stretta sovrapposizione del ricalcolo con la comunicazione in modo che i FLOP aggiuntivi siano parzialmente nascosti.

Implementazione nel mondo reale

Addestrando un grande trasformatore che altrimenti non si adatterebbe controllando ogni blocco di livello

Utilizzo di torch.utils.checkpoint di PyTorch per eseguire il wrap dei blocchi del trasformatore e ridurre la memoria di attivazione

Ricalcolo selettivo di attenzione/softmax in Megatron-LM per risparmiare memoria con un rallentamento minimo

Abilitazione di lunghezze di sequenza più lunghe con un budget GPU fisso ricalcolando le attivazioni invece di archiviarle

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 Activation Recomputation Tradeoffs 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

SmoothQuant e quantizzazione dell'attivazione

Domande frequenti

What is Activation Recomputation Tradeoffs?

Il ricalcolo dell'attivazione (gradiente o checkpoint di attivazione) consente di risparmiare memoria GPU durante l'addestramento scartando le attivazioni intermedie nel passaggio in avanti e ricalcolandole durante il passaggio all'indietro. Scambia ulteriore calcolo con la capacità di addestrare modelli più grandi o sequenze più lunghe sullo stesso hardware.

Cosa viene sacrificato dal ricalcolo dell'attivazione per risparmiare memoria?

Il ricalcolo elimina le attivazioni archiviate e le rigenera nel passaggio all'indietro, spendendo ulteriore calcolo per ridurre l'utilizzo della memoria.

Perché le attivazioni di passaggio in avanti vengono normalmente archiviate?

Il passaggio all'indietro utilizza le attivazioni in avanti per calcolare i gradienti, quindi per impostazione predefinita vengono mantenuti in memoria finché non viene eseguito il passaggio all'indietro.

All'incirca, quanto calcolo aggiuntivo aggiunge in genere il ricalcolo dell'attivazione completa?

Il ricalcolo completo esegue nuovamente il calcolo in avanti durante il passaggio all'indietro, aggiungendo all'incirca un passaggio in avanti extra, nell'ordine del 30-40% in più di calcolo.

Qual è l'idea alla base del ricalcolo selettivo (non completo)?

Il ricalcolo selettivo si rivolge alle operazioni che utilizzano molta memoria ma poco calcolo (come softmax o layernorm), memorizzando nella cache costosi risultati GEMM per ridurre al minimo i FLOP sprecati.

Quale tecnica complementare viene spesso combinata con il ricalcolo per risparmiare ancora più memoria?

L'offload dell'attivazione sposta alcune attivazioni sullo storage CPU/NVMe ed è spesso combinato con il ricalcolo e il parallelismo per un ulteriore risparmio di memoria.