Uso de OpenVINO™ para acelerar el modelo de difusión estable en el cubo de Rubik

Autor: Dr. Wu Zhuo Intel AI Evangelist
           Liu Li Intel IoT Industry Innovation Ambassador

¿ Qué es un modelo de difusión estable ?

Stable Diffusion es el modelo de generación de imágenes de IA de código abierto de stable.ai , que puede ingresar texto y generar imágenes. Stable Diffusion lleva la generación de imágenes de IA a un nivel completamente nuevo y revolucionará la creación de medios.

Citado de: https://github.com/Stability-AI/StableDiffusion

¿Qué es el cubo de Rubik?

Rubik's Cube es un mini host que se puede hacer tú mismo. Adopta un diseño de cajón. El montaje, la actualización y el mantenimiento posteriores solo necesitan enchufar y desconectar el módulo. Al seleccionar la versión del módulo informático y hacer coincidir diferentes módulos IO, se puede formar una configuración rica para adaptarse a diferentes escenarios. Cuando el rendimiento no es suficiente, puede actualizar el módulo informático para aumentar la potencia informática.Cuando la interfaz IO no coincide, puede reemplazar el módulo IO para ajustar la función sin reconstruir todo el sistema

Con base en OpenVINO, la aceleración de inferencia del modelo de Difusión Estable se realizó en el Cubo de Rubik, y se obtuvo el rendimiento de dibujo en 14,9 segundos (excluyendo la inicialización del modelo).

Durante la generación de imágenes: la CPU ocupa el 16 %, la memoria ocupa 7,5 GB, la GPU ocupa el 100 % y la utilización de la memoria de video es del 98,5 %.

El código de prueba es el siguiente, que es conveniente para los lectores reproducir en el Cubo de Rubik: openvino_notebooks/notebooks/225-stable-diffusion-text-to-image en openvinotoolkit/openvino_notebooks GitHub principal .

Luego, dibujemos los puntos clave para todos y echemos un vistazo a los pasos importantes y el efecto de las pinturas generadas. En este ejemplo de código, tomamos el modelo de difusión estable y lo convertimos al formato de representación intermedia (IR) de OpenVINO para que pueda ejecutarse de manera eficiente en las GPU Intel®. Además, al comprimir el modelo FP32 a FP16 , reducimos el tamaño del modelo a la mitad (casi a la mitad), y ahora requiere mucha menos RAM/VRAM para funcionar. Lo que es más importante, debido a la adición de Intel® Xe Matrix Extensions ( XMX ), la velocidad de procesamiento de la GPU también se ha mejorado significativamente.

Estos son algunos resultados interesantes que obtuve al ejecutar este portátil . Con los gráficos discretos Intel® Sharp™ A380 , puedo lograr alrededor de 6,0 iteraciones por segundo (sin usar el modo de depuración). Esto significa que, por lo general, lleva menos de 10 segundos generar una de las imágenes de alta calidad a continuación.

La figura 1 se basa en los portátiles OpenVINO y el cubo de Rubik (Intel Sharp™ A380), los resultados generados por la función de texto a imagen del modelo "Difusión estable".

Después de leer los resultados de la pintura de IA anterior, ¿estás tentado y quieres probarlo tú mismo? A continuación, echemos un vistazo a los pasos principales que necesita para ejecutar nuestro ejemplo de código de notebook Stable Diffusion en su propia máquina.

Primero, este es el repositorio de OpenVINO Notebooks. Tiene todo lo que necesitas para hacer tu presentación hoy.

openvino_notebooks/notebooks en principal · openvinotoolkit/openvino_notebooks

Stable Diffusion se encuentra en la carpeta 225-stable-diffusion-text-to-image

En el ejemplo del código del cuaderno, no solo presentamos la famosa canalización de texto a imagen, sino que también agregamos la canalización de generación de imagen a imagen. ¿Pero qué significa realmente? ¿Cómo lo ejecutamos?

tubería

cómo instalar

Para instalar OpenVINO Notebooks , puede seguir las instrucciones aquí (para Windows ): Windows · openvinotoolkit/openvino_notebooks Wiki · GitHub

Si es usuario de Linux , puede hacer clic en este enlace: Ubuntu · openvinotoolkit/openvino_notebooks Wiki · GitHub

En general, puede implementar los siguientes pasos:

Instale Python 3.10.x. ( o inferior) y crear un entorno virtual

python3 -m venv openvino_env
source openvino_env/bin/activate #for linux

Implementar un clon de Git para un directorio

git clone --depth=1 https://github.com/openvinotoolkit/openvino_notebooks.git
cd openvino_notebooks

Instalar todas las bibliotecas y dependencias

pip install -r requirements.txt

Ejecutar Jupyter Notebook

jupyter lab notebooks

ejecutar todas las celdas y esperar =)

Ahora, mira el código. Optimizamos de manera realista la canalización de PyTorch y ejecutamos el código usando OpenVINO .

La primera descarga y conversión puede demorar un tiempo. Una vez hecho esto, tendrá un conjunto de archivos IR . Para mayor comodidad, he actualizado estos modelos de optimización preentrenados a huggingface ( https://huggingface.co/bes-dev/stable-diffusion-v1-4-openvino ), puede descargarlos y usarlos directamente.

Ahora, si tiene la suerte de usar una tarjeta gráfica Intel RAW discreta, puede cambiar el código del nombre del dispositivo en la imagen a continuación a " GPU ". De forma predeterminada, utiliza " AUTO " y cambiará automáticamente a la GPU detectada .

déjalo correr en la GPU

Complemento automático. Primero usa la CPU, luego cambia automáticamente a la GPU.

en conclusión

El cubo de Rubik es un dispositivo informático pequeño pero potente, son de tamaño pequeño, bajo consumo de energía, ricas en interfaces y altamente ampliables, y se utilizan ampliamente en industrias como la educación, la salud, la robótica, la automatización y el Internet de las cosas. Cosas.

Al combinar el cubo de Rubik con OpenVINO, se pueden realizar varias aplicaciones complejas de IA, incluidos cálculos de inferencia de modelos de IA acelerados, procesamiento de imágenes y videos en tiempo real y comunicación de baja latencia entre dispositivos.

Para evaluar el efecto de aceleración de IA de OpenVINO en el cubo de Rubik , OpenVINO Notebooks es sin duda la primera opción. ¡Bienvenido a descargar e instalar OpenVINO Notebooks en Rubik's Cube!¡Feliz codificación! https://github.com/openvinotoolkit/openvino_notebooks

Supongo que te gusta

Origin blog.csdn.net/gc5r8w07u/article/details/130719843
Recomendado
Clasificación