AI Toolkit LoRA-Training Guides

Fix: DataLoader Bus error (/dev/shm) — LTX-2 LoRA in AI Toolkit

Troubleshooting‑Guide zu /dev/shm: warum DataLoader‑Worker crashen und wie du das Training stabil bekommst (weniger Workers/Prefetch, mehr shm-size, ggf. weniger Frames/Resolution).

Diffusionsmodelle mit Ostris AI Toolkit trainieren

Fix: „DataLoader worker is killed by signal: Bus error“ (Shared Memory /dev/shm) — LTX-2 LoRA in AI Toolkit

Wenn Ihr LTX-2 LoRA-Training mit einem Bus error abstürzt, liegt es fast immer an Druck im Shared Memory (/dev/shm): PyTorch-DataLoader-Worker + Prefetching halten große Video-Batches (viele Frames) gleichzeitig im Speicher.


Quick-Fix-Checkliste (hier starten)

  • ✅ Wenden Sie Fix A an: num_workers und prefetch_factor in Ihrer Dataset-Config reduzieren
  • ✅ Wenn Sie in Docker selbst hosten: Fix B anwenden und /dev/shm mit --shm-size erhöhen
  • ✅ Training erneut starten und prüfen, dass im Log kein „out of shared memory“ / „Bus error“ mehr erscheint
  • ✅ Wenn Sie 121 Frames trainieren, müssen Sie ggf. zusätzlich GPU OOM lösen (siehe Hinweise unten)

1) Prüfen, ob es wirklich dieses Problem ist

Sie sind hier richtig, wenn Ihr Log etwas in dieser Art enthält:

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

Häufige Schlüsselwörter:

  • Bus error
  • out of shared memory
  • Erwähnungen von DataLoader worker, shared memory limit, /dev/shm

2) Was hier passiert

  • LTX-2 Training verwendet Video-Batches (viele Frames pro Sample).
  • Mit mehreren DataLoader-Workern + Prefetching kann AI Toolkit mehrere große Batches in /dev/shm puffern.
  • Wenn /dev/shm zu klein ist, stürzt ein Worker-Prozess ab → Bus error → Training stoppt.

RunComfy stellt zwar bereits mehr Shared Memory bereit, aber manche Datasets/Settings (insbesondere hohe num_frames wie 121) können es trotzdem sprengen.


3) Fixes

Tipp: Ändern Sie immer nur eine Variable. Starten Sie mit Fix A — das löst es in den meisten Fällen.

Fix A (empfohlen): DataLoader-Worker + Prefetch reduzieren

Das senkt den Shared-Memory-Druck, ohne Ihre Trainingsdaten zu verändern.

Wo ändern (RunComfy UI):

  1. Öffnen Sie Your Training Job Panel
  2. Klicken Sie Show Advanced (oben rechts)
  3. Suchen Sie in der YAML-Config unter datasets: den Dataset-Eintrag (der Block mit folder_path)
  4. Ergänzen/ändern Sie diese Keys innerhalb dieses Dataset-Blocks

Zuerst das probieren (meistens ausreichend):

num_workers: 1

prefetch_factor: 1

Wenn es weiterhin crasht (am stabilsten, aber langsamer):

num_workers: 0

prefetch_factor: null

⚠️ Wichtig:

  • Wenn Sie num_workers: 0 setzen, setzen Sie prefetch_factor: null (genau null).
  • Weniger Worker/Prefetch beeinflusst Durchsatz, nicht Qualität. Es ändert nur, wie Daten geladen werden.

Fix B (Self-hosted / Docker): /dev/shm erhöhen

Wenn Sie AI Toolkit selbst in Docker ausführen, erhöhen Sie das Shared Memory des Containers:

docker run --shm-size=32g ...

or safer:

docker run --shm-size=64g ...

Für Stabilität können Sie zusätzlich Fix A anwenden.


Fix C (falls Sie weiterhin Limits treffen): Speicher pro Sample reduzieren

Wenn Ihr Dataset extrem schwer ist, reduzieren Sie zusätzlich eine oder mehrere dieser Einstellungen:

  • num_frames
  • resolution
  • batch_size

4) Fix verifizieren

Ein erfolgreicher Fix sieht so aus:

  • Training läuft über die DataLoader-Phase hinaus und macht weitere Steps.
  • Das Crash-Log wiederholt nicht mehr „out of shared memory“ / „Bus error“.

Wenn Sie selbst hosten, stellen Sie außerdem sicher, dass /dev/shm im Container wirklich groß ist.


Hinweise (häufiges Folgeproblem: GPU OOM)

  • 121 Frames sind schwer. Nach dem Fix von /dev/shm können Sie trotzdem GPU OOM bekommen.
    • Empfehlung: H200 für 121-Frame-Training.
    • Andernfalls reduzieren Sie batch_size / resolution / num_frames.

Copy-paste Beispiel (Dataset-Block)

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

Bedeutet das, dass mein Dataset kaputt ist?

Meistens nicht. Das ist ein Shared-Memory-Limit des DataLoaders, kein „bad dataset“.

Warum ist prefetch_factor: null nötig, wenn num_workers: 0?

Ohne Worker wird Prefetching nicht genutzt. null vermeidet ungültiges/ungenutztes Prefetch-Verhalten in der Config.

Sollte ich nur Fix B machen (also /dev/shm erhöhen)?

Wenn Sie auf RunComfy sind, starten Sie mit Fix A. Wenn Sie in Docker selbst hosten, ist Fix B oft nötig — Fix A hilft trotzdem.

Ich habe den Bus error behoben, aber jetzt bekomme ich GPU OOM. Was nun?

Senken Sie batch_size, resolution oder num_frames, oder nutzen Sie eine größere GPU (H200 empfohlen für 121 Frames).

Bereit zum Starten des Trainings?