La cartella loras/ di Private Vision era piena di roba fatta da altri. Funzionava, per carità: Private Vision genera immagini in locale con SDXL, senza cloud, senza account, senza che un byte esca dal PC, e le LoRA scaricate si caricavano benissimo. Ma c’era un’incoerenza che dava fastidio. Avevamo costruito un generatore offline e poi, per personalizzarlo, dipendevamo dai file di qualcun altro, addestrati su dataset che non abbiamo visto, con parametri che nessuno documenta. Il pezzo mancante era ovvio: se generi in casa, devi anche poter addestrare in casa. Da lì nasce LoRA Studio, sullo stesso SDXL di Private Vision, così che quello che esce da uno entra nell’altro senza conversioni e senza sorprese.
Cos’è una LoRA, detta semplice
SDXL ha circa 2,6 miliardi di parametri. Riaddestrarlo per insegnargli il tuo personaggio è fuori discussione: servirebbero settimane e hardware che non abbiamo. La LoRA (Low-Rank Adaptation) risolve il problema aggirandolo. Invece di toccare i pesi del modello, ne congela tutti e affianca a quelli che contano due matrici molto più piccole, che imparano solo la differenza fra quello che il modello sa già e quello che vuoi insegnargli. Il risultato è un file da qualche decina di megabyte invece di sette gigabyte, e un addestramento che dura minuti invece di giorni.
Il parametro che decide quanto quelle matrici possono memorizzare si chiama network_dim (o rank). Più è alto, più informazione ci sta dentro, più il file è grosso e più è facile che la LoRA impari a memoria invece che imparare davvero. Accanto c’è network_alpha, che fa da freno: la regola pratica è tenerlo alla metà del dim. Il terzo parametro è il learning rate, cioè quanto la LoRA si corregge a ogni passo. È il più delicato dei tre. Troppo alto e brucia l’immagine, troppo basso e non impara niente in tempo utile.
Epoche, ripetizioni, step: la matematica che decide tutto
Qui c’è la confusione più comune, e si smonta con una formula sola. Uno step è una singola immagine mostrata al modello, con la sua correzione. Una ripetizione è quante volte la stessa immagine viene mostrata dentro un solo giro. Un’epoca è un giro completo su tutto il dataset. Quindi:
step per epoca = (immagini × ripetizioni) ÷ batch size, e step totali = step per epoca × epoche.
Con 25 immagini, 6 ripetizioni e batch 1 fanno 150 step per epoca. Per dieci epoche, 1500 step totali. Questo è tutto il conto, e spiega perché aumentare le immagini non allunga solo l’attesa ma cambia proprio il regime di apprendimento: raddoppiare il dataset a parità di ripetizioni raddoppia gli step, e una LoRA che doveva cuocere trenta minuti finisce stracotta. Per questo LoRA Studio, quando cambi il numero di immagini, riaggiusta le ripetizioni per restare nella finestra di step giusta, invece di lasciarti sommare a caso.
L’altra cosa che l’app fa di default è salvare un file a ogni epoca. Non è pignoleria: la LoRA migliore quasi mai è l’ultima, di solito sta fra la sesta e l’ottava, e senza checkpoint intermedi ti resta solo quella overfittata.

Cosa insegni e cosa lasci libero
Ogni immagine del dataset ha una didascalia fatta di tag danbooru, generati automaticamente dal tagger EVA02 (lo stesso vocabolario su cui è addestrato il modello, quindi i tag prodotti sono esattamente quelli che capirà in generazione). In testa a ogni didascalia c’è la trigger word, la parola inventata che richiamerà la LoRA. E qui vale il principio che regge tutto il resto: quello che togli dai tag viene assorbito dalla trigger word, quello che lasci resta controllabile al momento della generazione.
Se addestri un personaggio e togli “capelli biondi” e “occhi verdi”, quei tratti diventano parte della trigger word e arrivano gratis. Se li lasci, dovrai riscriverli ogni volta nel prompt. Se addestri uno stile e ti dimentichi di togliere il tag watercolor (medium), lo stile si attacca a quel tag invece che alla tua parola, e la LoRA sembrerà non funzionare.
Setup a confronto
| Tipo | Immagini ideali | dim / alpha | Learning rate | Ripetizioni × epoche | Step totali | Cosa togliere dai tag |
|---|---|---|---|---|---|---|
| Personaggio | 20-30 | 16 / 8 | 1e-4 | 6 × 10 | ~1500 | capelli, occhi, corporatura, tratti fissi |
| Personaggio multi-outfit | 35-50 (8-10 per outfit) | 24 / 12 | 1e-4 | 4 × 10 | ~1600-2000 | i tratti fissi sì, i tag degli outfit no |
| Concept / outfit / oggetto / posa | 25-40 | 16 / 8 | 1e-4 | 5 × 12 | ~1800 | solo i tag che descrivono il concept |
| Stile artistico | 80-150 | 32 / 16 | 7,5e-5 | 2 × 12 | ~2400 | tecnica, tag di qualità, firme e watermark |
Lo stile è l’unico che vuole più capacità e meno velocità, e non è un capriccio: uno stile è informazione diffusa su tutta l’immagine (tratto, palette, luce, resa), quindi serve più spazio dove metterla, ma si brucia con una facilità imbarazzante e va cotto piano. Vale anche la regola d’oro opposta: se tutte le immagini di uno stile hanno lo stesso soggetto, hai addestrato il soggetto. Per il resto la base è comune a tutti: risoluzione 1024 (il nativo di SDXL), fp16, AdamW8bit, scheduler cosine con warmup al 5%, batch 1.
Quanto tempo ci vuole davvero
| GPU | VRAM | s/step (dim 16) | Personaggio | Concept | Stile (dim 32) |
|---|---|---|---|---|---|
| RTX 2070 | 8 GB | 1,68 | ~42 min | ~50 min | ~1h 25m |
| RTX 3070 | 8 GB | ~1,00 | ~25 min | ~30 min | ~50 min |
| RTX 4070 | 12 GB | ~0,65 | ~16 min | ~20 min | ~32 min |
| RTX 5070 | 12 GB | ~0,50 | ~13 min | ~15 min | ~25 min |
Solo la riga della 2070 è misurata sulla nostra macchina (1,676 s/step a dim 16 e 2,16 a dim 32, con picchi di 7,25 e 7,66 GB di VRAM). Le altre sono proiezioni scalate su throughput fp16 e banda di memoria, quindi vanno lette con un margine del 20% abbondante. Il salto che conta non è nemmeno la velocità: è la VRAM. A 8 GB si sta al limite e si allena solo la U-Net, mentre a 12 GB puoi passare a batch 2 e togliere circa un quarto del tempo, o permetterti opzioni che sulla 2070 mandano tutto in out of memory. Proprio per questo LoRA Studio non usa i tempi da tabella: misura i secondi per step sulla tua scheda al primo addestramento, scarta i primi cinque step di rodaggio (che falserebbero la media) e da lì in poi le stime che vedi sono le tue, non quelle del manuale.
Alla fine il pezzo più difficile non è nessuno di questi numeri. I parametri li abbiamo impacchettati proprio perché smettessero di essere il problema. Quello che nessun preset può decidere al posto tuo è se le trenta immagini che hai raccolto raccontano davvero la cosa che vuoi insegnare, o solo il contesto in cui l’hai trovata.
#LoRA #SDXL #PrivateVision #epoche #step #networkdim #learningrate #dataset #triggerword #VRAM
Se l’articolo ti è piaciuto restiamo in contatto su linkedin a https://www.linkedin.com/in/andreatonin/
| Editorial Manager at Pills for Nerds | CTO & Technology Consultant |
Technology professional, editor and lifelong nerd with over 30 years of experience in the digital and innovation sectors. I work as a CTO and technology consultant, designing complex and scalable software ecosystems, and I am also active in IT education and professional training. Alongside my technology career, I serve as Editorial Manager and contributor at Pills for Nerds, online publication covering video games, game development, emerging technologies, artificial intelligence, digital culture and industry events. In my editorial role, I coordinate content planning and contribute articles, interviews, event reports and in-depth features. You can learn more about my consulting work at lucedigitale.com and connect with me on LinkedIn

















