Dieses Repository stellt in erster Linie eine Gradio-GUI für die Stable Diffusion-Trainer von Kohya bereit. Allerdings wird auch durch Community-Beiträge Unterstützung für das Linux-Betriebssystem angeboten. Die macOS-Unterstützung ist derzeit nicht optimal, könnte aber funktionieren, wenn die Bedingungen günstig sind.
Über die GUI können Sie die Trainingsparameter festlegen und die erforderlichen CLI-Befehle generieren und ausführen, um das Modell zu trainieren.
Kohyas GUI
Seitendateilimit
Kein Modul namens tkinter
LORA-Schulung zum TESLA V100 – Problem mit der GPU-Auslastung
Zusammenfassung des Problems
Mögliche Lösungen
Starten der GUI unter Windows
Starten der GUI unter Linux und macOS
Windows-Upgrade
Linux- und macOS-Upgrade
Windows
Linux und macOS
Runpod
Docker
Windows-Voraussetzungen
Windows einrichten
Optional: CUDNN 8.9.6.50
Linux-Voraussetzungen
Linux einrichten
Installationsort
Manuelle Installation
Vorgefertigte Runpod-Vorlage
Windows
Linux, OSX
Machen Sie Ihren Docker bereit für die GPU-Unterstützung
Design unserer Docker-Datei
Verwenden Sie das vorgefertigte Docker-Image
Lokaler Docker-Build
Ashleykleynhans Runpod Docker-Builds
Inhaltsverzeichnis
? Colab
Installation
Upgrade
GUI-Dienst starten
Benutzerdefinierte Pfadstandards
LoRA
Beispielbildgenerierung während des Trainings
Fehlerbehebung
SDXL-Schulung
Maskierter Verlust
Änderungsverlauf
Dieses Colab-Notizbuch wurde nicht von mir erstellt oder gepflegt; es scheint jedoch effektiv zu funktionieren. Die Quelle finden Sie unter: https://github.com/camenduru/kohya_ss-colab.
Ich möchte Camendutu meinen Dank für seinen wertvollen Beitrag aussprechen. Wenn Sie auf Probleme mit dem Colab-Notizbuch stoßen, melden Sie diese bitte im entsprechenden Repository.
Colab | Info |
---|---|
kohya_ss_gui_colab |
Um die notwendigen Abhängigkeiten auf einem Windows-System zu installieren, gehen Sie folgendermaßen vor:
Installieren Sie Python 3.10.11.
Stellen Sie während des Installationsvorgangs sicher, dass Sie die Option zum Hinzufügen von Python zur Umgebungsvariablen „PATH“ auswählen.
Installieren Sie das CUDA 11.8-Toolkit.
Installieren Sie Git.
Installieren Sie Visual Studio 2015, 2017, 2019 und 2022 Redistributable.
Um das Projekt einzurichten, gehen Sie folgendermaßen vor:
Öffnen Sie ein Terminal und navigieren Sie zum gewünschten Installationsverzeichnis.
Klonen Sie das Repository, indem Sie den folgenden Befehl ausführen:
git clone --recursive https://github.com/bmaltais/kohya_ss.git
Wechseln Sie in das Verzeichnis kohya_ss
:
cd kohya_ss
Führen Sie eines der folgenden Setup-Skripts aus, indem Sie den folgenden Befehl ausführen:
Für Systeme, auf denen nur Python 3.10.11 installiert ist:
.setup.bat
Für Systeme, auf denen nur mehr als eine Python-Version installiert ist:
.setup-3.10.bat
Verwenden Sie während des Schritts „Konfiguration beschleunigen“ die bei der Konfiguration vorgeschlagenen Standardwerte, sofern Sie nicht wissen, dass Ihre Hardware etwas anderes erfordert. Die Menge an VRAM auf Ihrer GPU hat keinen Einfluss auf die verwendeten Werte.
Die folgenden Schritte sind optional, verbessern jedoch die Lerngeschwindigkeit für Besitzer von NVIDIA 30X0/40X0-GPUs. Diese Schritte ermöglichen größere Trainingsstapelgrößen und schnellere Trainingsgeschwindigkeiten.
Führen Sie .setup.bat
aus und wählen Sie 2. (Optional) Install cudnn files (if you want to use the latest supported cudnn version)
.
Um die erforderlichen Abhängigkeiten auf einem Linux-System zu installieren, stellen Sie sicher, dass Sie die folgenden Anforderungen erfüllen:
Stellen Sie sicher, dass venv
-Unterstützung vorinstalliert ist. Sie können es unter Ubuntu 22.04 mit dem folgenden Befehl installieren:
apt install python3.10-venv
Installieren Sie das CUDA 11.8 Toolkit, indem Sie den Anweisungen unter diesem Link folgen.
Stellen Sie sicher, dass auf Ihrem System Python-Version 3.10.9 oder höher (jedoch niedriger als 3.11.0) installiert ist.
Um das Projekt unter Linux oder macOS einzurichten, führen Sie die folgenden Schritte aus:
Öffnen Sie ein Terminal und navigieren Sie zum gewünschten Installationsverzeichnis.
Klonen Sie das Repository, indem Sie den folgenden Befehl ausführen:
git clone --recursive https://github.com/bmaltais/kohya_ss.git
Wechseln Sie in das Verzeichnis kohya_ss
:
cd kohya_ss
Wenn Sie auf Berechtigungsprobleme stoßen, machen Sie das Skript setup.sh
ausführbar, indem Sie den folgenden Befehl ausführen:
chmod +x ./setup.sh
Führen Sie das Setup-Skript aus, indem Sie den folgenden Befehl ausführen:
./setup.sh
Hinweis: Wenn Sie zusätzliche Optionen oder Informationen zur Runpod-Umgebung benötigen, können Sie setup.sh -h
oder setup.sh --help
verwenden, um die Hilfemeldung anzuzeigen.
Der Standardinstallationsort unter Linux ist das Verzeichnis, in dem sich das Skript befindet. Wenn an diesem Speicherort eine frühere Installation erkannt wird, wird das Setup dort fortgesetzt. Andernfalls wird die Installation auf /opt/kohya_ss
zurückgreifen. Wenn /opt
nicht beschreibbar ist, ist der Fallback-Speicherort $HOME/kohya_ss
. Wenn schließlich keine der vorherigen Optionen möglich ist, wird die Installation im aktuellen Verzeichnis durchgeführt.
Bei macOS und anderen Nicht-Linux-Systemen versucht der Installationsprozess, das vorherige Installationsverzeichnis basierend auf dem Ort zu erkennen, an dem das Skript ausgeführt wird. Wenn keine frühere Installation gefunden wird, ist der Standardspeicherort $HOME/kohya_ss
. Sie können dieses Verhalten außer Kraft setzen, indem Sie beim Ausführen des Setup-Skripts mit der Option -d
oder --dir
ein benutzerdefiniertes Installationsverzeichnis angeben.
Wenn Sie sich für die Verwendung des interaktiven Modus entscheiden, lauten die Standardwerte für den Beschleunigungskonfigurationsbildschirm „Diese Maschine“, „Keine“ und „Nein“ für die verbleibenden Fragen. Diese Standardantworten sind dieselben wie bei der Windows-Installation.
Gehen Sie folgendermaßen vor, um die erforderlichen Komponenten für Runpod zu installieren und kohya_ss auszuführen:
Wählen Sie die Vorlage „Runpod pytorch 2.0.1“ aus. Das ist wichtig. Andere Vorlagen funktionieren möglicherweise nicht.
SSH in den Runpod.
Klonen Sie das Repository, indem Sie den folgenden Befehl ausführen:
cd /workspace git clone --recursive https://github.com/bmaltais/kohya_ss.git
Führen Sie das Setup-Skript aus:
cd kohya_ss ./setup-runpod.sh
Führen Sie die GUI aus mit:
./gui.sh --share --headless
oder damit, wenn Sie 7860 direkt über die Runpod-Konfiguration verfügbar machen:
./gui.sh --listen=0.0.0.0 --headless
Stellen Sie eine Verbindung zur öffentlichen URL her, die nach Abschluss des Installationsvorgangs angezeigt wird.
Um von einer vorgefertigten Runpod-Vorlage aus zu laufen, können Sie:
Öffnen Sie die Runpod-Vorlage, indem Sie auf https://runpod.io/gsc?template=ya6013lj5a&ref=w18gds2n klicken.
Stellen Sie die Vorlage auf dem gewünschten Host bereit.
Stellen Sie nach der Bereitstellung eine Verbindung zum Runpod über HTTP 3010 her, um auf die kohya_ss-GUI zuzugreifen. Sie können sich auch über HTTP 3000 mit auto1111 verbinden.
Sobald Sie Docker Desktop , CUDA Toolkit und NVIDIA Windows Driver installiert und sichergestellt haben, dass Ihr Docker mit WSL2 läuft, können Sie loslegen.
Hier ist die offizielle Dokumentation als weitere Referenz.
https://docs.nvidia.com/cuda/wsl-user-guide/index.html#nvidia-compute-software-support-on-wsl-2 https://docs.docker.com/desktop/wsl/use -wsl/#gpu-support
Installieren Sie einen NVIDIA GPU-Treiber, falls Sie noch keinen installiert haben.
https://docs.nvidia.com/datacenter/tesla/tesla-installation-notes/index.html
Installieren Sie das NVIDIA Container Toolkit mit dieser Anleitung.
https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html
Es ist erforderlich, dass alle Trainingsdaten im Unterverzeichnis dataset
gespeichert werden, das im Container unter /dataset
bereitgestellt wird.
Bitte beachten Sie, dass die Dateiauswahlfunktion nicht verfügbar ist. Stattdessen müssen Sie den Ordnerpfad und den Pfad der Konfigurationsdatei manuell eingeben.
TensorBoard wurde vom Projekt getrennt.
TensorBoard ist nicht im Docker-Image enthalten.
Die Schaltfläche „TensorBoard starten“ wurde ausgeblendet.
TensorBoard wird wie hier gezeigt aus einem bestimmten Container gestartet.
Der Browser wird nicht automatisch gestartet. Sie müssen den Browser manuell öffnen und zu http://localhost:7860/ und http://localhost:6006/ navigieren.
Diese Docker-Datei wurde so konzipiert, dass sie leicht entsorgt werden kann. Sie können den Container jederzeit verwerfen und mit der neuen Codeversion neu starten.
git clone --recursive https://github.com/bmaltais/kohya_ss.gitcd kohya_ss Docker komponieren -d
Um das System zu aktualisieren, führen Sie docker compose down && docker compose up -d --pull always
Wichtig
Klonen Sie das Git-Repository rekursiv , um Submodule einzuschließen:
git clone --recursive https://github.com/bmaltais/kohya_ss.git
git clone --recursive https://github.com/bmaltais/kohya_ss.gitcd kohya_ss Docker komponiert -d --build
Notiz
Die Erstellung des Images kann bis zu 20 Minuten dauern.
Um das System zu aktualisieren, checken Sie es auf die neue Codeversion aus und erstellen Sie es mit docker compose down && docker compose up -d --build --pull always
Wenn Sie unter Linux arbeiten, steht hier ein alternativer Docker-Container-Port mit weniger Einschränkungen zur Verfügung.
Möglicherweise möchten Sie bei der Ausführung auf Runpod die folgenden Repositorys verwenden:
Eigenständige Kohya_ss-Vorlage: https://github.com/ashleykleynhans/kohya-docker
Auto1111 + Kohya_ss GUI-Vorlage: https://github.com/ashleykleynhans/stable-diffusion-docker
Um Ihre Installation auf eine neue Version zu aktualisieren, befolgen Sie die nachstehenden Anweisungen.
Wenn eine neue Version verfügbar wird, können Sie Ihr Repository aktualisieren, indem Sie die folgenden Befehle im Stammverzeichnis des Projekts ausführen:
Rufen Sie die neuesten Änderungen aus dem Repository ab:
Git Pull
Führen Sie das Setup-Skript aus:
.setup.bat
Um Ihre Installation unter Linux oder macOS zu aktualisieren, befolgen Sie diese Schritte:
Öffnen Sie ein Terminal und navigieren Sie zum Stammverzeichnis des Projekts.
Rufen Sie die neuesten Änderungen aus dem Repository ab:
Git Pull
Alles aktualisieren und aktualisieren:
./setup.sh
Um den GUI-Dienst zu starten, können Sie die bereitgestellten Skripte verwenden oder das Skript kohya_gui.py
direkt ausführen. Verwenden Sie die unten aufgeführten Befehlszeilenargumente, um den zugrunde liegenden Dienst zu konfigurieren.
--listen: Specify the IP address to listen on for connections to Gradio.
--username: Set a username for authentication.
--password: Set a password for authentication.
--server_port: Define the port to run the server listener on.
--inbrowser: Open the Gradio UI in a web browser.
--share: Share the Gradio UI.
--language: Set custom language
Unter Windows können Sie entweder das Skript gui.ps1
oder gui.bat
verwenden, das sich im Stammverzeichnis befindet. Wählen Sie das Skript aus, das Ihren Wünschen entspricht, und führen Sie es in einem Terminal aus und geben Sie dabei die gewünschten Befehlszeilenargumente an. Hier ist ein Beispiel:
gui.ps1 --listen 127.0.0.1 --server_port 7860 --inbrowser --share
oder
gui.bat --listen 127.0.0.1 --server_port 7860 --inbrowser --share
Um die GUI unter Linux oder macOS zu starten, führen Sie das gui.sh
-Skript aus, das sich im Stammverzeichnis befindet. Geben Sie die gewünschten Befehlszeilenargumente wie folgt an:
gui.sh --listen 127.0.0.1 --server_port 7860 --inbrowser --share
Das Repository stellt jetzt eine Standardkonfigurationsdatei mit dem Namen config.toml
bereit. Bei dieser Datei handelt es sich um eine Vorlage, die Sie an Ihre Bedürfnisse anpassen können.
Gehen Sie folgendermaßen vor, um die Standardkonfigurationsdatei zu verwenden:
Kopieren Sie die Datei config example.toml
aus dem Stammverzeichnis des Repositorys nach config.toml
.
Öffnen Sie die Datei config.toml
in einem Texteditor.
Ändern Sie die Pfade und Einstellungen entsprechend Ihren Anforderungen.
Mit diesem Ansatz können Sie die Konfiguration einfach an Ihre spezifischen Anforderungen anpassen, um die gewünschten Standardordner für jeden in der GUI unterstützten Ordner-/Dateieingabetyp zu öffnen.
Sie können den Pfad zu Ihrer config.toml (oder einen beliebigen anderen Namen) angeben, wenn Sie die GUI ausführen. Zum Beispiel: ./gui.bat --config c:my_config.toml
Um eine LoRA zu trainieren, können Sie derzeit den train_network.py
-Code verwenden. Sie können ein LoRA-Netzwerk erstellen, indem Sie die All-in-One-GUI verwenden.
Sobald Sie das LoRA-Netzwerk erstellt haben, können Sie Bilder mit auto1111 generieren, indem Sie diese Erweiterung installieren.
Eine Eingabeaufforderungsdatei könnte beispielsweise so aussehen:
# prompt 1Meisterwerk, beste Qualität, (1Mädchen), in weißen Hemden, Oberkörper, Blick auf den Betrachter, einfacher Hintergrund –n niedrige Qualität, schlechteste Qualität, schlechte Anatomie, schlechte Komposition, schlecht, geringer Aufwand –w 768 –h 768 --d 1 --l 7,5 --s 28# prompt 2Meisterwerk, beste Qualität, 1Junge, im Business-Anzug, auf der Straße stehend, zurückblickend --n (niedrige Qualität, schlechteste Qualität), schlechte Anatomie, schlechte Komposition, schlecht , geringer Aufwand – B 576 – H 832 – T 2 – L 5,5 – S 40
Zeilen, die mit #
beginnen, sind Kommentare. Sie können Optionen für das generierte Bild mit Optionen wie --n
nach der Eingabeaufforderung angeben. Folgende Optionen können genutzt werden:
--n
: Negative Eingabeaufforderung bis zur nächsten Option.
--w
: Gibt die Breite des generierten Bildes an.
--h
: Gibt die Höhe des generierten Bildes an.
--d
: Gibt den Startwert des generierten Bildes an.
--l
: Gibt den CFG-Maßstab des generierten Bildes an.
--s
: Gibt die Anzahl der Schritte in der Generierung an.
Die Eingabeaufforderungsgewichtung wie ( )
und [ ]
funktioniert.
Wenn Sie auf Probleme stoßen, lesen Sie die folgenden Schritte zur Fehlerbehebung.
Wenn im Zusammenhang mit der Auslagerungsdatei ein X-Fehler auftritt, müssen Sie möglicherweise die Größenbeschränkung für die Auslagerungsdatei in Windows erhöhen.
Wenn Sie auf eine Fehlermeldung stoßen, die darauf hinweist, dass das Modul tkinter
nicht gefunden wurde, versuchen Sie, Python 3.10 auf Ihrem System neu zu installieren.
Beim Training von LORA auf einem TESLA V100 berichteten Benutzer von einer geringen GPU-Auslastung. Darüber hinaus gab es Schwierigkeiten, andere GPUs als die Standard-GPUs für das Training anzugeben.
GPU-Auswahl: Benutzer können GPU-IDs in der Setup-Konfiguration angeben, um die gewünschten GPUs für das Training auszuwählen.
Verbessern der GPU-Auslastung: Die Verwendung adamW8bit
Optimierers und die Erhöhung der Stapelgröße können dazu beitragen, eine GPU-Auslastung von 70–80 % zu erreichen, ohne die GPU-Speichergrenzen zu überschreiten.
Die Dokumentation in diesem Abschnitt wird später in ein separates Dokument verschoben.
Der maskierte Verlust wird in jedem Trainingsskript unterstützt. Um den maskierten Verlust zu aktivieren, geben Sie die Option --masked_loss
an.
Die Funktion ist noch nicht vollständig getestet, daher kann es zu Fehlern kommen. Wenn Sie Probleme finden, öffnen Sie bitte ein Problem.
Der ControlNet-Datensatz wird zur Angabe der Maske verwendet. Die Maskenbilder sollten RGB-Bilder sein. Der Pixelwert 255 im R-Kanal wird als Maske behandelt (der Verlust wird nur für die Pixel mit der Maske berechnet) und 0 wird als Nichtmaske behandelt. Die Pixelwerte 0–255 werden in 0–1 umgewandelt (dh der Pixelwert 128 wird als halbes Gewicht des Verlusts behandelt). Einzelheiten zur Datensatzspezifikation finden Sie in der LLLite-Dokumentation.
Siehe Release-Informationen.