Avanzato 17 minFine-tuning

Fine-tuning in locale su GB10: misurazioni e metodologia

Fine-tuning in locale su GB10: misurazioni e metodologia
Risposta diretta

Su una GIGABYTE AI TOP ATOM (chip NVIDIA GB10, 128 GB), un piccolo modello addestrato per un compito preciso può superare un modello molto grande su quel compito. In 85 minuti di LoRA, Qwen3-8B estrae senza alcun errore i dati del 95% di 200 fatture fittizie mai viste, contro il 62,5% di gpt-oss 120B e il 26% senza addestramento. Anche il QLoRA con Unsloth rientra nella memoria disponibile: 41 GB per un 70B, 64 GB per gpt-oss 120B. L'addestramento è costato 1,5 centesimi di elettricità lato GPU.

Il fine-tuning addestra ancora un po' un modello esistente perché riesca in un compito preciso. Con 128 GB di memoria unificata, una macchina GB10 lo fa a casa tua, senza noleggiare server né affidare i tuoi dati a un servizio online. Questa guida segue un caso completo, misurato su una AI TOP ATOM fornita gratuitamente da GIGABYTE: estrarre in JSON i dati delle fatture. Riporta anche le misurazioni del QLoRA (lo stesso metodo su un modello compresso a 4 bit) con Unsloth fino a gpt-oss 120B, e i comandi dei nostri test.

Di Mohamed Meguedmi·Agg. 2026-11-05·Misurato su GIGABYTE AI TOP ATOM
i
Trasparenza
Materiale fornito gratuitamente da GIGABYTE per questa serie di guide. Le misurazioni e le opinioni sono nostre; GIGABYTE non ha né riletto né approvato questo contenuto prima della pubblicazione. Questa pagina non contiene alcun link di affiliazione. I nostri dati, infografiche e foto possono essere riutilizzati liberamente con licenza CC BY 4.0, citando QualeLLM.
I numeri chiave
95%
di fatture fittizie estratte senza alcun errore dopo l'addestramento
85min
di addestramento LoRA di Qwen3-8B, sulla macchina
1,5centime
di elettricità lato GPU per questo addestramento
64,4GB
per un QLoRA di gpt-oss 120B con Unsloth
Frontale dell'AI TOP ATOM tenuto in piano in una mano: griglia a lamelle e logo GIGABYTE.
L'AI TOP ATOM sta in una mano: 150 mm di larghezza per 50,5 mm di altezza. Foto della nostra unità, sfondo neutralizzato. Ingrandisci ↗

#Il caso reale: leggere fatture e produrre JSON

Il compito è comune in una piccola impresa: a partire dal testo di una fattura, di un preventivo o di una nota di credito, il modello deve restituire un JSON, cioè una scheda strutturata che un software è in grado di leggere. Questa scheda comprende 31 campi valutati: tipo di documento, numero, date, emittente, cliente, righe di prodotto, sconto, totali, IVA, acconto, IBAN. Abbiamo scelto questo compito perché la risposta si può verificare campo per campo, senza che un altro modello debba giudicarla.

I documenti sono fittizi. Un piccolo programma ha generato 12 layout, cioè 12 forme di fattura, con nomi di aziende inventati. La sua casualità è regolata da un «seed» fisso: a ogni esecuzione produce di nuovo gli stessi documenti. L'addestramento usa 2.000 documenti su 10 layout.

La valutazione usa 200 documenti mai visti: 100 sugli stessi 10 layout e 100 su 2 layout assenti dall'addestramento. Questi ultimi 100 dicono se il modello ha capito il compito o se ha solo memorizzato delle forme.

Il modello riceve il testo del documento, non un'immagine né un PDF. Ecco un estratto della risposta del modello addestrato sul primo documento di test, una nota di credito fittizia di quattro righe.

Estratto della risposta del modello addestrato (documento di test n. 1, abbreviato)
{
  "type_document": "avoir",
  "numero": "AV-2025-0807",
  "date_emission": "2025-05-12",
  "emetteur": { "raison_sociale": "Menuiserie Vassouze SA", "code_postal": "38000", "ville": "Grenoble" },
  "lignes": [
    { "designation": "Ponçage et vitrification", "quantite": -58, "unite": "m²",
      "prix_unitaire_ht": 36.0, "taux_tva": 10, "montant_ht": -2088.0 },
    …
  ],
  "total_ht": -6356.0,
  "total_tva": -911.4,
  "total_ttc": -7267.4,
  "devise": "EUR"
}

#Il metodo: LoRA, un'epoca, 85 minuti

Il kit completo per creare il tuo assistente IA.

Approfitta della nostra esperienza e di un percorso guidato per creare il tuo assistente locale e usare la tua IA ogni giorno.

  • Spazio online a vita
  • PDF + file
  • Garanzia di rimborso di 30 giorni

La macchina è una GIGABYTE AI TOP ATOM, codice ATAGB10-9000: chip NVIDIA GB10, 128 GB di memoria unificata, SSD da 4 TB in PCIe 5.0, con DGX OS 7.5.0 (driver 580.159.03, CUDA 13.0). I software: il container PyTorch di NVIDIA (versione 26.03, con PyTorch 2.11), PEFT 0.21.2 per il LoRA, Unsloth 2026.10.1 per il QLoRA e, per il serving, il container vLLM 26.09 di NVIDIA (vLLM 0.29.0). La nostra prima guida della serie descrive in dettaglio la macchina e la velocità di 13 modelli.

LoRA (Low-Rank Adaptation) lascia intatto il modello originale e addestra piccole matrici aggiunte ai suoi layer. Il risultato è un adattatore, un piccolo file che si carica insieme al modello. Qui vengono addestrati 43,6 milioni di parametri, contro gli 8 miliardi di Qwen3-8B.

In questa guida ricorrono tre termini. Uno step di addestramento elabora un batch di 4 documenti. Un'epoca è un passaggio completo sui 2.000 documenti. La perdita misura lo scarto tra la risposta scritta dal modello e la risposta attesa: più è bassa, meglio è.

Modello
Qwen3-8B in bf16, un formato numerico a 16 bit, senza compressione.
LoRA
Rango 16, alpha 32 (un coefficiente di scala), dropout 0,05 (a ogni passo una piccola parte dei valori viene ignorata a caso, per limitare l'overfitting), sulle 7 proiezioni di ogni layer, cioè le sue 7 matrici di pesi: q, k, v, o, gate, up, down. Il rango determina la dimensione delle matrici aggiunte.
Durata
1 epoca: 500 step da 4 documenti.
Tasso di apprendimento
1e-4, ovvero 0,0001, con un warmup progressivo su 30 passi e poi un decadimento cosinusoidale.
Lots
Ordiniamo i 2.000 documenti per lunghezza, formiamo i batch e poi ne mescoliamo l'ordine con un seed fisso. Un batch contiene documenti di lunghezza simile: c'è meno padding inutile, quindi l'addestramento è più veloce.
Perte
Calcolata sulla sola risposta JSON. Il prompt e il documento sono mascherati: il modello impara a scrivere la risposta, non a ricopiare il documento.
Lunghezza
Fino a 2.304 token. Il documento più lungo ne conta 2.204, la media è di 1.143: nessuno viene troncato.
Memoria
Il gradient checkpointing è attivo: il modello ricalcola alcuni risultati invece di tenerli tutti in memoria.

Queste impostazioni sono state fissate da un'integrazione al nostro protocollo, datata 7 ottobre 2026, prima di qualsiasi valutazione sui 200 documenti di test. Il protocollo è stato congelato prima della prima misurazione; il metodo, l'elenco datato delle integrazioni e i dati delle nostre tabelle sono pubblicati sulla nostra pagina del metodo. In questa guida le memorie sono espresse in GB, come le mostra Linux: 1 GB = 1.024 MB.

Tutto avviene nel container PyTorch di NVIDIA (versione 26.03). Al suo interno, un ambiente Python riceve le librerie transformers e PEFT. I percorsi qui sotto sono semplificati; le opzioni sono quelle dei nostri test.

Preparare l'ambiente Python (testato il 6 ottobre 2026)
mkdir -p ~/venv-ft ~/resultats   # à créer d'abord : sinon Docker les crée au nom de root
docker run --rm --gpus all --ipc=host --user $(id -u):$(id -g) -e HOME=/tmp \
  -v ~/venv-ft:/venv nvcr.io/nvidia/pytorch:26.03-py3 \
  bash -lc "python -m venv --system-site-packages /venv; . /venv/bin/activate; pip install -q 'transformers>=4.56' peft==0.21.2 accelerate"
Avviare l'addestramento sulle fatture (testato l'8 ottobre 2026)
docker run --rm --init --gpus all --ipc=host --user $(id -u):$(id -g) -e HOME=/tmp \
  -v ~/venv-ft:/venv -v ~/models:/models:ro -v ~/donnees:/data:ro \
  -v ~/scripts:/s -v ~/resultats:/res \
  nvcr.io/nvidia/pytorch:26.03-py3 \
  bash -lc ". /venv/bin/activate; python /s/entrainer_factures.py /res/adapter"
Il cuore dello script di addestramento (estratto: M, pi, ri, LMAX, exemples, opt e pas sono definiti più in alto nello script)
model = AutoModelForCausalLM.from_pretrained(M, dtype=torch.bfloat16, device_map="cuda")
model.gradient_checkpointing_enable(); model.config.use_cache = False; model.enable_input_require_grads()
model = get_peft_model(model, LoraConfig(r=16, lora_alpha=32, lora_dropout=0.05, task_type="CAUSAL_LM",
    target_modules=["q_proj", "k_proj", "v_proj", "o_proj", "gate_proj", "up_proj", "down_proj"]))

# perte sur la réponse seule : les tokens de la consigne reçoivent l'étiquette -100 et sont ignorés
ids = (pi + ri)[:LMAX]; lab = ([-100] * len(pi) + ri)[:LMAX]

# lots de longueur voisine : tri par longueur, lots de 4, ordre des lots mélangé (graine fixe)
tri = sorted(range(len(exemples)), key=lambda i: len(exemples[i][0]))
lots = [tri[b:b + 4] for b in range(0, len(tri), 4)]; random.shuffle(lots)
sch = get_cosine_schedule_with_warmup(opt, 30, pas)

#I risultati: 95% di documenti perfetti

Il punteggio confronta, campo per campo, il valore scritto dal modello con il valore atteso, dopo la normalizzazione. Un documento è «perfetto» quando tutti i suoi campi sono esatti. I tre modelli ricevono le stesse istruzioni, a temperatura 0 (l'impostazione che rende le risposte più stabili), tramite vLLM 26.09, 16 documenti alla volta. Per Qwen3-8B, la riflessione è disattivata. Per gpt-oss 120B, lo sforzo di ragionamento è impostato su «basso».

Valutazione su 200 documenti mai visti, 8 ottobre 2026, punteggio rigoroso. «Layout nuovi»: 100 documenti su 2 layout assenti dall'addestramento. Durata: 200 documenti, 16 in parallelo, vLLM 26.09.
ModelloCampi esattiDocumenti perfettiPerfetti, layout notiPerfetti, layout nuoviDurata per 200 documenti
Qwen3-8B senza addestramento84,8 %26,0 %27 %25 %686 s
gpt-oss 120B senza addestramento97,5 %62,5 %58 %67 %991 s
Qwen3-8B + LoRA (85 min)99,2 %95,0 %96 %94 %524 s
Barre orizzontali per tre modelli. Documenti perfetti: Qwen3-8B senza addestramento 26,0%, gpt-oss 120B 62,5%, Qwen3-8B con LoRA 95,0%, cioè 3,7 volte di più che senza addestramento. Campi esatti: 84,8%, 97,5% e 99,2%. Documenti perfetti sui layout mai visti: 25%, 67% e 94%.
Qualità dell'estrazione su 200 fatture fittizie mai viste (in alto a sinistra: 2.000 documenti di addestramento, poi 200 documenti di test). Barra piena, pittogramma del documento convalidato: quota di documenti senza alcun errore. Barra chiara, pittogramma del campo: quota di campi esatti. Bollino con stella: documenti perfetti sui 100 documenti con layout assenti dall'addestramento. Colori: blu per Qwen3-8B senza addestramento, arancione per gpt-oss 120B, verde (con il fulmine) per Qwen3-8B addestrato con LoRA: 3,7 volte più documenti perfetti rispetto allo stesso modello senza addestramento. Ingrandisci ↗

Il modello addestrato ottiene il 95,0% di documenti perfetti, contro il 26,0% dello stesso modello senza addestramento: 69 punti in più, ovvero 3,7 volte più documenti senza errori. Supera gpt-oss 120B (62,5%), un modello da 117 miliardi di parametri. È anche il più veloce: 524 secondi per i 200 documenti, contro 991 secondi per gpt-oss 120B e 686 secondi per Qwen3-8B senza addestramento. Anche le sue risposte sono più brevi: 98.847 token scritti, contro 160.702 per gpt-oss 120B.

Sui 100 documenti con layout mai visti, il modello addestrato mantiene il 94% di documenti perfetti e il 98,5% di campi esatti, contro il 96% e il 99,9% sui layout noti. Il divario è di 2 punti sui documenti perfetti (96% contro 94%): l'adattatore non si limita alle forme viste durante l'addestramento.

Il dettaglio per campo mostra che cosa ha corretto l'addestramento. Tutti i 31 campi sono esatti in almeno il 97,5% dei documenti, e 18 di essi nel 100% dei documenti. Senza addestramento, 10 campi sono esatti tra il 49,5% e il 61,5% delle volte: gli importi (sconto, totali, IVA, acconto, netto a pagare) e le righe (quantità, prezzo unitario, aliquota IVA, importo). Dopo l'addestramento, questi 10 campi sono esatti dal 98% al 100%.

I tre modelli restituiscono un JSON valido nel 100% dei casi e trovano il numero corretto di righe nel 100% dei documenti. La differenza si gioca quindi sul valore dei campi, non sulla forma della risposta.

#Quanto costa: tempo, memoria, elettricità

Addestramento LoRA di Qwen3-8B sulle 2.000 fatture, 8 ottobre 2026. Potenza e temperatura: rilevazioni della GPU, una al secondo (nvidia-smi).
MisurazioneValore
Durata dell'addestramento5.090 s, ossia 85 min (10,2 s per step)
Picco di memoria GPU rilevato da PyTorch33,3 GB
Potenza della GPU, media e di picco53,0 W e 62,7 W
Temperatura della GPU, media e massima65 °C e 77 °C
Throttling segnalato dalla GPUnessuno sulle 5.206 rilevazioni
Energia della GPU per l'addestramento (87 minuti di rilevazione, caricamento incluso)76,7 Wh
Costo alla tariffa EDF Tarif Bleu Base (20,01 centesimi per kWh IVA inclusa)1,5 centesimi
Energia della GPU per leggere i 200 documenti di test con il modello addestratocirca 6 Wh

Queste cifre riguardano solo la GPU, così come le riporta il chip. Secondo NVIDIA, la potenza mostrata da nvidia-smi è quella della sola GPU. Processore, memoria, SSD e alimentatore non sono conteggiati. La tariffa è quella dell'opzione Base di EDF per 6 kVA, nella griglia applicabile al 1 agosto 2026; l'abbonamento non è conteggiato.

Curva della perdita durante l'addestramento di Qwen3-8B con LoRA, da 0 a 85 minuti. La perdita vale 0,0284 alla prima rilevazione, sale a 0,0511 allo step 20, poi scende sotto 0,01 già allo step 30 (0,0076), a circa 5 minuti. Rimane poi vicina allo zero fino alla fine. L'addestramento dura 85 minuti e consuma 76,7 Wh lato GPU, con una temperatura media di 65 °C.
Perdita rilevata ogni 10 step durante gli 85 minuti di addestramento (asse orizzontale in minuti; 500 step da 4 documenti). I due punti cerchiati sono lo step 20 (0,0511) e lo step 30 (0,0076), prima rilevazione sotto la soglia arancione di 0,01. In alto: durata, energia della GPU e temperatura media della GPU. Ingrandisci ↗

Ogni punto della curva proviene da un solo batch di 4 documenti: i valori variano quindi da una rilevazione all'altra. La loss scende sotto 0,01 già allo step 30, dopo 5 minuti di addestramento, e nessuna rilevazione successiva supera 0,0082. Una sola epoca è bastata per raggiungere il 95% di documenti perfetti in questo caso.

#QLoRA con Unsloth: un 70B e gpt-oss 120B sulla stessa macchina

Il QLoRA comprime i pesi del modello a 4 bit, riducendo notevolmente il suo ingombro in memoria, poi addestra un adattatore LoRA sopra di esso. È la strada per specializzare un modello di grandi dimensioni senza cambiare macchina. Abbiamo usato Unsloth, uno strumento libero che, secondo chi lo sviluppa, alleggerisce e accelera il fine-tuning.

NVIDIA pubblica una guida ufficiale per Unsloth su DGX Spark, in un container PyTorch di NVIDIA (versione 25.11), e offre anche un ambiente ufficiale di fine-tuning PyTorch per modelli da 1 a 70 miliardi di parametri. Unsloth dichiara circa 68 GB di memoria per un QLoRA a 4 bit di gpt-oss 120B; la nostra misurazione indica un picco di 64,4 GB, dello stesso ordine di grandezza.

Abbiamo misurato velocità e memoria su due modelli: Llama 3.3 70B e gpt-oss 120B, entrambi nel formato a 4 bit pubblicato da Unsloth. Ogni prova comprende 40 step, e i primi 10, che servono all'avvio, non sono conteggiati nella media.

Le sequenze sono di 1.024 token, con un batch di 1 e un LoRA di rango 16. Questi step, eseguiti sul testo di riferimento del nostro protocollo, misurano throughput e memoria; non producono un modello utile.

Misurazioni del 6 e dell'8 ottobre 2026. Le prime due righe: Unsloth 2026.10.1, QLoRA a 4 bit, sequenze da 1.024 token, batch da 1. La terza: LoRA in bf16 con transformers e PEFT, sequenze da 1.024 token, batch da 4. Strumenti, batch e layer addestrati sono diversi: non confrontare le righe in senso stretto. «Memoria del modello» è il calo della memoria disponibile del sistema dopo il caricamento; «picco di memoria GPU» è il massimo rilevato da PyTorch. Il picco di 63,4 GB del Qwen3-8B proviene da questa prova di throughput, con batch da 4 sequenze da 1.024 token e uno script più semplice; l'addestramento sulle fatture, con altre impostazioni, ha avuto un picco di 33,3 GB.
ModelloChargementMemoria del modelloPicco di memoria GPUSecondi per stepToken al secondoParametri addestrati
Llama 3.3 70B (QLoRA a 4 bit)247 s37,6 GB41,3 GB9,39109207 milioni (7 proiezioni)
gpt-oss 120B (QLoRA a 4 bit)397 s58,5 GB64,4 GB6,3516111,9 milioni (4 proiezioni di attention)
Qwen3-8B (LoRA bf16)——63,4 GB5,4275643,6 milioni (7 proiezioni)
Due modelli addestrati con Unsloth in QLoRA. Llama 3.3 70B: picco di memoria GPU di 41,3 GB su 128 GB, 9,39 secondi per step, 109 token al secondo. gpt-oss 120B: picco di memoria di 64,4 GB su 128 GB, 6,35 secondi per step, 161 token al secondo.
Picco di memoria GPU (su una scala di 128 GB) e durata di uno step per due QLoRA con Unsloth. Pittogramma con 9 caselle piene: modello denso (Llama 3.3 70B). Pittogramma con 2 caselle accese: modello MoE (gpt-oss 120B), che attiva solo 5,1 miliardi di parametri per token. Sotto ogni nome: token di addestramento al secondo (pittogramma a forma di fulmine). Colori: blu per Llama 3.3 70B, arancione per gpt-oss 120B. Barre a sinistra (pittogramma di un modulo di memoria): picco di memoria; barre a destra (orologio): durata di uno step. Intestazione: sequenze di 1.024 token, batch da 1. Ingrandisci ↗

Il 70B si addestra con un picco di 41,3 GB, circa un terzo dei 121,7 GB visti dal sistema; gpt-oss 120B ne richiede 64,4 GB. In entrambi i casi resta spazio per altri servizi. Da notare: gpt-oss 120B avanza più velocemente per step rispetto al 70B (6,35 s contro 9,39 s), pur essendo più grande.

È un modello MoE, un «mix di esperti»: a ogni token usa solo 5,1 dei suoi 117 miliardi di parametri. Qui addestriamo solo le 4 matrici dell'attention (q, k, v, o), ovvero 11,9 milioni di parametri. Il 70B riceve invece un LoRA sulle sue 7 proiezioni, ovvero 207 milioni di parametri addestrati.

Per pianificare, ecco un calcolo basato sulle nostre misurazioni. 1 000 passi da 1 024 token, ossia circa un milione di token, richiederebbero 2 h 36 min con il 70B e 1 h 46 min con gpt-oss 120B. Verifica queste durate sul tuo dataset. Il QLoRA del 70B ha occupato la GPU per 10,8 minuti, compreso il caricamento del modello, per 8,9 Wh lato GPU.

→
Limita la memoria di PyTorch
Su una macchina a memoria unificata, la GPU e il sistema condividono gli stessi 128 GB. Limitiamo PyTorch all'80% della memoria con torch.cuda.set_per_process_memory_fraction e svuotiamo la cache del disco prima di ogni test. Entrambi i QLoRA sono rimasti sotto questo limite.
Unsloth: caricare un modello a 4 bit e aggiungere LoRA (estratto del nostro script, testato l'8 ottobre 2026)
import os; os.environ.setdefault("UNSLOTH_SKIP_TORCHVISION_CHECK", "1")
import torch; torch.cuda.set_per_process_memory_fraction(0.8)
from unsloth import FastLanguageModel

model, tok = FastLanguageModel.from_pretrained(
    model_name="unsloth/Llama-3.3-70B-Instruct-bnb-4bit",   # ou unsloth/gpt-oss-120b-unsloth-bnb-4bit
    max_seq_length=1024, load_in_4bit=True, dtype=None)   # nos essais lisaient une copie locale du modèle
model = FastLanguageModel.get_peft_model(model, r=16, lora_alpha=32, lora_dropout=0.0,
    target_modules=["q_proj", "k_proj", "v_proj", "o_proj", "gate_proj", "up_proj", "down_proj"],   # gpt-oss : q, k, v, o seulement
    use_gradient_checkpointing="unsloth", random_state=0)

Unsloth 2026.10.1 è installato nello stesso ambiente Python visto sopra, nello stesso container PyTorch. Per l'installazione passo passo, segui la guida ufficiale di NVIDIA e la documentazione di Unsloth, con i link a fine pagina.

#Servire il modello addestrato con vLLM

vLLM è un server open source, progettato per rispondere a più persone contemporaneamente; lo usiamo nel container fornito da NVIDIA. Carica il modello originale e poi vi aggiunge l'adattatore. L'API espone quindi due nomi: Qwen3-8B, senza adattatore, e factures, con l'adattatore. Abbiamo valutato entrambi sullo stesso server, il che rende equo il confronto.

Servire Qwen3-8B e l'adattatore per le fatture (testato l'8 ottobre 2026)
docker run -d --init --name vllm-factures --gpus all --ipc=host --ulimit memlock=-1 \
  -p 127.0.0.1:8002:8000 -v ~/models/hf:/m:ro -v ~/resultats:/res \
  nvcr.io/nvidia/vllm:26.09-py3 \
  vllm serve /m/Qwen/Qwen3-8B --served-model-name Qwen3-8B \
    --enable-lora --lora-modules factures=/res/adapter --max-lora-rank 16 \
    --max-model-len 6144 --gpu-memory-utilization 0.6
Interrogare l'adattatore (stessa chiamata della nostra valutazione)
curl -s http://127.0.0.1:8002/v1/chat/completions -H "Content-Type: application/json" -d '{
  "model": "factures",
  "messages": [
    {"role": "system", "content": "…consigne : rendre le JSON de la facture…"},
    {"role": "user", "content": "…texte de la facture…"}
  ],
  "temperature": 0, "max_tokens": 3000,
  "chat_template_kwargs": {"enable_thinking": false}
}'

Con 16 documenti inviati contemporaneamente, le 200 fatture vengono elaborate in 524 secondi. A questo ritmo, 1.000 fatture richiedono circa 44 minuti: è un calcolo basato sulla nostra misurazione. La porta è associata all'indirizzo locale 127.0.0.1. Per aprire il servizio alla tua rete, aggiungi una chiave API; la guida su vLLM in produzione descrive in dettaglio questo passaggio.

#Rifai questo caso da te in cinque passaggi

  1. 01
    Prepara gli esempi
    Raccogli delle coppie: il testo di un documento e la risposta JSON attesa. Scrivi un solo prompt, lo stesso per l'addestramento e per la valutazione. Noi abbiamo usato 2.000 esempi; non abbiamo misurato una soglia minima.
  2. 02
    Tieni da parte un set di test
    Metti da parte dei documenti senza mai mostrarli al modello. Aggiungi anche qualche layout assente dall'addestramento, per capire se il modello generalizza.
  3. 03
    Addestra per un'epoca
    Ordina gli esempi per lunghezza, forma i batch, calcola la loss sulla sola risposta e tieni d'occhio la curva di loss.
  4. 04
    Valuta prima e dopo
    Valuta il modello originale e quello addestrato con lo stesso prompt, campo per campo. Valuta anche un grande modello senza addestramento: è il confronto più utile.
  5. 05
    Servi il modello con vLLM
    Carica l'adattatore con l'opzione enable-lora e collega il tuo software all'API.

#Fine-tuning, RAG o un prompt migliore: cosa scegliere?

Inizia dal prompt: è gratis e immediato. Se il modello deve ritrovare dei fatti nei tuoi documenti, è più adatto un RAG: un assistente che prima cerca nei tuoi file e poi risponde.

Il fine-tuning è lo strumento giusto quando l'attività si ripete, il formato di output deve restare stabile e hai a disposizione degli esempi. La lettura delle fatture soddisfa queste tre condizioni. I due approcci si possono combinare sulla stessa macchina; un'altra guida della serie mostra un assistente RAG completo.

#I limiti delle nostre misurazioni

Documenti fittizi
Le nostre fatture sono generate da uno script, con 12 layout. Documenti reali, scansionati o fotografati, richiedono prima una lettura del testo (OCR) e possono dare risultati diversi.
Un solo addestramento
Abbiamo addestrato un solo adattatore e valutato ogni modello una volta, a temperatura 0. Non abbiamo misurato la variazione da un addestramento all'altro né fatto confronti con un addestramento più lungo.
gpt-oss 120B
Viene valutato con uno sforzo di ragionamento basso. Un'altra impostazione può cambiarne il punteggio.
QLoRA
Le misurazioni QLoRA riguardano velocità e memoria, su 40 step. Non abbiamo valutato la qualità di modelli 70B o 120B addestrati.
Energia
Riguarda solo la GPU.
Fuori ambito
Non abbiamo misurato l'addestramento di tutti i parametri di un modello, né l'uso di più macchine collegate.

Aggiornamenti e correzioni: questa pagina verrà rivista se una nuova versione di Unsloth, vLLM o DGX OS cambierà questi risultati; ogni correzione sarà datata.

#Per chi l'ATOM è la scelta giusta

Una PMI o uno studio professionale che vuole specializzare un piccolo modello sui propri documenti
85 minuti e 1,5 centesimi di elettricità lato GPU per passare dal 26% al 95% di fatture perfette sul nostro set di fatture fittizie, senza inviare un solo documento a terzi.
Uno sviluppatore o un team di dati che crea prototipi
Qwen3-8B in LoRA, un 70B o gpt-oss 120B in QLoRA: tutti e tre entrano nella stessa macchina, con un picco di memoria GPU da 33 a 64 GB.
Un team che vuole addestrare, valutare e servire i modelli nello stesso posto
La stessa macchina ha addestrato l'adattatore, valutato tre modelli e servito le risposte con vLLM.
Un ufficio senza sala server
Un case da un litro (150 × 150 × 50,5 mm, 1,2 kg) alimentato da un adattatore USB-C da 240 W.

Distinguiamo la piattaforma dal produttore. Il chip NVIDIA GB10, i suoi 128 GB di memoria unificata a 273 GB/s, CUDA e DGX OS 7.5.0 determinano gran parte delle velocità di addestramento. In inferenza, le nostre misurazioni si discostano al massimo del 4,3% da quelle pubblicate per il DGX Spark; gli addestramenti di questa guida sono stati eseguiti sull'AI TOP ATOM.

GIGABYTE fornisce lo chassis e il suo raffreddamento a due ventole. Durante gli 87 minuti di rilevazione dell'addestramento, con una media di 53 W lato GPU, la temperatura è rimasta in media a 65 °C e al massimo a 77 °C, senza alcun throttling segnalato.

Prezzi rilevati l'8 ottobre 2026 per l'ATAGB10-9001 (128 GB, SSD da 4 TB PCIe 4.0): 6.346,27 € IVA inclusa sul negozio ufficiale AORUS, dove era esaurita; era disponibile su Amazon.fr. Abbiamo misurato il modello ATAGB10-9000, il cui SSD è PCIe 5.0. I prezzi delle GB10 cambiano ogni settimana: verificali prima di acquistare.

#FAQ

FAQ
Quanto tempo serve per il fine-tuning di un modello da 8 miliardi di parametri su una GB10?+
Sulla nostra AI TOP ATOM, Qwen3-8B addestrato con LoRA su 2.000 fatture, un'epoca di 500 step, ha richiesto 85 minuti (10,2 secondi per step), con 33,3 GB di picco di memoria GPU. Il tempo dipende dalla lunghezza dei tuoi documenti: i nostri contano in media 1.143 token.
Si può fare il fine-tuning di un modello 70B o gpt-oss 120B con 128 GB?+
Sì, in QLoRA con Unsloth. Abbiamo misurato 41,3 GB di picco di memoria GPU e 9,39 secondi per step per Llama 3.3 70B, 64,4 GB e 6,35 secondi per step per gpt-oss 120B. Queste prove misurano velocità e memoria; non abbiamo valutato la qualità dei modelli ottenuti.
Un piccolo modello addestrato può davvero superare un grande modello?+
Sul nostro compito, sì: Qwen3-8B addestrato raggiunge il 95,0% di documenti perfetti, contro il 62,5% di gpt-oss 120B senza addestramento. Questo vale per un compito preciso e ripetuto, misurato su documenti fittizi; un grande modello resta più versatile.
Quanto costa l'elettricità di un fine-tuning?+
L'addestramento sulle fatture ha consumato 76,7 Wh lato GPU, ovvero 1,5 centesimi alla tariffa EDF Tarif Bleu Base di 20,01 centesimi per kWh. Questa cifra considera solo la GPU, così come riportato dal chip.
Come si usa l'adattatore una volta terminato l'addestramento?+
Con vLLM: l'opzione enable-lora carica l'adattatore accanto al modello originale e l'API lo espone con il nome che gli assegni. È la strada che abbiamo misurato: 200 fatture lette in 524 secondi, 16 alla volta.
Serve la versione da 128 GB dell'ATOM per fare il fine-tuning?+
Il QLoRA di gpt-oss 120B ha un picco di 64,4 GB: richiede la versione da 128 GB, quella che abbiamo misurato. Per le altre prove, i nostri picchi vanno da 33,3 GB (LoRA di Qwen3-8B sulle fatture) a 41,3 GB (QLoRA del 70B); la prova di throughput di Qwen3-8B, con batch di 4 sequenze da 1.024 token, ha raggiunto 63,4 GB. La versione da 64 GB, annunciata da GIGABYTE a partire dal 23 ottobre 2026, non è ancora stata misurata.
Della stessa serie
← Guida 4Il tutorial sul 70B
Guide 6 · di prossima pubblicazioneAssistente privato per PMI
Questa guida ti è stata utile?

Un feedback, un errore, una precisazione? Facci sapere, così la guida migliora per tutti.