Unsloth: fine-tuning un LLM su una scheda grande public
Unsloth è una libreria Python open source (Apache 2.0 per il core, più di 76.000 stelle su GitHub) che riscrive le fasi più onerose del fine-tuning LoRA e QLoRA: fino al doppio della velocità con il 70% di VRAM in meno, secondo il produttore. La sua documentazione indica un minimo di 6 GB per un modello da 8 miliardi di parametri in QLoRA a 4 bit: una scheda da 12 GB è sufficiente, poi l'esportazione in GGUF permette di passare a Ollama.
Unsloth rend il fine-tuning di un modello aperto accessibile su una scheda grafica di uso comune: stesse metodologie, ma nuclei di calcolo riscritti che riducono tempo e memoria necessari. Un modello con 7 o 8 miliardi di parametri si può adattare su una scheda da 12 GB, e il risultato viene esportato in GGUF per funzionare su Ollama. Rimane la domanda che precede tutto: hai veramente bisogno di fare il fine-tuning?
#La domanda da risolvere prima di installare qualsiasi cosa
Sì, si può fare il fine-tuning di un modello con 7 o 8 miliardi di parametri su una scheda destinata al grande pubblico: la documentazione di Unsloth indica un minimo di 5 a 6 GB di VRAM in QLoRA 4 bit, quindi una scheda da 12 GB va bene, con margine per il contesto e il batch. Unsloth riscrive le fasi pesanti del fine-tuning LoRA e QLoRA, secondo l'editore, fino a due volte più veloce con il 70% in meno di VRAM, un dato valido solo per alcuni quaderni di codice (notebook). Il risultato viene esportato in GGUF per funzionare su Ollama. Ma la vera domanda prima dell'installazione è: il fine-tuning modifica il comportamento di un modello (tono, formato, registro), non ciò che sa di aggiornato. Se vuoi che conosca i tuoi documenti, costruisci prima una ricerca documentaria. Ricorda anche che la preparazione del set di dati richiede più tempo dell'addestramento.
Il fine-tuning modifica il comportamento di un modello. La ricerca documentale cambia ciò che sa al momento di rispondere. Confonderli fa perdere settimane.
| Il tuo bisogno | La risposta corretta |
|---|---|
| Risposte basate sui tuoi documenti | Una catena RAG: i documenti possono cambiare ogni giorno |
| Un formato di output costante | Fine-tuning, o generazione vincolata |
| Un tono proprio, un registro di settore | Fine-tuning |
| Il lessico di un settore specializzato | Fine-tuning con un numero sufficiente di esempi |
| Informazioni che cambiano spesso | RAG, sempre: riaddestrare il modello per una tariffa non ha alcun senso |
| Risposte più corte o più lunghe | Prima il prompt di sistema; non addestrare mai per questo |
- Fine-tuning o RAG: l'albero di decisione dettagliato
- LoRA e QLoRA: come funziona davvero
- Un esempio completo di fine-tuning LoRA
- Valuta se un RAG darebbe risultati migliori, con dati numerici
#Cosa cambia concretamente Unsloth
Il tuo ChatGPT privato e gratuito sulla tua macchina in 1 ora — LM Studio, Ollama, Open WebUI, i tuoi documenti, senza cloud.
- Spazio online a vita
- PDF + file
- Aggiornamenti a vita
Il metodo non è nuovo: si congelano i pesi del modello e si addestrano solo piccole matrici aggiunte a ciascun peso, pari a circa l'1 % dei parametri secondo la guida di Unsloth. LoRA mantiene il modello originale in 16 bit, QLoRA lo quantizza in 4 bit, risparmiando così il 75 % di memoria. È l'approccio standard, non appartiene a Unsloth.
Il contributo della libreria è l'implementazione, con kernel di calcolo riscritti per le fasi più pesanti. Il progetto esiste in tre forme: Unsloth Desktop, un'applicazione nativa, Unsloth Studio, un'interfaccia web, e Unsloth Core, la versione controllata tramite codice di cui parla questo articolo. È pubblicato con una doppia licenza: Apache 2.0 per il nucleo, AGPL-3.0 per alcuni componenti opzionali come l'interfaccia Studio. Dichiara di addestrare modelli linguistici, di diffusione, di sintesi vocale e di embedding due volte più velocemente con il 70% di VRAM in meno, senza perdita di precisione. Sulle architetture a miscela di esperti (MoE), il miglioramento dichiarato aumenta ulteriormente: fino a 12 volte più velocità con un risparmio di VRAM superiore al 35% su alcuni modelli recenti. Come tutti i dati forniti dagli sviluppatori, questi descrivono il caso migliore: il README stesso mostra che il «due volte, 70%» vale solo per alcuni notebook.
| Notebook | Velocità annunciata | VRAM annunciata |
|---|---|---|
| Llama 3.1 (8B) Alpaca | 2 volte più veloce | 70 % in meno |
| gpt-oss (20B) | 2 volte più veloce | 70 % in meno |
| Qwen3.5 (4B), visione | 1,5 volte più veloce | 60 % in meno |
| Gemma 4 (E2B), visione | 1,5 volte più veloce | 50 % in meno |
| Orpheus-TTS (3B) | 1,5 volte più veloce | 50 % in meno |
| embeddinggemma (300M) | 2 volte più veloce | 20 % in meno |
#Quale scheda per quale modello
| Dimensione del modello | QLoRA (4 bit) | LoRA (16 bit) | Interpretazione per una scheda grafica consumer |
|---|---|---|---|
| 3 miliardi | 3,5 | 8 | Utilizzabile senza difficoltà su qualsiasi scheda recente in QLoRA |
| 7 miliardi | 5 | 19 | QLoRA su 8 GB; LoRA a 16 bit richiede una scheda da 24 GB |
| 8 miliardi | 6 | 22 | QLoRA con 8 GB o più; 12 GB lasciano margine |
| 14 miliardi | 8,5 | 33 | QLoRA su 12 GB; LoRA a 16 bit fuori dalla portata di una scheda da 24 GB |
| 27 miliardi | 22 | 64 | QLoRA su 24 GB, senza margine; LoRA a 16 bit impossibile su una sola scheda |
| 32 miliardi | 26 | 76 | Al di sopra di 24 GB, anche in QLoRA |
| 70 miliardi | 41 | 164 | Fuori portata di una scheda grafica consumer |
La documentazione specifica che questi numeri sono minimi assoluti: a seconda del modello, potrebbe essere necessario un valore maggiore. Identifica la dimensione del batch eccessiva come causa frequente di saturazione della memoria, da ridurre a 1, 2 o 3, e consiglia una lunghezza del contesto di 2048 per i primi test.
| Piattaforma | Cosa dice la documentazione |
|---|---|
| NVIDIA, con Unsloth Core | Linux e Windows; compute capability minima 7.0 (V100, T4, RTX 20 e successive, A100, H100), Blackwell e DGX Spark inclusi. Le GTX 1070 e 1080 funzionano, lentamente. |
| AMD e Intel | Guide dedicate; l'addestramento funziona su queste GPU, sia con Core sia con Studio. |
| Mac | Unsloth Studio supporta l'addestramento, MLX e l'inferenza GGUF (macOS 12 o successivo). Per Core, il supporto Apple Silicon (MLX) è indicato come «in preparazione». |
| Senza GPU | Studio funziona per la chat con modelli GGUF e per la preparazione dei dati, non per l'addestramento. |
| Più GPU | Supportato da Accelerate e DeepSpeed (FSDP, DDP), con configurazione manuale; l'opzione device_map="balanced" distribuisce un modello eccessivamente grande su più schede. |
#Il vero lavoro sta nel dataset
Un fine-tuning non fallisce mai per colpa della libreria. Fallisce per colpa dei dati.
- Formato
- Un dataset, il più delle volte con due colonne, domanda e risposta, nella struttura di conversazione prevista dal modello. La guida consiglia di partire da un modello Instruct: accetta direttamente i template di conversazione (ChatML, ShareGPT) e richiede meno dati di un modello base. La regolarità conta più del volume.
- Quantità
- La guida di Unsloth raccomanda come minimo assoluto 100 righe e più di 1.000 righe per risultati migliori. Il tono e il formato si modificano con pochi esempi; un vero comportamento specifico del settore ne richiede di più, coerenti tra loro.
- Qualità
- Il modello imita ciò che gli viene mostrato, inclusi gli errori. Un difetto sistematico nei dati diventa un difetto sistematico del modello.
- Set di controllo
- Esempi che il modello non vede mai durante l'addestramento. Senza di essi, è impossibile distinguere l'apprendimento dalla semplice memorizzazione.
- Senza codice
- Unsloth Studio offre le Data Recipes, che trasformano PDF, CSV o DOCX in set di dati tramite un flusso visivo, con un'anteprima prima di avviare la creazione completa.
#Dall'adattatore al modello utilizzabile
Il percorso si articola in tre fasi: caricare un modello a 4 bit, addestrarlo con uno dei notebook ufficiali, poi esportarlo. Il primo blocco di codice carica il modello e aggiunge gli adattatori LoRA; l'addestramento vero e proprio viene eseguito con uno dei notebook di Unsloth, che la guida consiglia di copiare nel tuo ambiente locale.
Il suffisso del nome conta. Secondo la guida, un modello il cui nome termina con unsloth-bnb-4bit usa una quantizzazione dinamica a 4 bit di Unsloth: consuma un po' più di VRAM rispetto a una quantizzazione BitsAndBytes standard, ma offre una precisione nettamente superiore. Un nome che termina solo con bnb-4bit indica la versione standard. La guida aggiunge che è vantaggioso usare la stessa precisione per l'addestramento e per l'erogazione del modello: erogarlo a 4 bit significa addestrarlo a 4 bit.
| Parametro | Valore della guida | Da sapere |
|---|---|---|
| per_device_train_batch_size | 2 | Più grande: migliore utilizzo della GPU, ma addestramento rallentato dal padding; preferire gradient_accumulation_steps |
| gradient_accumulation_steps | 4 | Simula un batch più grande senza memoria aggiuntiva |
| max_steps | 60 | Valore per una prova rapida; per un vero addestramento, sostituire con num_train_epochs tra 1 e 3 |
| learning_rate | 2e-4 | Più basso per un adattamento più lento e preciso: provare 1e-4, 5e-5 o 2e-5 |
| max_seq_length | 2048 | Lunghezza consigliata per i test. Impostarla a un valore più alto «per avere margine» riserva memoria per sequenze assenti dai tuoi dati: misura prima la lunghezza effettiva dei tuoi esempi |
- 01AddestrareIl risultato è un adattatore LoRA, di circa 100 MB nell'esempio di Unsloth, non un modello completo.
- 02ValutareConfrontando i risultati con il set di controllo e con il modello originale. «Migliore» va dimostrato, non dato per scontato. La guida segnala che gli strumenti di valutazione automatica possono non rispecchiare adeguatamente i tuoi criteri.
- 03Fondere o mantenere separatoL'adattatore può restare separato e scambiabile, oppure essere fuso nei pesi: model.save_pretrained_merged con save_method="merged_16bit".
- 04Esportare in GGUF e quantizzaremodel.save_pretrained_gguf genera il file, con q4_k_m, q8_0 o f16 a scelta. Questo rende il risultato eseguibile da Ollama o llama.cpp su hardware ordinario.
#Le trappole classiche
- Partire da un modello base senza saperlo
- La guida raccomanda i modelli Instruct: accettano i template di conversazione e richiedono meno dati. Un modello base richiede un formato diverso (Alpaca, Vicuna) e più esempi.
- Dimenticare il template di conversazione
- Esempi formattati in modo diverso da quello atteso dal modello producono un addestramento tecnicamente riuscito e praticamente inutile.
- Misurare sugli esempi di addestramento
- È l'errore che fa annunciare risultati spettacolari e consegnare modelli deludenti.
- Credere che sostituirà la ricerca documentale
- Ciò che insegni al modello diventa obsoleto il giorno in cui le tue informazioni cambiano, e il modello non cita le proprie fonti. Per i fatti che cambiano nel tempo, la ricerca documentale rimane più sicura.
- Sottovalutare la pulizia degli esempi
- Duplicati quasi identici nel set di dati distorcono l'addestramento a favore di questi casi specifici, senza che nulla lo segnali nelle metriche monitorate.
- Modificare diversi parametri contemporaneamente
- Modificare il tasso di apprendimento, il rango dell'adattatore e la lunghezza della sequenza nello stesso esperimento impedisce di capire quale abbia prodotto il cambiamento osservato.
#Casi d'uso concreti
- Assistenza clienti con un tono costante
- Un modello sottoposto a fine-tuning su scambi reali risponde con la voce del marchio, senza istruzioni di stile ripetute in ogni prompt.
- Estrazione in un formato rigorosamente definito
- Eseguire il fine-tuning su esempi di input-output stabilisce il formato di output in modo più affidabile rispetto a un semplice prompt, ed è utile prima di inviare il risultato a un sistema a valle.
Un punto in comune tra questi casi: ciascuno è misurabile. Prima di avviare un addestramento, formula il criterio di successo in una frase verificabile — «il formato JSON è rispettato in almeno il 95% degli output del set di controllo», ad esempio — anziché affidarti a un'impressione generale di miglioramento. È questo criterio, non l'intuizione, a indicare se il risultato giustifica il tempo investito.
- Fonte: repository ufficiale Unsloth (funzionalità, hardware, doppia licenza)
- Fonte: prerequisiti e VRAM minima per dimensione del modello
- Fonte: guida di fine-tuning di Unsloth
- Fonte: esportazione GGUF e problemi con i template
- Fonte: dati di performance sui modelli MoE
#Il costo reale, oltre il prezzo della scheda
La scheda grafica è solo una delle voci da considerare. Raccogliere e pulire esempi coerenti, creare un set di controllo che il modello non vedrà mai e poi confrontare ogni versione con il modello originale pesa spesso più dell'addestramento stesso, che la guida di Unsloth illustra con una prova di 60 passi.
È per questo che Unsloth, per quanto sia rapido nell'addestramento, non riduce la durata di un progetto quanto si spera: elimina il collo di bottiglia tecnico, non il lavoro sui dati.
#FAQ
È gratis Unsloth?+
Quale scheda per effettuare il fine-tuning di un modello da 7 miliardi di parametri?+
Quanti esempi servono?+
Il modello ottenuto funziona in Ollama?+
Funziona su AMD, su Mac o senza GPU?+
Il fine-tuning renderà il modello esperto dei miei dati?+
Hardware consigliato: RTX 5070 Ti 16 GB — scheda NVIDIA da 16 GB, sufficiente per affinare un modello 7-8B con QLoRA. Tutto l'hardware per l'IA →
Un feedback, un errore, una precisazione? Facci sapere, così la guida migliora per tutti.