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.
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:
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)
Aggiornamento selettivo: Durante il finetuning, mantiene W frozen e aggiorna solo A e B
Efficienza Memoria: Riduce drasticamente i parametri trainabili
Efficienza Dati: Spesso bastano poche centinaia/migliaia di esempi
Modularità: Gli adapter possono essere facilmente combinati e condivisi
Zero Latenza Aggiuntiva: Può essere mergiato nel modello base
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
Inizia con prompt engineering - testa vari prompt sistematicamente
Aggiungi esempi - 1-50 esempi nel prompt
Considera RAG - se il problema è informativo
Prova LoRA - se il problema è comportamentale
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
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.
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 […]
🚂 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, […]