Der Artikel ist ein Auszug aus dem Buch: Stable Diffusion - Ein umfassender Leitfaden über Bildgenerierung und Modelltraining. Das Buch ist für Kindle Unlimited Abonnenten kostenlos verfügbar.
Dreambooth-Training-Anleitung:
Es gibt verschiedene Wege, um Modelle mit Dreambooth zu trainieren. Die Kohya_ss Variante werde ich euch im Folgenden Schritt für Schritt erklären.
12.2 Kohya_SS:
https://github.com/bmaltais/kohya_ss
Was ist Kohya_ss ?
Kohya_ss ist ein Programm mit grafischer Benutzeroberfläche, mit dem man verschiedene Modelle für Stable Diffusion trainieren kann. Man kann Dreambooth Checkpoints, LoRa-Modelle sowie Textual Inversion (Embeddings) trainieren. Die Vorteile von Kohya sind, dass man dank der Bucket-Technik mit Eingangsbildern in verschiedenen Seitenverhältnissen und Auflösungen trainieren kann, nicht nur 512x512.
Kohya nutze verschiedene Techniken zur Speichereinsparung. Durch den Einsatz eines 8-Bit-Adam-Optimierers und eines latenten Caches (ähnlich wie bei ShivamShirao's Version), als auch durch die optionale Verwendung von Xformers.
Außerdem verbessert Kohya die Qualität des trainings durch Datenaugmentation indem es Captioning-Dateien im Datensatz ermöglicht. Man kann diese in der GUI selbst mit Blip, Git und WD14 erstellen.
Es werden alle gängigen Stable Diffusion Modelle unterstützt (1.X, 2.X, und SDXL).
Wenn du über eine leistungsfähige Nvidia-Grafikkarte verfügst, kannst du Kohya_ss lokal installieren und nutzen, um von der GPU-Leistung zu profitieren, die deine Grafikkarte bietet. Durch die lokale Installation kannst du die Ressourcen deiner eigenen Hardware nutzen.
Darüber hinaus hast du auch die Möglichkeit, Kohya auf GPU-Cloud-Plattformen wie runpod.io oder Google Colab zu nutzen. Diese Plattformen bieten virtuelle Maschinen mit leistungsfähigen GPUs an, auf denen du Kohya ausführen kannst. Dies ist besonders nützlich, wenn deine lokale Hardware nicht über eine leistungsfähige GPU verfügt oder wenn du zusätzliche Ressourcen für umfangreiche Aufgaben benötigst.
Kohya_ss lokale Installation unter Windows:
Um die für Kohya erforderlichen Dependencies auf einem Windows-System zu installieren, befolge diese Schritte:
Installiere Python 3.10.
https://www.python.org/downloads/release/python-3100/
Stelle während des Installationsprozesses sicher, dass du die Option auswählst, Python zur 'PATH'-Umgebungsvariable hinzuzufügen (Häkchen bei „Add Python to Path“setzen.
Installiere Git.
https://git-scm.com/downloads
Installiere Visual Studio.
https://visualstudio.microsoft.com/de/
Kohya_ss Setup:
Um das Kohya einzurichten, folge diesen Schritten:
Öffne ein Terminal im gewünschten Installationsverzeichnis (Windows Befehl: CMD).
Klone das Repository, indem du den folgenden Befehl ausführst:
git clone https://github.com/bmaltais/kohya_ss.git
Wechsle in das kohya_ss-Verzeichnis:
cd kohya_ss
Führe das Einrichtungsskript aus, indem du den folgenden Befehl ausführst:
.\setup.bat
Während dem accelerate config setup verwende die vorgeschlagenen Standardwerte, es sei denn, du weißt, dass deine Hardware andere Anforderungen hat. Die Menge an VRAM deiner GPU hat keinen Einfluss auf die verwendeten Werte.
Optional: CUDNN 8.6:
Die folgenden Schritte sind optional, können jedoch die Lerngeschwindigkeit für Besitzer von NVIDIA 30X0/40X0-GPUs verbessern. Diese Schritte ermöglichen größere Trainingssatzgrößen und schnellere Trainingssgeschwindigkeiten.
Die CUDNN 8.6-DLLs können hier heruntergeladen werden:
https://github.com/bmaltais/python-library/raw/main/cudnn_windows.zip
CUDNN 8.6 kann die Sample-generation-speed deutlich verbessern (fast 50 % auf einer 4090-GPU). Nach dem Herunterladen der ZIP-Datei folge den Installationsanweisungen unten:
Entpacke die heruntergeladene Datei und platziere den Ordner "cudnn_windows" im Stammverzeichnis des kohya_ss-Repositorys.
Führe .\setup.bat aus und wähle die Option zur Installation von CUDANN aus.
Starten der GUI unter Windows:
Unter Windows kannst du entweder das Skript gui.ps1 oder gui.bat im Stammverzeichnis verwenden.
Kohya_SS mit einer Runpod.io Cloud GPU nutzen:
Nutze einfach das vorgefertigte Runpod-Template.
SDiffusion Drmbooth CntrlNet Deforum Roop Kohya
Sobald das Template bereitgestellt ist, verbinde dich über HTTP 3010 mit dem Runpod, um die kohya_ss GUI zu öffnen. Du kannst dich auch über HTTP 3000 mit Automatic1111 verbinden.
Achtung: Mit Runpod.io könnt Ihr Xformers nicht nutzen!
Aktualisierung (Upgrade) von Kohya_SS
Um deine Installation auf eine neue Version zu aktualisieren, befolge die folgenden Anweisungen.
Windows-Aktualisierung:
Wenn eine neue Version verfügbar ist, kannst du dein Repository aktualisieren, indem du die folgenden Befehle im Stammverzeichnis des Projekts ausführst:
git pull
Danach führe das Einrichtungsskript aus:
.\setup.bat
Durch diese Schritte werden die neuesten Änderungen aus dem Repository heruntergeladen und deine Installation auf die aktuelle Version aktualisiert.
12.3 Schritt für Schritt Anleitung für das DreamBooth Training:
Trainiere am Anfang ersteinmal ein Testmodell und behebe mögliche Probleme später. Das ist der beste Weg, um zu verstehen, wie die KI das Trainingset interpretiert hat. Verwende einige Standardwerte und versuche diese dann zu optimieren, wenn Probleme auftreten, damit du herausfinden kannst, wie du sie lösen oder verbessern kannst.
Das trainieren dauert nicht alzu lange und du könntest Glück haben und es beim ersten Versuch schaffen, selbst mit einem unvollkommenen Trainingset.
Bestimme Identifikator und Klasse:
Such dir einen Wortidentifikator aus, der das Ziel verbindet, das du trainieren möchtest, und die Klasse, zu der das Ziel gehört.
Hier ist eine sehr kurze Erklärung.
"Klasse" (Class) ist der allgemeine Typ, den du lernen möchtest. Zum Beispiel, wenn du eine spezifische Hunderasse lernen möchtest, wird die Klasse "Dog" sein. Anime-Charaktere können boy, girl, 1boy or 1girl sein, abhängig vom Modell.
Der "Identifikator" (identifier) dient dazu, das Lernziel zu identifizieren und zu lernen. Jedes Wort ist in Ordnung, aber laut dem Originalpapier von Google Research ist ein "seltenes Wort mit 3 Buchstaben oder weniger, das zu einem Token mit dem Tokenizer wird", gut geeignet.
Indem du den Identifikator und die Klasse verwendest, um das Modell zu trainieren, zum Beispiel mit "shs Dog", kannst du lernen, das gewünschte Objekt aus der Klasse zu identifizieren.
Wenn du ein Bild generierst und "shs Dog" als Prompt nutzt, wird ein Bild der gelernten Hunderasse erzeugt.
(Zur Referenz: Gute Identifikatoren sind: shs, eiw, sts, scs, cpc, coc, cic, msm, usu, ici, lvl, cic, dii, muk, ori, hru, rik, koo, yos, wny.)
Bildauswahl für ein Personen/Objekt Modell:
Die Auswahl der Bilder für dein Modell ist ein entscheidender Schritt im Prozess.
Hochwertige Bilder: Suche nach Bildern mit hoher Auflösung und klaren visuellen Details. Meide Bilder mit niedriger Auflösung oder Unschärfe, da sie die Fähigkeit des Modells beeinträchtigen können.
Relevante und repräsentative Bilder: Suche nach Bildern, die das Thema, auf das du dein Modell trainierst, genau repräsentieren. Diese Bilder sollten die Schlüsselfunktionen, Eigenschaften oder Attribute zeigen, die du dem Modell beibringen möchtest.
Gewünschte Modellausgabe: Überlege, was du möchtest, dass dein Modell produziert oder ähnelt. Suche nach Bildern, die mit deiner gewünschten Ausgabe oder visuellen Stil übereinstimmen. Dies kann den Lernprozess des Modells leiten und seine generierten Ergebnisse verbessern.
Für ein Modell, das sich auf eine Person konzentriert, ist es entscheidend, hochwertige Bilder zu nutzen. Die Wahl von Bildern mit einer Auflösung von 720p oder höher ist eine gute Herangehensweise, da es dem Modell ermöglicht, feine Details effektiv zu erfassen.
Obwohl es möglich ist, Bilder niedrigerer Qualität einzubeziehen, ist es wichtig zu beachten, dass das Modell möglicherweise Schwierigkeiten hat, besonders wenn es um komplexe Details wie Gesichtszüge, Muster oder Tattoos geht..
Beim Sammeln von Bildern für deinen Datensatz ist es wichtig, die Vielfalt an Posen und Kamerapositionen zu berücksichtigen. Die Berücksichtigung verschiedener Kamerapositionen ermöglicht es dem Modell, zu lernen, wie es Bilder aus verschiedenen Perspektiven und Blickwinkeln generieren kann. Hier sind einige Kamerapositionen nach denen du Bilder auswählen kannst:
Nahaufnahme (Close up): Füge Nahaufnahmen ein, die die Gesichtszüge des Charakters hervorheben und es dem Modell ermöglichen, feinere Details wie Ausdrücke, Texturen und komplexe Elemente zu erlernen.
Porträt: Enthalte Bilder, die den Charakter in einer Porträt-Komposition zeigen und sein Gesamterscheinungsbild, einschließlich Kopf, Gesicht und Schultern, betonen.
Oberkörper: Füge Bilder ein, die sich auf den Oberkörper des Charakters konzentrieren und Details wie Gesichtsausdrücke, Kleidung und Oberkörper erfassen.
Cowboy Shot: Diese Kameraposition rahmt den Charakter von den Oberschenkeln oder Knien aufwärts ein und bietet eine mittlere Aufnahme, die die Körpersprache, Kleidung und die allgemeine Haltung des Charakters zeigt.
Ganzkörper: Füge Bilder ein, die den gesamten Körper des Charakters erfassen und es dem Modell ermöglichen, Proportionen, Haltung und die gesamte Körperform des Charakters zu erlernen.
Durch die Einbeziehung einer vielfältigen Palette von Posen und Kamerapositionen in deinem Datensatz erhält das Modell ein umfassendes Verständnis des Erscheinungsbilds des Charakters aus verschiedenen Blickwinkeln und Perspektiven. Diese Vielfalt ermöglicht es dem Modell letztendlich, genauere und vielseitigere Ergebnisse aus verschiedenen Blickwinkeln und Posen zu generieren.
Bei der Suche nach Bildern speziell für Charaktermodelle ist es entscheidend, sicherzustellen, dass der Fokus ausschließlich auf dem zu modellierenden Charakter liegt.
Keine zweiten Personen: Die Bilder sollten idealerweise nur den zu modellierenden Charakter zeigen, ohne zweite Personen.
Wenn jedoch andere Personen im Hintergrund vorhanden sind, ist dies geradeso akzeptabel, solange sie nicht von der Hauptfigur ablenken.
Schließe Bilder mit Wasserzeichen oder Texten an unpassenden Stellen aus, an denen sie nicht einfach entfernt werden können.
Zuschneiden von Bildern als letzte Option: Wenn du auf Bilder stößt, auf denen eine zweite Person vorhanden ist, aber nicht im Mittelpunkt steht, kann das Bild zugeschntten werden und so die zweite Person entfernt werden. Priorisiere jedoch die Verwendung von Bildern, bei denen der Charakter das Hauptmotiv ist, ohne Ablenkungen.
Bilderauswahl für ein Style Model:
Beim Zusammenstellen von Bildern für ein Style Modell ist es entscheidend, Konsistenz zu wahren und Bilder auszuwählen, die einem einzigen, spezifischen Stil entsprechen. Es ist üblich, dass Künstler im Laufe der Zeit verschiedene Stile ausprobieren, und dasselbe gilt für kreative Teams, die an Serien, Filmen, Mangas oder Animes arbeiten.
Wähle einen bestimmten Stil: Bestimme den spezifischen Stil, den dein Modell erlernen und generieren soll. Dies kann der Stil eines bestimmten Künstlers sein oder ein konsistenter Stil, der in einer bestimmten Serie, einem Film oder einer Kunstwerk zu sehen ist.
Vermeide das Vermischen von Stilen: Verwende keine Bilder, die verschiedene Stile in deinem Datensatz zeigen. Das Vermischen von Stilen kann das Modell verwirren und zu inkonsistenten oder unvorhersehbaren Ergebnissen führen. Ziel ist es, dass das Modell einen einzigen Stil genau erlernt und reproduziert.
Achte auf Kohärenz: Wähle Bilder aus, die den ausgewählten Stil in deinem Datensatz genau widerspiegeln. Dies ermöglicht dem Modell ein kohärentes Lernerlebnis und hilft ihm, die einzigartigen Merkmale und Feinheiten, die für diesen speziellen Stil charakteristisch sind, einzufangen.
Indem du diese Überlegungen berücksichtigst und eine klare und konsistente Stilauswahl sicherstellst, wird dein Style Modell besser in der Lage sein, Ergebnisse zu erlernen und zu generieren, die mit deiner gewünschten künstlerischen Vision übereinstimmen.
Schneide das Bild so zu, dass unnötige Umgebungen entfernt werden und das Motiv in der Mitte bleibt.
Bilder für das Training vorbereiten:
Erstelle einen Ordner, um die Trainingsbilder zu speichern. __Zusätzlich erstelle ein Verzeichnis mit folgendem Namen:
<Anzahl der Wiederholungen>_<Identifikator> <Klasse>
Vergiss das zwischen ihnen nicht.
Die Anzahl der Wiederholungen wird angegeben, um die Anzahl der regulierten Bilder anzupassen (später beschrieben).
Beispielsweise bei der Eingabeaufforderung "sls woman", um die Daten 20 Mal zu wiederholen, wäre es "20eiw woman". Es sieht folgendermaßen aus.
Beschriften der Bilder (Image Caption):
Um die Bilder zu beschriften, sind Bildunterschriften wichtig, um dem Modell das Thema eines Bildes beizubringen. Das Generieren von Bildunterschriften ist entscheidend, um dem Model beizubringen, das Motiv vom Rest des Bildes zu unterscheiden.
Gehe zu deinem Beschriftungstool. In unserem Fall verwenden wir die Koya SS GUI.
Öffne den "Utilities" -Tab und wähle den "BLIP Captioning" -Tab aus.
Im Abschnitt " Image folder to caption" füge den Verzeichnispfad des Ordners ein, der die zu beschriftenden Bilder enthält. In unserem Fall ist es " *\kohya_training\Eiw\image\20_eiw woman". Alternativ kannst du den Ordnerbutton rechts verwenden, um zum gewünschten Ordner zu navigieren.
Im Abschnitt "Prefix to add to BLIP caption" füge einen Präfix zu deinen Bildunterschriften hinzu. Dieser Präfix wird jedem der zu beschriftenden Bilder hinzugefügt. In unserem Fall fügen wir "Eiw" hinzu.
Passe die Einstellungen nach Bedarf an.
Zum Beispiel:
Wähle eine Batch-Größe von 8.
Wähle 10 Balken (Number of beams).
Füge 0,9 als Top p ein.
Füge 75 Token als maximale Länge ein.
Füge 22 Token als minimale Länge ein.
Starte den Beschriftungsprozess, indem du auf "Caption Images" klickst.
Wenn du nun in den Ordner zurücknavigierst, wirst du Textdateien (mit der Erweiterung .txt) neben den Bildern sehen, eine für jedes Bild. Diese Dateien enthalten die generierten Bildunterschriften.
Nachdem die Bildunterschriften generiert wurden, überprüfe sie auf Genauigkeit. Vergleiche sie mit dem entsprechenden Bild, um Ungenauigkeiten zu erkennen.
Nehme bei Bedarf notwendige Änderungen an den Bildunterschriften vor, wobei du dich auf wichtige Details in jedem Bild konzentrierst.
Einige Kriterien zur Bearbeitung der Bildunterschriften:
Stelle sicher, dass die Bildunterschriften klar zwischen Elementen im Hintergrund und im Vordergrund unterscheiden, indem spezifische Begriffe verwendet werden.
Entferne jeglichen Bezug auf Gesichtsausdrücke.
Verbessere die Details der Kleidung, wenn unzureichende Beschreibungen vorliegen.
Speichere deine endgültigen Bildunterschriften.
BooruDatasetTagManager:
https://github.com/starik222/BooruDatasetTagManager
Zum einfacheren Bearbeiten der Bildunterschriften kannst du auch das Programm "BooruDatasetTagManager" verwenden.
Booru ist ein einfacher Tag-Editor für einen Datensatz, der für das Training von Hypernetzwerken, Embeddings, LoRA usw. erstellt wurde. Du kannst einen Datensatz von Grund auf neu erstellen, indem du nur Bilder verwendest, oder du kannst ein Kohya_ss verwenden, um einen Datensatz zu bearbeiten, der automatisch mit Tags versehen wurde (z. B. wd14-tagger, stable-diffusion-webui, etc.). Der Editor ist hauptsächlich für Daten im Booru-Stil mit Tags konzipiert, aber du kannst ihn auch für andere Datensätze anpassen.
Du benötigst einen Datensatz wie folgt:
Du kannst auch einen Datensatz ohne Textdateien spezifizieren, wenn du Tags von Grund auf neu erstellen möchtest. In diesem Fall werden Textdateien beim Speichern erstellt.
Im Programm wähle "File -> Load Folder" und gib das Verzeichnis mit dem Datensatz an.
In der linken Spalte werden die Tags für das ausgewählte Bild bearbeitet, in der rechten Spalte werden die Tags für alle Bilder des Datensatzes bearbeitet.
Nach der Bearbeitung wählst du "File -> Save all changes" aus.
Du kannst mehrere Bilder gleichzeitig in einem Datensatz auswählen. Dadurch kannst du die Tags für Bilder desselben Typs einfach bearbeiten.
Vorbereitung der „regularized images“:
Was sind „regularized images“ ?
Regularized images sind Bilder, die als Teil eines Regularisierungsprozesses verwendet werden, um die Stabilität und Leistung von Deep Learning-Modellen zu verbessern. Im Kontext von Stable Diffusion und der aktuellen Implementierung von Dreambooth werden regularized images verwendet, um das Modell dazu zu ermutigen, glatte und vorhersehbare Vorhersagen zu treffen und die Qualität und Konsistenz der Ausgabebilder zu verbessern.
Ordnerstruktur:
Erstelle einen Ordner, um die regularized images zu speichern. __Zusätzlich erstelle ein Verzeichnis mit dem Namen <Anzahl der Wiederholungen>_<Klasse>.
Es ist auch möglich, ohne Verwendung des regularized images zu trainieren, bessere Ergebnisse erhält man aber wenn regularized images verwendet werden.
12.4. Kohya_SS Dreambooth Trainings-Einstellungen:
Starten der Benutzeroberfläche (GUI) unter Windows:
Gehe ins Stammverzeichnis von Koyah_SS und doppelklicke auf die gui.bat Datei. Dadurch wird ein Terminal geöffnet und Koyah startet.
Kohya_ss-Gui :
Als erstes öffne den Dreambooth Source Model Tab:
Ich kann dir empfehlen mit SD1.5 zu trainieren, wenn du aber V2 Modelle trainieren möchtest musst du die Optionen "v2" und "v_parameterization"auswählen.
Lasse sie also deaktiviert, es sei denn, du trainierst mit SD2.0+.
Unter "Model Quick Pick" kannst du das Basismodell auswählen, auf dem dein Training basiert. Du kannst entweder eines der Grundmodelle auswählen oder, wenn du mit einem benutzerdefinierten Modell trainieren möchtest, "Custom" auswählen. Unter "Pretrained model name or path" musst du dann das Verzeichnis deines benutzerdefinierten Modells angeben. Normalerweise lautet der Pfad: *:\stable-diffusion-webui\models\Stable-diffusion.
Unter "Save trained model as" wähle am besten "Savetensors" aus. "Savetensors" ist ein sicheres Dateiformat, während sich in "ckpt"-Dateien potenziell schädlicher Code verstecken könnte. Mit "Savetensors" bist du auf der sicheren Seite.
Dreambooth Folders Tab:
Wähle die Ordner aus, die wir im vorherigen Abschnitt erstellt haben.
Achte darauf:
Für den Image folder: Wähle den Ordner 'image' aus, nicht den Ordner 'nn_triggerword class'.
Für den Regularisation folder: Wähle den Ordner 'reg' aus, nicht den Ordner 'n_class'.
Für den Output folder: Wähle den 'model' Ordner. Du kannst den Ordner auch wie das Triggerwort benennen. Wenn es sich um eine neue Version handelt, füge ich 'v2', 'v3' usw. hinzu.
Für den Logging folder: Wähle den 'log' Ordner.
Im Eingabefeld 'Model output namw ' kannst du deinem Model einen Namen geben.
Dreambooth Training Parameters tab:
Hier gibt es viele verschiedene Optionen. Ich werde dir zeigen, welche du anpassen kannst, um sehr gute Ergebnisse zu erzielen.
Training Batch Size: Lasse die Einstellung auf 1, es sei denn, du hast genügend VRAM (Videospeicher). Mit meiner RTX 3090-GPU kann ich es auf 3 erhöhen, aber nicht darüber hinaus. Die Batch Size bestimmt, wie viele Bilder gleichzeitig parallel verarbeitet werden können.
Deine Trainingschritte werden durch deine Batch-Größe geteilt. Du führst X Schritte auf einmal aus, daher werden bei einer Batch-Größe von 2 gleichzeitig zwei Schritte ausgeführt. Daher werden beispielsweise bei 1000 Schritten und einer Batch-Größe von 2 nur 500 Schritte angezeigt.
Epochen (Epoch): Hier hängt es davon ab, wie viele Bilder du für das Training verwendest und wie hoch die Anzahl der "Training Steps" ist, die über die Bezeichnung des Bildordners festgelegt wurde. Bei einer hohen Anzahl von Training Steps kannst du eine geringere Anzahl von Epochen wählen. Während des Trainings werden die Training Steps pro Epoche wiederholt, und Kohya versucht, das Modell mit jeder Epoche zu verbessern.
Obwohl mehr Wiederholungen besser sind als mehr Epochen, ist es dennoch nützlich, ein paar Epochen zu haben, um Fortschritts-Speicherpunkte zu erstellen. Wenn du ein Modell Überangepasst (Overfitting) hast , könnten die Speicherpunkte aus einer vorherigen Epoche in Ordnung sein.
Die Gesamtzahl der Schritte berechnet sich wie folgt:
(Anzahl der Bilder x Anzahl der Wiederholungen) x Anzahl der Epochen, es sei denn, du verwendest Regularisierungsbilder, dann ist es ((Anzahl der Bilder x Anzahl der Wiederholungen) + (Anzahl der Regularisierungsbilder x Anzahl der Wiederholungen)) x Anzahl der Epochen oder im Wesentlichen die doppelte Anzahl der Schritte.
Du solltest mindestens ~1000 Schritte für das Training haben.
Für das Training von Grund auf (ein nicht-menschliches oder obskuren Charakter) solltest du mindestens ~1500 Schritte einplanen.
Die perfekte Anzahl ist schwer zu sagen, da es von der Größe des Trainingsdatensatzes abhängt.
Du solltest mehr Schritte verwenden, wenn du die Lernrate senkst.
Save every N epochs: Hier kannst du einstellen, wie oft ein Speicherpunkt erstellt werden soll. Wenn du 1 wählst, wird bei jedem neuen Epoch ein Speicherpunkt erstellt und ein Modell generiert. Bei 2 wird nur bei jedem zweiten Epoch ein Speicherpunkt erstellt.
Caption Extension: Setze es auf "txt", da Kohya teilweise eine Warnung ausgibt, dass die Bilder nicht betitelt wären.
Mixed Precision / Save Precision: Wenn du die richtige Hardware hast, verwende BF16!
Auf aktuellen Nvidia-GPUs (Ampere-Generation wie A100, RTX 3090, RTX 4090) beschleunigen Tensor Cores beide Formate. Auf älteren GPUs (wie V100 oder T4, RTX 2080 TI, RTX 2080 SUPER) wird BF16 nicht unterstützt, daher ist die Wahl einfacher, da du keine andere Option hast als FP16 zu nutzen.
Der Unterschied zwischen BF16 und FP16 liegt in der Anzahl der Bits für den Exponenten- und den Mantissen-Teil (siehe Wikipedia https://en.wikipedia.org/wiki/Bfloat16_floating-point_format).
FP16 hat 5 Bits für den Exponenten, was bedeutet, dass es Zahlen zwischen -65.000 und +65.000 kodieren kann. BF16 hat wie FP32 8 Bits im Exponenten, was bedeutet, dass es ungefähr so große Zahlen wie FP32 kodieren kann.
Während des Trainings im gemischten Präzisionsmodus, wenn Werte zu groß sind, um in FP16 kodiert zu werden (>65.000 oder <-65.000), wird ein Trick angewendet, um den Gradienten neu zu skalieren. Bei sehr großen Modellen (wie GPT3) kann dies jedoch zu Instabilitäten führen.
BF16 ist auch nicht perfekt, da es viel weniger genau ist als FP32. Ein Problem kann auftreten, wenn ein Wert sehr nahe bei 0 liegt und nicht in BF16 codiert werden kann (gleiches gilt für FP16, aber schlimmer bei BF16). Dies kann ein Problem sein, wenn du beispielsweise etwas durch diesen Wert teilen möchtest.
Seed: Verwende deine Lieblingszahl oder lasse das Feld einfach frei.
Genauso wie bei der Erzeugung von Bildern hat der Seed Einfluss auf das Modell.
Es ist durchaus möglich, einen Zufallsseed zu finden, der sich nicht gut für das Thema eignet, obwohl dies selten vorkommt.
Wenn du alles ausprobiert hast und dein Modell immer noch nicht gut ist, kann eine Änderung des Seeds möglicherweise helfen.
Cache Latents: Deaktiviere es - es verlängert die Verarbeitungszeit erheblich und bringt dir keinen Vorteil, ausser du verwendest flip-augmentations.
Learning rate: Kohya unterstützt sowohl die wissenschaftliche "e-Notation" für Zahlen als auch reale Zahlen. Daher wird "1e-4" zu "0.0001" und "5e-5" zu "0.00005". Welches Format Ihr verwendet ist Geschmackssache.
Die Empfohlene Learning Rate für Kohya Dreambooth liegt bei 1e-5 (0,00001). Eine höhere Lernrate führt leicht zu Überanpassung (Overfitting).
Hier sind ein paar gängige Learning Rates mit Ihren vorraussichtlichen auswirkungen auf das training:
1e-4 (0,0001)______ Überangepasst
1e-5 (0,00001)_____Dreambooth-GUI Standard
2e-6 (0,000002)____Niedrige Learning Rate
1e-6 (0,000001)____Untertrainiert
Learning Rate Scheduler, folgende Scheduler sind in Kohya verfügbar:
constant: Die Lernraten ändern sich nicht und bleiben konstant.
constant_with_warmup: Ähnlich wie constant, startet jedoch bei Null und steigt während der warmup_steps linear an, bis die angegebenen Werte erreicht sind.
linear: Die Lernraten fallen kontinuierlich ab und sind am Ende Null.
cosine: Die Lernraten steigen und fallen gemäß einer Cosinuswellenform.
cosine_with_restarts: Ähnlich wie cosine, startet jedoch in bestimmten Intervallen erneut bei der vollen Lernrate.
polynomial: Ähnlich wie linear, aber mit einer ausgefeilteren Kurve.
Die Standardoption ist constant.
Constant ist wahrscheinlich die sicherste Option und am einfachsten zu verstehen. Wenn du neue Datensätze ausprobierst, ist dies die beste Wahl. Die Lernrate bleibt konstant.
Warmup ist eine Lösung gegen frühes Overfitting. Durch allmähliches Erhöhen der Lernrate hat das Modell mehr Zeit, sich an die neuen Daten anzupassen. Dies sollte wiederum zu einem besseren Trainingsergebnis führen.
Mit Lr warmup % of steps kannst du angeben, wie viele Schritte der Scheduler erwärmt werden soll (allmähliche Änderung der Lernrate.
Optimizer geben dem Training ihre eigenen Regeln vor und können das Raten vereinfachen oder weniger Ressourcen nutzen, oder mehr Ressourcen für ein besseres Ergebnis einsetzen.
Obwohl sie ein schlechtes Trainingset nicht in etwas Brauchbares verwandeln können, können sie den Prozess optimieren. Manche Optimierer erledigen diese Aufgabe besser als andere, daher lohnt es sich, einige auszuprobieren.
Aktuell sind adaptive Optimierer der Goldstandard, da sie die Lernraten automatisch basierend auf dem Verlust anpassen, bei jeder Rückwärtspropagierung (wenn das Training Änderungen an der "mathematischen Suppe" vornimmt, die das Modell darstellt), um die Lernraten auszugleichen.
Derzeit werden AdamW8bit, DAdaptAdam, DAdaptLion und Prodigy als empfohlene Optimizer betrachtet, weil sie das Raten verbessern und unerwünschte Ergebnisse vermeiden.
Optimizer
LR number of cycles und LR power werden nur für den Cosine Scheduler mit Restarts gebraucht.
Optimizer extra arguments: DadaptAdam, AdaFactor und Prodigy Optimizer brauchen extra Arguments um zu funktionieren, die Arguments aus der Tabelle können hier eingetragen werden.
Max resolution: Genaue Auswirkungen sind schwer zu bestimmen.
Eine höhere Auflösung scheint die Detailqualität und Komposition zu verbessern, jedoch auf Kosten von mehr Trainingszeit/VRAM. Es kann auch sekundäre Effekte verursachen.
Wenn du die Auflösung zu hoch einstellst, könnte dies die Qualität von Bildern mit niedrigerer Auflösung verringern, aber kleine Schritte scheinen in Ordnung zu sein.
Zu empfehlen sind hier die Auflösungen 512x512 oder 768x768.
Stop text encoder training: Mit dieser einstellung kann der Text Encoder an einer bestimmten Stelle des Trainings gestopt werden. Wenn du diesen auf 0 setzt, werden die Captions für das gesamte Training verwendet.
Wenn du einen numerischen Wert für die Option "stop_text_encoder_training" angibst, wird nach dieser Anzahl von Steps nur das U-Net ohne Training des Text Encoders trainiert. In einigen Fällen kann sich dadurch die Genauigkeit verbessern.
Möglicherweise kann der Text Encoder zuerst übertrainiert werden, dies könnte durch diese Einstellung verhindert werden.
Enable buckets: Mit der Option "enable_bucket" wird das Bucketing aktiviert. Stable Diffusion wird normalerweise mit einer Auflösung von 512x512 trainiert, aber auch mit anderen Auflösungen wie 256x768 und 384x640.
Wenn du diese Option angibst, musst du die Trainings- und Regularisierungsbilder nicht auf eine bestimmte Auflösung einheitlich bringen. Du kannst aus mehreren Auflösungen (Seitenverhältnissen) wählen und bei dieser Auflösung trainieren. Da die Auflösung 64 Pixel beträgt, stimmt das Seitenverhältnis möglicherweise nicht genau mit dem Originalbild überein.
Du kannst die minimale Größe der Auflösung mit der Option "min_bucket_resolution" und die maximale Größe mit der Option "max_bucket_resolution" angeben. Die Standardwerte sind 256 und 1024. Wenn du beispielsweise eine minimale Größe von 384 angibst, werden Auflösungen wie 256x1024 oder 320x768 nicht verwendet. Wenn du die Auflösung auf 768x768 erhöhst, kannst du 1280 als maximale Größe angeben.
Wenn das Bucketing für das Seitenverhältnis aktiviert ist, ist es möglicherweise besser, Regularisierungsbilder mit verschiedenen Auflösungen vorzubereiten, die den Trainingsbildern ähnlich sind.
Wenn deine Bilder zu zufällig gebündelt werden, kann dies zu Problemen führen und die Qualität des Modells verringern. Es scheint besser zu funktionieren, wenn die meisten Bilder in einem einzigen Bucket liegen oder wenn sie gleichmäßig auf die Buckets verteilt sind (die Buckets solten ungefähr die gleiche Anzahl von Bildern enthalten).
Wenn du die Buckets deaktivierst, müssen alle deine Bilder im Datensatz die gleiche Auflösung und das gleiche Seitenverhältnis haben (z. B. 512x512 oder 768x768).
Advanced Configuration:
No token padding: Die Option "no_token_padding" fügt keine Padding zum Ausgang des Tokenizers hinzu (gleiches Verhalten wie bei der alten Version von DreamBooth).
Was bedeutet padding?
Eingegebene Daten in Chargen (Batches) haben oft unterschiedliche Längen und können daher nicht in Tensoren fester Größe umgewandelt werden. Padding ist eine Strategie, um dieses Problem zu bewältigen und rechteckige Tensoren aus Batches mit variierenden Längen zu erstellen. Padding fügt ein spezielles Padding-Token hinzu, um sicherzustellen, dass kürzere Sequenzen dieselbe Länge haben wie entweder die längste Sequenz in einer Charge oder die maximale Länge, die vom Modell akzeptiert wird.
Gradient accumulate steps: Gradient Accumulation ist ein Mechanismus, um den batch von Samples, die zum Trainieren eines neuronalen Netzwerks verwendet wird, in mehrere Mini-Charges von Samples aufzuteilen, die nacheinander ausgeführt werden. Zu empfehlen ist hier den Standardwert von 1 beizubehalten.
Weighted captions: Setze hier ein Häkchen wenn du deine Captions in den Captiondateien gewichtet hast.
Prior Loss Weight ist ein Wert von 0 bis 1 (Standardwert 1), der nur auf Regularisierungsbilder angewendet wird. Wenn du ihn auf 0,8 setzt, wird jedes Regularisierungsbild das Modell nur mit 80 % der Stärke deiner nicht-regulären Bilder beeinflussen.
VAE: hier kannst du eine VAE Datei die du lokal gespeichert hast eingeben. Dann wird diese VAE für das Training verwendet. Das gespeicherte Modell wird diese VAE inkludiert haben.
Save every N steps / Save last N steps / Save last N steps state hier kannst du angeben wann und wie oft das Training zwichengespeichert werden soll. Bei jedem speichern wird ein neuer Checkpoint erstellt.
Keep N Tokens ist eine Einstellung, die aktiviert wird, wenn du die Option "Shuffle Captions" eingeschaltet hast. Während des Trainings wird besondere Aufmerksamkeit auf das gelegt, was am Anfang des Text-Prompts steht. Mit "Keep N Tokens" kannst du festlegen, dass eine bestimmte Anzahl von Tags am Anfang des Text-Prompts beibehalten wird und nicht durcheinandergewürfelt wird.
Clip skip: Der Wert für clip skip muss dem Wert entsprechen, den du beim generieren der Bilder verwenden möchtest, Wenn du ein Model trainierst, dass "CLIP skip 2" verwendet, setze es auf "clip skip=2". Wenn du ein realistisches Modell verwendest, die "CLIP skip 1" verwenden, setze es auf "clip skip=1".
Die Empfehlung, ist immer mit "CLIP skip 1" zu trainieren.
Max Token Length hiermit könntest du das Standardlimit des Tokenizers über 75 erhöhen.
Die Anzahl der Tokens ist durch das CLIP-Modell auf 77 Tokens begrenzt, einschließlich eines Start-Tokens und eines End-Tokens, sodass das Eingabe-Token nicht mehr als 75 Tokens betragen kann.
Es können aber mehrere Tolenizer zusammengefasst werden, dadurch egibt sich eine maximale Tokenanzahl von 225.
Gradient checkpointing: aktiviere diese Einstellung um V-Ram zu sparen.
Shuffle caption: Mit dieser Option werden die Captions der Bilder während des Trainings studiert und dabei jedes Teil, das durch ein Komma getrennt ist im nächsten Durchlauf vermischt.
Memory efficient attention: aktiviere diese Einstellung um V-Ram zu sparen.
Use xformers: Die von Facebook (Meta) entwickelte Xformers-Bibliothek ist ausschließlich für NVIDIA-GPUs verfügbar und optimiert die Reduzierung des VRAM-Verbrauchs.
Color augmentation & Flip augmentation:
Die Augmentationen sind im Grunde einfache Bildeffekte, die während des Trainings angewendet werden. Die Effekte können von subtil bis hin zu "ausreichend, um ein schlechtes Modell zu retten" reichen, aber sie verlangsamen das Training.
flip_aug Kippt zufällig Bilder horizontal. Nützlich in den meisten Fällen, es sei denn, dein Charakter ist stark asymmetrisch.
color_aug Führt zufällige Farbtonverschiebungen durch. Kann den Farbbereich verbessern und ähnlich gefärbte Elemente etwas besser voneinander trennen.
Achtung: cache_latents funktioniert nicht, wenn andere Augmentations als flip_aug aktiviert sind.
Min. SNR Gamma ist eine neue Funktion, um die zufälligen Spitzen im Trainingsverlust zu glätten, was zu einem "sanfteren" Lernen führt. Es kann helfen, Probleme mit dem Unet/TE zu reduzieren.
Der empfohlene Wert ist min_snr_gamma=5. Ein Wert von 1 wird eine stärkere Wirkung haben, während 20 kaum eine Wirkung haben wird. 20 wird als der maximale Wert betrachtet, aber es wird empfohlen, sich im Bereich von 1-10 zu bewegen.
Die Verwendung von SNR Gamma kann bei DAdaptation und möglicherweise auch bei AdaFactor einige Probleme verursachen.
Höhere Werte für Min. SNR Gamma führen auch zu einer geringfügigen Dämpfung, die mit höheren Werten zunimmt.
Min Timestep: Belssse den Standardwert von 0, wenn du ein Bildgenerierungsmodell trainieren möchtest. Wenn du jedoch ein spezielles Image-to-Image- oder Inpaint-Modell trainieren möchtest, kannst du den Wert erhöhen.
Max Timestep: Hier sollte der Wert für ein Standardmodell auf 1000 belassen werden. Für ein Image-to-Image- oder Inpaint-Modell kannst du den Wert verringern.
Noise offset funktioniert, indem es einen zufälligen Wert zu den Latenten während des Trainings hinzufügt. Dadurch wird der Dynamikumfang der Bilder erhöht, jedoch auf Kosten eines langsameren Lernprozesses.
Diese Funktion ist vollständig optional und sollte nur verwendet werden, wenn du den Effekt wünschst oder als Lern-Dämpfer nutzen möchtest.
Die Effekte ähneln dem Erhöhen des CFG-Skalierungsfaktors bei der Bildgenerierung, sind jedoch etwas subtiler. Ein zu hoher Wert kann die Ausgabe zerstören, also sei vorsichtig.
Eine leichte Erhöhung schadet jedoch nicht, wenn du etwas kräftigere Farben wünschst.
Ein Wert von 0,1 wird empfohlen. Führe einfach 1-2 weitere Epochen durch, um den Lern-Dämpfer auszugleichen.
Fantastisch! Du hast alle Einstellungen vorgenommen und bist nun bereit, das Training zu starten. Mit einem Klick auf den "Start Training" Button kannst du jetzt loslegen. Lass dich von deiner Neugier und Kreativität leiten, während du die perfekten Einstellungen für ein außergewöhnliches Modell erkundest.
Dieser Prozess mag manchmal herausfordernd sein, aber er ist auch voller Freude und Entdeckungen.
13 LoRa Model training mit Kohya_ss:
Das LoRA-Model-Training ähnelt dem Dreambooth-Training sehr. Daher werde ich die Einstellungen, die identisch sind, nicht noch einmal erläutern, sondern nur die Unterschiede aufzeigen.
Für das LoRA-Training können wir tatsächlich dasselbe Datenset verwenden, welches wir auch für das Kohya-DreamBooth-Training verwendet haben. Die Ordnerstruktur ist identisch und somit können wir nahtlos auf das bereits vorhandene Datenset zugreifen.
LoRA hat einige Unterschiede zu DreamBooth, die es besonders attraktiv als Alternative machen:
Schnelleres Training: Das Training eines neuen Konzepts mit LoRA dauert nur wenige Minuten.
Kleinere Model Dateien: Die trainierten LoRA-Ausgaben sind viel kleiner als die DreamBooth-Dateien. Dadurch sind sie leichter zu teilen, zu speichern und wiederzuverwenden.
Mehrere Konzepte: Sie können mehrere trainierte Konzepte in einem einzigen Bild kombinieren.
Für das LoRA-Training möchte ich euch drei neue Einstellungen vorstellen, die uns ermöglichen, das Modell noch besser anzupassen und die Ergebnisse zu verbessern:
Network Rank (Dimension): Diese Einstellung betrifft die Dimension des Netzwerks und beeinflusst die Komplexität des Modells. Eine höhere Dimension kann mehr Informationen aufnehmen und möglicherweise zu genaueren Ergebnissen führen. Allerdings kann dies auch zu einem höheren Ressourcenverbrauch führen.
Die Netzwerkdimensionen oder der Rang geben an, wie viele Parameter des Unet/TE trainiert werden. Die Standardeinstellung ist 4, aber für die meisten Charaktere oder Stile ist ein Wert von 64 sehr gut.
Die Dateigröße steigt ungefähr proportional zum Rang, etwa um den Faktor 1,3 MB (oder das Doppelte bei voller Präzision). Ein hypothetisches Modell mit dem aktuellen maximalen Wert von 768 würde etwa 1 GB betragen. Wenn das Modell in float precision gespeichert wird, verdoppelt sich diese Größe.
Für Charaktere ist eine Größe von 64 in der Regel ausreichend. Je "generischer" der Charakter ist, desto niedriger kann der Wert sein. Wenn es sich um ein Anime-Mädchen handelt, dessen Hauptmerkmale Gesichtsdetails, Frisur und Kleidung sind, reichen Werte von 32 oder sogar 16 aus. Für einzigartige, komplizierte oder ungewöhnliche Charaktere sind Werte von 64, 92 oder 128 besser geeignet. Aktuell zeigt sich, dass bei einem Wert von 92 abnehmende Verbesserungen zu erkennen sind, und 128 ist bereits etwas übertrieben. Ich finde, dass 64 für Pokemon und Cartoon-Charaktere gut ausreicht.
Stile hingegen können größere Größen verwenden, wobei es eine gewisse Korrelation zwischen der Anzahl der Bilder und dem endgültigen Wert gibt. Mit wenigen Bildern können Werte von 64 oder 92 ausreichen. Mit 10.000+ Bildern kann man es mit einem Wert von 128 probieren. Es ist jedoch nicht ratsam, bis zu 256 zu gehen, es sei denn, du verwendest Bildersätze im Millionenbereich. Es ist jedoch möglich, mit sehr wenigen Bildern und einem kleinen Rang einen Stil zu trainieren, daher ist es besser, sich bei Unsicherheit eher für niedrigere Werte zu entscheiden.
Für Concepts hingegen kannst du einen niedrigen Wert setzen. Einfache Kleidung, Posen und Hintergründe, die nicht sehr kompliziert sind, können mit Network Rank von 8 trainiert werden.
Achtung: Niedrigere Ränge und Alpha-Werte erfordern eine höhere Lernrate, um eine äquivalente Detailgenauigkeit zu erreichen. Adaptive Optimierer kümmern sich automatisch darum, füge einfach ein oder zwei zusätzliche Epochen hinzu. Solltest du aber manuelle Lernraten verwenden, erhöhe besser die Lernrate.
Network Alpha ist im Grunde eine Art Bremse oder Dämpfer für das Lernen. Es steht immer in Relation zum Wert des Network Rank.
Es wird verwendet, um die Gewichte (die eigentlichen Daten des Modells) beim Speichern zu skalieren, indem sie mit (alpha/ Network Rank) multipliziert werden. Dadurch sollen Rundungsfehler vermieden werden, die dazu führen könnten, dass einige der Gewichte auf null gesetzt werden.
Wenn du den Wert auf 0 setzt oder denselben Wert wie des Network Rank verwendest, wird der Dämpfer deaktiviert. Der Standardwert ist 1, was das Lernen deutlich dämpft, daher sind mehr Schritte oder höhere Lernraten erforderlich, um dies auszugleichen. Der maximale Wert entspricht dem Wert des Network Rank. Höhere Werte sind erlaubt, aber die Ausgabe wird dadurch übersteuert.
Schau, welche Werte sich ergeben, wenn du einen Wert von 128 für den Network Rank wählst:
Alpha 0 = Alpha 128 = 128/128 = x1
Alpha 1 = 1/128 = x0.0078125
Alpha 64 = 64/128 = x0.5
Alpha 128 = 128/128 = x1
Alpha 256 = 256/128 = x2
Unet Learning Rate: Diese Einstellung beeinflusst, wie schnell das Unet-Teil des Modells lernt. Eine höhere Lernrate kann das Training beschleunigen, aber es besteht auch die Gefahr, dass das Modell nicht konvergiert oder instabil wird. Du solltest hier vorsichtig sein und die Lernrate entsprechend anpassen, um optimale Ergebnisse zu erzielen.
Das Unet fungiert einfach erklärt wie eine grobe Art des visuellen Gedächtnisses. Es enthält auch einige Informationen darüber, wie die Elemente, die es lernt, miteinander in Beziehung stehen und ihre Position in einer Struktur.
Der Unet kann leicht übersteuern, daher kann es sein, dass die Ergebnisse entweder über- oder unterangepasst sind, wenn etwas seltsam aussieht. Der Spielraum für ein gutes Ergebnis ist eng und die "gute Zone" variiert von Satz zu Satz,der perfekte Wert ist sehr schwer zu bestimmen.
Der Standardwert ist 1e-4 (0,0001).
Wenn dein Modell überangepasst erscheint, hat es möglicherweise die Unet zu aggressiv trainiert. Dies kannst du mit einer geringeren Lernrate oder weniger Schritten, einer Verringerung von Alpha oder der Verwendung anderer Dämpfer lösen.
Wenn dein Modell reine Klumpen von visuellem Rauschen ausgibt (nicht "etwas klumpig", sondern buchstäblich unverständliche Massen von nichts Besonderem), hast du es viel zu hoch eingestellt. Teile es mindestens durch 8, du hast wahrscheinlich eine Null oder etwas ähnliches übersehen.
Wenn dein Modell zu schwach erscheint und feine Details nicht reproduzieren kann, könnte es zu niedrig sein oder mehr Schritte erfordern.
Das Unet ist, argumentativ betrachtet, der komplexeste Teil des gesamten Prozesses. Es enthält die Planung der Bilder sowie Informationen über Farbe und Textur.
Stell es dir als eine Art fortschreitende Detailierung vor. Zuerst bekommst du einen Planeten, darin gibt es Kontinente, die Länder, dann Staaten oder Provinzen, dann Städte, dann Straßen und so weiter. Es beginnt mit etwas, das als "verschwommene Silhouette" beschrieben werden kann (denke an die Dinge, die du am Anfang der Vorschau siehst, wenn die Generierung läuft) und fügt mehr und mehr Details hinzu, wenn es "voranschreitet". Für eine Person wäre es eine allgemeine Pose-Basis und dann beginnt es zu "hereinzoomen", bis es zu Pixeln wird. Deshalb funktionieren niedrigere Auflösungen für feine Details nicht so gut, da es mehr Raum hat, wenn du eine höhere Auflösung wählst. Deshalb fixiert oder repariert es Gesichter bei höheren Auflösungen und macht sie realistischer.
Indem wir diese Einstellungen anpassen, haben wir die Möglichkeit, die Leistungsfähigkeit unseres LoRA-Modells zu maximieren und beeindruckende Bildergebnisse zu erzielen. Lasst uns mutig experimentieren und das volle Potenzial von LoRA ausschöpfen!
Zusammenfassung der empfohlenen Start-Einstellungen für‘s LoRA- Charakter -Training:
Training Batch Size: Behalte es bei 1, es sei denn, du hast genügend VRAM.
Mixed Precision: Setze es auf fp16, es sei denn, du hast eine 30xx oder 40xx GPU, dann auf bf16.
Save Precision: fp16, mit denselben Einschränkungen wie bei Mixed Precision oben.
Cache Latents: Deaktiviet
Learning Rate, Text Encoder Learning Rate, Unet Learning Rate: Lasse die Standardeinstellungen (0.0001, 0.00005 bzw. 0.0001)fürs erste unverändert
Optimizer: AdamW8bit
Network Rank: Setze es zwischen 96 und 128.
Network Alpha: Setze es auf etwa die Hälfte des Network Rank.
Enable Buckets: aktiviert, wenn deine Bilder nicht die gleiche Größe haben.
Shuffle Caption: Aktivieren
Noise Offset: 0.1
Rate of Caption Dropout: 0.1
Sample Every n Steps: 50.
Sample Prompts: Verwende einfach das Format: "Triggerwort, a photo of a class "
In unserem Fall "Eiw, a photo of a woman"
Als Ergänzung von omolsch, : Im Sample gehen mehrere Zeilen für mehrere Samples. Fügt hier eine Zeile hinzu, die den Output stark verändert (bspw. "with pink neon hair" oder "painted by Tomer Hanuka" (inspiriert von SECourses)). Dann sieht man in den Samples sofort wenn das Training overfitted (dann sind die Haare nicht mehr Pink, oder das Bild ist kein gemaltes Bild mehr in diesem Beispiel).
Save every N steps: Du kannst dies auf 300-600 setzen.
LoRa training Tips:
Behalte den "Samples"-Ordner unter "Model" im Auge, um zu sehen, wie das Training fortschreitet. Anfangs werden dort Bilder erscheinen, die dem Objekt überhaupt nicht ähneln, aber allmählich wird sich das Training annähern und verbessern.
Vorausgesetzt, alles lief gut, speichere die Einstellungen, die funktioniert haben, indem du das Dropdown-Menü "Dreambooth LoRA > Configuration File" oben auf der Seite verwendest. Dadurch wird eine JSON-Datei erstellt, die du beim nächsten Mal laden und relevante Einstellungen ändern kannst (z. B. Ordner, Namen des Modells usw.), anstatt dich an alle Einstellungen erinnern zu müssen.
Testen der Modelle:
Warum Testen?
Das Testen ist von großer Bedeutung aufgrund der zufälligen Natur der KI-Bildgebung. Erste Eindrücke können irreführend sein. Dein Modell könnte rein zufällig 3 großartige Bilder generieren, sodass du denkst, es funktioniert gut, aber später könntest du auf Probleme stoßen. Gleichzeitig könnte es auch zu Beginn schlechte Bilder erzeugen.
Deshalb ist es wichtig, deine Modelle gründlich zu testen und viele verschiedene Prompt Kombinationen und andere Ergänzungen auszuprobieren, um zu sehen, wie das Modell tatsächlich funktioniert.
XY-Plots oder Chargen von etwa 5 Bildern können den Testprozess beschleunigen.
XY-Plot-Tests zu verschiedenen Epochen können sehr hilfreich sein. Probiere eine Vielzahl von Szenarien, Posen, Kleidungsstücken und Gesichtsausdrücken aus. Speicher dir am besten eine Liste von Prompts ab, die du beim Testen einfach kopiest und einfügst.
Darüber hinaus zeigt die KI im Laufe der Zeit amüsante oder unerwartete Eigenheiten, die auf den ersten Blick nicht offensichtlich sind, meistens aufgrund einiger verirrter oder fehlender Tags. Anzeichen von Overfitting sind möglicherweise auch nicht sofort erkennbar.
Mit anderen Worten, du möchtest verlässliche Daten und Ergebnisse haben. Nimm erste Eindrücke nicht zu ernst, da sie stark vom Zufall beeinflusst sind. Ändere einige Prompts, sowohl positive als auch negative, und sei bereit, deine Prompts anzupassen, um die besten Ergebnisse zu erzielen. Ich habe bereits Modelle bekommen, die auf den ersten Blick schlecht aussahen, sich aber als ziemlich gut herausstellten, sobald ich meine Prompts etwas angepasst habe.
LoRa Strength test:
Die Stärke (Strenght) deines LoRA-Modells sollte normalerweise bei 1.0 liegen, um gute Ergebnisse zu erzielen. Wenn du den Wert senken musst, um die Qualität der Bilder zu verbessern, könnte es sein, dass dein Modell entweder Overfitting oder eine unzureichendes Training aufweist.
Wenn du die Stärke erhöhen musst, um die Effekte deines Modells deutlicher zu sehen, kann es sein, dass du noch Platz für weiteres Training oder eine höhere Lernrate hast. Letztendlich hängt es davon ab, wie zufriedenstellend die Ergebnisse sind.
Beachte, dass dies nicht für "control slider" LoRa’s gilt, da sie die Stärke als Effektverstärker nutzen.
Probiere verschiedene Einstellungen aus, um das bestmögliche Ergebnis zu erzielen.
Manchmal kann eine kleine Anpassung große Auswirkungen haben.
Teste dein LoRa Model mit verschiedenen Checkpoints:
Das Testen deines Modells mit mehreren Checkpoints ist ein wichtiger Schritt, um sicherzustellen, dass es in verschiedenen Konfigurationen gut funktioniert. Manchmal kann es sein, dass ein Modell in bestimmten Previews oder Einstellungen gut aussieht, aber in deiner spezifischen Konfiguration nicht die gleichen Ergebnisse liefert.
Wenn du dein Modell öffentlich zugänglich machen möchtest, ist es ratsam, es mit beliebten Checkpoints zu testen, um zu sehen, wie es sich verhält. Die Menge an Mischung im Modell kann die Ergebnisse beeinflussen, und du musst möglicherweise die Stärke oder Gewichtung bestimmter Tags anpassen, um ein gutes Ergebnis zu erzielen.
Falls du feststellst, dass das Modell am besten mit einem bestimmten Checkpoint funktioniert, ist es hilfreich, diese Information in der Beschreibung des Modells anzugeben, um Klarheit zu schaffen.
Manchmal kann es trotz Tests und Anpassungen vorkommen, dass das Modell nicht wie erwartet funktioniert. In solchen Fällen ist es wichtig anzuerkennen, dass es möglicherweise Unterschiede oder Einschränkungen gibt, die auf verschiedene Trainingsparameter oder Checkpoints zurückzuführen sind.
Overfitting:
Ein Modell wird "overfit", wenn es versucht, die Trainingsbilder zu aggressiv zu reproduzieren oder wenn die Ergebnisse seltsam werden. Dies wird normalerweise durch das "Burnout" des Unet verursacht
Overfitting tritt normalerweise auf, wenn du zu lange trainierst oder eine zu hohe Lernrate verwendest.
Um verschiedene Epochen zu überprüfen, folge diesen Schritten:
Stelle sicher, dass du bei jeder Epoche einen Speicherpunkt erstellst.
Erstelle ein XY-Plot mit einer Suchen-und-Ersetzen-Funktion.
Verwende in deinem Prompt ein Schlüsselwort wie "LORA" und lass den XY-Plot dieses Schlüsselwort durch das Aktivierungstoken deines LORA mit Stärke 1.0 ersetzen (z. B. " <lora:Eiw_LoRa:1>" oder " <lora:Eiw_LoRa-000001:1>", passe es an die Dateinamen deines Modells an). Führe dann diesen Plot aus, um zu sehen, wie sich das Modell bei jedem Schritt entwickelt. Die natürliche Entwicklung sollte von "keine Wirkung" (erster Plot mit "LORA", was für die KI nichts bedeutet) zu einer zunehmenden Ähnlichkeit mit einem Charakter oder Stil führen.
An diesem Punkt könntest du feststellen, dass z. B. Epoche 4/5 bereits gut funktioniert und bereit ist. Dann musst du nichts weiter tun, sondern behalte einfach den Gewinner.
Wenn es immer overfitted ist, sogar von Anfang an, überprüfe deine Lernrate oder verwende einen adaptiven Optimierer wie DAdaptAdam, DAdaptLion oder Prodigy, da diese sie automatisch anpassen.
Du könntest auch eine zu hohe Net Dim oder Alpha höher als Net Dim haben (Alpha sollte niemals höher als Rank sein!).
Wenn es selbst dann noch overfitted ist und du auf etwas trainierst, das nicht NAI oder base SD ist, versuche, von diesen zu trainieren. Einige Mischungen sind möglicherweise nicht für das Training geeignet.
Wenn nichts anderes funktioniert, hast du vielleicht zu viele Bilder oder Bilder, die das Modell beeinträchtigen, oder dein Rank ist zu niedrig, um alle Bilder korrekt zu verarbeiten.
Der Artikel ist ein Auszug aus dem Buch: Stable Diffusion - Ein umfassender Leitfaden über Bildgenerierung und Modelltraining. Das Buch ist für Kindle Unlimited Abonnenten kostenlos verfügbar. Amazon_Link