AI Toolkit CUDA Out of Memory: risolvere OOM durante caricamento modello, addestramento e campionamento
Se il tuo job AI Toolkit fallisce con CUDA out of memory, OOM during training step 3 times in a row o 0 bytes is free, non continuare a rilanciare lo stesso job senza modifiche.
Nella pratica, la maggior parte degli errori OOM in AI Toolkit proviene da uno di questi quattro punti:
- caricamento del modello (prima che l'addestramento reale inizi)
- i primi passi di addestramento
- campionamento dell'anteprima / generazione del sample di riferimento
- picchi specifici del video dovuti a troppi frame, bucket troppo grandi, o entrambi
Questa guida è il percorso rapido di recupero: identifica quale OOM hai, cambia le impostazioni giuste in RunComfy AI Toolkit e arriva più velocemente a un retry riuscito.
Checklist rapida (inizia qui)
- ✅ In Training, riduci il Batch Size
- ✅ In Datasets, disattiva il bucket di risoluzione più alto per primo
- ✅ In Sample, riduci Width / Height / Sample Steps o attiva temporaneamente Disable Sampling
- ✅ Clicca su Show Advanced e assicurati che
gradient_checkpointing: true - ✅ Per i modelli video, riduci Num Frames prima di toccare il learning rate
- ✅ Se l'errore si verifica anche con una config molto conservativa, trattalo come un possibile problema di stato del worker / GPU, non solo di configurazione
1) Confermare che è lo stesso problema
Sei nel posto giusto se i tuoi log includono messaggi come:
CUDA out of memory
torch.OutOfMemoryError
OOM during training step 3 times in a row
Tried to allocate ...
0 bytes is free
CUBLAS_STATUS_ALLOC_FAILED
Situazioni comuni:
- il job fallisce prima dello step 1
- il job raggiunge lo step 2–10 poi va ripetutamente in OOM
- l'addestramento sembra ok, ma il crash avviene generando i sample
- la stessa config a volte funziona, a volte no
2) Prima di tutto: che tipo di OOM è?
A. OOM durante il caricamento del modello o prima dell'addestramento
Di solito significa una di queste cose:
- il modello è troppo pesante per il setup attuale di risparmio memoria
- la generazione del sample di riferimento / anteprima è già troppo costosa
- il worker / GPU è in cattivo stato e non parte con memoria pulita
Segni tipici:
- fallimento prima che inizino passi di addestramento significativi
- l'errore si verifica subito dopo il caricamento del modello o durante il primo sample
- i log mostrano quasi niente VRAM libera o un errore di allocazione CUBLAS
B. OOM nei primi passi di addestramento
È il caso più comune legato alla configurazione.
Cause tipiche:
gradient_checkpointingè disattivato- Batch Size troppo alto
- il bucket più grande del dataset è troppo ambizioso
- per il video, Num Frames è il vero picco di memoria
C. OOM durante il campionamento / generazione dell'anteprima
È una trappola molto comune.
La tua config di addestramento potrebbe essere quasi ok, ma l'anteprima è troppo costosa:
- Sample Width / Height troppo grandi
- Sample Steps troppo alti
- Sample Every troppo frequente
- il video di anteprima usa troppi frame
D. OOM solo a volte
Di solito è una config al limite, non un mistero.
Esempi:
- il run sopravvive ai bucket piccoli, poi crasha con il bucket più grande
- i run video falliscono solo con i clip più pesanti
- il core dell'addestramento ci sta, ma la generazione dei sample lo fa sforare
3) Fix più rapidi in RunComfy AI Toolkit
Fix A — Riattivare gradient checkpointing
È la prima cosa da controllare per OOM di modelli di immagini.
Dove cambiarlo
- Apri il job fallito
- Clicca su Show Advanced
- Sotto
train:, assicurati che:
gradient_checkpointing: true
In caso di dubbio, lascialo attivato.
Fix B — Abbassare Batch Size, usare Gradient Accumulation per stabilità
Dove cambiarlo
- Apri l'editor del job
- Nel pannello Training:
- riduci il Batch Size
- mantieni o aumenta Gradient Accumulation se vuoi un batch effettivo leggermente più grande senza aumentare il picco VRAM
Regola di retry sicuro
- Modelli di immagini: in caso di OOM, scendi a Batch Size = 1 per primo
- Modelli video: considera Batch Size = 1 come default a meno che la config non si sia già dimostrata stabile
Non trattare il learning rate come la prima leva di memoria. Di solito non lo è.
Fix C — Rimuovere prima il bucket di dataset più alto
Dove cambiarlo
- Vai al pannello Datasets
- Sotto Resolutions, disattiva il bucket più alto per primo
Ordine di rollback sicuro
- 1024 / 1536 → rimuovere per primo
- mantenere 512 / 768 mentre verifichi la stabilità
- una volta stabile, riaggiungi i bucket più grandi uno alla volta
È uno dei modi più rapidi per trasformare un run al limite in uno riproducibile.
Fix D — Rendere economico il campionamento dell'anteprima o disattivarlo temporaneamente
Se il crash avviene prima che l'addestramento inizi davvero, o ogni volta che il campionamento si avvia, correggi prima l'anteprima.
Dove cambiarlo
- Apri il pannello Sample
Poi fai una o più di queste cose:
- riduci Width
- riduci Height
- riduci Sample Steps
- aumenta Sample Every
- attiva Disable Sampling per un run di validazione
Buon primo retry
Se l'obiettivo è "provare che il job può addestrare", un run temporaneo senza campionamento va bene.
Una volta stabile, riattiva le anteprime con impostazioni più piccole.
Fix E — Modelli video: ridurre Num Frames prima di tutto
Per i modelli video, i frame sono di solito la leva di memoria più grande.
Dove cambiarlo
- Pannello Datasets → Num Frames
- Pannello Sample → Num Frames
Se stai addestrando video e vedi OOM, riduci i frame per primo, poi il batch size, poi la risoluzione.
Non iniziare cambiando optimizer o LR.
Fix F — Usare il percorso a bassa memoria del modello
Alcune architetture sono progettate per essere addestrate con impostazioni di risparmio memoria quando la VRAM è limitata.
Dove cambiarlo
- Clicca su Show Advanced
- Sotto
model:, cerca:
low_vram: true
Per alcuni modelli, il percorso corretto include anche quantizzazione o gestione del text-encoder specifica. Segui la guida del modello invece di indovinare.
4) Diagnosi rapida per momento del crash
| Quando crasha | Causa più probabile | Primo cambiamento |
|---|---|---|
| Prima dello step 1 / durante il sample iniziale | anteprima troppo pesante, pressione al caricamento o worker sporco | disattivare campionamento o ridurre anteprima |
| Step 1–10 | GC disattivato, batch troppo alto, bucket troppo grande | attivare GC, batch a 1, rimuovere bucket più grande |
| Solo al campionamento | impostazioni anteprima troppo costose | abbassare Width/Height/Sample Steps o disattivare campionamento |
| A volte sì, a volte no | config al limite | ridurre bucket / frame più grande e stabilizzare |
| Config conservativa fallisce istantaneamente | possibile problema stato GPU / worker | ricreare su un worker fresco o contattare il supporto |
5) Come distinguere OOM di config da problemi di ambiente / stato GPU
Trattalo come non solo un problema di config quando tutto questo è vero:
- Batch Size = 1
gradient_checkpointing: true- risoluzione / frame conservativi
- il job fallisce comunque prima che l'addestramento inizi in modo significativo
- i log mostrano
0 bytes is freeo errore di allocazione CUBLAS
In quella situazione:
- smettere di ripetere lo stesso retry
- creare un nuovo tentativo su un worker fresco se possibile
- se la stessa config conservativa funzionava prima e ora fallisce istantaneamente, escalare al supporto
Questo è importante perché i retry ripetuti possono sprecare sia tempo che budget GPU.
6) L'ordine di rollback più sicuro
Per modelli di immagini
gradient_checkpointing: true- Batch Size → 1
- rimuovere il bucket di risoluzione più grande
- ridurre o disattivare Sample
- attivare low_vram o il percorso a bassa memoria del modello
Per modelli video
- ridurre Num Frames
- Batch Size → 1
- rimuovere il bucket di risoluzione più grande
- ridurre o disattivare Sample
- attivare low_vram o offloading / quantizzazione specifica del modello
7) Dopo il primo retry riuscito
Una volta ottenuto un run stabile:
- riaggiungi solo un parametro più pesante alla volta
- annota cosa hai cambiato
- non reintrodurre più impostazioni ad alto rischio insieme
Buon ordine per scalare:
- mantenere le stesse impostazioni di memoria stabili
- aumentare gli Steps
- riattivare un bucket più grande
- riattivare un campionamento più ricco
- solo allora testare batch più grande o video più lungo
Riepilogo in una riga
Se AI Toolkit dà OOM, smetti di provare a caso.
Attiva gradient_checkpointing, abbassa il Batch Size, rimuovi il bucket di risoluzione più grande e rendi il campionamento dell'anteprima più economico prima di riprovare.
Guide correlate
Pronto per iniziare l'addestramento?
