La demostración de Stable Diffusion WebGPU es una herramienta en línea útil que te ayuda a generar imágenes con facilidad utilizando solo tu navegador web.
Esta aplicación web está construida sobre el marco create-react-app y depende de JavaScript para funcionar. Para comenzar, asegúrate de estar utilizando la última versión de Chrome y de que JavaScript esté habilitado. También necesitarás activar un par de funciones experimentales: "WebAssembly Experimental" y "Integración de Promesas de JavaScript de WebAssembly Experimental (JSPI)" en la configuración de tu navegador.
Una vez que estés todo configurado, esta herramienta genera imágenes a través de una serie de pasos. Cada paso toma alrededor de un minuto, con 10 segundos adicionales necesarios para que el decodificador VAE complete la imagen. Solo un aviso: si tienes las DevTools abiertas mientras ejecutas la aplicación, ¡podría ralentizar todo aproximadamente el doble!
El modelo UNET, que realiza la mayor parte del trabajo de creación de tus imágenes, opera en la CPU. Esta elección se hace para un mejor rendimiento y resultados más precisos en comparación con ejecutarlo en la GPU. Se recomienda pasar por al menos 20 pasos para obtener resultados decentes, pero si solo lo estás probando, 3 pasos serán suficientes.
Esta aplicación cuenta con una interfaz fácil de usar que te permite cargar el modelo, iniciar la generación de imágenes y ver los resultados con facilidad. Si te encuentras con algún inconveniente mientras la usas, no te preocupes; hay una sección de preguntas frecuentes con consejos de solución de problemas para ayudarte.
Ten en cuenta que, aunque utiliza una GPU, la implementación de WebGPU en onnxruntime aún está en las primeras etapas. Esto significa que podrías encontrar algunas operaciones incompletas, ya que los datos deben transferirse continuamente entre la CPU y la GPU, lo que puede afectar el rendimiento. Actualmente, no se admite la multi-hilo, y ciertas limitaciones en WebAssembly significan que no puedes crear memoria de 64 bits utilizando SharedArrayBuffer.
La buena noticia es que el desarrollador es consciente de estos problemas y está trabajando activamente en soluciones a través de cambios propuestos y parches. Si estás interesado en experimentar con la herramienta por tu cuenta, el código fuente está disponible en GitHub. También hay una versión parcheada de onnxruntime que te permite trabajar con grandes modelos de lenguaje a través de transformers.js, aunque su fiabilidad puede variar según la situación. Además, el desarrollador planea enviar una solicitud de extracción al repositorio de onnxruntime para ayudar a mejorarlo aún más.
∞