Skip to content
AImpact
IT EN

Article · Third-party summary

LoRA — Fine-Tuning Efficiente per LLM senza Distruggere il Portafoglio

Original source: arxiv.org/abs/2106.09685 — Hu, Shen, Wallis et al., Microsoft Research — ICLR 2022 — summary and rework in own words. For the full text, read the original source.

ShareLinkedInX

Cos'è: Edward Hu, Yelong Shen, Phillip Wallis e colleghi di Microsoft Research pubblicano a giugno 2021 il paper LoRA (Low-Rank Adaptation of Large Language Models). L'idea: invece di aggiornare tutti i miliardi di pesi di un LLM durante il fine-tuning, si congelano i pesi originali e si aggiungono piccole matrici di adattamento a basso rango. Il risultato è una riduzione di 10.000 volte nel numero di parametri da addestrare, con prestazioni paragonabili al fine-tuning completo. Presentato a ICLR 2022, LoRA diventa la tecnica standard per specializzare LLM nel 2023-2024.

Il problema: il costo proibitivo del fine-tuning completo

Pre-addestramento di un LLM grande è costoso ma si fa una volta. Fine-tuning completo — ri-addestrare tutti i pesi su dati specifici del dominio — rimane costosissimo e si ripete ogni volta che si vuole specializzare il modello per un nuovo task.

I numeri concreti per GPT-3 (175 miliardi di parametri): fine-tuning completo richiede decine di GPU A100 per settimane. Costo stimato: centinaia di migliaia di dollari per run. Per Llama 2 70B: simile ordine di grandezza. Accessibile solo a team di ricerca con budget dedicato.

Un secondo problema: mantenere versioni separate del modello per ogni task o cliente. Una copia completa di GPT-3 pesa 350GB. Se hai 100 clienti con fine-tuning dedicati, hai bisogno di 35 terabyte di storage solo per i pesi.

L'intuizione matematica di LoRA

LoRA si basa sull'osservazione che gli aggiornamenti ai pesi durante il fine-tuning hanno basso rango intrinseco. Il rango di una matrice misura quante dimensioni "indipendenti" di informazione contiene. Una matrice di pesi W di dimensione 4096×4096 (circa 16 milioni di parametri) tipicamente riceve aggiornamenti che si concentrano in poche direzioni rilevanti — il rango effettivo degli aggiornamenti è molto più basso della dimensione della matrice.

LoRA sfrutta questo: invece di aggiornare W direttamente, introduce due matrici aggiuntive A (dimensione d×r) e B (dimensione r×d), dove r è il rank — tipicamente 4, 8, o 16. L'aggiornamento ai pesi diventa delta_W = B × A, dove il prodotto B×A ha la stessa dimensione di W ma è parametrizzato da r×2d invece di d×d valori.

Per r=8 su una matrice 4096×4096: invece di 16 milioni di parametri da addestrare, ne bastano 2×4096×8 = 65.536. Riduzione di 245 volte per quella matrice. Applicato a tutti i layer attention trasformer, il risparmio complessivo supera tipicamente 10.000 volte.

Come funziona in pratica

Durante il training:

  • I pesi originali W vengono congelati (frozen) — il gradiente non li aggiorna
  • Le matrici A e B vengono inizializzate: A con distribuzione gaussiana casuale, B con zeri (così delta_W inizia a zero)
  • Solo A e B ricevono aggiornamenti dal gradiente durante il training
  • L'output del layer è: h = W·x + (B·A)·x = (W + B·A)·x

Dopo il training, i pesi adattati possono essere fusi (merged): W' = W + B×A. Il risultato è un modello con gli stessi pesi del modello base ma specializzato, senza overhead a inference time. In alternativa, le matrici LoRA possono essere mantenute separate e applicate on-the-fly — permettendo di switchare adattamenti diversi su un singolo modello base.

QLoRA: 70B su una GPU consumer

Nel maggio 2023 Tim Dettmers, Artidoro Pagnoni e colleghi dell'Università di Washington pubblicano QLoRA (Quantized LoRA). La combinazione è potente: il modello base viene caricato in memoria con quantizzazione a 4-bit (invece del float16 standard), riducendo il footprint di memoria di 4 volte. Il fine-tuning LoRA avviene in float16 o bfloat16 sulle matrici di adattamento, mentre i pesi base rimangono quantizzati.

Il risultato pratico: Llama 2 70B — modello che in float16 richiede 140GB di VRAM, ovvero 4-5 GPU A100 — può essere fine-tuned su una singola GPU NVIDIA RTX 3090 (24GB VRAM) o anche su una GPU con meno memoria con batch size ridotto. Il tempo di training aumenta ma il costo hardware crolla da centinaia di migliaia a poche centinaia di euro.

QLoRA ha democratizzato il fine-tuning nel senso più letterale: un ricercatore indipendente, uno studente, una piccola azienda possono specializzare un modello di stato dell'arte sul proprio hardware consumer.

Casi d'uso pratici

Quando ha senso investire in fine-tuning con LoRA invece di usare RAG o prompting?

  • Specializzazione di dominio con terminologia non standard: un modello per contrattualistica legale italiana, per refertazione radiologica, per documentazione tecnica di impianti industriali. Il vocabolario e i pattern linguistici del dominio non sono ben rappresentati nel training set generale.
  • Adattamento al tono e stile aziendale: il modello deve rispondere con il tono specifico del brand, con formule di cortesia standardizzate, in un certo registro formale.
  • Task strutturati con formato output fisso: estrazione entità in JSON con schema specifico, classificazione in categorie custom, generazione di report in template predefiniti. Il prompting diventa fragile con output complessi; il fine-tuning produce consistenza.
  • Riduzione dei costi di inferenza: specializzare un modello piccolo (7B) su un task specifico può eguagliare le performance di un modello grande (70B) su quel task, con frazione del costo di inferenza.

L'ecosistema LoRA nel 2024

Hugging Face PEFT (Parameter-Efficient Fine-Tuning) è la libreria Python di riferimento — poche righe di codice per applicare LoRA a qualsiasi modello Hugging Face. Unsloth (2023) ha ottimizzato ulteriormente la velocità di training LoRA, riducendo i tempi del 2-5x. Axolotl è un framework di configurazione YAML per fine-tuning che astrae la complessità tecnica. Sulla piattaforma Hugging Face Hub ci sono migliaia di adapter LoRA pubblici per i modelli più popolari — spesso basta scaricare un adapter pre-addestrato invece di fare training da zero.

Il modello di deployment più comune in produzione: un singolo modello base in memoria, più adapter LoRA caricabili dinamicamente per diversi clienti o task. Un server può gestire N clienti con N specializzazioni su una singola istanza del modello base — efficienza economica impossibile con fine-tuning completo.


Link alla fonte originale

arxiv.org/abs/2106.09685 →

Paper in inglese, Hu et al., Microsoft Research, giugno 2021. Presentato a ICLR 2022. Accesso gratuito su ArXiv. Il paper QLoRA di Dettmers et al. è disponibile su arxiv.org/abs/2305.14314 (maggio 2023).