¿Las GPU de gama alta para consumidores son buenas para la inferencia de difusión estable a escala? Si es así, ¿cuál sería el costo diario de generar millones de imágenes? ¿Realmente necesitas A10, A100 o H100?
En este punto de referencia, respondemos a estas preguntas lanzando una aplicación optimizada basada en Stable Diffusion en SaladCloud.
El resultado: ampliamos hasta 750 réplicas (GPU) y generamos más de 9,2 millones de imágenes utilizando 3,62 TB de almacenamiento en 24 horas por un costo total de $1872 .
Al generar 4954 imágenes por dólar , este punto de referencia muestra que la inferencia generativa de IA a escala en GPU de consumo es práctica, asequible y un camino para reducir los costos de la nube. En esta publicación, revisaremos la arquitectura de la aplicación y los detalles del modelo, la implementación en SaladCloud con detalles rápidos y los resultados de inferencia del punto de referencia. En una publicación posterior, proporcionaremos un tutorial técnico y un código de referencia que puede usar para replicar este punto de referencia.
Este punto de referencia se ejecutó para una herramienta de generación de imágenes de IA generativa de estilo SaaS para obras de arte personalizadas. Los usuarios finales navegan a través de categorías de modelos ajustados, seleccionan un modelo, personalizan el mensaje y los parámetros y envían un trabajo para generar una o más imágenes. Una vez generadas, las imágenes se presentan al usuario final. Ayudamos a desarrollar el contenedor de inferencia para demostrar el potencial de los nodos SaladCloud para este caso de uso. El siguiente diagrama proporciona una descripción de alto nivel de la arquitectura del sistema:
Los componentes principales incluyen una aplicación basada en web (frontend y backend), una cola de trabajos dedicada, un contenedor de inferencia y un servicio de almacenamiento en bloque. Se utilizó Azure Queue Storage para la cola de trabajos y proporcionó programación FIFO. Se utilizó Azure Blob Storage para proporcionar el almacenamiento en bloque. El siguiente diagrama proporciona una descripción de alto nivel de la arquitectura del contenedor de inferencia:
El contenedor se basó en la interfaz de usuario web Stable Diffusion de Automatic1111 . Creamos y agregamos un trabajador personalizado al contenedor escrito en Go que implementó la canalización de procesamiento de trabajos. El trabajador aprovechó el SDK de Azure para Go para comunicarse con los servicios Azure Queue Storage y Azure Blob Storage. El trabajador sondea secuencialmente la cola en busca de un trabajo, utiliza el punto final de la API text2img proporcionado por el servidor de interfaz de usuario web de Stable Diffusion para generar las imágenes y las carga en el contenedor de blobs.
Después de crear la imagen del contenedor de inferencia, creamos una implementación de contenedor administrado por SaladCloud utilizando el portal web.
La implementación se centró en 750 nodos únicos con al menos 4 vCPU, al menos 8 GB de RAM y una GPU NVIDIA RTX series 2000, 3000 o 4000 con al menos 8 GB de VRAM. Aunque SaladCloud permite una selección de nodos más específica, decidimos permitir que el programador tome los primeros nodos disponibles con una GPU compatible según la capacidad de red no utilizada. También es notable que no restringimos la distribución geográfica del despliegue.
La cola de trabajos se llenó con 10.000.000 de mensajes de generación de imágenes variables . El siguiente es un ejemplo de uno de los trabajos:
{"prompt": "photo of a jump rope, lora:magic-fantasy-forest-v2:0.35, magic-fantasy-forest, digital art, most amazing artwork in the world, ((no humans)), volumetric light, soft balanced colours, forest scenery, vines, uhd, 8k octane render, magical, amazing, ethereal, intricate, intricate design, ultra sharp, shadows, cooler colors, trending on cgsociety, ((best quality)), ((masterpiece)), (detailed)","negative_prompt": "oversaturation, oversaturated colours, (deformed, distorted, disfigured:1.3), distorted iris, poorly drawn, bad anatomy, wrong anatomy, extra limb, missing limb, floating limbs, (mutated hands and fingers:1.4), disconnected limbs, mutation, mutated, ugly, disgusting, blurry, amputation, human, man, woman", "sampler_name": "k_euler_a", "steps": 15, "cfg_scale": 7}
Cada trabajo incluía una definición de LoRA incorporada en el mensaje de texto, y cada trabajo utilizaba sustantivos concretos y descripciones del entorno que variaban ligeramente. Las imágenes producidas se fijaron en un tamaño de 512x512 píxeles, el muestreador se fijó en Euler Ancestral, el número de pasos se fijó en 15 y la escala CFG se fijó en 7.
Durante el período de 24 horas, procesamos un total de 9.274.913 solicitudes de generación de imágenes, lo que produjo 3,62 TB de contenido. Hubo fallas de procesamiento mínimas (por ejemplo, problemas transitorios en la red) y sólo se reprocesaron 523 trabajos por segunda vez. En promedio, logramos un tiempo de ciclo de generación de imágenes de 7 segundos . El siguiente mosaico es un ejemplo de algunas de las imágenes generadas:
Una muestra de imágenes generadas a partir del punto de referencia de inferencia de Difusión Estable. El mensaje incluía diferentes sustantivos ambientados en un bosque de estilo fantástico.
Fue divertido explorar las imágenes generadas y observar la calidad relativa dada la falta de tiempo dedicado a ajustar y optimizar los parámetros.
Esta demostración arrojó resultados interesantes que muestran que para la inferencia de difusión estable a escala, las GPU de consumo no solo son capaces sino también más rentables. Dicho esto, estaba lejos de estar optimizado. Hay una serie de tareas técnicas que podríamos realizar para mejorar el rendimiento. En particular, implementamos rápidamente el trabajador y establecimos un bucle que secuencialmente realizaba un trabajo, generaba una imagen y cargaba la imagen. Con esta implementación, mientras esperamos la E/S de la red, la GPU permanece inactiva.
Si adoptamos un enfoque que canaliza trabajos, sacando con entusiasmo uno adicional de la cola y paralelizando la E/S de la red con otra solicitud de generación de imágenes, estimamos al menos una mejora del 10 % en el rendimiento general del trabajo. Sin ajustar el costo total, esto nos llevaría a generar más de 10 millones de imágenes en un día.
La IA generativa es un tipo de inteligencia artificial que puede crear contenido nuevo, como pinturas, música y escritura. Funciona aprendiendo de la información existente para desarrollar un modelo de patrones y relaciones, y tiene aplicaciones prácticas para generar contenido único y personalizado. Se ha convertido en una tecnología cada vez más popular gracias al lanzamiento de una serie de modelos básicos de código abierto, muchos de los cuales se desarrollan en conjuntos de datos a muy gran escala. Combinada con la relativa facilidad de desarrollar y aplicar ajustes y el bajo costo de ejecutar inferencias a escala, la democratización de la IA generativa está desbloqueando nuevas aplicaciones a un ritmo increíble.
En relación específicamente con la inferencia, muchos modelos todavía requieren importantes recursos computacionales para generar contenido de manera eficiente. Sin embargo, los avances en la potencia de procesamiento y la capacidad de recursos de las GPU de consumo han alcanzado a muchas aplicaciones de los modelos de IA generativa.
En lugar de recurrir a grandes proveedores de computación en la nube y competir por el escaso acceso a GPU de nivel empresarial como A10, A100 o H100, un número cada vez mayor de clientes está recurriendo a SaladCloud, un entorno de computación en la nube distribuido compuesto por las PC para juegos más potentes del mundo. .
Una aplicación de IA generativa en rápida expansión incluye la creación de imágenes a partir de una descripción textual. El flujo de trabajo de "texto a imagen" se puede utilizar para generar recursos para juegos, campañas de publicidad y marketing, guiones gráficos y mucho más. Stable Diffusion es un modelo básico popular de código abierto en el espacio de "texto a imagen".
Actualmente estamos planeando demostraciones y evaluaciones comparativas del flujo de trabajo de "imagen a imagen" y "audio a texto", y esperamos compartir más resultados a través de nuestro blog en un futuro próximo.
Este punto de referencia se ejecutó en SaladCloud, la nube de GPU más asequible del mundo para inferencia de IA generativa y otras aplicaciones computacionalmente intensivas. Con más de 10.000 GPU a partir de 0,10 $ la hora, SaladCloud tiene los precios de GPU más bajos del mercado.
Si las elevadas facturas de la nube y la disponibilidad de GPU están obstaculizando su crecimiento y rentabilidad, SaladCloud puede ayudarle con precios bajos y disponibilidad bajo demanda.
Recientemente, Daniel Sarfati , nuestro jefe de producto, se sentó con Clay Pascal de LLM Utils (recurso de LLM muy recomendado) para analizar cómo elegir la GPU adecuada para difusión estable. Para obtener más información sobre la elección de GPU para difusión estable, puede escuchar la entrevista en audio completa .
Contáctenos para una demostración personalizada. Para ejecutar sus propios modelos o recetas preconfiguradas de modelos populares (Stable Diffusion, Whisper, BERT, etc.), consulte el portal SaladCloud para obtener una prueba gratuita.
También publicado aquí .