Stable Diffusion y otras herramientas de generación de imágenes basadas en IA, como Dall-E y Midjourney, se encuentran entre los usos más populares del aprendizaje profundo en la actualidad. Estas redes entrenadas nos permiten crear imágenes, videos y texto, convirtiendo en realidad lo que antes solo era una posibilidad teórica. Aunque herramientas más avanzadas como ChatGPT pueden requerir instalaciones de servidores complejas para su entrenamiento, correr una red ya entrenada para inferencia es posible en una PC utilizando su tarjeta gráfica. ¿Qué tan rápidas son las GPU de consumo para realizar inferencias de IA utilizando Stable Diffusion? Eso es lo que estamos aquí para investigar.
Hemos realizado pruebas de rendimiento de Stable Diffusion, un popular generador de imágenes basado en IA, en 45 de las últimas GPUs de Nvidia, AMD e Intel para ver cómo se comparan entre sí. Hemos estado probando Stable Diffusion durante más de un año, y si bien las primeras versiones eran más difíciles de ejecutar, las cosas han mejorado considerablemente. No todos los proyectos de IA han recibido el mismo nivel de atención que Stable Diffusion, pero al menos esto nos brinda una idea bastante reveladora de lo que las diversas arquitecturas de GPU pueden lograr con cargas de trabajo de IA si se afinan y se les dedica el esfuerzo necesario.
La forma más sencilla de ejecutar Stable Diffusion es a través del proyecto webui de Automatic1111. Sin embargo, eso no cuenta toda la historia. Para ejecutar las cosas en las GPUs de Nvidia, basta con descargar, extraer y ejecutar el contenido de un solo archivo ZIP. Pero aún hay pasos adicionales necesarios para obtener un mejor rendimiento, utilizando las últimas extensiones de TensorRT. Las instrucciones se encuentran en ese enlace, y ya hemos probado en el pasado el rendimiento de Stable Diffusion con TensorRT en comparación con el modelo base sin ajustes, por si quieres ver cómo han mejorado las cosas con el tiempo. Ahora estamos agregando resultados de todas las GPUs RTX, desde la RTX 2060 hasta la RTX 4090, utilizando las optimizaciones de TensorRT.
Para las GPUs de AMD e Intel, existen versiones modificadas del webui A1111 disponibles que se centran en DirectML y OpenVINO, respectivamente. Utilizamos estas instrucciones del webui OpenVINO para hacer funcionar las GPUs Arc, y estas instrucciones del webui DirectML para las GPUs de AMD. A nuestro entender, las tres compañías han colaborado con la comunidad para ajustar y mejorar el rendimiento y las características.
Sin importar si estás utilizando una GPU de AMD, Intel o Nvidia, habrá algunos obstáculos a superar para obtener un rendimiento óptimo. Si tienes problemas con las instrucciones en cualquiera de estos repositorios enlazados, déjanos una nota en los comentarios y haremos todo lo posible para ayudarte. Una vez que hayas entendido los pasos básicos, sin embargo, no es muy difícil iniciar el webui y comenzar a generar imágenes. Ten en cuenta que la funcionalidad adicional, como el aumento de resolución, es independiente del código base de texto a imagen y requeriría modificaciones y ajustes adicionales para obtener un mejor rendimiento, por lo que eso no fue parte de nuestras pruebas.
Para aquellos que deseen más detalles, los tenemos más abajo en la página. Pero si solo estás aquí por los resultados de las pruebas, comencemos.
Rendimiento de Stable Diffusion 512×512 (Crédito de imagen: Tom’s Hardware)
Estos resultados no son sorprendentes en particular. Nvidia ha estado impulsando la tecnología de IA con sus cores Tensor desde el lanzamiento del Volta V100 a fines de 2017. La serie RTX agregó esta característica en 2018, con mejoras y aumentos de rendimiento en cada generación (consultar más abajo para obtener más detalles sobre el rendimiento teórico). Con la afinación más reciente, la RTX 4090 generó imágenes de Stable Diffusion a una velocidad de más de una imagen por segundo, es decir, 75 por minuto.
La GPU más rápida de AMD, la RX 7900 XTX, solo logró aproximadamente un tercio de ese nivel de rendimiento, con 26 imágenes por minuto. Aún más alarmante, quizás, es el bajo rendimiento de las GPUs de la serie RX 6000 de AMD. La RX 6950 XT generó 6.6 imágenes por minuto, muy por detrás incluso de la RX 7600. Claramente, el acelerador de IA de AMD en la arquitectura RDNA 3 ha ayudado a mejorar el rendimiento en esta carga de trabajo en particular.
La GPU más rápida actual de Intel, la Arc A770 16GB, logró generar 15.4 imágenes por minuto. Hay que tener en cuenta que el hardware tiene un rendimiento teórico que es bastante superior al de la RTX 2080 Ti (si comparamos el rendimiento de XMX FP16 con el rendimiento de Tensor FP16): 157.3 TFLOPS frente a 107.6 TFLOPS. Parece ser que las GPUs Arc alcanzan menos de la mitad de su rendimiento teórico, por lo que las pruebas son el indicativo más importante del rendimiento real.
Aunque existen diferencias entre las diversas GPUs y arquitecturas, el rendimiento suele escalar proporcionalmente con los cálculos teóricos. En nuestras pruebas, la RTX 4090 fue un 46% más rápida que la RTX 4080, mientras que en teoría ofrece un rendimiento de cálculo un 69% superior. Del mismo modo, la RTX 4080 superó a la 4070 Ti en un 24%, a pesar de tener un 22% más de cálculos.
Las arquitecturas más nuevas no necesariamente ofrecen un rendimiento sustancialmente mayor. La RTX 4080 superó a la 3090 Ti en un 10%, a pesar de ofrecer un 20% más de cálculos potenciales. Pero la 3090 Ti también tiene un ancho de banda de memoria más alto (1008 GB/s en comparación con los 717 GB/s de la 4080), y eso ciertamente es un factor. La antigua generación Turing también se mantuvo bien, con la RTX 4070 más nueva superando a la RTX 2080 Ti solo en un 12%, a pesar de ofrecer teóricamente un 8% más de cálculos.
Rendimiento de Stable Diffusion 768×768 (Crédito de imagen: Tom’s Hardware)
Aumentar la resolución a 768×768 requiere que Stable Diffusion tenga más RAM de video para funcionar correctamente. El ancho de banda de memoria también se vuelve más importante, al menos en el extremo inferior del espectro.
La posición relativa de las diversas GPUs de Nvidia no cambia demasiado, y las GPUs RX 7000 de AMD ganan algo de terreno con la RX 7800 XT y superiores, mientras que la RX 7600 baja un poco. La RX 7600 fue un 36% más lenta que la 7700 XT en 512×512, pero bajó a un 44% más lenta en 768×768.
Las GPUs de la generación anterior de AMD tuvieron aún más problemas. La RX 6950 XT no pudo generar ni siquiera dos imágenes por minuto, y las RX 6650 XT, 6600 XT y 6600, todas con 8GB de memoria, no lograron generar ni siquiera una sola imagen. Es un poco extraño, ya que la RX 7600 funcionó bien con solo 8GB de memoria, pero alguna otra diferencia arquitectónica estuvo en juego.
Las GPUs Arc de Intel también perdieron terreno en resoluciones más altas.