Risorse/Addestramento del modello/Cosa accade durante l'addestramento

Best practice

Ci sarà spazio per il modello? Memoria per l'addestramento

L'addestramento richiede spazio per i pesi del modello, i suoi gradienti e lo stato dell'ottimizzatore, oltre alla memoria di lavoro. Una semplice regola empirica, circa 2 GB per miliardo di parametri per LoRA e 12 GB per il full fine-tuning, permette di sapere prima di iniziare se un modello è adatto alla propria macchina.

Capitolo 6Lettura di 4 min4 riferimenti

Perché l'addestramento richiede più memoria rispetto al download

L'esecuzione di un modello richiede poco più dei suoi pesi: un modello da 7B a 16 bit occupa circa 14 GB. L'addestramento richiede di più, perché ogni peso che apprende necessita anche di un gradiente (in quale direzione spostarlo) e dello stato dell'ottimizzatore (le medie mobili di Adam che stabiliscono di quanto). A questi si aggiungono le attivazioni del forward pass, che crescono con la dimensione del batch e la lunghezza degli esempi. Quali di questi elementi esistano per quali pesi è ciò che distingue il fine-tuning completo da LoRA.

La regola empirica

Una regola empirica per la memoria di addestramento
LoRA   ≈ 2 GB per billion parameters  + ~3 GB
         frozen 16-bit weights            adapter, activations, overhead

full   ≈ 12 GB per billion parameters + ~4 GB
         16-bit weight          2 bytes
         16-bit gradient        2 bytes
         Adam moment 1 (fp32)   4 bytes
         Adam moment 2 (fp32)   4 bytes
                              ─────────
                               12 bytes per weight
         (+ 4 bytes for a 32-bit master copy = 16)
  • LoRA mantiene la base congelata a 16 bit: 2 byte per peso, quindi 2 GB per miliardo di parametri. L'adattatore è minuscolo e i ~3 GB coprono quest'ultimo, il suo stato dell'ottimizzatore, le attivazioni a lunghezze moderate e il framework stesso.
  • Il full fine-tuning addestra ogni peso: un peso e un gradiente a 16 bit, più le due stime dei momenti a 32 bit di Adam, per un totale di 12 byte per peso.
  • QLoRA archivia il modello di base congelato a 4 bit, riducendo la memoria a circa un terzo rispetto a LoRA: un modello da 8B richiede circa 9 GB invece di 19.

La pagina sul fine-tuning completo calcola 16 byte per peso, non 12. La differenza è la copia master a 32 bit dei pesi che la classica configurazione a precisione mista mantiene accanto a quelli a 16 bit. Questa regola empirica presuppone un addestramento senza tale copia aggiuntiva; una configurazione che la mantiene richiede circa 16 GB per miliardo di parametri. Entrambe sono stime che non considerano gli esempi lunghi: le attivazioni si aggiungono a questo calcolo e crescono con la lunghezza massima e la dimensione del batch.

Fine-tuning completo16 bit + Adam≈ 112 GBLoRAbase a 16 bit, congelata≈ 15 GBQLoRAbase a 4 bit, congelata≈ 4–5 GBAdam + copia fp32pesi congelatipesi addestrabiligradientistato dell'ottimizzatore
Memoria GPU approssimativa per il fine-tuning di un modello da 7 miliardi di parametri, prima delle attivazioni. Il fine-tuning completo con Adam richiede circa 16 byte per ogni peso: i pesi, i relativi gradienti, una copia master a precisione completa e due statistiche dell'ottimizzatore. LoRA mantiene la base congelata, pertanto i gradienti e lo stato dell'ottimizzatore esistono solo per il piccolo adattatore (qui circa 40 milioni di pesi).
Dimensioni del modelloLoRAFull fine-tuning
0.5B~4 GB~10 GB
1.5B~6 GB~22 GB
3B~9 GB~40 GB
7B~17 GB~88 GB
14B~31 GB~172 GB

Le attivazioni sono la parte che la regola può solo approssimare. Crescono con il numero di token mantenuti contemporaneamente, ovvero la dimensione del batch moltiplicata per la lunghezza degli esempi; pertanto, raddoppiare la lunghezza massima le raddoppia all'incirca, e l'attenzione può aggiungerne ulteriormente per esempi molto lunghi. L'overhead fisso nella regola presuppone lunghezze moderate. Se gli esempi sono lunghi, è consigliabile lasciare un margine aggiuntivo piuttosto che pianificare fino all'ultimo gigabyte.

Quanta memoria si ha realmente a disposizione

Sui laptop con memoria unificata, come i Mac con Apple silicon, la GPU condivide la memoria principale, quindi un laptop da 36 GB può offrire a un modello più spazio rispetto a una tipica GPU da gaming. Tuttavia, il sistema operativo e le altre app richiedono la loro parte, quindi si consiglia di calcolare che circa tre quarti di essa siano liberi per l'addestramento. Su un PC con una scheda grafica separata, il limite è la memoria dedicata della GPU, non la RAM del computer.

Laptop da 36 GB27 GB utilizzabiliOS, app1.5B · LoRA≈ 6 GB · rientra7B · LoRA≈ 17 GB · rientra14B · LoRA≈ 31 GB · troppo grande32B · QLoRA≈ 22–26 GB · rientra1.5B · completo≈ 22 GB · rientra3B · completo≈ 40 GB · troppo grande
Cosa è supportato da un laptop da 36 GB con memoria condivisa, secondo la regola empirica di questa pagina. Rimangono circa 27 GB per l'addestramento una volta che il sistema operativo e le altre app hanno preso la loro parte. Stime illustrative: esempi lunghi e batch di grandi dimensioni richiedono più spazio.
Cosa rientra in un laptop da 36 GB (a scopo illustrativo)
  1. Memoria utilizzabile: dopo il sistema operativo e le app, circa 27 GB.
  2. Modello da 1.5B: LoRA 2 × 1.5 + 3 ≈ 6 GB, fine-tuning completo 12 × 1.5 + 4 ≈ 22 GB. Entrambi rientrano nei limiti.
  3. LoRA, modelli più grandi: un modello da 7B richiede circa 17 GB e rientra nei limiti; un modello da 14B richiede oltre 30 GB e non rientra. In pratica, LoRA supporta modelli fino a circa 10B.
  4. Fine-tuning completo, modelli più grandi: un modello da 3B richiede circa 40 GB, quindi il limite massimo è di circa 1.5B.
  5. QLoRA: un modello da 27–32B richiede circa 22–26 GB, rientrando nei limiti.
Il modello da 1.5B, in entrambi i modi
1.5B · LoRA    2 × 1.5 + 3   ≈  6 GB
1.5B · full   12 × 1.5 + 4   ≈ 22 GB

Su una GPU NVIDIA da 16 GB, la stessa regola indica che un modello da 8B richiede circa 19 GB con LoRA, che sono troppi, ma circa 9 GB con QLoRA, che rientra nei limiti lasciando spazio per esempi più lunghi.

Se un'esecuzione esaurisce la memoria

  1. Ridurre la lunghezza massima. La memoria cresce con la lunghezza degli esempi, quindi questa operazione libera il maggior quantitativo di spazio. Verificare prima che gli esempi tipici rientrino ancora nei limiti.
  2. Ridurre la dimensione del batch. Meno esempi per passaggio significano meno attivazioni mantenute contemporaneamente.
  3. Passare a QLoRA. La base a 4 bit occupa circa un quarto della memoria rispetto a una a 16 bit.
  4. Utilizzare il gradient checkpointing. Sacrifica circa il 20–30% della velocità in cambio di una memoria di attivazione molto inferiore, e molte configurazioni lo attivano già di default.
  5. Scegliere un modello più piccolo, oppure utilizzare LoRA invece del fine-tuning completo.

Errori comuni

  • Valutare in base alle dimensioni del download. Il fine-tuning completo richiede da sei a otto volte i pesi a 16 bit, oltre alle attivazioni.
  • Considerare disponibile tutta la RAM di un laptop a memoria condivisa. Il sistema operativo e le altre app richiedono la loro parte.
  • Considerare la RAM di un PC invece della memoria della sua scheda grafica.
  • Aumentare la lunghezza massima o la dimensione del batch dopo un'esecuzione andata a buon fine, aspettandosi che anche la successiva rientri nei limiti.
  • Ridurre la lunghezza massima al di sotto di quella degli esempi tipici, in modo che il modello non veda mai la fine delle risposte che dovrebbe imparare.

Riferimenti e letture di approfondimento

Le fonti esterne si aprono in una nuova scheda.

  1. 01ZeRO: Memory Optimizations Toward Training Trillion Parameter ModelsRajbhandari et al., 2019 · arXiv · arxiv.orgIl calcolo standard di pesi, gradienti e stato dell'ottimizzatore per parametro.
  2. 02GPU memory usageHugging Face Transformers docs · huggingface.co
  3. 03Model memory estimatorHugging Face Accelerate docs · huggingface.coUno strumento per stimare la memoria necessaria per l'esecuzione e l'addestramento di uno specifico modello Hugging Face.
  4. 04Unified MemoryMLX docs · ml-explore.github.ioCome la CPU e la GPU di Apple silicon condividono un unico pool di memoria.

Trasformate settimane di lavoro esperto in pochi minuti

Scoprite come Scalata si adatta al vostro team, ai vostri dati e ai vostri Controlli.

Contatta il team vendite