Fix: “DataLoader worker is killed by signal: Bus error” (memoria condivisa /dev/shm) — LoRA LTX-2 in AI Toolkit
Se il tuo training LoRA LTX-2 va in crash con un Bus error, quasi sempre è pressione sulla memoria condivisa (/dev/shm): i worker del DataLoader di PyTorch + il prefetching tengono in memoria grandi batch video (molti frame) contemporaneamente.
Checklist di fix rapidi (parti da qui)
- ✅ Applica Fix A: abbassa
num_workerseprefetch_factornella configurazione del dataset - ✅ Se fai self-hosting in Docker: applica Fix B e aumenta
/dev/shmcon--shm-size - ✅ Rilancia il training e verifica che il log non mostri più “out of shared memory” / “Bus error”
- ✅ Se stai addestrando 121 frame, preparati a gestire anche GPU OOM (vedi note sotto)
1) Conferma che sia lo stesso problema
Sei nel posto giusto se i log includono qualcosa del genere:
DataLoader worker (pid XXX) is killed by signal: Bus error
It is possible that dataloader's workers are out of shared memory
Please try to raise your shared memory limit
Parole chiave comuni:
- Bus error
- out of shared memory
- menzioni di DataLoader worker, shared memory limit, /dev/shm
2) Cosa sta succedendo
- Il training LTX-2 usa batch video (molti frame per sample).
- Con più worker del DataLoader + prefetching, AI Toolkit può accodare più batch grandi in
/dev/shm. - Quando
/dev/shmè troppo piccolo, un processo worker crasha → Bus error → il training si ferma.
RunComfy offre già una shared memory aumentata, ma alcuni dataset/impostazioni (soprattutto num_frames alto come 121) possono comunque superarla.
3) Fix
Tip: cambia una variabile alla volta. Parti da Fix A — risolve questo problema nella maggior parte dei casi.
Fix A (consigliato): riduci worker + prefetch del DataLoader
Questo riduce la pressione sulla memoria condivisa senza cambiare i dati di training.
Dove modificarlo (UI RunComfy):
- Apri Your Training Job Panel
- Clicca Show Advanced (in alto a destra)
- Nel config YAML, trova l’item del dataset sotto
datasets:(il blocco che contiene il tuofolder_path) - Aggiungi/regola queste chiavi dentro quell’item del dataset
Prova prima questo (di solito basta):
num_workers: 1
prefetch_factor: 1
Se crasha ancora (più stabile, ma più lento):
num_workers: 0
prefetch_factor: null
⚠️ Importante:
- Se imposti
num_workers: 0, impostaprefetch_factor: null(esattamentenull). - Ridurre worker/prefetch impatta il throughput, non la qualità. Cambia solo come vengono caricati i dati.
Fix B (self-hosted / Docker): aumenta /dev/shm
Se esegui AI Toolkit in Docker in autonomia, aumenta la memoria condivisa del container:
docker run --shm-size=32g ...
or safer:
docker run --shm-size=64g ...
Puoi comunque applicare anche Fix A per maggiore stabilità.
Fix C (se colpisci ancora i limiti): riduci la memoria per sample
Se il dataset è estremamente pesante, riduci anche una o più di queste cose:
num_framesresolutionbatch_size
4) Verifica il fix
Un fix riuscito si riconosce così:
- Il training supera la fase del DataLoader e continua ad avanzare con gli step.
- Il log di crash non ripete più “out of shared memory” / “Bus error”.
Se fai self-hosting, assicurati anche che /dev/shm sia davvero grande dentro il container.
Note (problema comune successivo: GPU OOM)
- 121 frame sono pesanti. Dopo aver sistemato
/dev/shm, potresti comunque incontrare GPU OOM. - Consigliato: H200 per training a 121 frame.
- Altrimenti riduci batch_size / resolution / num_frames.
Esempio copia-incolla (blocco dataset)
datasets:
- folder_path: /app/ai-toolkit/datasets/your_dataset
num_frames: 121
resolution: [512, 768]
caption_ext: "txt"
# Fix shared memory Bus error (start here):
num_workers: 1
prefetch_factor: 1
# If still crashing, use this instead (slowest but most stable):
# num_workers: 0
# prefetch_factor: null
FAQ
Vuol dire che il mio dataset è rotto?
Di solito no. È un limite di memoria condivisa del DataLoader, non un dataset “cattivo”.
Perché prefetch_factor: null è richiesto quando num_workers: 0?
Senza worker, il prefetching non viene usato. Impostarlo a null evita un comportamento di prefetch invalido/inutilizzato nel config.
Dovrei fare solo Fix B (aumentare /dev/shm)?
Se sei su RunComfy, parti da Fix A. Se fai self-hosting in Docker, Fix B è spesso necessario — e Fix A aiuta comunque.
Ho risolto il Bus error, ma ora ho GPU OOM. E adesso?
Abbassa batch_size, resolution o num_frames, oppure usa una GPU più grande (H200 consigliata per 121 frame).
Ready to start training?
