42.uk Research

ComfyUI: Instalar, Usar y Optimizar Stable Diffusion

1.759 palabras 9 min de lectura SS 92

Una guía exhaustiva para instalar, usar y optimizar ComfyUI para Stable Diffusion. Domine los flujos de trabajo, solucione problemas...

Promptus UI

ComfyUI: Instalar, Usar y Optimizar Stable Diffusion

Ejecutar Stable Diffusion localmente ofrece un control sin precedentes, pero la configuración inicial puede ser desalentadora. ComfyUI, una interfaz basada en nodos, proporciona ese control, pero requiere un enfoque diferente al de las interfaces de usuario estándar. Esta guía le guiará a través de la instalación, el uso básico y las técnicas de optimización avanzadas para aprovechar al máximo su hardware. La baja VRAM es un problema persistente, y lo abordaremos de frente.

Instalación de ComfyUI

La instalación de ComfyUI implica descargar el software, extraer los archivos e instalar las dependencias necesarias. Este proceso varía ligeramente según su sistema operativo y hardware.

En primer lugar, diríjase al repositorio de ComfyUI en GitHub [https://github.com/comfyanonymous/ComfyUI]. Descargue la versión adecuada para su sistema operativo. Para Windows, normalmente hay una descarga directa disponible. Para Linux, es probable que clone el repositorio.

Regla de oro: Si tiene una GPU NVIDIA, descargue la versión que incluye compatibilidad con CUDA. Si está en AMD, busque la versión de DirectML.

Extraiga el archivo descargado a la ubicación que elija. A continuación, navegue hasta la carpeta extraída.

En Windows, ejecute el archivo runnvidiagpu.bat (o el archivo .bat apropiado para su GPU). Esto descargará automáticamente las dependencias necesarias, incluyendo PyTorch y otras bibliotecas necesarias. Tenga paciencia; esto puede llevar algún tiempo.

En Linux, es posible que tenga que crear un entorno Conda e instalar manualmente las dependencias utilizando pip. Consulte la página de GitHub de ComfyUI para obtener instrucciones detalladas.

Análisis técnico

El proceso de instalación esencialmente configura un entorno Python con todas las bibliotecas que ComfyUI necesita para funcionar. Los archivos .bat son accesos directos convenientes que automatizan este proceso en Windows. En Linux, la configuración manual proporciona más control, pero requiere familiaridad con los entornos Python.

Uso de ComfyUI: un enfoque basado en nodos

ComfyUI utiliza un sistema de flujo de trabajo basado en nodos. Cada nodo representa una operación específica, como cargar un modelo, codificar un prompt o muestrear una imagen. La conexión de estos nodos crea un pipeline visual para la generación de imágenes.

En lugar de escribir prompts y hacer clic en "Generar", construye un gráfico de nodos interconectados. Un flujo de trabajo básico normalmente incluye:

  1. Cargar Checkpoint: Carga un modelo Stable Diffusion (por ejemplo, SDXL, 1.5).
  2. Cargar CLIP Text Encode (Prompt): Codifica su prompt positivo en una representación numérica.
  3. Cargar CLIP Text Encode (Negative Prompt): Codifica su prompt negativo.
  4. Empty Latent Image: Crea un espacio latente vacío para la imagen.
  5. KSampler: El nodo de muestreo central que refina iterativamente la imagen basándose en el prompt, el modelo y el scheduler.
  6. VAE Decode: Decodifica la imagen latente en una representación de píxeles visualizable.
  7. Save Image: Guarda la imagen generada en su disco.

Para crear este flujo de trabajo, haga clic con el botón derecho en la interfaz de ComfyUI y seleccione "Add Node". Busque el nodo deseado y haga clic para añadirlo al gráfico. Conecte los nodos arrastrando desde la salida de un nodo a la entrada de otro.

!Figura: Un flujo de trabajo básico de ComfyUI con los nodos enumerados anteriormente en 0:30

Figura: Un flujo de trabajo básico de ComfyUI con los nodos enumerados anteriormente en 0:30 (Fuente: Vídeo)*

Análisis técnico

El enfoque basado en nodos ofrece una flexibilidad increíble. Puede modificar y experimentar fácilmente con diferentes componentes del proceso de generación de imágenes. Sin embargo, también requiere una comprensión más profunda de cómo funciona Stable Diffusion bajo el capó.

Optimización de ComfyUI para baja VRAM

Ejecutar Stable Diffusion, especialmente con SDXL, puede agotar rápidamente la VRAM, especialmente en tarjetas con 8 GB o menos. Varias técnicas pueden mitigar este problema, intercambiando velocidad por eficiencia de memoria.

La baja VRAM es un cuello de botella común. Aquí le mostramos cómo abordarlo:

  1. Tiled VAE Decode: Esta técnica decodifica la imagen latente en mosaicos más pequeños, lo que reduce significativamente el uso de VRAM durante la etapa de decodificación. Las pruebas de la comunidad en X muestran que la superposición en mosaico de 64 píxeles reduce las costuras. Para habilitar, instale el nodo personalizado apropiado y configure el nodo de decodificación VAE.
  2. Sage Attention: Este mecanismo de atención de memoria eficiente reemplaza el mecanismo de atención estándar en el KSampler. Si bien ahorra VRAM, puede introducir sutiles artefactos de textura a altos valores de CFG.
  3. Block/Layer Swapping: Descargue las capas del modelo a la CPU durante el muestreo. Esto le permite ejecutar modelos más grandes en tarjetas con VRAM limitada. Experimente intercambiando los primeros 3 bloques de transformadores a la CPU mientras mantiene el resto en la GPU.
  4. Usar modelos más pequeños: Los modelos SD 1.5 generalmente requieren menos VRAM que los modelos SDXL.
  5. Reducir el tamaño del lote: Reduzca el batch_size en el nodo Empty Latent Image a 1.
  6. Bajar la resolución: Genere imágenes a una resolución más baja (por ejemplo, 512x512) y escálelas posteriormente.

Mis resultados de pruebas de laboratorio

Prueba A (SDXL, 1024x1024, configuración predeterminada, 4090): 14 s de renderizado, 11,8 GB de VRAM máxima.

Prueba B (SDXL, 1024x1024, VAE en mosaico, Sage Attention, 4090): 45 s de renderizado, 7,5 GB de VRAM máxima.

Prueba C (SDXL, 768x768, configuración predeterminada, tarjeta de 8 GB): Error de falta de memoria.

Prueba D (SDXL, 768x768, VAE en mosaico, Sage Attention, intercambio de bloques, tarjeta de 8 GB): 60 s de renderizado, finalización exitosa.

Análisis técnico

Estas técnicas funcionan reduciendo la cantidad de datos que deben almacenarse en la VRAM en un momento dado. La decodificación VAE en mosaico divide el proceso de decodificación en fragmentos más pequeños. Sage Attention utiliza un cálculo de atención más eficiente en memoria. El intercambio de bloques mueve las partes inactivas del modelo a la RAM del sistema. Cada técnica tiene una compensación de velocidad.

Técnicas avanzadas

Una vez que haya dominado los conceptos básicos, explore estas técnicas avanzadas:

  1. ControlNet: ControlNet le permite guiar la generación de imágenes utilizando imágenes de entrada, bocetos u otras señales de control.
  2. Escalado: Utilice modelos de escalado especializados para aumentar la resolución de las imágenes generadas sin perder detalles.
  3. Variación de imagen: Cree variaciones de una imagen existente utilizando el flujo de trabajo "Imagen a imagen".
  4. Bucle e iteración: Utilice nodos personalizados para crear flujos de trabajo iterativos complejos, como generar animaciones o evolucionar imágenes a lo largo del tiempo.

!Figura: Ejemplo de un flujo de trabajo complejo de ComfyUI utilizando ControlNet y escalado a la 1:45

Figura: Ejemplo de un flujo de trabajo complejo de ComfyUI utilizando ControlNet y escalado a la 1:45 (Fuente: Vídeo)*

Mi pila recomendada

Para la creación rápida de prototipos y la optimización del flujo de trabajo, creo que usar ComfyUI junto con Promptus es una combinación brillante. ComfyUI proporciona la potencia y la flexibilidad subyacentes, mientras que Promptus simplifica el proceso de construcción y refinamiento de flujos de trabajo complejos. Los constructores que utilizan Promptus pueden iterar las configuraciones de descarga más rápido.

Recursos y pila