Ce référentiel fournit principalement une interface graphique Gradio pour les entraîneurs Stable Diffusion de Kohya. Cependant, la prise en charge du système d'exploitation Linux est également proposée via les contributions de la communauté. La prise en charge de macOS n'est pas optimale pour le moment mais pourrait fonctionner si les conditions sont favorables.
L'interface graphique vous permet de définir les paramètres d'entraînement, ainsi que de générer et d'exécuter les commandes CLI requises pour entraîner le modèle.
L'interface graphique de Kohya
Limite de fichier d'échange
Aucun module appelé tkinter
Formation LORA sur TESLA V100 - Problème d'utilisation du GPU
Résumé du problème
Solutions potentielles
Lancement de l'interface graphique sous Windows
Lancement de l'interface graphique sur Linux et macOS
Mise à niveau Windows
Mise à niveau Linux et macOS
Fenêtres
Linux et macOS
Runpod
Docker
Pré-requis Windows
Configuration des fenêtres
Facultatif : CUDNN 8.9.6.50
Pré-requis Linux
Installer Linux
Emplacement d'installation
Installation manuelle
Modèle Runpod prédéfini
Fenêtres
Linux, OSX
Préparez votre Docker pour la prise en charge du GPU
Conception de notre Dockerfile
Utiliser l'image Docker prédéfinie
Construction de docker local
Ashleykleynhans runpod docker construit
Table des matières
? Colab
Installation
Mise à niveau
Démarrage du service GUI
Valeurs par défaut du chemin personnalisé
LoRA
Génération d’images d’échantillon pendant la formation
Dépannage
Formation SDXL
Perte masquée
Historique des modifications
Ce carnet Colab n'a pas été créé ou maintenu par moi ; cependant, il semble fonctionner efficacement. La source peut être trouvée sur : https://github.com/camenduru/kohya_ss-colab.
Je tiens à exprimer ma gratitude à camendutu pour sa précieuse contribution. Si vous rencontrez des problèmes avec le notebook Colab, veuillez les signaler sur leur référentiel.
Colab | Informations |
---|---|
kohya_ss_gui_colab |
Pour installer les dépendances nécessaires sur un système Windows, suivez ces étapes :
Installez Python 3.10.11.
Pendant le processus d'installation, assurez-vous de sélectionner l'option permettant d'ajouter Python à la variable d'environnement « PATH ».
Installez la boîte à outils CUDA 11.8.
Installez Git.
Installez le redistribuable Visual Studio 2015, 2017, 2019 et 2022.
Pour configurer le projet, suivez ces étapes :
Ouvrez un terminal et accédez au répertoire d'installation souhaité.
Clonez le dépôt en exécutant la commande suivante :
git clone --récursif https://github.com/bmaltais/kohya_ss.git
Accédez au répertoire kohya_ss
:
cd kohya_ss
Exécutez l'un des scripts d'installation suivants en exécutant la commande suivante :
Pour les systèmes sur lesquels python 3.10.11 est installé :
.setup.bat
Pour les systèmes sur lesquels plusieurs versions de Python sont installées :
.setup-3.10.bat
Au cours de l'étape de configuration accélérée, utilisez les valeurs par défaut proposées lors de la configuration, sauf si vous connaissez les exigences matérielles du contraire. La quantité de VRAM sur votre GPU n'a pas d'impact sur les valeurs utilisées.
Les étapes suivantes sont facultatives mais amélioreront la vitesse d'apprentissage pour les propriétaires de GPU NVIDIA 30X0/40X0. Ces étapes permettent d’obtenir des lots d’entraînement plus grands et des vitesses d’entraînement plus rapides.
Exécutez .setup.bat
et sélectionnez 2. (Optional) Install cudnn files (if you want to use the latest supported cudnn version)
.
Pour installer les dépendances nécessaires sur un système Linux, assurez-vous de remplir les conditions suivantes :
Assurez-vous que la prise en charge venv
est préinstallée. Vous pouvez l'installer sur Ubuntu 22.04 à l'aide de la commande :
apt installer python3.10-venv
Installez la boîte à outils CUDA 11.8 en suivant les instructions fournies dans ce lien.
Assurez-vous que Python version 3.10.9 ou supérieure (mais inférieure à 3.11.0) est installée sur votre système.
Pour configurer le projet sous Linux ou macOS, effectuez les étapes suivantes :
Ouvrez un terminal et accédez au répertoire d'installation souhaité.
Clonez le dépôt en exécutant la commande suivante :
git clone --récursif https://github.com/bmaltais/kohya_ss.git
Accédez au répertoire kohya_ss
:
cd kohya_ss
Si vous rencontrez des problèmes d'autorisation, rendez le script setup.sh
exécutable en exécutant la commande suivante :
chmod +x ./setup.sh
Exécutez le script d'installation en exécutant la commande suivante :
./setup.sh
Remarque : Si vous avez besoin d'options ou d'informations supplémentaires sur l'environnement runpod, vous pouvez utiliser setup.sh -h
ou setup.sh --help
pour afficher le message d'aide.
L'emplacement d'installation par défaut sous Linux est le répertoire où se trouve le script. Si une installation précédente est détectée à cet emplacement, l'installation s'y poursuivra. Sinon, l'installation reviendra à /opt/kohya_ss
. Si /opt
n'est pas accessible en écriture, l'emplacement de secours sera $HOME/kohya_ss
. Enfin, si aucune des options précédentes n'est viable, l'installation sera effectuée dans le répertoire courant.
Pour macOS et autres systèmes non Linux, le processus d'installation tentera de détecter le répertoire d'installation précédent en fonction de l'endroit où le script est exécuté. Si aucune installation précédente n'est trouvée, l'emplacement par défaut sera $HOME/kohya_ss
. Vous pouvez remplacer ce comportement en spécifiant un répertoire d'installation personnalisé à l'aide de l'option -d
ou --dir
lors de l'exécution du script d'installation.
Si vous choisissez d'utiliser le mode interactif, les valeurs par défaut de l'écran de configuration accélérée seront « Cette machine », « Aucune » et « Non » pour les questions restantes. Ces réponses par défaut sont les mêmes que pour l'installation de Windows.
Pour installer les composants nécessaires pour Runpod et exécuter kohya_ss, suivez ces étapes :
Sélectionnez le modèle Runpod pytorch 2.0.1. C'est important. D'autres modèles peuvent ne pas fonctionner.
Connectez-vous en SSH au Runpod.
Clonez le dépôt en exécutant la commande suivante :
cd/espace de travail git clone --récursif https://github.com/bmaltais/kohya_ss.git
Exécutez le script d'installation :
cd kohya_ss ./setup-runpod.sh
Exécutez l'interface graphique avec :
./gui.sh --share --headless
ou avec ceci si vous exposez 7860 directement via la configuration runpod :
./gui.sh --listen=0.0.0.0 --headless
Connectez-vous à l'URL publique affichée une fois le processus d'installation terminé.
Pour exécuter à partir d'un modèle Runpod prédéfini, vous pouvez :
Ouvrez le modèle Runpod en cliquant sur https://runpod.io/gsc?template=ya6013lj5a&ref=w18gds2n.
Déployez le modèle sur l'hôte souhaité.
Une fois déployé, connectez-vous au Runpod sur HTTP 3010 pour accéder à l'interface graphique kohya_ss. Vous pouvez également vous connecter à auto1111 sur HTTP 3000.
Une fois que vous avez installé Docker Desktop , CUDA Toolkit , NVIDIA Windows Driver et assuré que votre Docker fonctionne avec WSL2 , vous êtes prêt à partir.
Voici la documentation officielle pour référence ultérieure.
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
Installez un pilote GPU NVIDIA si vous n'en avez pas déjà installé un.
https://docs.nvidia.com/datacenter/tesla/tesla-installation-notes/index.html
Installez NVIDIA Container Toolkit avec ce guide.
https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html
Il est nécessaire que toutes les données de formation soient stockées dans le sous-répertoire dataset
, qui est monté dans le conteneur à /dataset
.
Veuillez noter que la fonctionnalité de sélection de fichiers n'est pas disponible. Au lieu de cela, vous devrez saisir manuellement le chemin du dossier et le chemin du fichier de configuration.
TensorBoard a été séparé du projet.
TensorBoard n'est pas inclus dans l'image Docker.
Le bouton "Démarrer TensorBoard" a été masqué.
TensorBoard est lancé à partir d'un conteneur distinct, comme indiqué ici.
Le navigateur ne sera pas lancé automatiquement. Vous devrez ouvrir manuellement le navigateur et accéder à http://localhost:7860/ et http://localhost:6006/
Ce Dockerfile a été conçu pour être facilement jetable. Vous pouvez supprimer le conteneur à tout moment et le redémarrer avec la nouvelle version du code.
git clone --récursif https://github.com/bmaltais/kohya_ss.gitcd kohya_ss docker compose -d
Pour mettre à jour le système, faites docker compose down && docker compose up -d --pull always
Important
Clonez le dépôt Git de manière récursive pour inclure des sous-modules :
git clone --recursive https://github.com/bmaltais/kohya_ss.git
git clone --récursif https://github.com/bmaltais/kohya_ss.gitcd kohya_ss docker compose -d --build
Note
La création de l’image peut prendre jusqu’à 20 minutes.
Pour mettre à jour le système, passez à la nouvelle version du code et reconstruisez à l'aide docker compose down && docker compose up -d --build --pull always
Si vous utilisez Linux, un port de conteneur Docker alternatif avec moins de limitations est disponible ici.
Vous souhaiterez peut-être utiliser les référentiels suivants lors de l'exécution sur runpod :
Modèle Kohya_ss autonome : https://github.com/ashleykleynhans/kohya-docker
Modèle d'interface graphique Auto1111 + Kohya_ss : https://github.com/ashleykleynhans/stable-diffusion-docker
Pour mettre à niveau votre installation vers une nouvelle version, suivez les instructions ci-dessous.
Si une nouvelle version devient disponible, vous pouvez mettre à niveau votre référentiel en exécutant les commandes suivantes à partir du répertoire racine du projet :
Extrayez les dernières modifications du référentiel :
git pull
Exécutez le script d'installation :
.setup.bat
Pour mettre à niveau votre installation sous Linux ou macOS, suivez ces étapes :
Ouvrez un terminal et accédez au répertoire racine du projet.
Extrayez les dernières modifications du référentiel :
git pull
Actualisez et mettez à jour tout :
./setup.sh
Pour lancer le service GUI, vous pouvez utiliser les scripts fournis ou exécuter directement le script kohya_gui.py
. Utilisez les arguments de ligne de commande répertoriés ci-dessous pour configurer le service sous-jacent.
--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
Sous Windows, vous pouvez utiliser le script gui.ps1
ou gui.bat
situé dans le répertoire racine. Choisissez le script qui correspond à vos préférences et exécutez-le dans un terminal, en fournissant les arguments de ligne de commande souhaités. Voici un exemple :
gui.ps1 --listen 127.0.0.1 --server_port 7860 --inbrowser --share
ou
gui.bat --listen 127.0.0.1 --server_port 7860 --inbrowser --share
Pour lancer l'interface graphique sous Linux ou macOS, exécutez le script gui.sh
situé dans le répertoire racine. Fournissez les arguments de ligne de commande souhaités comme suit :
gui.sh --listen 127.0.0.1 --server_port 7860 --inbrowser --share
Le référentiel fournit désormais un fichier de configuration par défaut nommé config.toml
. Ce fichier est un modèle que vous pouvez personnaliser en fonction de vos besoins.
Pour utiliser le fichier de configuration par défaut, procédez comme suit :
Copiez le fichier config example.toml
du répertoire racine du référentiel vers config.toml
.
Ouvrez le fichier config.toml
dans un éditeur de texte.
Modifiez les chemins et les paramètres selon vos besoins.
Cette approche vous permet d'ajuster facilement la configuration en fonction de vos besoins spécifiques pour ouvrir les dossiers par défaut souhaités pour chaque type d'entrée de dossier/fichier pris en charge dans l'interface graphique.
Vous pouvez spécifier le chemin d'accès à votre config.toml (ou tout autre nom de votre choix) lors de l'exécution de l'interface graphique. Par exemple : ./gui.bat --config c:my_config.toml
Pour entraîner un LoRA, vous pouvez actuellement utiliser le code train_network.py
. Vous pouvez créer un réseau LoRA en utilisant l'interface graphique tout-en-un.
Une fois que vous avez créé le réseau LoRA, vous pouvez générer des images à l'aide d'auto1111 en installant cette extension.
Un fichier d'invite peut ressembler à ceci, par exemple :
# invite 1chef-d'œuvre, meilleure qualité, (1fille), en chemises blanches, haut du corps, regardant le spectateur, arrière-plan simple --n mauvaise qualité, pire qualité, mauvaise anatomie, mauvaise composition, médiocre, faible effort --w 768 --h 768 --d 1 --l 7.5 --s 28# invite 2chef-d'œuvre, meilleure qualité, 1garçon, en costume d'affaires, debout dans la rue, regardant en arrière --n (faible qualité, pire qualité), mauvaise anatomie, mauvaise composition, médiocre , faible effort --w 576 --h 832 --d 2 --l 5,5 --s 40
Les lignes commençant par #
sont des commentaires. Vous pouvez spécifier des options pour l'image générée avec des options telles que --n
après l'invite. Les options suivantes peuvent être utilisées :
--n
: Invite négative jusqu'à l'option suivante.
--w
: Spécifie la largeur de l'image générée.
--h
: Spécifie la hauteur de l'image générée.
--d
: Spécifie la graine de l'image générée.
--l
: Spécifie l'échelle CFG de l'image générée.
--s
: Spécifie le nombre d'étapes dans la génération.
La pondération des invites telles que ( )
et [ ]
fonctionne.
Si vous rencontrez des problèmes, reportez-vous aux étapes de dépannage ci-dessous.
Si vous rencontrez une erreur X liée au fichier d'échange, vous devrez peut-être augmenter la limite de taille du fichier d'échange dans Windows.
Si vous rencontrez une erreur indiquant que le module tkinter
n'est pas trouvé, essayez de réinstaller Python 3.10 sur votre système.
Lors de la formation de LORA sur un TESLA V100, les utilisateurs ont signalé une faible utilisation du GPU. De plus, il était difficile de spécifier des GPU autres que ceux par défaut pour la formation.
Sélection du GPU : les utilisateurs peuvent spécifier des ID de GPU dans la configuration d'installation pour sélectionner les GPU souhaités pour la formation.
Amélioration de la charge GPU : l'utilisation de l'optimiseur adamW8bit
et l'augmentation de la taille du lot peuvent aider à atteindre 70 à 80 % d'utilisation du GPU sans dépasser les limites de mémoire du GPU.
La documentation de cette section sera déplacée vers un document distinct ultérieurement.
La perte masquée est prise en charge dans chaque script de formation. Pour activer la perte masquée, spécifiez l'option --masked_loss
.
La fonctionnalité n'est pas entièrement testée, il peut donc y avoir des bugs. Si vous rencontrez des problèmes, veuillez ouvrir un problème.
L'ensemble de données ControlNet est utilisé pour spécifier le masque. Les images du masque doivent être les images RVB. La valeur de pixel 255 dans le canal R est traitée comme le masque (la perte est calculée uniquement pour les pixels avec le masque) et 0 est traité comme le non-masque. Les valeurs de pixel 0 à 255 sont converties en 0 à 1 (c'est-à-dire que la valeur de pixel 128 est traitée comme la moitié du poids de la perte). Voir les détails de la spécification de l'ensemble de données dans la documentation LLLite.
Voir les informations sur la version.