Cos'è
Il PEFT (parameter-efficient fine-tuning) è una famiglia di metodi che adatta un modello addestrando un piccolo numero di nuovi pesi, mantenendo congelati quelli originali. LoRA (Low-Rank Adaptation), introdotto da Hu et al. nel 2021, è il più utilizzato. Si basa su un'osservazione: la modifica che il fine-tuning deve apportare a una grande matrice dei pesi può essere descritta con un numero di valori molto inferiore rispetto alla matrice stessa. In termini matematici, la modifica ha un basso rango.
Come funziona
Prendiamo un layer lineare con matrice dei pesi W di forma d × k. Il fine-tuning completo apprenderebbe una modifica ΔW della stessa forma: d × k nuovi numeri. LoRA apprende invece tale modifica come il prodotto di due matrici sottili. A (r × k) comprime l'input del layer a r numeri, e B (d × r) li espande nuovamente. Il rango r è piccolo, in genere 4–64, mentre d e k sono nell'ordine delle migliaia.
h = W·x + (α / r) · B·A·x
W : d × k frozen
A : r × k trainable, random at the start
B : d × r trainable, zero at the start → B·A = 0 at step 0
trainable weights per adapted layer = r × (d + k)- Inizializzazione. A inizia in modo casuale e B inizia da zero, quindi B·A = 0 e il modello adattato è esattamente il modello di base al passaggio 0. L'addestramento lo allontana gradualmente.
- Scaling. L'output dell'adattatore viene moltiplicato per alpha ÷ r. Questo mantiene la dimensione del suo effetto approssimativamente stabile quando r cambia, in modo che il learning rate non debba essere ricalibrato per ogni rango. Una variante, la rank-stabilised LoRA (rsLoRA), divide invece per la radice quadrata di r, comportandosi meglio a ranghi elevati.
- Merging. Dopo l'addestramento, B·A può essere moltiplicato e aggiunto a W. Il modello unito mantiene la forma originale e viene eseguito alla velocità originale, senza latenza aggiuntiva. In alternativa, l'adattatore viene conservato come un piccolo file separato e caricato sopra la base, consentendo a un singolo modello di base di servire più adattatori.
- Una proiezione di attenzione 4096 × 4096: 16,8 milioni di pesi in W.
- LoRA a rango 8: A è 8 × 4096 e B è 4096 × 8, quindi 2 × 4096 × 8 = 65.536 pesi addestrabili, lo 0,4% del layer.
- Un modello 7B in stile Llama a rango 16 su tutti i layer lineari (quattro proiezioni di attenzione e tre MLP in ciascuno dei 32 layer): circa 40 milioni di pesi addestrabili, approssimativamente lo 0,6% del modello.
- Memoria di addestramento: quei 40 milioni di pesi richiedono circa 0,6 GB per i gradienti e lo stato AdamW, contro i circa 112 GB per il fine-tuning completo di tutti i 7 miliardi.
- L'adattatore salvato a 16 bit è di circa 80 MB, contro i 14 GB per una copia completa del modello.
- Nel paper originale, su GPT-3 175B, LoRA ha ridotto i parametri addestrabili fino a 10.000 volte e la memoria GPU di circa 3 volte rispetto al fine-tuning completo con Adam.
Le impostazioni
La dimensione interna di A e B, e quindi la capacità dell'adattatore: quante direzioni di cambiamento indipendenti può apprendere in ogni layer. I pesi addestrabili crescono in proporzione a r. Ranghi bassi sono sufficienti per tono, stile e formato; i set di dati più ampi e ricchi di conoscenze traggono vantaggio da ranghi superiori. Una volta che l'adattatore ha capacità sufficiente per i dati, un rango più elevato aggiunge costi senza migliorare i risultati. Alcuni provider definiscono questo parametro come dimensione dell'adattatore.
Un fattore di scala: l'output dell'adattatore viene moltiplicato per alpha ÷ r. Un alpha maggiore fa sì che ogni aggiornamento conti di più, in modo simile a un tasso di apprendimento più elevato, motivo per cui molte configurazioni fissano alpha e regolano invece il tasso di apprendimento. Le convenzioni comuni prevedono alpha uguale a r, alpha uguale al doppio di r, o un valore fisso come 16 o 32. È consigliabile scegliere una convenzione e mantenerla: modificare r mantenendo fisso alpha altera anche la scala.
- I moduli target decidono quali layer ricevono un adattatore. L'articolo originale adattava solo le proiezioni di query e value dell'attenzione. Lavori successivi, tra cui QLoRA e uno studio del 2025 di Thinking Machines, hanno scoperto che per eguagliare il fine-tuning completo è necessario adattare tutti i layer lineari, in particolare i layer MLP (feed-forward). Le librerie offrono solitamente un'opzione per 'tutti i layer lineari'.
- Il dropout di LoRA azzera in modo casuale una parte dell'input dell'adattatore durante l'addestramento, offrendo una leggera protezione contro l'overfitting su set di dati di piccole dimensioni. I valori comuni vanno da 0 a 0,1.
- Tasso di apprendimento. LoRA richiede solitamente un tasso di apprendimento più elevato rispetto al fine-tuning completo: circa dieci volte superiore nello studio di Thinking Machines, che ha inoltre rilevato come il tasso ottimale vari poco tra i diversi ranghi.
- Dimensione del batch. Lo stesso studio ha rilevato che LoRA tollera i batch molto grandi meno bene rispetto al fine-tuning completo, pertanto dimensioni del batch moderate rappresentano la scelta più sicura.
QLoRA: adattatori su una base a 4 bit
QLoRA (Dettmers et al., 2023) addestra normali adattatori LoRA a 16 bit, ma archivia il modello di base congelato in un formato a 4 bit progettato per pesi distribuiti normalmente (NF4). Aggiunge la doppia quantizzazione, che comprime le costanti di quantizzazione stesse, e ottimizzatori impaginati che assorbono i picchi di memoria. L'articolo ha eseguito il fine-tuning di un modello da 65 miliardi di parametri su una singola GPU da 48 GB, preservando le prestazioni del fine-tuning a 16 bit. Il compromesso è la velocità: i pesi a 4 bit vengono decompressi al volo, rendendo ogni passaggio leggermente più lento.
Quando LoRA è la scelta giusta
| Situazione | Solitamente preferibile |
|---|---|
| Tono, formato o fraseggio di dominio, da centinaia a migliaia di esempi | LoRA |
| Memoria GPU o budget limitati | LoRA o QLoRA |
| Diverse varianti specifiche per attività di un singolo modello di base | LoRA: un piccolo adattatore per ciascuna |
| Mantenere le abilità generali del modello di base è importante | LoRA, che dimentica meno |
| Dataset molto ampi che insegnano nuove competenze sostanziali, come il codice o la matematica | Il fine-tuning completo può apprendere di più |
Errori comuni
- Adattare solo i layer di attenzione. Sulla maggior parte dei dati di fine-tuning, questo approccio offre prestazioni inferiori rispetto agli adattatori su tutti i layer lineari, incluso l'MLP.
- Riutilizzare il tasso di apprendimento di un fine-tuning completo. LoRA ne richiede in genere uno circa dieci volte superiore, altrimenti apprende a malapena.
- Modificare il rango mantenendo fisso alpha, senza notare che anche alpha ÷ r, e di conseguenza la dimensione effettiva del passo, sono cambiati.
- Aspettarsi che un rango più elevato possa salvare un set di dati piccolo o incoerente. La capacità non è d'aiuto quando gli esempi non mostrano uno schema chiaro.
- Caricare un adattatore su un modello di base diverso, o su una sua versione differente, rispetto a quello su cui è stato addestrato.
Riferimenti e letture di approfondimento
Le fonti esterne si aprono in una nuova scheda.
- 01LoRA: Low-Rank Adaptation of Large Language ModelsHu et al., 2021 · arXiv · arxiv.orgL'articolo originale: l'idea del basso rango, il ridimensionamento alpha ÷ r e i risultati su GPT-3.
- 02QLoRA: Efficient Finetuning of Quantized LLMsDettmers et al., 2023 · arXiv · arxiv.orgPesi di base NF4 a 4 bit, doppia quantizzazione e ottimizzatori impaginati.
- 03LoRA Without RegretThinking Machines Lab, 2025 · thinkingmachines.aiQuando LoRA eguaglia il fine-tuning completo, perché tutti i layer sono importanti e la regola del tasso di apprendimento 10×.
- 04LoRAHugging Face PEFT docs · huggingface.coOgni impostazione di LoRA così come implementata: rango, alpha, dropout, moduli target e rsLoRA.
- 05A Rank Stabilization Scaling Factor for Fine-Tuning with LoRAKalajdzievski, 2023 · arXiv · arxiv.org