Cambia tema

Addestrare un LoRA con ComfyUI: dati, tag e validazione

Easton editorial illustration: central LoRA trainer module, stack of varied character dataset image cards, output safetensors file tile

"kohya-ss/sd-scripts fornisce script e documentazione per il training LoRA di Stable Diffusion, SDXL, SD3, FLUX.1 e altre famiglie."

Hai 20 immagini di un personaggio originale e vuoi addestrare un LoRA capace di riprodurlo in nuove generazioni.

Dataset e strumento di captioning sono pronti e i parametri arrivano da uno screenshot, ma il risultato non regge: il volto cambia con lo sfondo; “wall” e “floor” nelle caption impongono sempre la stessa stanza; LR=1e-3 provoca overfitting; dim/alpha=32/1 lascia alpha=1 e dim=32 con una scala di circa 0.03, appena il 3%.

Non esiste garanzia di riuscita al primo tentativo. Il percorso pratico collega dati, caption, parametri iniziali, diagnosi e validazione in ComfyUI.


Preparare il dataset: quantità e tipo di immagini

Il primo passo non è aprire il trainer, ma stabilire se il materiale è sufficiente e adatto.

L’obiettivo determina la quantità

La quantità dipende direttamente da cosa vuoi addestrare.

LoRA di personaggio: parti da 15–30 immagini. Dieci fonti eccellenti, nitide e coerenti possono funzionare. Per cambiare scena, includi sfondi e angoli diversi.

LoRA di stile: spesso richiede 50–100 immagini, perché tratto, colore e composizione aggiungono variabili. Con pochi dati, lo stile scompare su immagini nuove.

LoRA di oggetto o abbigliamento: anche qui 15–30 immagini, con fronte, profilo e primi piani dei dettagli.

Tabella di qualità del dataset

La quantità non basta. Fonti deboli insegnano anche sfondi, illuminazione e difetti.

ObiettivoQuantità inizialeRisoluzioneSfondoAltri requisiti
Personaggio15–30 immagini (10 di alta qualità)512×512 o 1024×1024 coerentePulito o vario, senza ripetere la scenaAngoli, espressioni e pose
Stile50–100 immaginiAdatta alla base (SD1.5→512, SDXL→1024)Non deve essere pulito, ma lo stile deve essere coerenteStesso autore o serie
Oggetto15–30 immaginiRisoluzione coerenteMeglio pulito, ma può variareViste e dettagli diversi

La priorità è: risoluzione uniforme, sfondo per i personaggi, varietà di angoli e dettagli. Grandi differenze producono resize e dettagli incoerenti.

Risoluzione, sfondo e preprocessing

Risoluzione: il trainer ridimensiona tutto. Mescolare fonti da 512 e 2048 conserva i dettagli in modo diverso; ritagliale prima alla dimensione finale.

Sfondo: se 15 immagini su 20 mostrano la stessa stanza, il tagger ripete “wall” e “floor” e il LoRA può imparare l’ambiente. Scegli sfondi puliti o correggi le caption.

Flusso:

  1. Seleziona immagini nitide, con risoluzione simile e tratti chiari.
  2. Ritagliale a una sola risoluzione con Photoshop, GIMP o uno script batch.
  3. Escludi materiale rischioso se lo stesso sfondo compare più di cinque volte.

Caption e trigger word: etichettare il dataset

Il tagging automatico richiede revisione. Sfondi e tratti secondari incidono direttamente sull’utilità del LoRA.

Scegliere lo strumento di captioning

Opzioni comuni:

StrumentoCaratteristicheUsoSupporto ComfyUI
WD14 TaggerTag Danbooru, comune in Stable DiffusionPersonaggi e animeNodo Image-Captioning-in-ComfyUI
Florence2Modello visivo Microsoft con linguaggio naturalePersonaggi realistici e oggettiNodi disponibili
BLIPModello di caption in linguaggio naturaleStili realistici e sceneCompatibile con ComfyUI

WD14 è utile per i personaggi ma aggiunge “simple background” o “white wall”. Florence2 produce frasi e si adatta meglio al materiale realistico.

Formato e posizione del trigger

Usa un token raro o una combinazione personale:

  • sks charname, con un prefisso raro usato nei primi workflow Stable Diffusion
  • xyz_character_name, con prefisso personalizzato
  • my_char_001

Posizione:

  1. Inserisci il trigger all’inizio di ogni .txt o .caption, seguito dagli attributi.
  2. Alcuni trainer hanno un campo separato; non serve se tutte le caption contengono già il token.

La ripetizione assegna un nome stabile al concetto. Usa lo stesso trigger nella generazione.

Controllare manualmente gli attributi

Verifica almeno tre aspetti.

Perdita dello sfondo: “wall”, “floor” o “bedroom” frequenti possono bloccare nuove scene. Rimuovili o generalizzali.

Trigger mancante: controlla ogni caption.

Caratteristica essenziale assente: aggiungi capelli, colori o abbigliamento distintivo se mancano.

Non serve leggere ogni parola. Conta i termini con grep o un foglio di calcolo e correggi le anomalie.


Limiti degli strumenti: cosa fa ComfyUI

ComfyUI può avviare il training, ma non è il backend.

kohya-ss/sd-scripts è il backend

Il calcolo è svolto da kohya-ss/sd-scripts, molto usato per i LoRA Stable Diffusion. Kohya GUI e i nodi ComfyUI incapsulano questi script o implementazioni affini.

FluxTrainer e Lora-Training-in-Comfy sono wrapper:

  • FluxTrainer di Kijai integra codice sd-scripts modificato per FLUX e workflow correlati.
  • Lora-Training-in-Comfy offre un’altra interfaccia ComfyUI per training basato su kohya.

I valori predefiniti non sono ottimali universali. Consulta README corrente e documentazione upstream.

Confrontare i percorsi di training

PercorsoVantaggiLimitiPer chi
GUI kohya-ssInterfaccia completa e molti tutorialInstallazione separata e schermata complessaChi vuole controllo totale
Nodi ComfyUI come FluxTrainerTraining nello stesso workflowParti sperimentali e default non garantitiUtenti ComfyUI
Script kohya-ss nel terminaleFunzioni recenti e controllo completoBarriera tecnica maggioreUtenti esperti

Dove verificare i parametri attuali

Non affidarti solo agli screenshot. Parti dalla documentazione aggiornata di kohya-ss/sd-scripts:

  • Le guide descrivono le opzioni per SD1.5, SDXL e FLUX.1.
  • Issues e Discussions raccolgono esperienze specifiche, come network alpha.

Learning rate, dim/alpha e step variano con modello e dataset. Non esiste una configurazione universale.


Ricette iniziali per obiettivo

Sono punti di partenza riproducibili. Regolali con epoch salvate e sintomi.

Relazione tra network dim e alpha

network dim o rank definisce la capacità delle matrici LoRA. Un dim maggiore apprende più dettagli, ma aumenta memoria e tempo.

network alpha scala i pesi appresi. Se alpha è inferiore a dim, l’effetto è attenuato rispetto al learning rate configurato.

Scala semplificata: alpha / dim

Esempi:

  • alpha=16, dim=32 → 16/32=0.5
  • alpha=32, dim=32 → 1
  • alpha=1, dim=32 → 1/32≈0.03

Copiare dim=32 e alpha=1 senza considerare learning rate e step può produrre un risultato debole.

Partenza:

  • Prova alpha=dim senza attenuazione o alpha=dim/2 con attenuazione moderata.
  • Con alpha<dim, confronta learning rate e step insieme.

Learning rate, step ed epoch

ParametroPersonaggioStileNota
U-Net LR4e-41e-4Partenza da regolare secondo sintomi e alpha
Text encoder LR5e-5 o 1e-55e-5 o menoIn genere inferiore a U-Net
Step1000–20002000–3000Derivare dalle epoch e fermare prima se necessario
Epoch10–2020–30Un dataset piccolo può richiederne meno

Uno step è un aggiornamento dell’optimizer, una epoch attraversa il dataset. Repeats, batch size, gradient accumulation e distribuzione modificano il rapporto; usa il contatore del trainer.

Scegliere il modello base

La base di training determina la compatibilità.

ModelloRisoluzioneModelli compatibiliVRAM iniziale
SD1.5512×512SD1.5 e derivati compatibiliCirca 8 GB con fp16 e checkpointing
SDXL1024×1024SDXL e derivati compatibiliCirca 12 GB con fp16 e checkpointing
FLUX.11024×1024 o piùFamiglia FLUX.1 corrispondenteSpesso molto più alta senza ottimizzazione

Il supporto FLUX.1 e le opzioni di memoria cambiano. Segui la documentazione invece di fidarti di un numero fisso.

Tabella iniziale

ObiettivodimalphaU-Net LRText encoder LRStep/epochModello
Personaggio SD1.532 o 12832 o 1; compensare se basso4e-45e-51000–2000 / 10–20SD1.5
Personaggio SDXL1281 o 1284e-45e-51500–2500 / 10–20SDXL
Stile SD1.5128 o 256128 o 11e-45e-5 o meno2000–3000 / 20–30SD1.5

Regola questi punti con i controlli successivi.


Riconoscere e correggere overfitting e underfitting

Una configurazione errata può distruggere i dettagli o apprendere pochissimo.

Sintomi di overfitting

Aspetto:

  • I dettagli si fondono, sfocano o deformano.
  • Sfondi e angoli nuovi falliscono perché riconosce solo le scene di training.
  • Rumore e watermark del dataset riappaiono.

Trigger:

  • Anche weight=0.3 copia i dati e non è controllabile.
  • I tratti compaiono senza trigger e sono troppo legati.

Sintomi di underfitting

Aspetto:

  • La somiglianza è bassa e mancano dettagli chiave.
  • Il trigger risponde poco o per nulla.

Test dello sfondo:

  • I tratti restano deboli in ogni scena; il concetto principale non è stato appreso.

Tabella di confronto

SintomoOverfittingUnderfittingCorrezione
DettagliDeformati o copiatiSomiglianza deboleOver: ridurre LR/step; under: aumentare LR/migliorare dati
SfondoFallisce cambiando scenaObiettivo sempre deboleOver: controllare tag di sfondo; under: controllare trigger
TriggerTroppo forteDebole o assenteOver: ridurre LR/dim alto; under: rivedere LR, dati, dim
WeightCopia a 0.3Appare appena a 1.0Over: epoch precedente; under: continuare con cautela o migliorare dati

Ordine delle correzioni

Overfitting:

  1. Riduci chiaramente il learning rate, per esempio del 50% in un test.
  2. Riduci gli step o scegli una epoch precedente.
  3. Controlla sfondi e tratti secondari nelle caption.
  4. Riduci un dim inutilmente alto.

Underfitting:

  1. Aumenta il learning rate in modo controllato.
  2. Aggiungi o migliora i dati.
  3. Conferma il trigger in ogni caption.
  4. Aumenta dim se manca capacità.

VRAM e percorsi a memoria ridotta per RTX 3060

Poca VRAM non impedisce sempre il training, ma impone compromessi su risoluzione, modello, velocità e ottimizzazione.

Minimi approssimativi

ModelloBase fp16 con checkpointingCon risparmio aggiuntivoOpzioni
SD1.5Circa 8 GBCirca 6 GB in setup limitatidim basso, checkpointing, optimizer e precision
SDXLCirca 12 GBVicino a 10 GB in alcuni casidim basso, checkpointing, risparmio per blocchi
FLUX.1Spesso circa 24 GB senza risparmioVicino a 10 GB con forte ottimizzazioneblock swapping, checkpointing, dim basso, quantizzazione

L’esempio da 24 a 10 GB proviene da una guida esterna del 2025. L’uso reale dipende da trainer, modello, optimizer, cache, dataset e GPU.

Tecniche di risparmio

Fused o memory-efficient backward riduce il picco secondo l’implementazione.

Gradient checkpointing ricalcola le attivazioni e scambia velocità con memoria.

dim basso riduce i parametri LoRA e in genere la VRAM.

Mixed precision e quantizzazione: fp16 o bf16 sono comuni; alcuni trainer supportano FP8 o componenti quantizzati con compromessi.

Tabella per poca VRAM

VRAMObiettivo realisticoCompromessoPercorso
6 GBPersonaggio SD1.5dim basso, checkpointing, lentoSD1.5 con batch piccolo
8 GBPersonaggio o stile SD1.5dim basso e checkpointingOpzioni mature di SD1.5
10 GBAlcuni setup SDXLRisparmio aggressivoRicetta low-memory documentata
12 GB+Più SDXL, FLUX.1 sperimentalePuò servire ancora risparmioPrima SDXL; FLUX.1 dipende dal setup

Con VRAM limitata, inizia da SD1.5. Richiede meno e dispone di tecniche più mature.


Validare il LoRA finito in ComfyUI

Un’immagine non basta. Verifica trigger, dettagli, cambio di sfondo e intervallo di weight.

Caricare il LoRA

Carica il .safetensors con Load LoRA:

  • Nodo: Load LoRA incluso in ComfyUI
  • Parametri: file e strength di model e clip; inizia vicino a 0.5

Creare un prompt di test

Includi trigger e attributi:

  • Trigger word: token appreso, come sks charname, vicino all’inizio.
  • Attributi: capelli, colori e abbigliamento importanti.
  • Scena: usa “in a forest” o “at night” nel test dello sfondo.

Esempio:

sks charname, blonde hair, blue eyes, white dress, simple background

Test dello sfondo:

sks charname, blonde hair, blue eyes, white dress, in a forest, at sunset

Scorrere l’intervallo di weight

Confronta a condizioni identiche:

  • weight=0.3: effetto leggero e controllabile.
  • weight=0.5: obiettivo riconoscibile.
  • weight=1.0: forza piena senza deformazione o perdita di controllo.

Se 0.3 resta legato ai dati, sospetta overfitting. Se 1.0 somiglia appena, verifica underfitting, trigger e compatibilità.

Checklist di accettazione

ControlloRisultatoSe fallisce
TriggerChiaro a 0.5 e controllabile a 0.3Assente: caption/trigger; forte: ridurre LR o usare epoch precedente
DettagliCapelli, colori e abiti nitidiDeformati: overfitting; deboli: underfitting
Cambio sfondoSoggetto riconoscibile in una scena nuovaControllare caption di sfondo e varietà
WeightTratti graduali tra 0.3 e 1.0Rivedere forza ed epoch

Passaggi successivi e letture

Per caricamento, weight, stacking e trigger, continua con Usare i LoRA in ComfyUI: pesi, stacking e coerenza del personaggio.

Il rapporto tra base, compatibilità e shape mismatch è spiegato in Scegliere i modelli Stable Diffusion: compatibilità tra base e LoRA.

Per test ripetibili, usa Template di prompt Stable Diffusion per validare un LoRA.

Alternative senza nuovo training:

  • FLUX.1 Kontext può mantenere un personaggio senza LoRA quando i dati sono pochi o il training non conviene.
  • InstantID e IPAdapter FaceID controllano il volto con un’immagine di riferimento invece di addestrare un LoRA.

Come addestrare e validare il proprio LoRA

Scegli obiettivo e modello base, prepara immagini e caption, addestra con valori controllati e verifica trigger, dettagli e generalizzazione dello sfondo in ComfyUI.

⏱️ Estimated time: 4 hr

  1. 1

    Step 1: Scegliere obiettivo e modello base

    Decidi se addestrare un personaggio, uno stile o un oggetto e scegli SD1.5, SDXL o FLUX.1; la base determina la compatibilità.
  2. 2

    Step 2: Selezionare e uniformare il dataset

    Conserva immagini nitide con soggetto chiaro, angoli e sfondi vari, poi ritagliale a una risoluzione coerente.
  3. 3

    Step 3: Generare e rivedere le caption

    Usa lo strumento adatto e controlla parole di sfondo frequenti, attributi essenziali e trigger in ogni file.
  4. 4

    Step 4: Impostare i parametri iniziali

    Scegli dim, alpha, learning rate e step o epoch secondo l’obiettivo; usa le tabelle come partenza riproducibile, non come risposta universale.
  5. 5

    Step 5: Salvare le epoch intermedie

    Salva i pesi a intervalli fissi per selezionare il punto che generalizza senza overfitting.
  6. 6

    Step 6: Validare a condizioni fisse

    Mantieni prompt, seed, sampler e dimensioni e confronta weight 0.3, 0.5 e 1.0 su più sfondi.
  7. 7

    Step 7: Correggere in base ai sintomi

    Con overfitting riduci learning rate o step e controlla i tag di sfondo; con underfitting verifica trigger, dati, learning rate e dim.

FAQ

Quante immagini servono per addestrare un LoRA?
Un personaggio parte spesso da 15–30 immagini; circa 10 immagini eccellenti possono bastare. Uno stile usa spesso 50–100 immagini e un oggetto 15–30. Privilegia qualità e varietà.
Come impostare network dim e alpha?
dim controlla la capacità e alpha scala i pesi. alpha=dim o alpha=dim/2 sono partenze comuni. Con alpha più basso, regola insieme learning rate, step e validazione.
Quale learning rate usare per un LoRA?
Un personaggio può iniziare vicino a 4e-4 per U-Net, uno stile vicino a 1e-4; il text encoder è di solito più basso. Regola con epoch salvate e sintomi.
Come addestrare con poca VRAM?
Preferisci SD1.5, dim basso, mixed precision e gradient checkpointing. SDXL e FLUX.1 possono usare block swapping o quantizzazione se supportati, accettando compromessi.
Si può addestrare un LoRA direttamente in ComfyUI?
Sì, per esempio con ComfyUI-FluxTrainer. Questi nodi incapsulano script e alcuni restano sperimentali; consulta la documentazione corrente e kohya-ss/sd-scripts.
Che differenza c’è tra training LoRA SDXL e FLUX.1?
Cambiano architettura, text encoder, script, VRAM e parametri. Usa il LoRA con la famiglia del modello impiegata nel training.

10 min di lettura · Pubblicato il: 28 ago 2026 · Aggiornato il: 28 ago 2026

Commenti

Accedi con GitHub per lasciare un commento

Easton BlogEaston Blog