Saltar al contenido principal

Probando Stable Diffusion XL

· 9 min de lectura
Oscar Adrian Ortiz Bustos

Introducción

Hace cerca de un año que el mundo de la generación de imágenes a partir de texto vivió su "boom" con la salida de Stable Diffusion por parte de Stability AI.

Y al fin Stability AI acaba de estrenar su nuevo modelo para la generación de imágenes llamado Stable Diffusion XL, y si lo estás viendo aquí es por que permite utilizarlo de manera gratuita, ya que es Open Source. Actualmente estoy bastante enganchado con otros modelos de generación de imágenes como Dalle-2. Y aunque me considero leal a OpenAI en cuanto a IA se refiere, no es una mentira que desde hace tiempo la palabra "Open" le queda un tanto grande, ya que en la liberación de su modelo de lenguaje "GPT-4" se guardaron varias cosas en cuanto a su funcionamiento como para poder considerarse Open Source, se han ido privatizando poco a poco.

Pero ese no es el tema, lo que nos ofrece Stability AI es el poder descargarnos el modelo directamente a nuestros ordenadores, y a diferencia de lo que pudieran pensar no se necesita una computadora de la "Nasa".

¿Como funciona?

Esta es otra de las cosas interesantes que nos ofrece Stability AI ya que el modelo XL es básicamente un refinador, esto significa que el modelo no esta entrenado a partir del texto, sino, que está entrenado para tomar el resultado de una imagen a partir de un modelo base. Sin complicarnos la vida se puede describir como un embellecedor de imágenes, es decir, que un modelo base nos genera la imagen a partir del texto y SDXL toma esa imagen y la mejora.

Requerimientos

Como en cualquier modelo de lenguaje instalado localmente se necesita una GPU. Y según este artículo debería de funcionar de manera decente en una GPU con 8GB de VRAM, aunque siendo optimistas quizá en un futuro cuando la comunidad pueda optimizarlo un poco más estos requerimientos bajen a 6GB o si ya nos ponemos optimistas plan enfermizo, podrían llegar a ser de 4GB.

Si bien lo requerimientos no son propios de una computadora de la nasa, mi humilde y empolvada computadora no los cubre. Aún así colocaré los enlaces de descarga por si alguien quiere descargarlos y su computadora los corre (presumidos).

Descarga

Como mencioné anteriormente el modelo se encuentra disponible para su descarga de manera gratuita en los siguientes links:

Como no puedo instalarlo y mostrarlo aquí, les voy a dejar este artículo para que puedan instalarlo.

Instalación SDXL

Parece una ironía que el título del blog sea Probando Stable Diffusion XL y que no pueda instalarlo por las limitaciones de mi equipo ¿verdad?.

Pero no se preocupen, si están igual de jodidos que yo llega el todopoderoso, el inigualable, el fantástico y ampliamente conocido San Google 😇 que nos presta una GPU de manera gratuita y para nada a cambio de nuestros datos personales y privacidad, hablo de Google Colab.

Google Colab

Cuando hablamos de Google Colab, hablamos de un cuaderno, básicamente es una herramienta poderosa y versátil que permite a los usuarios interactuar con código, texto, y visualizaciones de datos en un entorno en línea por lo que no es necesario descargar ningún software en tu computadora.

Está basado en Jupyter Notebook, por lo que si ya has trabajado con Jupyter no tendrás ningún problema en adaptarte a Google Colab.

En estos cuadernos podemos ejecutar código en Python, R o incluso si nos ponemos inquietos podemos ejecutar comandos de terminal (bash). Y lo mejor de todo es que podemos ejecutarlo en una GPU de manera gratuita (guiño, guiño). Además nos ofrece la posibilidad de incluir celdas de texto en formato Markdown (persínate) lo que obviamente facilita la creación de tutoriales y documentación.

Google Colab nos permite guardar nuestros cuadernos en Google Drive, o si lo prefieres puedes descargarlo en tu computadora en formato .ipynb, y eso es justo lo que voy a hacer, crear un cuaderno en Google Colab para poder probar SDXL. Y obviamente lo voy a compartir con ustedes para que lo puedan descargar y ejecutar en sus computadoras.

Creando el cuaderno

Primero lo primero, para poder crear un cuaderno en Google Colab necesitamos una cuenta de Google, si no tienes una puedes crearla aquí. Aunque siendo sinceros, si no tienes una cuenta de Google en estos tiempos, ¿en qué mundo vives?. Una vez que tengas tu cuenta de Google, puedes acceder a Google Colab aquí.

Una vez dentro veremos una pantalla como esta:

Google Colab

Puedes dar el tour por tu cuenta, pero básicamente lo que nos interesa es crear un nuevo cuaderno, para ello vamos a dar clic en Archivo y después en Nuevo cuaderno.

Nos va a redirigir a una nueva pestaña donde podremos crear nuestro cuaderno, en la parte superior izquierda veremos el nombre del cuaderno, por defecto se llama Untitled0.ipynb. Si queremos cambiar el nombre podemos dar clic en el nombre y cambiarlo por el que queramos. Yo le puse SDXL.ipynb. (Súper original, lo sé).

Google Colab

Por defecto el cuaderno se crea en un entorno con CPU, pero como queremos ejecutar SDXL necesitamos un entorno con GPU, para ello vamos a dar clic en Entorno de ejecución y después en Cambiar tipo de entorno de ejecución. Seleccionamos T4 GPU y damos clic en Guardar.

Google Colab

Y ahora si ya podemos empezar a escribir código.

Ejecutando código

El procedimiento que vamos a seguir es el siguiente:

  1. Instalar dotnet-sdk-7.0 (SDK de .NET 7.0) y git.
  2. Instalar CloudFlare mediante el paquete .deb. (De preferencia evita instalarlo mediante apt).
  3. Descargar la interfaz de StableSwarmUI. (Aquí ya vienen ambos modelos).
  4. Descargar ComfyUI para el backend de StableSwarmUI.
  5. Instalar los requerimientos de Python.

Importante recordar que para poder ejecutar comandos de linux debemos de usar el prefijo "!" y "%" dependiendo el caso.

# Instalamos dotnet-sdk-7 y git
!apt install dotnet-sdk-7.0 git

# Descargar paquete deb de CloudFlare.
!wget https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb

# Instalar paquete con dpkg
!dpkg -i cloudflared-linux-amd64.deb

# Clonar el repositorio StableSwarmUI
!git clone https://github.com/Stability-AI/StableSwarmUI

# Descargar ComfyUI
# Movernos a la carpeta de StableSwarmUI.
%cd /content/StableSwarmUI
# Crear un nuevo directorio.
!mkdir /content/StableSwarmUI/dlbackend
# Movernos al directorio creado.
%cd /content/StableSwarmUI/dlbackend
# Clonar el repositorio de ComfyUI en la carpeta creada.
!git clone https://github.com/comfyanonymous/ComfyUI
# Movernos a la carpeta.
%cd /content/StableSwarmUI/dlbackend/ComfyUI

# Instalar ComfyUI
# Instalar los requerimientos de python.
!pip install -r requirements.txt

GoogleColabCode

Vamos a darle clic al icono de ▶️ para ejecutar ese bloque de código.

GoogleColabExec

Para agregar una nueva celda de código presionamos CTRL+M B

Y colocamos el siguiente código:

# Lanzamos la UI
%cd /content/StableSwarmUI/

!bash ./launch-linux.sh --launch_mode none --cloudflared-path cloudflared --backends_file /content/StableSwarmUI/colab/colab_backends.fds

Al darle clic al botón de ejecutar se nos creará un túnel para poder visitar la página desplegada.

ColabSecondCodeExec

StableSwarmUI

Levamos a dar clic al túnel generado para ingresar a la interfaz de StableSwarmUI.

Primero tendremos que aceptar la licencia de uso de Stable Diffusion.

StableDifussionLicense

Básicamente dice que para poder usarlo tienen que darle feedback a este artículo, palabras más, palabras menos. Una vez aceptamos los términos y condiciones podemos proseguir.

Después tenemos que escoger el tema. Está el dark que es el que voy a escoger, pero si odian su vista también está el tema blanco.

SDTheme

Después tendremos que escoger quien utilizará la UI, colocamos que solo nosotros (guiño, guiño).

SDUse

Después nos pide que seleccionemos el backend que vamos a utilizar, seleccionamos el que habíamos instalado previamente (ComfyUI).

SDBackend

En esta parte debemos de seleccionar los modelos que queremos descargar. Como estamos viendo el nuevo lanzamiento de SDXL, seleccionamos los dos modelos, el base y el refinador.

SDModels

Nota

Puedes descargar los que se te antojen, pero para fines prácticos únicamente descargaré los dos que nos interesan.

Por último confirmamos nuestra configuración y procedemos a instalarlo.

SDFinish

Y comenzará la instalación. No tarda mucho, algunos 2 o 3 minutos.

SDDownloadModels

Y vualá, habemus interfaz de Stable Diffusion.

SDUI

Advertencia

La interfaz está en fase alpha todavía, por lo que puede llegar a presentar fallos, generalmente desaparecen al refrescar la página.

Generar imágenes

Dentro de la interfaz podemos ver que en la parte de abajo hay un <select> para poder escoger el modelo, vamos a seleccionar el modelo base. NO EL REFINADOR.

SDModel

En la parte del Negative Prompt podemos colocar lo que NO queremos que aparezca en la imagen.

Ya podríamos hacer una imagen con ese modelo, y vamos a comparar generar una imagen únicamente con el modelo base y después usando el mismo prompt vamos a usar el refinador.

La primera vez que se ejecute demorara un poco, sin embargo como se vaya usando el tiempo de generación podría oscilar entre 30 - 40 segundos.

Haremos la prueba con 3 prompts.

  1. New York city raining in a christmas day.
  2. A squirrel sitting on a table in the desert.
  3. Alone people with his thoughts.

Modelo base

  1. "New York city raining in a christmas day."

NewYorkCityInARaining

  1. "A squirrel sitting on a table in the desert."

ASquirrelSitting

  1. "Alone people with his thoughts"

AlonePeopleBaseOpen

Modelo Refinador

Para seleccionar el modelo refinador es necesario irnos a los checkbox y marcar el que dice refiner. Y en el refinel model seleccionamos el otro modelo que descargamos.

SDRefiner.

  1. "New York city raining in a christmas day."

NewYorkRefiner

  1. "A squirrel sitting on a table in the desert."

SquirrelRefiner

  1. "Alone people with his thoughts."

AlonePeopleRefiner

Conclusiones

Como pudimos observar SDXL nos ofrece una experiencia cuanto menos curiosa, obviamente como acaba de ser liberado hay muchas cosas por mejorar, siempre, siempre las hay. De momento podemos estar tranquilos ya que la comunidad Open Source hará lo que mejor sabe hacer y es cuestión de tiempo para que esto sea mucho mejor optimizado.

Evidentemente también tiene mucho que ver el prompt engineer que se maneje. Creo que todos podemos estar de acuerdo en que esto representa un paso agigantado por parte de Stability AI, quien pretende combatir con otras herramientas privadas, como Midjourney

Por último si no quieren hacer todo este proceso pueden únicamente ingresar a mi cuaderno para empezar a utilizarlo.