Finetuning e LoRA: La Rivoluzione nell'Adattamento dei Large Language Models

Introduzione: Perché il Finetuning è Importante

Nel mondo dell'AI moderna, i Large Language Models (LLM) come GPT, Llama e Claude hanno dimostrato capacità straordinarie. Tuttavia, spesso questi modelli "out-of-the-box" non performano al meglio per le nostre specifiche esigenze aziendali. È qui che entra in gioco il finetuning.

Cos'è il Finetuning dei Large Language Models?

Il finetuning è il processo di adattamento di un modello pre-addestrato a un compito specifico attraverso ulteriore training. A differenza del prompt engineering (che adatta il modello tramite istruzioni), il finetuning modifica direttamente i pesi del modello.

Vantaggi del Finetuning

  • Migliora le capacità domain-specific (medicina, legale, codice)
  • Aumenta la capacità di seguire istruzioni specifiche
  • Garantisce formati di output consistenti (JSON, YAML)
  • Riduce le allucinazioni quando fatto con dati di qualità

Il Problema: La Memoria

Tuttavia, il finetuning tradizionale presenta una sfida enorme: il consumo di memoria.

Per un modello da 7B parametri:

  • Caricamento pesi: ~14 GB (formato 16-bit)
  • Finetuning completo: +42 GB aggiuntivi (gradients + optimizer states)
  • Totale: ~56 GB di memoria richiesta

Questo supera la capacità della maggior parte delle GPU consumer (12-24 GB).

La Soluzione: Parameter-Efficient Fine-Tuning (PEFT)

Invece di aggiornare tutti i parametri del modello, il PEFT aggiorna solo una piccola frazione, mantenendo prestazioni simili al finetuning completo.

LoRA: Low-Rank Adaptation

LoRA è diventata la tecnica PEFT più popolare e per buone ragioni.

🔗 Richiamo al mio post sui Transformer:

Nel diagramma che ho mostrato, l'input word passa attraverso tre matrici neurali che generano KEYS, QUERIES e VALUES. Ogni matrice produce 12 vettori (uno per ogni attention head). LoRA interviene proprio su queste matrici! Invece di aggiornare completamente le matrici 4096×4096 durante il finetuning, le decompone in matrici molto più piccole.

Come Funziona LoRA

LoRA si basa sul concetto di low-rank factorization applicato alle matrici dei transformer:

  1. Decomposizione: Prende una matrice di pesi W (dimensione n×m) e la decompone nel prodotto di due matrici più piccoli A (n×r) e B (r×m)
  2. Aggiornamento selettivo: Durante il finetuning, mantiene W frozen e aggiorna solo A e B
  3. Formula: W' = W + (α/r) × A × B

Esempio Pratico

Matrice originale W: 4096 × 4096 = 16.8M parametri
Con LoRA (rank=8):
- Matrice A: 4096 × 8 = 32,768 parametri  
- Matrice B: 8 × 4096 = 32,768 parametri
- Totale LoRA: 65,536 parametri (0.4% dell'originale!)

Vantaggi di LoRA

  1. Efficienza Memoria: Riduce drasticamente i parametri trainabili
  2. Efficienza Dati: Spesso bastano poche centinaia/migliaia di esempi
  3. Modularità: Gli adapter possono essere facilmente combinati e condivisi
  4. Zero Latenza Aggiuntiva: Può essere mergiato nel modello base
  5. Multi-Task Serving: Un modello base + multipli adapter LoRA

Configurazione LoRA

Rank (r): Tipicamente tra 4-64.

Alpha (α): Controlla quanto i pesi LoRA influenzano il modello finale. Rapporto α:r tipicamente tra 1:8 e 8:1.

Target Matrices: Comunemente applicato alle matrici query, key, value e output dell'attention.

Finetuning vs RAG: Quando Usare Cosa?

Usa RAG quando:

  • Il modello fallisce per mancanza di informazioni
  • Hai bisogno di dati aggiornati in tempo reale
  • Le risposte sono fattualisticamente sbagliate

Usa Finetuning quando:

  • Il modello ha problemi comportamentali
  • Hai bisogno di formati output specifici
  • Vuoi migliorare lo stile di risposta
  • Devi seguire sintassi specializzate

Regola d'oro: "Finetuning is for form, RAG is for facts"

Workflow Pratico

  1. Inizia con prompt engineering - testa vari prompt sistematicamente
  2. Aggiungi esempi - 1-50 esempi nel prompt
  3. Considera RAG - se il problema è informativo
  4. Prova LoRA - se il problema è comportamentale
  5. Combina approcci - RAG + LoRA per performance ottimali

Model Merging: Combinare Modelli

LoRA permette tecniche avanzate come il model merging:

Il model merging rappresenta una delle frontiere più innovative nell'AI engineering: la capacità di combinare più modelli specializzati in un unico modello che eredita le competenze di tutti i componenti. Immagina di avere un modello eccellente in matematica, uno specializzato in coding e un altro ottimizzato per scrittura creativa - il model merging ti permette di creare un "super-modello" che eccelle in tutti e tre i domini.

La magia del model merging risiede nel fatto che non stai semplicemente mettendo insieme tre modelli separati (il che richiederebbe 3x la memoria e computazione), ma stai fondendo i loro "saperi" a livello di parametri. È come se tre esperti condividessero le loro conoscenze per creare un quarto esperto che possiede tutte le loro competenze specialistiche.

Con LoRA, questo processo diventa estremamente elegante. Invece di mergiare interi modelli da miliardi di parametri, puoi combinare solo gli adapter - le piccole matrici A e B che contengono l'essenza delle specializzazioni. Un adapter LoRA per matematica (poche decine di MB) può essere facilmente combinato con uno per coding, creando un modello versatile senza i costi computazionali del mantenere modelli separati.

Approcci:

  • Linear Combination: Media pesata di adapter
  • SLERP: Interpolazione sferica
  • Task Arithmetic: Aggiungere/sottrarre capacità specifiche

Casi d'uso:

  • Multi-task: Un modello per compiti diversi
  • On-device deployment: Ridurre il footprint memoria
  • Federated learning: Combinare apprendimenti distribuiti

Framework e Tools

Framework Popolari:

  • Hugging Face PEFT: Il più completo
  • Unsloth: Ottimizzato per velocità
  • Axolotl: Configurazione semplificata
  • LitGPT: Leggero e efficiente

API Services:

  • OpenAI Fine-tuning API
  • Fireworks AI
  • Together AI
  • RunPod

Conclusioni

LoRA ha democratizzato il finetuning, rendendolo accessibile a sviluppatori con risorse limitate. La sua efficienza, modularità e facilità d'uso l'hanno resa lo standard de facto per l'adattamento di LLM.

Key Takeaways:

  • Inizia sempre con prompt engineering
  • LoRA è perfetto per problemi comportamentali
  • Combina RAG + LoRA per risultati ottimali
  • La memoria è il bottleneck principale del finetuning
  • QLoRA rende possibile il finetuning anche con hardware limitato

Il futuro del finetuning sarà probabilmente ancora più efficiente, ma LoRA rimarrà una tecnica fondamentale per chiunque lavori seriamente con i Large Language Models.


Questo post è basato sul libro "AI Engineering" di Chip Huyen, una risorsa essenziale per chiunque voglia approfondire l'ingegneria dell'AI moderna.

Related Post

Maggio 14, 2025
Il mio viaggio con AWS SageMaker

Sono entusiasta di condividere che ho recentemente completato l'AI Engineering Bootcamp: Build, Train and Deploy Models with AWS SageMaker della scuola Zero To Mastery tenuto da Patrik Szepesi! Dopo giornate di apprendimento intensivo e progetti pratici, ho acquisito competenze cruciali che mi hanno fatto progredire nel mio percorso come ingegnere AI. Cos'è AWS SageMaker? Per […]

Maggio 30, 2025
Cosa mi porto da Catania: AI, Spritz e tanto ma tanto movimento

🚂 Tornando da Catania, con la mente piena di AI e possibilità Appena rientrata da due eventi intensi e stimolanti a Catania — Green Mind AI e Catan.IA — mi porto a casa molto più di una valigia piena: mi porto idee, connessioni, contaminazioni. Mi porto a casa l’energia delle realtà come Aitho e Datapizza, […]

veronicaschembri
Copyright © Veronica Schembri

Privacy Policy
Cookie Policy
💬