Ir al contenido
  1. Artículos/

Cómo Ejecutar Stable Diffusion en Tu Laptop

Nuno Coração
Autor
Nuno Coração
Principal Product Manager @ Docker
Tabla de contenido
El Nuevo Hype de la IA - Este artículo es parte de una serie.
Parte 3: Este artículo

En el último año, varios modelos de machine learning se han puesto a disposición del público para generar imágenes a partir de descripciones textuales. Este ha sido un desarrollo interesante en el espacio de la IA. Sin embargo, la mayoría de estos modelos han permanecido closed source por razones éticas válidas. Debido a esto, aunque puedes interactuar con ellos a través de alguna interfaz, estás limitado en la cantidad de cosas que puedes probar. Hasta ahora…

El más reciente de estos modelos es Stable Diffusion, un modelo de machine learning abierto desarrollado por Stability AI para generar imágenes digitales a partir de descripciones en lenguaje natural. Este modelo se ha vuelto bastante popular, principalmente porque fue el primero en ser open source.

Ya he jugado con Dall-E y Midjourney, pero quería intentar ejecutar un modelo localmente y tener más libertad para experimentar. Logré instalar y ejecutar el modelo con éxito en mi M1 Pro y en mi escritorio Windows. Esta guía detalla los pasos que seguí para que todo funcionara en mi Mac.

Notas Iniciales
#

Algunas notas antes de empezar. Probé varias guías en línea y no pude tener una experiencia fluida con ninguna de ellas. Tuve que probar numerosos repos, soluciones, etc. El objetivo principal de esta guía es proporcionar instrucciones sobre cómo ejecutar Stable Diffusion en un M1, que es donde encontré más desafíos. Instalar en Windows fue mucho más directo.

Dicho esto, el repo que terminé usando tiene guías detalladas para todas las plataformas: Windows, Mac y Linux. No dudes en usar cualquiera de esas si estás usando otra plataforma o si esta guía no te funciona en Mac.

Nota: No probé la guía Mac anterior, ya que cuando encontré este repo ya había descubierto la mayoría de los workarounds necesarios para que el modelo funcionara.

Obtener el Código
#

Empecemos obteniendo el código. Estoy usando el fork de InvokeAI de Stable Diffusion, que forkeé aquí. Eres bienvenido a usar el repo original de InvokeAI si lo prefieres. Voy a usar mi fork para asegurar que la guía permanezca actualizada y funcionando a través del tiempo.

Para comenzar, clona el repo en tu máquina local.

git clone https://github.com/nunocoracao/InvokeAI

Obtener el Modelo
#

Ahora necesitas obtener el modelo real que contiene los pesos para la red. Este es el resultado de ciclos masivos de entrenamiento con conjuntos de datos enormes con los que un usuario normal con hardware promedio no puede competir. El modelo no se distribuye con el código debido a su tamaño (alrededor de 7.5 GB) y para asegurar que los usuarios cumplan con una licencia.

Simplemente ve al sitio de Hugging Face e inicia sesión, o crea una cuenta si no tienes una. Una vez configurado, haz clic aquí, acepta los términos en el model card y descarga el archivo llamado sd-v1-4-full-ema.ckpt. Después de descargar el modelo, ve a la carpeta del código y colócalo en models/ldm/stable-diffusion-v1/ con el nombre model.ckpt. La carpeta stable-diffusion-v1 no existe y necesita ser creada.

Nota: hay otras variantes del modelo que puedes explorar, esta es la recomendada por la mayoría de los repos que he visto.

Configurar el Entorno
#

Con el código y el modelo listos, el siguiente paso es configurar el entorno local para ejecutar todo.

Instalar Xcode
#

El primer paso es instalar Xcode. Xcode se puede instalar desde la App Store, o puedes descargarlo del sitio Developer de Apple.

xcode-select --install

Instalar Conda
#

La mayoría de las soluciones que he visto usan Conda para gestionar los paquetes y entornos necesarios. La guía de instalación de Conda es muy clara, así que te aconsejo seguir las instrucciones aquí.

conda

Si el proceso de instalación fue exitoso, deberías ver algo como la imagen de abajo.

Instalar Rust
#

Cuando seguía otras guías, siempre tenía problemas en la siguiente parte del proceso, construir los entornos. Después de muchos intentos, descubrí que me faltaba el compilador Rust.

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

Construir y Activar el Entorno
#

Ya casi llegamos. Ahora crearemos el entorno ldm y lo activaremos antes de empezar a generar imágenes.

PIP_EXISTS_ACTION=w CONDA_SUBDIR=osx-arm64 conda env create -f environment-mac.yml

Si tienes problemas en este paso y necesitas reconstruir el entorno:

PIP_EXISTS_ACTION=w CONDA_SUBDIR=osx-arm64 conda env update -f environment-mac.yml

Si estás en un Mac Intel el comando debería ser:

PIP_EXISTS_ACTION=w CONDA_SUBDIR=osx-64 conda env create -f environment-mac.yml

Ahora es momento de activar el entorno usando:

conda activate invokeai

El último paso es precargar los modelos usando el comando:

python scripts/preload_models.py

Diviértete…
#

Ahora es momento de empezar a jugar con Stable Diffusion. Ejecuta:

python scripts/invoke.py --full_precision --web

Y abre tu navegador en localhost:9090

Deberías ver una interfaz Web como la de abajo.

Elige tu primer prompt y prueba el modelo, todas las imágenes se guardarán en output/img-samples. Explora los varios modelos y configuraciones posibles. He estado ejecutando el mío con imágenes de 512x512, alrededor de 100 ciclos para las imágenes finales (5 para las variantes iniciales), y config scale en 7.5. Como sampler prefiero los resultados usando DDIM.

Algunos Ejemplos
#

Aquí hay algunos ejemplos de imágenes de mis ejecuciones iniciales del modelo. Dejo aquí algunos enlaces para obtener ideas sobre cómo empezar a diseñar prompts.

Aviso y Otras Opciones
#

Hay un montón de opciones para ejecutar el modelo Stable Diffusion, algunas locales, algunas en la nube (ej. Google Colab), así que no te frustres si quieres probar esto pero no tienes acceso a una máquina que pueda ejecutarlo. Probablemente hay otras soluciones que puedes usar.

Etiquétame en redes sociales con tus creaciones si logras que esto funcione:

El Nuevo Hype de la IA - Este artículo es parte de una serie.
Parte 3: Este artículo

Relacionados