Crysfel Villa Aug 16, 2024devops,programming,ai
La IA generativa requiere muchos recursos y un equipo potente. Necesitas comprar tarjetas Nvidia para poder ejecutar con éxito Stable Diffusion u otro modelo. Si eres como yo, puedes buscar soluciones accesibles como AWS. En este tutorial, te voy a mostrar cómo instalar ComfyUI + Flux para generar imágenes increíbles en Ubuntu.
Lo primero que necesitas hacer es iniciar sesión en la consola de Amazon AWS. En la barra de búsqueda superior, escribe EC2 y selecciona la primera opción en los resultados. Verás algo como esto:
A continuación, debes hacer clic en el botón naranja Launch instance para configurar el hardware que necesitamos para ejecutar Flux y generar imágenes.
Completa el formulario con los siguientes valores:
Todos los demás valores pueden configurarse con los valores predeterminados. Una vez que termines, haz clic en el botón amarillento Launch instance en el lado derecho.
Después de recibir un mensaje de éxito, vuelve a la lista de instancias, haz clic en la nueva instancia y verás la IP Pública en la columna central. Copia esta IP ya que la utilizaremos para conectarnos vía SSH.
Abre tu terminal favorita o un cliente SSH y conéctate a la instancia que acabamos de crear. Podemos hacerlo ejecutando el siguiente comando.
$ ssh -i ~/.ssh/[YOUR-KEY-FILE-NAME].cer ubuntu@[YOUR-API_ADDRESS]
Asegúrate de establecer el certificado correcto, de lo contrario, no te autenticarás correctamente. Después de iniciar sesión, deberíamos actualizar nuestro sistema ejecutando los siguientes comandos:
$ sudo apt update
$ sudo apt upgrade
A continuación, necesitamos instalar el controlador NVidia para poder usar las GPUs. He probado otras AMIs que incluían los drivers y todo estaba instalado, pero hubo varios errores al instalar los modelos. Me di cuenta que es más fácil instalar manualmente los controladores y todo lo que necesitamos; toma un poco más de tiempo, pero menos errores. Simplemente ejecuta el siguiente comando:
$ sudo apt install nvidia-driver-535
Luego necesitamos Python, primero debemos agregar el repositorio donde se encuentra la distribución oficial y luego instalar el paquete usando apt:
$ sudo add-apt-repository ppa:deadsnakes/ppa
$ sudo apt install python3.10
Es importante establecer el Python predeterminado al ejecutar comandos python3 en la terminal, así que vamos a crear el alias a continuación:
$ sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.10 2
Para verificar si todo está instalado, podemos imprimir la versión de Python:
$ python3 --version
AUTOMATIC1111 requiere ejecutar entornos virtuales, por lo tanto, necesitamos instalar python3.10-venv usando apt:
$ sudo apt install python3.10-venv
¡Hemos terminado con las dependecias! Todo lo que necesitamos hacer es reiniciar la instancia y deberíamos poder usar las GPUs NVidia para ejecutar los modelos. Abre la consola de AWS, selecciona la instancia y haz clic en la opción Reboot instance desde el menú desplegable Instance state en la parte superior.
Vuelve a iniciar sesión en tu instancia y clona el repositorio de stable diffusion web ui.
$ git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui
Entra en el proyecto clonado y edita webui-user.sh para habilitar la conexión a A1111 desde cualquier computadora, usar el flash attention más rápido cuando utilices modelos y permitir que instalar extensiones cuando te conectes de forma remota.
$ cd stable-diffusion-webui
$ vim nano webui-user.sh
En este archivo, necesitamos encontrar la línea donde se define COMMANDLINE_ARGS, descomentar la línea y establecer el siguiente valor.
export COMMANDLINE_ARGS="--listen --opt-sdp-attention --enable-insecure-extension-access"
El último paso es instalar y ejecutar A1111, lo hacemos ejecutando el siguiente comando:
$ ./webui.sh
Eso iniciará el servidor web en http://0.0.0.0:7860, ahora necesitamos abrir ese puerto en nuestra instancia para poder abrirlo en nuestro navegador.
Ve a la consola de AWS y haz clic en la instancia, luego en la pestaña Security, haz clic en el enlace security group y el botón Edit inbound rules en la parte derecha.
Haz clic en Add rule y añade un puerto Custom TCP 7860, permite la conexión desde My IP. Esto evitará que otras personas usen tus modelos. Si tu IP cambia, tendrás que volver aquí y nuevamente agregar tu nueva IP.
Después de guardar, deberías poder abrir A1111 en tu navegador favorito. Simplemente escribe la IP de tu instancia seguida del puerto, por ejemplo: http://3.230.178.251:7860/.
Si todo salió bien, deberías poder ver la consola de A1111. ¡Adelante y pruébalo! Deberías ver algo como esto:
Como puedes ver, las imágenes generadas no se ven muy bien. ¡Necesitamos instalar Flux! Pero antes de eso, vamos a instalar ConfyUI, una herramienta con una mejor interfaz que crea flujos para generar imágenes.
Vuelve a la carpeta de inicio y clona el proyecto ComfyUI desde GitHub.
$ cd ~
$ git clone https://github.com/comfyanonymous/ComfyUI
Ahora vamos a compartir modelos con A1111 duplicando el archivo extra_model_paths.yaml y estableciendo la ruta a los modelos en A1111. Esto lo hacemos para no descargar los modelos dos veces, es mejor tenerlos compartidos y así ahorramos espacio en el disco duro.
$ cd ComfyUI
$ cp extra_model_paths.yaml.example extra_model_paths.yaml
$ vim extra_model_paths.yaml
Dentro de este archivo, necesitamos localizar la línea donde se define el base_path y establecer el valor correcto:
base_path: /home/ubuntu/stable-diffusion-webui
Finalmente, ejecuta ComfyUI con este comando:
$ ~/stable-diffusion-webui/venv/bin/python main.py --listen
Esto ejecutará el servidor en el puerto 8188, necesitamos abrir este puerto en nuestra instancia para poder ver ComfyUI en nuestro navegador favorito. Sigue los mismos pasos que hicimos para abrir el puerto en AWS, pero ahora usa el puerto 8188.
Ahora ya podemos abrir ComfyUI en el navegador escribiendo la IP y el puerto, algo así: http://3.230.178.251:7860/. Haz clic en el botón Queue Prompt para generar tu primera imagen.
Nada mal pero si usamos Flux tendremos mejores resultados.
¡Finalmente llegamos a la instalación del modelo Flux! Este modelo nos permitirá generar imágenes increíbles; fue lanzado la semana pasada, por lo que es bastante nuevo.
Hay varias versiones del modelo según el hardware que tengas. Te recomiendo instalar el Flux-Dev-FP8. Este es el modelo más fácil de instalar y no requiere mucha memoria o GPU, genera imágenes más rápido, algo entre 15-30 segundos en la instancia que tenemos.
Solo hay un paso para instalar este modelo, primero necesitas ir a ~/ComfyUI/models/checkpoints/ y descargar el modelo así:
$ cd ~/ComfyUI/models/checkpoints/
$ wget https://huggingface.co/Comfy-Org/flux1-dev/resolve/main/flux1-dev-fp8.safetensors
Ahora necesitamos crear un flujo; la imagen de anime en esta página viene con el flujo, todo lo que necesitas hacer es descargar el archivo y luego arrastrarlo en ComfyUI. Mágicamente, verás el flujo listo para ser utilizado.
Asegúrate de limpiar el flujo actual para comenzar con un lienzo en blanco, luego suelta la imagen allí y verás la magia suceder.
¡Y eso es todo amigos! Ahora podemos generar todas las imágenes que necesitamos usando Flux, ¡tu imaginación es el límite!
Recuerda apagar tu instancia una vez que termines de usarla, de lo contrario vas a seguir pagando y te podría sorprender a final del mes el pago que harás de la renta.
Happy Coding!
Te mando historias y consejos para mejorar tu carrera como Ingeniero de Software, también hablo sobre finanzas personales e inversiones.
©2023 ALL RIGHTS RESERVED CRYSFEL'S BLOG