Vai al contenuto principale

Fine-tuning di Llama 2 su hardware consumer: un tutorial completo su QLoRA

Scopri come fare il fine-tuning di Llama 2 su una GPU gratuita di Google Colab utilizzando QLoRA, PEFT e l’ecosistema Hugging Face per personalizzare LLM open source secondo le tue esigenze.
Aggiornato 29 set 2026  · 12 min leggi

Scopri con l'IA

ChatGPTClaudePerplexity

Dopo il lancio della prima versione di LLaMA di Meta, è partita una nuova corsa agli armamenti per costruire Large Language Model (LLM) migliori, in grado di rivaleggiare con modelli come GPT-3.5 (ChatGPT). La community open source ha rilasciato rapidamente modelli sempre più potenti. Per gli appassionati di AI è stato come Natale, con novità annunciate di continuo.

Tuttavia, questi progressi avevano anche degli svantaggi. La maggior parte dei modelli open source prevede licenze restrittive, utilizzabili solo a fini di ricerca. In secondo luogo, solo grandi aziende o istituti di ricerca con budget consistenti potevano permettersi di eseguire il fine-tuning o addestrare i modelli. Infine, distribuire e mantenere modelli all’avanguardia di grandi dimensioni era costoso.

La nuova versione dei modelli LLaMA punta a risolvere questi problemi. Offre una licenza commerciale, rendendola accessibile a più organizzazioni. Inoltre, nuove metodologie permettono ora di fare fine-tuning su GPU consumer con memoria limitata.

Questa democratizzazione dell’AI è fondamentale per un’adozione diffusa. Superando le barriere d’accesso, anche le piccole aziende possono creare modelli personalizzati adatti alle loro esigenze e ai loro budget.

In questo tutorial, esploreremo Llama-2 e mostreremo come eseguire il fine-tuning su un nuovo dataset utilizzando Google Colab. Inoltre, vedremo nuove metodologie e tecniche di fine-tuning che aiutano a ridurre l’uso di memoria e ad accelerare l’addestramento.

Fine Tune LLaMA 2

Immagine generata dall’autore con DALL-E 3

TL;DR

  • Llama 2 è la seconda generazione di LLM open source di Meta con licenza commerciale, disponibile in dimensioni da 7B a 70B parametri
  • QLoRA abilita il fine-tuning su GPU consumer combinando quantizzazione a 4 bit con Low-Rank Adapter, riducendo la VRAM necessaria da oltre 60 GB a meno di 10 GB
  • Questo tutorial esegue il fine-tuning di Llama 2 7B su una GPU T4 gratuita di Google Colab usando l’ecosistema Hugging Face (transformers, peft, trl, bitsandbytes)
  • Tecnica chiave: congelare il modello base a precisione a 4 bit e addestrare solo i piccoli layer adattatori LoRA, rendendo il processo efficiente in memoria
  • Il modello ottimizzato produce risposte coerenti e contestualmente appropriate dopo l’addestramento su appena 1.000 esempi di instruction-following

Capire Llama 2 e il fine-tuning dei modelli

Llama 2 è una raccolta di LLM open source di seconda generazione di Meta con licenza commerciale. È progettato per gestire un’ampia gamma di compiti di elaborazione del linguaggio naturale, con modelli che vanno da 7 a 70 miliardi di parametri. Scopri di più sui modelli LLaMA leggendo il nostro articolo, Introduzione a LLaMA di Meta AI: favorire l’innovazione dell’AI.

Llama-2-Chat, ottimizzato per il dialogo, ha mostrato prestazioni simili a popolari modelli closed source come ChatGPT e PaLM. Possiamo persino migliorare le prestazioni del modello con il fine-tuning su un dataset conversazionale di alta qualità.

Il fine-tuning nel machine learning è il processo di regolazione dei pesi e dei parametri di un modello pre-addestrato su nuovi dati per migliorarne le prestazioni su un compito specifico. Comporta l’addestramento del modello su un nuovo dataset specifico per il compito in questione aggiornando i pesi per adattarsi ai nuovi dati. Leggi di più sul fine-tuning seguendo la nostra guida al fine-tuning di GPT 3.5.

Eseguire il fine-tuning degli LLM su hardware consumer è impegnativo a causa della VRAM e della potenza di calcolo limitate. Tuttavia, in questo tutorial supereremo queste sfide di memoria e calcolo e addestreremo il nostro modello usando la versione gratuita di Google Colab Notebook.

Come fare il fine-tuning di Llama 2: guida passo passo

In questa parte vedremo tutti i passaggi necessari per ottimizzare il modello Llama 2 con 7 miliardi di parametri su una GPU T4. Puoi usare una GPU gratuita su Google Colab o Kaggle. Il codice funziona su entrambe le piattaforme.

La GPU T4 di Colab ha 16 GB limitati di VRAM. Sono appena sufficienti per contenere i pesi di Llama 2–7b, il che significa che il fine-tuning completo non è possibile e dobbiamo usare tecniche di fine-tuning efficienti in termini di parametri come LoRA o QLoRA.

Useremo la tecnica QLoRA per fare il fine-tuning del modello a precisione a 4 bit e ottimizzare l’uso della VRAM. Per farlo, useremo l’ecosistema di librerie LLM di Hugging Face: transformers, accelerate, peft, trl e bitsandbytes.

1. Per iniziare

Partiremo installando le librerie necessarie.

%%capture
%pip install accelerate peft bitsandbytes transformers trl

Dopodiché caricheremo i moduli necessari da queste librerie.

import os
import torch
from datasets import load_dataset
from transformers import (
    AutoModelForCausalLM,
    AutoTokenizer,
    BitsAndBytesConfig,
    TrainingArguments,
    pipeline,
    logging,
)
from peft import LoraConfig
from trl import SFTTrainer

2. Configurazione del modello

Puoi accedere al modello Llama-2 ufficiale di Meta da Hugging Face, ma devi inviare una richiesta e attendere un paio di giorni per la conferma. Invece di aspettare, useremo come modello base il Llama-2-7b-chat-hf di NousResearch. È uguale all’originale ma facilmente accessibile.

Immagine da Hugging Face

Immagine da Hugging Face

Faremo il fine-tuning del nostro modello base usando un dataset più piccolo chiamato mlabonne/guanaco-llama2-1k e indicheremo il nome per il modello ottimizzato.

# Model from Hugging Face hub
base_model = "NousResearch/Llama-2-7b-chat-hf"

# New instruction dataset
guanaco_dataset = "mlabonne/guanaco-llama2-1k"

# Fine-tuned model
new_model = "llama-2-7b-chat-guanaco"

Dataset su Hugging Face

Dataset su Hugging Face

3. Caricare dataset, modello e tokenizer

Caricheremo il dataset “guanaco-llama2-1k” dall’hub di Hugging Face. Il dataset contiene 1000 campioni ed è stato processato per adattarsi al formato di prompt di Llama 2; è un sottoinsieme dell’eccellente dataset timdettmers/openassistant-guanaco.

dataset = load_dataset(guanaco_dataset, split="train")
Dataset parquet downloaded and prepared to /root/.cache/huggingface/datasets/parquet/mlabonne--guanaco-llama2-1k-f1f1134768f90029/0.0.0/0b6d5799bb726b24ad7fc7be720c170d8e497f575d02d47537de9a5bac074901. Subsequent calls will reuse this data.

4. Configurazione della quantizzazione a 4 bit

La quantizzazione a 4 bit tramite QLoRA consente un fine-tuning efficiente di enormi LLM su hardware consumer mantenendo alte prestazioni. Ciò migliora notevolmente accessibilità e usabilità per applicazioni reali.

QLoRA quantizza un modello linguistico pre-addestrato a 4 bit e ne congela i parametri. Al modello vengono poi aggiunti un numero ridotto di layer adattatori Low-Rank addestrabili.

Durante il fine-tuning, i gradienti vengono retropropagati attraverso il modello quantizzato a 4 bit congelato solo nei layer adattatori Low-Rank. Quindi, l’intero modello pre-addestrato rimane fisso a 4 bit, mentre vengono aggiornati solo gli adapter. Inoltre, la quantizzazione a 4 bit non compromette le prestazioni del modello.

Immagine dall’articolo su QLoRA

Immagine dall’articolo su QLoRA

Puoi leggere il paper per capirlo meglio.

Confronto tra approcci di fine-tuning

CaratteristicaFine-tuning completoLoRAQLoRA
Parametri aggiornatiTutti i parametri del modelloPiccole matrici adapter (~0,1-1%)Piccole matrici adapter (~0,1-1%)
Precisione modello baseFP16 / BF16FP16 / BF164 bit (NF4)
VRAM per modello 7B~60+ GB~16 GB~6-8 GB
Compatibile con GPU consumerNoLimitatoSì (T4, RTX 3060+)
Qualità vs fine-tuning completoBaseline~98-99%~96-98%
Velocità di trainingPiù lentaVeloceVeloce

Nel nostro caso, creiamo la quantizzazione a 4 bit con configurazione di tipo NF4 usando BitsAndBytes.

compute_dtype = getattr(torch, "float16")

quant_config = BitsAndBytesConfig(
    load_in_4bit=True,
    bnb_4bit_quant_type="nf4",
    bnb_4bit_compute_dtype=compute_dtype,
    bnb_4bit_use_double_quant=False,
)

5. Caricare il modello Llama 2

Ora caricheremo un modello usando la precisione a 4 bit con compute dtype "float16" da Hugging Face per un addestramento più veloce.

model = AutoModelForCausalLM.from_pretrained(
    base_model,
    quantization_config=quant_config,
    device_map={"": 0}
)
model.config.use_cache = False
model.config.pretraining_tp = 1

6. Caricare il tokenizer

Successivamente, caricheremo il tokenizer da Hugging Face e imposteremo padding_side su “right” per risolvere il problema con fp16.

tokenizer = AutoTokenizer.from_pretrained(base_model, trust_remote_code=True)
tokenizer.pad_token = tokenizer.eos_token
tokenizer.padding_side = "right"

7. Parametri PEFT

Il fine-tuning tradizionale dei modelli linguistici pre-addestrati (PLM) richiede l’aggiornamento di tutti i parametri del modello, risultando costoso in termini computazionali e richiedendo enormi quantità di dati.

Il Parameter-Efficient Fine-Tuning (PEFT) funziona aggiornando solo un piccolo sottoinsieme dei parametri più influenti del modello, risultando molto più efficiente. Scopri i parametri leggendo la documentazione ufficiale di PEFT.

peft_params = LoraConfig(
    lora_alpha=16,
    lora_dropout=0.1,
    r=64,
    bias="none",
    task_type="CAUSAL_LM",
)

8. Parametri di training

Di seguito trovi un elenco di iperparametri che possono essere usati per ottimizzare il processo di training:

  • output_dir: La directory di output in cui verranno salvate le predizioni del modello e i checkpoint.
  • num_train_epochs: Un’epoca di training.
  • fp16/bf16: Disabilita training fp16/bf16.
  • per_device_train_batch_size: Batch size per GPU per il training.
  • per_device_eval_batch_size: Batch size per GPU per la valutazione.
  • gradient_accumulation_steps: Numero di step necessari per accumulare i gradienti durante l’aggiornamento.
  • gradient_checkpointing: Abilita il gradient checkpointing.
  • max_grad_norm: Clipping del gradiente.
  • learning_rate: Learning rate iniziale.
  • weight_decay: Il weight decay è applicato a tutti i layer tranne ai pesi di bias/LayerNorm.
  • Optim: Ottimizzatore del modello (AdamW optimizer).
  • lr_scheduler_type: Scheduler del learning rate.
  • max_steps: Numero di step di training.
  • warmup_ratio: Rapporto di step per un warmup lineare.
  • group_by_length: Può migliorare significativamente le prestazioni e accelerare l’addestramento.
  • save_steps: Salva un checkpoint ogni 25 step di aggiornamento.
  • logging_steps: Effettua il log ogni 25 step di aggiornamento.
training_params = TrainingArguments(
    output_dir="./results",
    num_train_epochs=1,
    per_device_train_batch_size=4,
    gradient_accumulation_steps=1,
    optim="paged_adamw_32bit",
    save_steps=25,
    logging_steps=25,
    learning_rate=2e-4,
    weight_decay=0.001,
    fp16=False,
    bf16=False,
    max_grad_norm=0.3,
    max_steps=-1,
    warmup_ratio=0.03,
    group_by_length=True,
    lr_scheduler_type="constant",
    report_to="tensorboard"
)

9. Fine-tuning del modello

Il fine-tuning supervisionato (SFT) è un passaggio chiave nel reinforcement learning con feedback umano (RLHF). La libreria TRL di HuggingFace fornisce un’API semplice per creare modelli SFT e addestrarli sul tuo dataset con poche righe di codice. Include strumenti per addestrare modelli linguistici usando il reinforcement learning, partendo dal fine-tuning supervisionato, poi il reward modeling e infine la proximal policy optimization (PPO).

Forniremo a SFT Trainer il modello, il dataset, la configurazione Lora, il tokenizer e i parametri di training.

trainer = SFTTrainer(
    model=model,
    train_dataset=dataset,
    peft_config=peft_params,
    dataset_text_field="text",
    max_seq_length=None,
    tokenizer=tokenizer,
    args=training_params,
    packing=False,
)

Utilizzeremo .train() per fare il fine-tuning del modello Llama 2 su un nuovo dataset. Al modello è servita un’ora e mezza per completare 1 epoca.

image2.png

Dopo l’addestramento, salveremo l’adapter del modello e il tokenizer. Puoi anche caricare il modello su Hugging Face usando un’API simile.

trainer.model.save_pretrained(new_model)
trainer.tokenizer.save_pretrained(new_model)

image4.png

10. Valutazione

Ora possiamo rivedere i risultati del training nella sessione interattiva di Tensorboard.

from tensorboard import notebook
log_dir = "results/runs"
notebook.start("--logdir {} --port 4000".format(log_dir))

image5.png

Per testare il nostro modello ottimizzato, useremo la pipeline di generazione del testo di transformers e faremo domande semplici come “Chi è Leonardo Da Vinci?”.

logging.set_verbosity(logging.CRITICAL)

prompt = "Who is Leonardo Da Vinci?"
pipe = pipeline(task="text-generation", model=model, tokenizer=tokenizer, max_length=200)
result = pipe(f"<s>[INST] {prompt} [/INST]")
print(result[0]['generated_text'])

Output:

Il modello genera una risposta coerente e dettagliata.

<s>[INST] Who is Leonardo Da Vinci? [/INST] Leonardo da Vinci (1452-1519) was an Italian polymath, artist, inventor, and engineer.

Da Vinci is widely considered one of the greatest painters of all time, and his works include the famous Mona Lisa. He was also an accomplished engineer, inventor, and anatomist, and his designs for machines and flight were centuries ahead of his time.

Da Vinci was born in the town of Vinci, Italy, and he was the illegitimate son of a local notary. Despite his humble origins, he was able to study art and engineering in Florence, and he became a renowned artist and inventor.

Da Vinci's work had a profound impact on the Renaissance, and his legacy continues to inspire artists, engineers, and inventors to this day. He

Facciamo un’altra domanda.

prompt = "What is DataCamp Career track?"
result = pipe(f"<s>[INST] {prompt} [/INST]")
print(result[0]['generated_text'])

Output:

Guanaco è un dataset di alta qualità che in passato è stato utilizzato per fare fine-tuning di LLM all’avanguardia. L’intero dataset Guanaco è disponibile su Hugging Face e ha il potenziale per ottenere prestazioni ancora maggiori su una varietà di compiti di linguaggio naturale.

<s>[INST] What is Datacamp Career track? [/INST] DataCamp Career Track is a program that offers a comprehensive learning experience to help you build your skills and prepare for a career in data science.

The program includes a range of courses, projects, and assessments that are designed to help you build your skills in data science. You will learn how to work with data, create visualizations, and build predictive models.

In addition to the technical skills, you will also learn how to communicate your findings to stakeholders and how to work with a team to solve complex problems.

The program is designed to be flexible, so you can learn at your own pace and on your own schedule. You will also have access to a community of learners and mentors who can provide support and guidance throughout the program.

Overall, DataCamp Career Track is a great way to build your skills and prepare for a career in

Ecco il Colab Notebook con il codice e gli output per aiutarti nel tuo percorso di coding.

Poi puoi usare LlamaIndex e creare la tua applicazione di AI usando il tuo nuovo modello addestrato seguendo il tutorial LlamaIndex: aggiungere dati personali agli LLM. Puoi trovare ispirazione per il tuo progetto consultando 5 progetti realizzati con modelli generativi e strumenti open source.

Cosa è cambiato dopo Llama 2

Dalla pubblicazione di Llama 2 a luglio 2023, Meta ha rilasciato diversi modelli più recenti con miglioramenti significativi. Llama 3 (aprile 2024) ha introdotto un vocabolario più ampio da 128K token e la grouped query attention (GQA) in tutte le dimensioni del modello. Llama 3.1 (luglio 2024) ha ampliato la lunghezza del contesto a 128K token e aggiunto una variante da 405B parametri. Llama 3.2 (settembre 2024) ha portato capacità multimodali e modelli leggeri da 1B/3B ottimizzati per dispositivi edge.

Anche l’ecosistema del fine-tuning si è evoluto notevolmente. Strumenti come Unsloth offrono training 2x più veloce e il 60% in meno di memoria rispetto al PEFT standard di Hugging Face, e strumenti con interfaccia grafica come LLaMA-Factory rendono il fine-tuning accessibile senza scrivere codice. I concetti di base di QLoRA e PEFT trattati in questo tutorial restano fondamentali — ti consigliamo di esplorare i nostri tutorial su fine-tuning di Llama 3.1 e fine-tuning di Llama 3.2 per gli approcci più recenti.

Conclusione

In questo tutorial, abbiamo visto come fare il fine-tuning del modello LLaMA 2 usando tecniche come QLoRA, PEFT e SFT per superare i limiti di memoria e calcolo. Sfruttando librerie Hugging Face come transformers, accelerate, peft, trl e bitsandbytes, siamo riusciti a fare il fine-tuning del modello LLaMA 2 da 7B parametri su una GPU consumer.

In generale, questo tutorial mostra come i progressi recenti abbiano permesso la democratizzazione e l’accessibilità dei grandi modelli linguistici, consentendo anche agli hobbisti di costruire AI all’avanguardia con risorse limitate.

Per continuare a imparare, segui il corso Fine-Tuning con Llama 3 per fare pratica con i modelli più recenti, oppure approfondisci l’ecosistema usato in questo tutorial con il corso Working with Hugging Face. Per le basi, inizia con Introduzione agli LLM in Python o il corso Large Language Models (LLM) Concepts, e scopri il percorso di competenze AI Fundamentals.

Riferimenti


Abid Ali Awan's photo
Author
Abid Ali Awan
LinkedIn
Twitter

In quanto data scientist certificato, sono appassionato di sfruttare tecnologie all’avanguardia per creare applicazioni di machine learning innovative. Con una solida esperienza in riconoscimento vocale, analisi e reportistica dei dati, MLOps, AI conversazionale e NLP, ho affinato le mie competenze nello sviluppo di sistemi intelligenti in grado di avere un impatto concreto. Oltre alla mia expertise tecnica, sono anche un comunicatore efficace, con il talento di rendere chiari e sintetici concetti complessi. Di conseguenza, sono diventato un blogger molto seguito in ambito data science, condividendo idee ed esperienze con una community in crescita di professionisti dei dati. Attualmente mi concentro sulla creazione e sull’editing di contenuti, lavorando con large language model per sviluppare contenuti potenti e coinvolgenti che possano aiutare aziende e singoli a valorizzare al meglio i propri dati.

Domande frequenti su QLoRA per il fine-tuning di Llama 2

Che cos’è QLoRA e in cosa differisce da LoRA?

QLoRA (Quantized Low-Rank Adaptation) combina due tecniche per risparmiare memoria: carica il modello base in precisione quantizzata a 4 bit e addestra piccoli layer adattatori Low-Rank sopra di esso. La LoRA standard mantiene il modello base a 16 bit (FP16), richiedendo circa 16 GB di VRAM per un modello 7B. QLoRA riduce questo fabbisogno a 6-8 GB quantizzando a 4 bit il modello base congelato, rendendo possibile il fine-tuning su GPU consumer come T4 o RTX 3060. La differenza di qualità tra LoRA e QLoRA è tipicamente inferiore al 2% sui benchmark standard.

Posso fare il fine-tuning di Llama 2 in locale senza una GPU cloud?

Sì, se la tua macchina ha una GPU NVIDIA con almeno 8 GB di VRAM e supporto CUDA. GPU come RTX 3060 (12 GB), RTX 4060 o RTX 2080 Ti funzionano bene con QLoRA. Anche gli utenti Apple Silicon con chip serie M possono eseguire il fine-tuning usando il framework MLX di Apple, sebbene l’addestramento sarà più lento rispetto a una GPU NVIDIA equivalente. Per le macchine senza una GPU adatta, opzioni cloud gratuite come Google Colab (GPU T4) o Kaggle funzionano bene per il modello 7B.

Quanto tempo serve per fare il fine-tuning di Llama 2 7B?

Il tempo di training dipende dalla tua GPU, dalla dimensione del dataset e dalla configurazione. Su una GPU T4 gratuita di Google Colab con un dataset da 1.000 campioni e 1 epoca, aspettati circa 1-2 ore. Una RTX 4090 può completare lo stesso compito in 30-45 minuti. Per dataset più grandi (10.000+ campioni), il training scala in modo lineare — una T4 può impiegare 3-4 ore mentre una RTX 4090 finisce in circa 1,5-2 ore.

Che formato di dataset richiede il fine-tuning di Llama 2?

Llama 2 si aspetta dati conversazionali formattati con il suo template di chat: <s>[INST] user message [/INST] assistant response </s>. Il dataset usato in questo tutorial (mlabonne/guanaco-llama2-1k) è già formattato in questo modo. Per dataset personalizzati, puoi usare la libreria datasets di Hugging Face per caricare dati da file JSON, CSV o parquet e applicare il template di prompt di Llama 2 in fase di preprocessing.

Vale ancora la pena fare fine-tuning di Llama 2 nel 2026?

Llama 2 resta una buona risorsa per apprendere i concetti di fine-tuning, ma per casi d’uso in produzione i modelli più recenti come Llama 3.1 e Llama 3.2 offrono miglioramenti significativi in prestazioni, lunghezza del contesto ed efficienza. Le tecniche QLoRA e PEFT trattate in questo tutorial si trasferiscono direttamente ai modelli più nuovi. Dai un’occhiata ai nostri tutorial su fine-tuning di Llama 3.1 e fine-tuning di Llama 3.2 per gli approcci più recenti.

Argomenti
Intelligenza artificiale

Inizia oggi il tuo percorso nell’AI!

Programma

Nozioni di base sull'intelligenza artificiale

10 ore
Scopri le basi dell'intelligenza artificiale, impara a usarla al meglio per il lavoro e immergiti in modelli come ChatGPT per orientarti nel mondo dinamico dell'IA.
Vedi i dettagliRight Arrow
Inizia Il Corso
Mostra altroRight Arrow
Correlato

blog

Tokenizzazione nel NLP: come funziona, sfide e casi d'uso

Guida al preprocessing NLP nel machine learning. Copriamo spaCy, i transformer di Hugging Face e come funziona la tokenizzazione in casi d'uso reali.
Abid Ali Awan's photo

Abid Ali Awan

10 min

blog

I 15 migliori server MCP remoti che ogni AI builder dovrebbe conoscere nel 2026

Scopri i 15 migliori server MCP remoti che stanno trasformando lo sviluppo AI nel 2026. Scopri come migliorano automazione, ragionamento, sicurezza e velocità dei workflow.
Abid Ali Awan's photo

Abid Ali Awan

15 min

blog

Che cos'è Snowflake? Guida per principianti alla piattaforma dati cloud

Esplora le basi di Snowflake, la piattaforma dati cloud. Scopri la sua architettura, le sue funzionalità e come integrarla nelle tue pipeline di dati.
Tim Lu's photo

Tim Lu

12 min

Mostra AltroMostra Altro