- Stable Cascade es la base de código oficial de Stability AI y ofrece scripts de entrenamiento e inferencia, además de varios checkpoints de modelos de generación de imágenes basados en la arquitectura Würstchen
- La diferencia clave es que opera en un espacio latente (latent space) mucho más pequeño que Stable Diffusion, codificando imágenes de 1024x1024 como 24x24 en lugar de 128x128, lo que reduce la velocidad de inferencia y el costo de entrenamiento
- El modelo está compuesto por una cascada de 3 etapas: Stage A, Stage B, Stage C; Stage A y B se encargan de la compresión de imagen, y Stage C de generar una representación latente de 24x24 a partir de un prompt de texto
- Entre las funciones disponibles están texto a imagen, variaciones de imagen, imagen a imagen, ControlNet, LoRA, reconstrucción de imágenes, entrenamiento desde cero y fine-tuning, y también se puede acceder desde diffusers 🤗
- La base de código está en una etapa inicial de desarrollo, por lo que puede haber errores inesperados o código de entrenamiento e inferencia no optimizado; el código usa licencia MIT y los pesos del modelo siguen la Stability AI Non-Commercial Research Community License
El problema que Stable Cascade busca resolver
- Stable Cascade es la base de código oficial de Stable Cascade y ofrece scripts de entrenamiento e inferencia, además de varios modelos disponibles para usar
- El modelo está basado en la arquitectura Würstchen
- La principal diferencia frente a modelos como Stable Diffusion es que funciona en un espacio latente mucho más pequeño
- Stable Diffusion usa un factor de compresión de 8 y codifica una imagen de 1024x1024 como 128x128
- Stable Cascade logra un factor de compresión de 42 y puede codificar una imagen de 1024x1024 como 24x24
- El modelo condicionado por texto se entrena en este espacio latente altamente comprimido
- Un espacio latente pequeño permite una inferencia más rápida y un entrenamiento más barato
- Una versión anterior de esta arquitectura logró una reducción de costo de 16 veces frente a Stable Diffusion 1.5
Rendimiento y eficiencia
- Stable Cascade se presenta como un modelo adecuado para casos de uso donde la eficiencia es importante
- También permite métodos de extensión conocidos como fine-tuning, LoRA, ControlNet, IP-Adapter y LCM
- En sus propias evaluaciones, Stable Cascade muestra el mejor desempeño en casi todas las comparaciones, tanto en alineación con el prompt como en calidad estética
- La evaluación humana se realizó mezclando parti-prompts y aesthetic prompts
- Stable Cascade se comparó con 30 pasos de inferencia
- Los modelos comparados fueron Playground v2 con 50 pasos, SDXL con 50 pasos, SDXL Turbo con 1 paso y Würstchen v2 con 30 pasos
- El modelo más grande incluye 1.4 mil millones de parámetros más que Stable Diffusion XL, pero aun así muestra tiempos de inferencia más rápidos
Estructura del modelo en 3 etapas
- Como su nombre lo indica, Stable Cascade está compuesto por 3 modelos en cascada que generan imágenes: Stage A, Stage B, Stage C
- Stage A y Stage B cumplen la función de comprimir imágenes, de forma similar al VAE de Stable Diffusion
- Stage C recibe un prompt de texto y genera una pequeña representación latente de 24 x 24
- Stage A es un VAE, y Stage B y Stage C son modelos de difusión
- Este lanzamiento ofrece los siguientes checkpoints
- Stage C: versiones de 1 mil millones y 3.6 mil millones de parámetros
- Stage B: versiones de 700 millones y 1.5 mil millones de parámetros
- Stage A: 20 millones de parámetros, fijo por su tamaño pequeño
- Se recomienda fuertemente usar la versión de 3.6 mil millones de Stage C, ya que la mayor parte del fine-tuning se concentró en esa versión
- Ambas versiones de Stage B dan buenos resultados, pero la versión de 1.5 mil millones destaca más en la reconstrucción de detalles pequeños y finos
- Para obtener los mejores resultados, se sugiere usar las variantes más grandes de cada etapa
Funciones de inferencia y notebooks
- El modelo puede ejecutarse con los notebooks de la sección inference
- Esa sección incluye detalles sobre descarga de modelos, requisitos de cómputo y tutoriales de uso
-
Text-to-Image
- text_to_image.ipynb ofrece las funciones básicas de texto a imagen, variaciones de imagen e imagen a imagen
- Las variaciones de imagen entienden embeddings de imagen y pueden generar variantes de una imagen dada; en el ejemplo no se proporciona ningún prompt
- Imagen a imagen funciona aplicando ruido a una imagen hasta cierto punto y luego generando desde ese punto de inicio
- En el ejemplo, la imagen de la izquierda se ruidiza al 80% y se usa el caption
A person riding a rodent. - También se puede acceder al modelo desde la biblioteca diffusers 🤗 a través de la documentación de stable-cascade en Hugging Face
-
ControlNet
- controlnet.ipynb cubre cómo usar los ControlNet ofrecidos para Stable Cascade o ControlNet entrenados por el propio usuario
- Los ControlNet de este lanzamiento incluyen Inpainting / Outpainting, Face Identity, Canny y Super Resolution
- Face Identity ControlNet se lanzará más adelante
- Todo puede usarse desde el mismo notebook, cambiando la configuración según cada ControlNet
-
LoRA
- Stable Cascade ofrece su propia implementación para entrenar y usar LoRA
- LoRA puede usarse para hacer fine-tuning del modelo condicionado por texto, Stage C
- Se pueden agregar y entrenar nuevos tokens, y añadir capas LoRA al modelo
- lora.ipynb muestra cómo usar una LoRA entrenada
-
Reconstrucción de imágenes
- reconstruct_images.ipynb muestra cómo codificar y decodificar imágenes, así como las ventajas del método de alta compresión
- El Diffusion Autoencoder de Stable Cascade permite trabajar en un espacio muy comprimido
- Stage A y Stage B pueden usarse en modelos propios, de forma similar a como se usa el VAE de Stable Diffusion para entrenar otros modelos
- El batch de ejemplo
4 x 3 x 1024 x 1024se codifica como4 x 16 x 24 x 24 - El factor de compresión espacial es
1024 / 24 = 42.67 - Después puede volver a decodificarse como
4 x 3 x 1024 x 1024con Stage A y Stage B - Se indica que los resultados de reconstrucción son muy cercanos al original incluso en detalles pequeños, y que una reconstrucción así no sería posible con un VAE estándar u otros métodos similares
Entrenamiento, app y licencia
- El código de entrenamiento incluye entrenamiento de Stable Cascade desde cero, fine-tuning, ControlNet y LoRA
- Los métodos detallados de entrenamiento están disponibles en la training folder
- La base de código está en una etapa inicial de desarrollo
- Puede haber errores inesperados
- El código de entrenamiento e inferencia podría no estar completamente optimizado
- Si hay interés, planean seguir publicando actualizaciones con mejoras y optimizaciones recientes
- Están abiertos a recibir ideas, feedback y contribuciones de actualización
- Para ejecutar la app de Gradio, primero instala lo siguiente
pip3 install gradiopip3 install acceleratepip3 install git+https://github.com/kashif/diffusers.git@wuerstchen-v3
- Desde la raíz del proyecto, ejecuta la app de Gradio con el siguiente comando
PYTHONPATH=./ python3 gradio_app/app.py
- El código se distribuye bajo la MIT LICENSE
- Los pesos del modelo disponibles en Hugging Face se distribuyen bajo la STABILITY AI NON-COMMERCIAL RESEARCH COMMUNITY LICENSE
1 comentarios
Opiniones en Hacker News
Después de usarlo unas horas, parece que el cumplimiento del prompt mejoró mucho.
Por ahora la calidad parece inferior a la de algunos modelos SDXL, pero voy a reservarme el juicio hasta probarlo unos días más.
También es rápido; se siente aproximadamente 2 a 3 veces más rápido que SDXL no turbo.
Si para forzar una apariencia o profundidad específicas hay que recurrir a ControlNet, OpenPose y hasta depth maps, la solución para cada generación termina siendo demasiado personalizada.
Al probarlo directamente, vi mejoras en cómo sigue el prompt, y las imágenes también me gustaron más visualmente.
Dicen que el modelo más grande tiene 1,400 millones de parámetros más que SDXL, y SDXL ya exige bastante VRAM.
Muy impresionante.
Según entiendo, Stability AI actualmente recibe inversión de riesgo, pero parece inevitable que queme muchísimo dinero y tampoco está claro si su modelo de negocio es sostenible.
Tal vez merezca recibir financiamiento gubernamental para investigación.
Se reportó que, al momento del acuerdo con Intel, gastaba alrededor de 8 millones de dólares al mes en facturas y sueldos, mientras que sus ingresos eran solo una fracción de eso.
Hubo una publicación de Mostaque en X que decía que los ingresos de agosto fueron de 1.2 millones de dólares y que ese mes iban camino a 3 millones por software y servicios, pero luego fue eliminada.
https://fortune.com/2023/11/29/stability-ai-sale-intel-ceo-r...
Hoy la búsqueda de HN no me está dando buenos resultados, así que no encuentro el comentario específico que recuerdo.
Si alguien puede encontrarlo, su página de usuario está aquí: https://news.ycombinator.com/user?id=emadm
Entonces me pregunto cómo funciona esta estructura.
¿Es trabajo exclusivo para stability.ai?
Viendo el commit, la licencia cambió de MIT a una licencia propia personalizada: https://github.com/Stability-AI/StableCascade/commit/209a526...
¿Es legalmente posible usar un snapshot anterior al cambio de licencia bajo la licencia MIT existente?
En general, los tribunales miran el panorama completo, consideran la intención y entienden que puede haber errores administrativos.
Sin embargo, podría haber una excepción si alguna empresa afirmara que invirtió muchos recursos confiando en la licencia anterior.
El momento del commit parece bastante importante. Si el repositorio estuvo en MIT solo durante unas horas antes de hacerse público, sería difícil que una empresa argumente que hizo una inversión sustancial.
Ese commit puede seguir usándose como se quiera bajo la licencia MIT que tenía al momento de publicarse.
Es parecido a comprar un ebook: aunque después salga una segunda edición solo en tapa dura, todavía puedes leer el ebook de la primera edición.
Son obras distintas bajo licencias distintas.
Stability AI dijo que esta licencia no comercial se debe a que es una vista previa técnica, como SDXL 0.9.
Puedes cerrar una base de código con licencia MIT, pero no puedes cambiar retroactivamente la licencia del código antiguo que ya fue publicado.
El commit inicial de Stability tenía una licencia MIT, así que puedes hacer fork de ese commit y usarlo como quieras.
La parte complicada es que hicieron un commit cambiando la licencia de MIT a propietaria, pero sin cambios de código.
Eso posiblemente no sea válido, porque no se puede distribuir la misma base de código bajo dos licencias contradictorias entre sí.
Solo se puede aplicar la nueva licencia a los cambios agregados a la base de código después del cambio de licencia.
No diría que sea “ilegal”, pero como ya distribuyeron el mismo software bajo una licencia abierta, sostener que es software propietario probablemente no aguantaría en tribunales.
Aquí hay un playground optimizado: https://www.fal.ai/models/stable-cascade
Especialmente en un campo tan competitivo como este, y el público de HN probablemente prefiera ejecutarlo por su cuenta si le piden registrarse solo para probar la generación de una imagen.
Como otros generadores de imágenes que he probado, este tampoco logra hacer bien las teclas de piano [1].
Parece que haría falta otro enfoque para poder contar los grupos de teclas negras.
[1] https://fal.ai/models/stable-cascade?share=13d35b76-d32f-45c...
En mi caso, cuando generaba imágenes relacionadas con básquetbol, la mayoría tenía más de una pelota.
No soy experto, pero parece que el entrenamiento no capta, o solo capta parcialmente, restricciones básicas de la vida cultural humana, como que todas las teclas de un piano deben ser iguales o que en un partido solo hay una pelota.
Este modelo fue construido sobre la arquitectura Würstchen
Hay un video de uno de los autores que explica muy bien cómo funciona este modelo
https://www.youtube.com/watch?v=ogJsCPqgFMk
Gemini Advanced> Summarize this video: https://www.youtube.com/watch?v=ogJsCPqgFMk
Este video trata sobre el método de entrenamiento de un modelo de difusión de texto a imagen llamado Würstchen
Es mucho más eficiente que métodos existentes como Stable Diffusion 1.4, y puede producir resultados similares usando solo 1/16 del tiempo de entrenamiento y del cómputo
La clave es un proceso de compresión en dos etapas
En la primera etapa, un VQ-VAE comprime la imagen a un espacio latente 4 veces más pequeño que el espacio latente que usa Stable Diffusion, y en la segunda etapa un modelo de difusión vuelve a comprimir el espacio latente 10 veces
Por eso, la tasa de compresión total es de 40 veces, mucho mayor que la compresión de 8 veces de Stable Diffusion
Gracias al espacio latente comprimido, el modelo de difusión de texto a imagen de Würstchen puede entrenarse con un tamaño mucho menor y más rápido que los modelos de Stable Diffusion
Würstchen puede entrenarse en una sola GPU con 24,000 horas-GPU, mientras que Stable Diffusion 1.4 necesita 150,000 horas-GPU
Además de ser eficiente, puede crear imágenes de calidad similar a Stable Diffusion, y en imágenes de mayor resolución o con más detalle incluso puede ofrecer mejor calidad
En general, Würstchen es un avance importante en el campo de la generación de texto a imagen, y al permitir entrenar modelos de forma más eficiente y barata puede ampliar sus usos a imágenes de marketing, ilustraciones de libros y avatares personalizados
¿Hay algún método para generar varias imágenes del mismo modelo?
Por ejemplo, crear imágenes de un modelo de auto rotado desde varios ángulos, pero manteniendo siempre el mismo auto generado
[1] https://zero123.cs.columbia.edu/
Se puede hacer un flujo imagen de entrada => embedding => N imágenes, y si se piensa incluso en el punto de vista de renderizado 3D, se puede aplicar ControlNet a esas N imágenes
Referencia: “The model can also understand image embeddings, which makes it possible to generate variations of a given image (left). There was no prompt given here.”
Recuerdo que antes estuve experimentando con estos dos investigadores para encontrar la mejor forma de conectar condicionalmente Stage B con la representación latente
Nos dimos por vencidos porque simplemente concatenar los canales de entrada con el upsample más cercano de la representación latente daba mejores resultados que una atención cruzada muy fancy con embeddings de posición 2D relativos
Este modelo antes era conocido como Würstchen v3
¿Funcionará en AMD?
No pude encontrar si tiene soporte
Los usuarios que ejecutan Stable Diffusion en AMD probablemente sufren una caída de rendimiento, así que en proyectos como este es una funcionalidad bastante importante
Lo más impresionante, en mi opinión, es la compresión
Poder comprimir imágenes 42 veces es una ventaja enorme en dispositivos móviles, con malas conexiones a internet, o ambas cosas
La idea sería ofrecer resolución 8K con bajo ancho de banda