Este repositorio proporciona principalmente una GUI de Gradio para los entrenadores de Difusión Estable de Kohya. Sin embargo, también se ofrece soporte para el sistema operativo Linux a través de contribuciones de la comunidad. La compatibilidad con macOS no es óptima en este momento, pero podría funcionar si las condiciones son favorables.
La GUI le permite configurar los parámetros de entrenamiento y generar y ejecutar los comandos CLI necesarios para entrenar el modelo.
GUI de Kohya
Límite de archivos de página
Ningún módulo llamado tkinter
Capacitación LORA en TESLA V100: problema de utilización de GPU
Resumen del problema
Soluciones potenciales
Iniciar la GUI en Windows
Lanzamiento de la GUI en Linux y macOS
Actualización de Windows
Actualización de Linux y macOS
ventanas
Linux y macOS
Runpod
Estibador
Requisitos previos de Windows
Configurar ventanas
Opcional: CUDNN 8.9.6.50
Requisitos previos de Linux
Configurar Linux
Ubicación de instalación
instalación manual
Plantilla Runpod prediseñada
ventanas
Linux, OSX
Prepare su Docker para la compatibilidad con GPU
Diseño de nuestro Dockerfile
Utilice la imagen de Docker prediseñada
Construcción de ventana acoplable local
compilaciones de docker runpod de ashleyklynhans
Tabla de contenido
? colaboración
Instalación
Actualización
Iniciando el servicio GUI
Valores predeterminados de ruta personalizados
lora
Generación de imágenes de muestra durante el entrenamiento.
Solución de problemas
Entrenamiento SDXL
Pérdida enmascarada
Historial de cambios
Este cuaderno de Colab no fue creado ni mantenido por mí; sin embargo, parece funcionar eficazmente. La fuente se puede encontrar en: https://github.com/camenduru/kohya_ss-colab.
Me gustaría expresar mi agradecimiento a camendutu por su valiosa contribución. Si encuentra algún problema con el cuaderno Colab, infórmelo en su repositorio.
colaboración | Información |
---|---|
kohya_ss_gui_colab |
Para instalar las dependencias necesarias en un sistema Windows, siga estos pasos:
Instale Python 3.10.11.
Durante el proceso de instalación, asegúrese de seleccionar la opción para agregar Python a la variable de entorno 'PATH'.
Instale el kit de herramientas CUDA 11.8.
Instale Git.
Instale el redistribuible de Visual Studio 2015, 2017, 2019 y 2022.
Para configurar el proyecto, siga estos pasos:
Abra una terminal y navegue hasta el directorio de instalación deseado.
Clona el repositorio ejecutando el siguiente comando:
clon de git --recursivo https://github.com/bmaltais/kohya_ss.git
Cambie al directorio kohya_ss
:
cd kohya_ss
Ejecute uno de los siguientes scripts de configuración ejecutando el siguiente comando:
Para sistemas que solo tienen instalado Python 3.10.11:
.setup.bat
Para sistemas con solo más de una versión de Python instalada:
.setup-3.10.bat
Durante el paso de aceleración de configuración, utilice los valores predeterminados propuestos durante la configuración, a menos que sepa que su hardware exige lo contrario. La cantidad de VRAM en su GPU no afecta los valores utilizados.
Los siguientes pasos son opcionales pero mejorarán la velocidad de aprendizaje para los propietarios de GPU NVIDIA 30X0/40X0. Estos pasos permiten tamaños de lotes de entrenamiento más grandes y velocidades de entrenamiento más rápidas.
Ejecute .setup.bat
y seleccione 2. (Optional) Install cudnn files (if you want to use the latest supported cudnn version)
.
Para instalar las dependencias necesarias en un sistema Linux, asegúrese de cumplir con los siguientes requisitos:
Asegúrese de que el soporte venv
esté preinstalado. Puedes instalarlo en Ubuntu 22.04 usando el comando:
apto para instalar python3.10-venv
Instale el kit de herramientas CUDA 11.8 siguiendo las instrucciones proporcionadas en este enlace.
Asegúrese de tener instalada la versión 3.10.9 o superior de Python (pero inferior a 3.11.0) en su sistema.
Para configurar el proyecto en Linux o macOS, realice los siguientes pasos:
Abra una terminal y navegue hasta el directorio de instalación deseado.
Clona el repositorio ejecutando el siguiente comando:
clon de git --recursivo https://github.com/bmaltais/kohya_ss.git
Cambie al directorio kohya_ss
:
cd kohya_ss
Si tiene problemas de permisos, haga ejecutable el script setup.sh
ejecutando el siguiente comando:
chmod +x ./setup.sh
Ejecute el script de instalación ejecutando el siguiente comando:
./setup.sh
Nota: Si necesita opciones adicionales o información sobre el entorno runpod, puede usar setup.sh -h
o setup.sh --help
para mostrar el mensaje de ayuda.
La ubicación de instalación predeterminada en Linux es el directorio donde se encuentra el script. Si se detecta una instalación anterior en esa ubicación, la instalación continuará allí. De lo contrario, la instalación recurrirá a /opt/kohya_ss
. Si no se puede escribir en /opt
, la ubicación alternativa será $HOME/kohya_ss
. Finalmente, si ninguna de las opciones anteriores es viable, la instalación se realizará en el directorio actual.
Para macOS y otros sistemas que no son Linux, el proceso de instalación intentará detectar el directorio de instalación anterior en función de dónde se ejecuta el script. Si no se encuentra una instalación anterior, la ubicación predeterminada será $HOME/kohya_ss
. Puede anular este comportamiento especificando un directorio de instalación personalizado usando la opción -d
o --dir
al ejecutar el script de instalación.
Si elige utilizar el modo interactivo, los valores predeterminados para la pantalla de configuración acelerada serán "Esta máquina", "Ninguna" y "No" para las preguntas restantes. Estas respuestas predeterminadas son las mismas que las de la instalación de Windows.
Para instalar los componentes necesarios para Runpod y ejecutar kohya_ss, siga estos pasos:
Seleccione la plantilla Runpod pytorch 2.0.1. Esto es importante. Es posible que otras plantillas no funcionen.
SSH en el Runpod.
Clona el repositorio ejecutando el siguiente comando:
cd/espacio de trabajo clon de git --recursivo https://github.com/bmaltais/kohya_ss.git
Ejecute el script de configuración:
cd kohya_ss ./setup-runpod.sh
Ejecute la GUI con:
./gui.sh --share --sin cabeza
o con esto si expones 7860 directamente a través de la configuración de runpod:
./gui.sh --listen=0.0.0.0 --sin cabeza
Conéctese a la URL pública que se muestra una vez completado el proceso de instalación.
Para ejecutar desde una plantilla Runpod prediseñada, puede:
Abra la plantilla Runpod haciendo clic en https://runpod.io/gsc?template=ya6013lj5a&ref=w18gds2n.
Implemente la plantilla en el host deseado.
Una vez implementado, conéctese al Runpod en HTTP 3010 para acceder a la GUI de kohya_ss. También puede conectarse a auto1111 en HTTP 3000.
Una vez que haya instalado Docker Desktop , CUDA Toolkit , NVIDIA Windows Driver y se haya asegurado de que Docker se esté ejecutando con WSL2 , estará listo para comenzar.
Aquí está la documentación oficial para mayor referencia.
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
Instale un controlador de GPU NVIDIA si aún no tiene uno instalado.
https://docs.nvidia.com/datacenter/tesla/tesla-installation-notes/index.html
Instale NVIDIA Container Toolkit con esta guía.
https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html
Es necesario que todos los datos de entrenamiento se almacenen en el subdirectorio dataset
, que está montado en el contenedor en /dataset
.
Tenga en cuenta que la función de selección de archivos no está disponible. En su lugar, deberá ingresar manualmente la ruta de la carpeta y la ruta del archivo de configuración.
TensorBoard se ha separado del proyecto.
TensorBoard no está incluido en la imagen de Docker.
El botón "Iniciar TensorBoard" se ha ocultado.
TensorBoard se inicia desde un contenedor distinto como se muestra aquí.
El navegador no se iniciará automáticamente. Deberá abrir manualmente el navegador y navegar a http://localhost:7860/ y http://localhost:6006/
Este Dockerfile ha sido diseñado para ser fácilmente desechable. Puede descartar el contenedor en cualquier momento y reiniciarlo con la nueva versión del código.
clon de git --recursivo https://github.com/bmaltais/kohya_ss.gitcd kohya_ss ventana acoplable componer -d
Para actualizar el sistema, docker compose down && docker compose up -d --pull always
Importante
Clona el repositorio de Git de forma recursiva para incluir submódulos:
git clone --recursive https://github.com/bmaltais/kohya_ss.git
clon de git --recursivo https://github.com/bmaltais/kohya_ss.gitcd kohya_ss ventana acoplable componer -d --build
Nota
La creación de la imagen puede tardar hasta 20 minutos en completarse.
Para actualizar el sistema, consulte la nueva versión del código y reconstruya usando docker compose down && docker compose up -d --build --pull always
Si está ejecutando Linux, aquí hay disponible un puerto de contenedor Docker alternativo con menos limitaciones.
Es posible que desee utilizar los siguientes repositorios cuando ejecute runpod:
Plantilla Kohya_ss independiente: https://github.com/ashleyklenhans/kohya-docker
Plantilla GUI de Auto1111 + Kohya_ss: https://github.com/ashleyklenhans/stable-diffusion-docker
Para actualizar su instalación a una nueva versión, siga las instrucciones a continuación.
Si hay una nueva versión disponible, puede actualizar su repositorio ejecutando los siguientes comandos desde el directorio raíz del proyecto:
Extraiga los últimos cambios del repositorio:
git tirar
Ejecute el script de configuración:
.setup.bat
Para actualizar su instalación en Linux o macOS, siga estos pasos:
Abra una terminal y navegue hasta el directorio raíz del proyecto.
Extraiga los últimos cambios del repositorio:
git tirar
Actualiza y actualiza todo:
./setup.sh
Para iniciar el servicio GUI, puede utilizar los scripts proporcionados o ejecutar el script kohya_gui.py
directamente. Utilice los argumentos de la línea de comando que se enumeran a continuación para configurar el servicio subyacente.
--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
En Windows, puede utilizar el script gui.ps1
o gui.bat
ubicado en el directorio raíz. Elija el script que se adapte a sus preferencias y ejecútelo en una terminal, proporcionando los argumentos de línea de comando deseados. He aquí un ejemplo:
gui.ps1 --listen 127.0.0.1 --server_port 7860 --inbrowser --share
o
gui.bat --listen 127.0.0.1 --server_port 7860 --inbrowser --share
Para iniciar la GUI en Linux o macOS, ejecute el script gui.sh
ubicado en el directorio raíz. Proporcione los argumentos de línea de comando deseados de la siguiente manera:
gui.sh --listen 127.0.0.1 --server_port 7860 --inbrowser --share
El repositorio ahora proporciona un archivo de configuración predeterminado llamado config.toml
. Este archivo es una plantilla que puede personalizar según sus necesidades.
Para utilizar el archivo de configuración predeterminado, siga estos pasos:
Copie el archivo config example.toml
del directorio raíz del repositorio a config.toml
.
Abra el archivo config.toml
en un editor de texto.
Modifique las rutas y la configuración según sus requisitos.
Este enfoque le permite ajustar fácilmente la configuración para satisfacer sus necesidades específicas para abrir las carpetas predeterminadas deseadas para cada tipo de entrada de carpeta/archivo admitida en la GUI.
Puede especificar la ruta a su config.toml (o cualquier otro nombre que desee) al ejecutar la GUI. Por ejemplo: ./gui.bat --config c:my_config.toml
Para entrenar un LoRA, actualmente puedes usar el código train_network.py
. Puede crear una red LoRA utilizando la GUI todo en uno.
Una vez que haya creado la red LoRA, puede generar imágenes usando auto1111 instalando esta extensión.
Un archivo de solicitud podría verse así, por ejemplo:
# mensaje 1 obra maestra, mejor calidad, (1 niña), con camisa blanca, parte superior del cuerpo, mirando al espectador, fondo simple --n baja calidad, peor calidad, mala anatomía, mala composición, pobre, poco esfuerzo --w 768 --h 768 --d 1 --l 7.5 --s 28# solicitud 2obra maestra, mejor calidad, 1niño, en traje de negocios, parado en la calle, mirando hacia atrás --n (baja calidad, peor calidad), mala anatomía, mala composición, pobre , esfuerzo bajo --w 576 --h 832 --d 2 --l 5.5 --s 40
Las líneas que comienzan con #
son comentarios. Puede especificar opciones para la imagen generada con opciones como --n
después del mensaje. Se pueden utilizar las siguientes opciones:
--n
: mensaje negativo hasta la siguiente opción.
--w
: Especifica el ancho de la imagen generada.
--h
: Especifica la altura de la imagen generada.
--d
: Especifica la semilla de la imagen generada.
--l
: Especifica la escala CFG de la imagen generada.
--s
: Especifica el número de pasos en la generación.
La ponderación rápida como ( )
y [ ]
está funcionando.
Si encuentra algún problema, consulte los pasos de solución de problemas a continuación.
Si encuentra un error X relacionado con el archivo de página, es posible que deba aumentar el límite de tamaño del archivo de página en Windows.
Si encuentra un error que indica que no se encuentra el módulo tkinter
, intente reinstalar Python 3.10 en su sistema.
Al entrenar a LORA en un TESLA V100, los usuarios informaron una baja utilización de la GPU. Además, hubo dificultades para especificar GPU distintas a las predeterminadas para el entrenamiento.
Selección de GPU: los usuarios pueden especificar los ID de GPU en la configuración para seleccionar las GPU deseadas para el entrenamiento.
Mejora de la carga de GPU: utilizar el optimizador adamW8bit
y aumentar el tamaño del lote puede ayudar a lograr una utilización de GPU del 70 al 80 % sin exceder los límites de memoria de la GPU.
La documentación de esta sección se trasladará a un documento separado más adelante.
La pérdida enmascarada está respaldada en cada guión de entrenamiento. Para habilitar la pérdida enmascarada, especifique la opción --masked_loss
.
La función no se ha probado completamente, por lo que puede haber errores. Si encuentra algún problema, abra un Problema.
El conjunto de datos ControlNet se utiliza para especificar la máscara. Las imágenes de máscara deben ser imágenes RGB. El valor de píxel 255 en el canal R se trata como la máscara (la pérdida se calcula solo para los píxeles con la máscara) y 0 se trata como sin máscara. Los valores de píxel 0-255 se convierten en 0-1 (es decir, el valor de píxel 128 se trata como la mitad del peso de la pérdida). Consulte los detalles de la especificación del conjunto de datos en la documentación de LLLite.
Ver información de lanzamiento.