Stable Diffusion trainieren

Stable Diffusion trainieren

Stable Diffusion verfolgt einen ganz eigenen Ansatz: Das Tool wird Open Source entwickelt, die gesamte Codebasis kann bei GitHub oder HuggingFace heruntergeladen werden. Entsprechend werden diverse Tools und Erweiterungen angeboten, die durch eine lebendige Community ständig weiterentwickelt werden. Schnell entstand so auch die Möglichkeit, Stable Diffusion auf eigene Daten oder Anwendungsfälle zu trainieren.

Stable Diffusion bietet eine kraftvolle Plattform zur Erzeugung von KI-gesteuerten Bildern. Ob Sie ein Künstler sind, der schnell Bilder im eigenen Stil erzeugen möchte, oder jemand, der bestimmte Objekte oder Personen in die generierten Bilder einfließen lassen will – das Training eines eigenen Embeddings in Stable Diffusion ist der Schlüssel. In diesem Artikel erfahren Sie, wie Sie ein Embedding in Stable Diffusion trainieren.

Das Konzept basiert auf dem Diffusion-Modell, das der Kern der Mechanik ist: Ein Diffusion Model ist ein generatives Modell, das stochastische Prozesse nutzt, um Datenpunkte schrittweise mit Rauschen zu versehen oder Rauschen zu entfernen. Im Forward-Prozess wird ein echter Datenpunkt durch sukzessive Zugabe von Rauschen unkenntlich gemacht. Im Reverse-Prozess wird das Rauschen entfernt, um den ursprünglichen Datenpunkt wiederherzustellen. Dies macht das Diffusion-Modell ideal für komplexe Daten-Generierung in iterativen Schritten.

Für ein spezialisiertes Training von Stable Diffusion stehen verschiedene Methoden zur Verfügung, die jeweils ihre eigenen Stärken und Einsatzmöglichkeiten haben. Im Folgenden beschreibe ich folgende Methoden genauer:

  • Training eines Embedding per Textual Inversion
  • LoRA-Training
  • Training eines eigenen Modells per Dreambooth
  • Training eines eigenen Modells per Hypernetwork

Alle Trainingsmethoden haben ihre eigenen Vor- und Nachteile, abhängig von den Zielen und Anforderungen des Nutzers. In diesem Abschnitt wird die Funktionsweise der Ansätze im Kontext der Stable Diffusion-Plattform erläutert. Da ich für meinen Reiseblog immer wieder Bilder der wunderbaren Insel Amrum brauche, referenziere ich häufig darum. Meine Trainings werde ich demnächst detailliert veröffentlichen, die Links füge ich dann hier ein.

Methoden für individuelle Trainings von Stable Diffusion

Embedding per Textual Inversion

Textual Inversion ist ein Verfahren zur Erstellung von Embeddings, also niedrigdimensionalen Vektoren, die als Eingabeparameter für das Basismodell dienen. Im Wesentlichen bleibt das Basismodell unverändert, und der generierte Vektor ergänzt das vorhandene Wissen des Modells. Nehmen wir als Beispiel das Training eines Modells zur Zuordnung von Amrum-Bildern und Schlüsselwörtern (Kniepsand, Quermarkenfeuer). Hierbei wird der Embedding-Vektor – auch als Parametervektor bezeichnet – speziell für das Schlüsselwort “Kniepsand” trainiert. Nach dem Vergleich der Trainingsergebnisse werden Gradientenaktualisierungen auf diesen Parametervektor angewendet.

Der Vektor wird durch das Sprachmodell aus dem Eingabebefehl “Ein Foto vom Kniepsand” gewonnen und dient als Eingabeparameter für ein nachfolgendes Diffusionsmodell zur Erzeugung von Bildern. Durch das Training mit Textual Inversion wird der optimalste Vektor für das Schlüsselwort “Kniepsand” gefunden. Je nachdem, ob das Basissprachmodell das Schlüsselwort bereits kennt oder nicht, wird ein eindeutiger neuer oder ein bereits vorhandener Vektor verwendet. Dieser Vektor steuert dann das ursprüngliche Diffusionsmodell an, um ein dem Amrumer Kniepsand entsprechendes Bild zu generieren.

Textual Inversion bietet einige Vorteile.

Erstens ist es nicht-destruktiv, das heißt, das Basismodell bleibt in seinem ursprünglichen Zustand erhalten.

Zweitens ist die Methode flexibel: Wenn die Stileinbettung nicht wie gewünscht funktioniert, kann sie einfach angepasst oder entfernt werden.

Allerdings gibt es auch Nachteile:

Die Stilbildung ist eher oberflächlich, und die Kapazität des Modells bleibt begrenzt, da keine grundlegenden Veränderungen vorgenommen werden. Daher ist es weniger geeignet für spezielle oder komplexe Stile, die nicht im Basimodell vorhanden sind. So werden Sie nicht in der Lage sein, den Stil eines bestimmten Anime-Künstlers per Embedding zu reproduzieren.

Es mag zunächst schwer vorstellbar sein, dass eine einfache Vektoranpassung einen derartigen Effekt haben kann. Doch hinter Textual Inversion steht eine fundierte Theorie, die das Funktionieren dieser Methode erklärt.

So bietet Textual Inversion eine effiziente Möglichkeit, die Erzeugung von Bildern oder anderen Ausgaben in einem vorhandenen Modell gezielt zu steuern und anzupassen, ohne das Basismodell selbst zu verändern.

Dreambooth

Dreambooth ist eine 2022 vom Google-Forschungsteam vorgestellte Technik zur Feinabstimmung von Diffusionsmodellen wie dem Stable Diffusion Modell (SD-Modell). Im Gegensatz zu anderen Techniken wie Textual Inversion, die sich nur auf die Feinabstimmung des Text-Embeddings konzentrieren, nimmt Dreambooth umfassendere Änderungen am gesamten Modell vor.

Arbeitsweise von Dreambooth

Beim Training mit Dreambooth werden hauptsächlich zwei Eingaben benötigt: Ein Konzept, z.B. ein Amrumer Leuchtturm, und damit verbundene Schlüsselwörter, im Beispiel “Quermarkenfeuer”. Der Trainingsprozess umfasst mehrere Schritte:

  1. Rauschzufügung: Dem Originalbild wird n-stufiges Rauschen hinzugefügt, um ein verrauschtes Bild zu erstellen.
  2. Kalibrierungsbild: Ein weiteres Bild mit weniger Rauschen (n-1) wird erstellt und dient als Kalibrierungsbild.
  3. Training: Das SD-Modell wird so trainiert, dass es ein klareres Bild aus dem verrauschten Bild generieren kann, wenn es mit dem speziellen Schlüsselwort “Quermarkenfeuer” angewiesen wird.
  4. Verlustberechnung: Die Qualität der generierten Bilder wird durch einen Verlustwert quantifiziert, der den Unterschied zum Zielbild beschreibt.
  5. Gradientenaktualisierung: Anhand dieses Verlustwerts wird das Modell entsprechend angepasst.
  6. Kalibrierung und Fertigstellung: Nach wiederholtem Training lernt das Modell, bei der Eingabe des Schlüsselworts “Quermarkenfeuer” ein Bild zu generieren, das dem bereitgestellten Leuchtturm-Bild ähnlich sieht.

Vorteile und Herausforderungen

Ein zentraler Vorteil von Dreambooth liegt in seiner Effektivität bei der Konzeptanpassung. Da ein völlig neues Modell trainiert wird, ist es in der Lage, sich tiefgreifend auf das neue Konzept einzustellen. Das kommt allerdings mit dem Nachteil eines höheren Speicherbedarfs.

Abgrenzung zu Textual Inversion

Während Textual Inversion ein neues Wort einführt und nur den Text-Embedding-Teil des Modells feinabstimmt, nimmt Dreambooth direktere Änderungen am gesamten Modell vor. Das bedeutet in der Praxis, dass Dreambooth in der Lage ist, komplexe neue Konzepte hinzuzufügen, die weit über die Kapazitäten einer bloßen Textinversion hinausgehen.

Zusammenfassend ist Dreambooth eine leistungsstarke Methode zur Veränderung von Diffusionsmodellen, die trotz ihres höheren Ressourcenbedarfs in Bezug auf die Anpassungsfähigkeit und die Einführung neuer Konzepte hervorragend abschneidet.

LoRA

Das Training von Stable Diffusion-Modellen mit der LoRA-Technik (Low Rank Adaptation) bietet eine interessante Alternative zu bisherigen Methoden wie Dreambooth und Textual Inversion. LoRA zeichnet sich durch einen effizienten Kompromiss zwischen Dateigröße und Trainingsleistung aus. Während Dreambooth kraftvolle, aber große Modell-Dateien erzeugt (2-7 GB), und Textual Inversion zwar klein ist (etwa 100 KB), aber weniger leistungsfähig, platziert sich LoRA mit einer moderaten Dateigröße von 2-200 MB und guter Trainingsleistung genau dazwischen.

LoRA zielt darauf ab, das Dilemma der Speicherbeschränkung auf persönlichen Computern zu lösen, ein Problem, das besonders bei Experimenten mit mehreren Modellen zum Tragen kommt. Im Gegensatz zu Textual Inversion kann ein LoRA-Modell nicht allein verwendet werden. Es muss mit einer Modell-Checkpoint-Datei kombiniert werden und führt kleine Anpassungen an dieser durch.

Funktional konzentriert sich LoRA auf die feine Anpassung der cross-attention layers in Stable Diffusion-Modellen, die das Zusammentreffen von Bild und Eingabeprompt steuern. Durch selektive Anpassung dieser Schichten können gute Trainingsleistungen erzielt werden. LoRA verwendet eine raffinierte Methode der Matrix-Zerlegung, um die Modellgröße zu reduzieren. Große Matrizen werden in zwei kleinere, “niederrangige” Matrizen zerlegt, wodurch die Anzahl der zu speichernden Zahlen drastisch reduziert wird.

Dieses Vorgehen hat, laut den Forschern, kaum negative Auswirkungen auf die Feinabstimmungsleistung. LoRA wurde ursprünglich für Großsprachmodelle (Large Language Models, LLM) entwickelt und zielt darauf ab, die Notwendigkeit zu vermeiden, alle Modellparameter für die Anpassung kopieren zu müssen. Durch das Hinzufügen einer neuen Datenverarbeitungsschicht werden Änderungen an den ursprünglichen Modellparametern vermieden, wodurch eine effiziente, “leichte” Methode für das Modell-Tuning ermöglicht wird.

Im Trainingsprozess erlernen wir zunächst die Parameter dieser neuen Datenverarbeitungsschicht. Diese werden dann in das ursprüngliche Stable Diffusion-Modell eingefügt, um die Ausgabe zu kalibrieren und eine gezielte Korrelation, beispielsweise zwischen dem Eingabe-Schlüsselwort “Quermarkenfeuer” und dem generierten Leuchtturm-Bild, zu erzielen. LoRA bietet nicht nur eine schnellere Trainingszeit und einen geringeren VRAM-Verbrauch als Dreambooth, sondern die resultierende Dateigröße ist ebenfalls deutlich kleiner als die eines vollständigen Modells, meist etwa 150 MB. Damit stellt LoRA eine vielversprechende Methode für die Feinabstimmung von Stable Diffusion-Modellen dar.

Hypernetwork

Im Gegensatz dazu fügt das Hypernetwork Style Training eine zusätzliche Schicht in den Prozess ein, die nach der Bildgenerierung durch das Modell verarbeitet wird.

Das Training von Stable Diffusion-Modellen mittels Hypernetwork stellt eine weitere innovative Methode dar, die auf den ersten Blick Ähnlichkeiten mit LoRA (Low Rank Adaptation) aufweist. Während LoRA sich auf die feine Anpassung der Kreuz-Aufmerksamkeitsschichten im Originalmodell konzentriert, handelt es sich bei Hypernetwork um ein separates neuronales Netzwerk, das speziell dafür ausgelegt ist, geeignete Zwischenschichten und zugehörige Parameter für das ursprüngliche Diffusionsmodell zu generieren.

Das Ziel des Trainingsprozesses ist es, ein neues neuronales Netzwerkmodell zu erhalten, das in der Lage ist, eine Zwischenschicht in das Originalmodell einzufügen. Dies führt dazu, dass das Ausgabebild und der Eingabebefehl, beispielsweise das Schlüsselwort “Quermarkenfeuer”, eine thematische Konzeptbeziehung, etwa zu Leuchttürmen, erzeugen können. Hypernetwork kann insofern als eine Art indirekte Variante von LoRA angesehen werden. Diese Hypernetwork-Schicht verändert tatsächlich das Basismodell, indem sie es in Richtung der Trainingsdaten “verzerrt”. Dadurch lernt das System schneller und kann genauerer Bilder generieren, die sich am vorgegebenen Stil orientieren.

Während LoRA von tiefgehenden mathematischen Theorien und umfangreichen Forschungsergebnissen unterstützt wird, scheint Hypernetwork in dieser Hinsicht weniger fundiert zu sein. Die Technologie hinter LoRA ist gut dokumentiert und optimiert, wohingegen Hypernetwork eher als eine experimentelle Methode gilt. Die indirekte Generierung von LoRA-ähnlichen Parametern durch ein separates neuronales Netzwerk könnte laut Expertenmeinung suboptimale oder ineffiziente Ergebnisse liefern.

In Bezug auf die Trainingsleistung erzielen sowohl LoRA als auch Hypernetwork ähnliche Ergebnisse: kleinere Modelle mit etwa 150 Millionen Parametern, die sich gut für die Weitergabe und gemeinsame Nutzung eignen. Eine Besonderheit von Hypernetwork besteht jedoch darin, dass es eine zusätzliche Schicht für das “Style Training” einführt. Diese Schicht wird nach der Bildgenerierung durch das Basismodell aktiv und beeinflusst dieses in Richtung der Trainingsdaten. Das spezialisierte Modell verliert allerdings an Vielseitigkeit. Jedes Bild, das Elemente aus den Trainingsdaten enthält, wird diesen sehr ähnlich sehen. Das macht es schwierig, eine breite Palette von ähnlichen Objekten oder Stilen zu generieren. Es wird schwieriger, verschiedene Stile anzuwenden, und das System neigt dazu, sich auf die Trainingsdaten zu beschränken. Dadurch kann das System schneller lernen und genauer an den vorgegebenen Stil angelehnte Bilder generieren. Insgesamt stellt Hypernetwork also eine vielversprechende, wenn auch weniger ausgereifte Alternative zu LoRA dar.

Übersicht der verschiedenen Trainings-Methoden

Wir habebn gesehen: Verschiedene Methoden zeigen vielversprechende Ergebnisse, um Stable Diffusion-Modelle zu trainieren, darunter Dreambooth, Textual Inversion, LoRA (Low Rank Adaptation) und Hypernetwork. Jede dieser Methoden hat ihre eigenen Vor- und Nachteile, die von der Dateigröße des trainierten Modells über die benötigte Zeit bis zur Effizienz des Trainingsprozesses variieren.

  • Dreambooth: Diese Methode ist die am weitesten verbreitete und hat die aktivste Benutzergemeinschaft. Sie ist leistungsstark, aber die Größe der Ausgabedateien kann ziemlich groß sein, was die Verwaltung der trainierten Modelle erschwert.
  • Textual Inversion: Bei dieser Methode handelt es sich um eine leichtgewichtige Alternative mit sehr kleinen Dateigrößen. Die Benutzerpräferenz für Textual Inversion ist sogar etwas höher als für Dreambooth, was auf eine einfache Anwendung und hohe Effizienz hindeuten könnte.
  • LoRA: Diese Technologie ist relativ neu und verspricht, die Leistungsfähigkeit von größeren Modellen mit kleineren Dateigrößen zu kombinieren. Es befinden sich jedoch erst wenige Modelle im Umlauf, so dass die endgültige Einschätzung ihrer Effektivität noch aussteht.
  • Hypernetwork: Diese Methode ist experimentell und weniger gut erforscht als die anderen. Die verfügbaren Daten deuten darauf hin, dass Hypernetwork derzeit sowohl in technischer als auch in praktischer Hinsicht weniger zu bieten hat.

Tabellarischer Vergleich

TrainingsmethodeAusgabegröße (MB)Erforderlicher Mindestvideospeicher (GB)Trainingszeit (Minuten)Beliebtheit in der Community
Dreambooth25008.050Sehr hoch
Textual Inversion0.00158.065Hoch
LoRA1508.025Aufstrebend
Hypernetwork1258.080Gering
Tabellarischer Vergleich der verschiedenen Trainings-Methoden für Stable Diffusion

Dreambooth hat zwar die größte Benutzergemeinschaft, aber Textual Inversion hat eine etwas höhere Benutzerpräferenz. LoRA, obwohl neu, zeigt vielversprechende Anzeichen, insbesondere hinsichtlich der Effizienz der Modellgröße und der Trainingszeit. Hypernetwork hingegen wird derzeit als weniger effektiv und praktikabel angesehen.

Hinweise zum Training in Stable Diffusion XL (SDXL)

Das neueste Stable Dissusion Modell SDXL stellt ein paar besondere Herausforderungen an die Trainings.

  • Ältere Embeddings oder LoRAs, die mit den Versionen 1.5 oder 2.0 erzeugt wurden, sind nicht in SDXL verwendbar.
  • Vielfach wird von Performance-Problemen mit den RTX 4xxx Karten von NVidia berichtet. Die Karten scheinen für SDXL Trainings derzeit ungeeignet zu sein.
  • Bilder für das Training von SDXL sollten mindestens 1024 x 1024 Pixel haben – auf diese Dimensionen ist SDXL ausgelegt.
  • Die verwendete GPU sollte mindestsn 12 GB Arbeitsspeicher haben.
  • Quadratische Bilder sind indes nicht notwendig. Jedoch sollten alle Bilder eine Pixelanzahl haben, die gleich oder größer 1024×1024 ist.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert