Calcolatore della VRAM di addestramento per LLM
Dati di input
| Parametri | 7 |
|---|---|
| Memoria per parametro | Adam in precisione mista (16 byte/param) |
| Memoria delle attivazioni | 0 |
Calcolatore della VRAM di addestramento per LLM
Stima la VRAM della GPU necessaria per il fine-tuning completo di un modello linguistico di grandi dimensioni a partire dal numero di parametri, dalla scelta dell'ottimizzatore e dalla memoria delle attivazioni, usando la regola di Adam in precisione mista di 16 byte per parametro.
Dati di input
Modello
Attivazioni
Risultati
Inserisci un valore per visualizzare i risultati.
Dettagli
VRAM di addestramento per LLM
Il fine-tuning completo di un modello linguistico di grandi dimensioni richiede molta più memoria GPU della sua semplice esecuzione, e il motivo è l'ottimizzatore. L'inferenza mantiene solo i pesi, ma l'addestramento deve conservare anche un gradiente per ogni parametro e lo stato corrente dell'ottimizzatore, per poi aggiungere le attivazioni conservate durante il passaggio in avanti. Questo calcolatore stima la VRAM totale per il fine-tuning completo a partire dal numero di parametri, dal costo in memoria per parametro dell'ottimizzatore e da un valore di attivazione inserito a parte.
Gli stati del modello dominano
Il costo fisso più grande nell'addestramento sono gli stati del modello — i pesi, i loro gradienti e lo stato dell'ottimizzatore. Con parametri in miliardi e byte per parametro, gli stati del modello occupano
M=N⋅B GBIl valore standard per l'addestramento in precisione mista con Adam è 16 byte per parametro, che si scompongono così: due byte per il peso a 16 bit usato nel passaggio in avanti, due per il suo gradiente a 16 bit, quattro per una copia master a 32 bit del peso conservata per la stabilità numerica, e quattro per ciascuna delle due stime dei momenti di Adam — il momento e la varianza. Sono per ogni parametro. Gli ottimizzatori più economici riducono i termini dello stato dell'ottimizzatore: Adam a 8 bit memorizza i momenti a precisione più bassa per circa 12 byte per parametro, e il semplice SGD con momento ne richiede circa 8.
Le attivazioni si inseriscono a parte
Gli stati del modello sono fissi una volta scelti modello e ottimizzatore, ma le attivazioni no. Sono i valori intermedi conservati durante il passaggio in avanti affinché il passaggio all'indietro possa calcolare i gradienti, e la loro dimensione scala con la dimensione del batch e la lunghezza della sequenza anziché con il numero di parametri. Per questa indipendenza, il calcolatore prende la memoria delle attivazioni come input separato e la somma semplicemente:
V=M+Adove è la memoria delle attivazioni in GB. La memoria delle attivazioni può essere misurata eseguendo un singolo passo di addestramento e leggendo il picco di utilizzo, oppure ridotta nettamente con il checkpointing delle attivazioni, che le ricalcola nel passaggio all'indietro invece di conservarle.
Esempio svolto
Consideriamo un modello da 7 miliardi di parametri sottoposto a fine-tuning con Adam in precisione mista e, per cominciare, senza stima delle attivazioni:
MV=7×16=112 GB=112+0=112 GBI soli stati del modello sono 112 GB — già oltre un singolo acceleratore da 80 GB. Aggiungendo 20 GB realistici di attivazioni il totale sale a 132 GB, il che chiarisce il punto: persino un modello da 7B, banale da servire in inferenza a 16 bit, non può essere sottoposto a fine-tuning completo su una sola GPU di fascia comune. La memoria molto più piccola necessaria a semplicemente eseguire il modello è trattata nel Calcolatore della VRAM di inferenza per LLM.
Perché LoRA cambia il quadro
La maggior parte dei 16 byte per parametro sono il gradiente e lo stato dell'ottimizzatore, che esistono solo per i parametri effettivamente addestrati. LoRA congela i pesi di base e addestra piccoli adattatori a basso rango, quindi gradienti e stato dell'ottimizzatore coprono ben meno dell'uno percento dei parametri. I pesi congelati occupano comunque memoria, ma eliminare il termine più grande è ciò che permette a un modello che richiede 132 GB per il fine-tuning completo di entrare invece in una singola scheda da 24 GB. La dimensione di questi adattatori, e come il rango li controlla, è approfondita nel Calcolatore dei parametri LoRA. Considera il valore qui riportato come una stima di pianificazione e confermalo con un passo di addestramento reale, dato che i buffer temporanei e le allocazioni del framework spostano il numero effettivo.
Domande frequenti (FAQ)
Da dove vengono i 16 byte per parametro?
L'addestramento in precisione mista con l'ottimizzatore Adam mantiene diverse copie di ogni parametro. Due byte contengono il peso a 16 bit usato nel passaggio in avanti e altri due il suo gradiente a 16 bit. L'ottimizzatore Adam mantiene poi una copia master a 32 bit del peso (quattro byte) più due stime dei momenti a 32 bit — il momento e la varianza — di quattro byte ciascuna.
Sommando si ottengono 2 + 2 + 4 + 4 + 4 = 16 byte per parametro, che è la stima standard per gli stati del modello nel fine-tuning completo.
Perché LoRA richiede molta meno memoria?
Il fine-tuning completo porta gradienti e stato dell'ottimizzatore per ogni parametro, che costituiscono la maggior parte dei 16 byte per parametro. LoRA congela i pesi originali e addestra solo piccole matrici adattatrici a basso rango, quindi gradienti e stato dell'ottimizzatore esistono solo per una minima frazione dei parametri — spesso ben al di sotto dell'uno percento.
I pesi di base congelati occupano comunque memoria, ma non richiedono gradiente né stato dell'ottimizzatore, il che elimina il termine più grande e permette di fare il fine-tuning di modelli grandi su una singola GPU. La dimensione di questi adattatori è approfondita nel calcolatore dei parametri LoRA.
Come stimo la memoria delle attivazioni?
La memoria delle attivazioni è lo spazio per i valori intermedi conservati durante il passaggio in avanti, in modo che i gradienti possano essere calcolati nel passaggio all'indietro. A differenza degli stati del modello, scala con la dimensione del batch e la lunghezza della sequenza anziché con il numero di parametri, perciò qui si inserisce a parte.
Può essere misurata direttamente eseguendo un singolo passo di addestramento e leggendo il picco di memoria, oppure ridotta nettamente con il checkpointing delle attivazioni, che le ricalcola nel passaggio all'indietro invece di conservarle. Per una pianificazione approssimativa, parti da zero per vedere il minimo dato dagli stati del modello, poi aggiungi un valore misurato.
Avvertenze legali
Questa è una stima di primo livello della memoria per il fine-tuning completo. Omette i buffer temporanei, l'overhead di comunicazione e le allocazioni specifiche del framework, e tratta le attivazioni come un singolo valore inserito. Conferma con un passo di addestramento reale prima di dimensionare l'hardware.
Da provare dopo
Calcolatore della VRAM di inferenza per LLM
Stima la VRAM della GPU necessaria per servire in inferenza un modello linguistico di grandi dimensioni a partire dal numero di parametri, dalla precisione dei pesi e dall'overhead di runtime per la cache KV, le attivazioni e la frammentazione.