42.uk Research Forschung

ComfyUI: Installieren, Verwenden & Optimieren von Stable Diffusion

1.759 Wörter 9 Min. Lesezeit SS 92

Eine umfassende Anleitung zur Installation, Nutzung und Optimierung von ComfyUI für Stable Diffusion. Workflows meistern, Fehler beheben...

Promptus UI

ComfyUI: Installieren, Verwenden & Optimieren von Stable Diffusion

Das lokale Ausführen von Stable Diffusion bietet eine unvergleichliche Kontrolle, aber die anfängliche Einrichtung kann entmutigend sein. ComfyUI, eine knotenbasierte Schnittstelle, bietet diese Kontrolle, erfordert aber einen anderen Ansatz als Standard-Benutzeroberflächen. Diese Anleitung führt Sie durch die Installation, die grundlegende Nutzung und fortgeschrittene Optimierungstechniken, um das Beste aus Ihrer Hardware herauszuholen. Geringer VRAM-Speicher ist ein anhaltendes Problem, und wir werden dies direkt angehen.

Installation von ComfyUI

Die Installation von ComfyUI umfasst das Herunterladen der Software, das Extrahieren der Dateien und die Installation aller notwendigen Abhängigkeiten. Dieser Prozess variiert geringfügig je nach Betriebssystem und Hardware.

Besuchen Sie zunächst das ComfyUI GitHub-Repository [https://github.com/comfyanonymous/ComfyUI]. Laden Sie die entsprechende Version für Ihr Betriebssystem herunter. Für Windows ist in der Regel ein direkter Download verfügbar. Für Linux werden Sie das Repository wahrscheinlich klonen.

Goldene Regel: Wenn Sie eine NVIDIA-GPU haben, laden Sie die Version herunter, die CUDA-Unterstützung beinhaltet. Wenn Sie AMD verwenden, suchen Sie nach der DirectML-Version.

Extrahieren Sie das heruntergeladene Archiv an einen Speicherort Ihrer Wahl. Navigieren Sie dann in den extrahierten Ordner.

Führen Sie unter Windows die Datei run_nvidia_gpu.bat (oder die entsprechende .bat-Datei für Ihre GPU) aus. Dadurch werden automatisch die notwendigen Abhängigkeiten heruntergeladen, einschließlich PyTorch und anderer erforderlicher Bibliotheken. Bitte haben Sie Geduld; dies kann einige Zeit dauern.

Unter Linux müssen Sie möglicherweise eine Conda-Umgebung erstellen und die Abhängigkeiten manuell mit pip installieren. Detaillierte Anweisungen finden Sie auf der ComfyUI GitHub-Seite.

Technische Analyse

Der Installationsprozess richtet im Wesentlichen eine Python-Umgebung mit allen Bibliotheken ein, die ComfyUI zum Ausführen benötigt. Die .bat-Dateien sind praktische Verknüpfungen, die diesen Prozess unter Windows automatisieren. Unter Linux bietet die manuelle Einrichtung mehr Kontrolle, erfordert aber Vertrautheit mit Python-Umgebungen.

Verwendung von ComfyUI: Ein knotenbasierter Ansatz

ComfyUI verwendet ein knotenbasiertes Workflow-System. Jeder Knoten stellt eine bestimmte Operation dar, z. B. das Laden eines Modells, das Codieren einer Eingabeaufforderung oder das Sampling eines Bildes. Das Verbinden dieser Knoten erstellt eine visuelle Pipeline für die Bilderzeugung.

Anstatt Eingabeaufforderungen einzugeben und auf "Generieren" zu klicken, erstellen Sie einen Graphen aus miteinander verbundenen Knoten. Ein grundlegender Workflow umfasst in der Regel:

  1. Checkpoint laden: Lädt ein Stable Diffusion-Modell (z. B. SDXL, 1.5).
  2. CLIP-Texteingabe (Prompt) laden: Codiert Ihre positive Eingabeaufforderung in eine numerische Darstellung.
  3. CLIP-Texteingabe (Negative Prompt) laden: Codiert Ihre negative Eingabeaufforderung.
  4. Leeres latentes Bild: Erstellt einen leeren latenten Raum für das Bild.
  5. KSampler: Der Kern-Sampling-Knoten, der das Bild iterativ basierend auf der Eingabeaufforderung, dem Modell und dem Scheduler verfeinert.
  6. VAE-Dekodierung: Dekodiert das latente Bild in eine anzeigbare Pixel-Darstellung.
  7. Bild speichern: Speichert das generierte Bild auf Ihrer Festplatte.

Um diesen Workflow zu erstellen, klicken Sie mit der rechten Maustaste auf die ComfyUI-Oberfläche und wählen Sie "Knoten hinzufügen". Suchen Sie nach dem gewünschten Knoten und klicken Sie, um ihn dem Graphen hinzuzufügen. Verbinden Sie die Knoten, indem Sie von der Ausgabe eines Knotens zur Eingabe eines anderen ziehen.

!Abbildung: Ein grundlegender ComfyUI-Workflow mit den oben aufgeführten Knoten bei 0:30

Abbildung: Ein grundlegender ComfyUI-Workflow mit den oben aufgeführten Knoten bei 0:30 (Quelle: Video)*

Technische Analyse

Der knotenbasierte Ansatz bietet eine unglaubliche Flexibilität. Sie können verschiedene Komponenten des Bilderzeugungsprozesses einfach ändern und damit experimentieren. Es erfordert jedoch auch ein tieferes Verständnis der Funktionsweise von Stable Diffusion unter der Haube.

Optimieren von ComfyUI für geringen VRAM

Das Ausführen von Stable Diffusion, insbesondere mit SDXL, kann schnell den VRAM-Speicher erschöpfen, insbesondere auf Karten mit 8 GB oder weniger. Mehrere Techniken können dieses Problem beheben, indem sie Geschwindigkeit gegen Speichereffizienz eintauschen.

Geringer VRAM ist ein häufiger Engpass. So beheben Sie das Problem:

  1. Gekachelte VAE-Dekodierung: Diese Technik dekodiert das latente Bild in kleineren Kacheln, wodurch die VRAM-Nutzung während der Dekodierungsphase erheblich reduziert wird. Community-Tests auf X zeigen, dass eine gekachelte Überlappung von 64 Pixeln Nähte reduziert. Installieren Sie zum Aktivieren den entsprechenden benutzerdefinierten Knoten und konfigurieren Sie den VAE-Dekodierungsknoten.
  2. Sage-Aufmerksamkeit: Dieser speichereffiziente Aufmerksamkeitsmechanismus ersetzt den Standard-Aufmerksamkeitsmechanismus im KSampler. Obwohl es VRAM spart, können bei hohen CFG-Werten subtile Texturartefakte auftreten.
  3. Block-/Layer-Swapping: Lagern Sie Modellschichten während des Samplings auf die CPU aus. Auf diese Weise können Sie größere Modelle auf Karten mit begrenztem VRAM ausführen. Experimentieren Sie damit, die ersten 3 Transformer-Blöcke auf die CPU auszulagern, während der Rest auf der GPU verbleibt.
  4. Verwenden Sie kleinere Modelle: SD 1.5-Modelle benötigen im Allgemeinen weniger VRAM als SDXL-Modelle.
  5. Batch-Größe reduzieren: Reduzieren Sie die batch_size im Empty Latent Image-Knoten auf 1.
  6. Niedrigere Auflösung: Generieren Sie Bilder mit einer niedrigeren Auflösung (z. B. 512 x 512) und skalieren Sie sie später hoch.

Meine Labor-Testergebnisse

Test A (SDXL, 1024x1024, Standardeinstellungen, 4090): 14s Rendern, 11,8 GB maximaler VRAM.

Test B (SDXL, 1024x1024, Gekachelte VAE, Sage-Aufmerksamkeit, 4090): 45s Rendern, 7,5 GB maximaler VRAM.

Test C (SDXL, 768x768, Standardeinstellungen, 8GB-Karte): Fehler aufgrund von Speichermangel.

Test D (SDXL, 768x768, Gekachelte VAE, Sage-Aufmerksamkeit, Block-Swapping, 8GB-Karte): 60s Rendern, erfolgreicher Abschluss.

Technische Analyse

Diese Techniken funktionieren, indem sie die Datenmenge reduzieren, die zu einem bestimmten Zeitpunkt im VRAM gespeichert werden muss. Die gekachelte VAE-Dekodierung zerlegt den Dekodierungsprozess in kleinere Blöcke. Sage-Aufmerksamkeit verwendet eine speichereffizientere Aufmerksamkeitsberechnung. Block-Swapping verschiebt inaktive Teile des Modells in den Systemspeicher. Jede Technik hat einen Geschwindigkeitskompromiss.

Fortgeschrittene Techniken

Sobald Sie die Grundlagen beherrschen, erkunden Sie diese fortgeschrittenen Techniken:

  1. ControlNet: Mit ControlNet können Sie die Bilderzeugung mithilfe von Eingangsbildern, Skizzen oder anderen Steuersignalen steuern.
  2. Hochskalieren: Verwenden Sie spezielle Hochskalierungsmodelle, um die Auflösung Ihrer generierten Bilder zu erhöhen, ohne Details zu verlieren.
  3. Bildvariation: Erstellen Sie Variationen eines vorhandenen Bildes mithilfe des "Bild zu Bild&