Utiliser OpenVINO™ pour accélérer le modèle de diffusion stable sur le Rubik's Cube

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

Qu'est-ce qu'un modèle de diffusion stable ?

Stable Diffusion est le modèle de génération d'images AI open source de Stabilité.ai , qui peut saisir du texte et générer des images. Stable Diffusion porte la génération d'images IA à un tout autre niveau et révolutionnera la création de médias.

Cité de : https://github.com/Stability-AI/StableDiffusion

Qu'est-ce que le Rubik's Cube ?

Rubik's Cube est un mini hôte qui peut être bricoler. Il adopte une conception de tiroir. L'assemblage, la mise à niveau et la maintenance ultérieurs n'ont besoin que de brancher et de débrancher le module. En sélectionnant la version du module informatique et en faisant correspondre différents modules IO, une configuration riche peut être formée pour s'adapter à différents scénarios. Lorsque les performances ne suffisent pas, vous pouvez mettre à niveau le module de calcul pour augmenter la puissance de calcul.Lorsque l'interface IO ne correspond pas, vous pouvez remplacer le module IO pour ajuster la fonction sans reconstruire l'ensemble du système

Basé sur OpenVINO, l'accélération d'inférence du modèle Stable Diffusion a été réalisée sur le Rubik's Cube, et la performance de dessin en 14,9 secondes (hors initialisation du modèle) a été obtenue .

Pendant la génération d'image : le processeur occupe 16 %, la mémoire occupe 7,5 Go, le processeur graphique occupe 100 % et l'utilisation de la mémoire vidéo est de 98,5 %.

Le code de test est le suivant, qu'il est pratique pour les lecteurs de reproduire sur le Rubik's Cube : openvino_notebooks/notebooks/225-stable-diffusion-text-to-image à main openvinotoolkit/openvino_notebooks GitHub .

Ensuite, dessinons les points clés pour tout le monde, et regardons les étapes importantes et l'effet des peintures générées. Dans cet exemple de code, nous prenons le modèle de diffusion stable et convertissons le modèle au format de représentation intermédiaire OpenVINO (IR) afin qu'il puisse s'exécuter efficacement sur les GPU Intel®. De plus, en compressant le modèle FP32 en FP16 , nous avons réduit la taille du modèle de moitié (presque de moitié), et il nécessite maintenant beaucoup moins de RAM/VRAM pour fonctionner. Plus important encore, grâce à l'ajout d'Intel® Xe Matrix Extensions ( XMX ), la vitesse de traitement du GPU a également été considérablement améliorée.

Voici quelques résultats intéressants que j'ai obtenus en exécutant ce portable . Avec la carte graphique discrète Intel® Sharp™ A380 , je peux atteindre environ 6,0 itérations par seconde (sans utiliser le mode de débogage). Cela signifie qu'il faut généralement moins de 10 secondes pour générer l'une des images de haute qualité ci-dessous.

La figure 1 est basée sur OpenVINO Notebooks et Rubik's Cube (Intel Sharp™ A380), les résultats générés par la fonction texte-image du modèle "Stable Diffusion".

Après avoir lu les résultats de la peinture AI ci-dessus, êtes-vous tenté et souhaitez-vous l'essayer vous-même? Ensuite, examinons les principales étapes dont vous avez besoin pour exécuter notre exemple de code de bloc-notes Stable Diffusion sur votre propre machine.

Tout d'abord, il s'agit du référentiel des cahiers OpenVINO. Il a tout ce dont vous avez besoin pour faire votre présentation aujourd'hui.

openvino_notebooks/notebooks à main · openvinotoolkit/openvino_notebooks

Stable Diffusion se trouve dans le dossier 225-stable-diffusion-text-to-image

Dans l'exemple de code du bloc-notes, nous avons non seulement introduit le célèbre pipeline de conversion de texte en image, mais également ajouté le pipeline de génération d'image en image. Mais qu'est-ce que cela signifie vraiment ? Comment le faisons-nous fonctionner ?

pipeline

comment installer

Pour installer OpenVINO Notebooks , vous pouvez suivre les instructions ici (pour Windows ) : Windows · openvinotoolkit/openvino_notebooks Wiki · GitHub

Si vous êtes un utilisateur Linux , vous pouvez cliquer sur ce lien : Ubuntu · openvinotoolkit/openvino_notebooks Wiki · GitHub

En général, vous pouvez mettre en œuvre les étapes suivantes :

Installez Python 3.10.x. ( ou ci-dessous) et créer un environnement virtuel

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

Implémenter un clone Git pour un répertoire

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

Installer toutes les bibliothèques et dépendances

pip install -r requirements.txt

Exécuter le bloc-notes Jupyter

jupyter lab notebooks

exécuter toutes les cellules et attendre =)

Maintenant, regardez le code. Nous optimisons de manière réaliste le pipeline PyTorch et exécutons le code à l'aide d' OpenVINO .

Le premier téléchargement et la conversion peuvent prendre un certain temps. Une fois cela fait, vous aurez un ensemble de fichiers IR . Pour plus de commodité, j'ai mis à jour ces modèles d'optimisation pré-formés vers huggingface ( https://huggingface.co/bes-dev/stable-diffusion-v1-4-openvino ), vous pouvez télécharger et utiliser directement

Maintenant, si vous avez la chance d'utiliser une carte graphique discrète Intel RAW, vous pouvez changer le code du nom de l'appareil dans l'image ci-dessous en " GPU ". Par défaut, il utilise « AUTO » et passera automatiquement au GPU détecté .

laissez-le fonctionner sur le GPU

Plugin automatique. Il utilise d'abord le CPU, puis passe automatiquement au GPU.

en conclusion

Le Rubik's Cube est un appareil informatique petit mais puissant. Il est de petite taille, consomme peu d'énergie, est riche en interfaces et hautement extensible. Il est largement utilisé dans des secteurs tels que l'éducation, la santé, la robotique, l'automatisation et l'Internet de Choses.

En combinant Rubik's Cube avec OpenVINO, diverses applications d'IA complexes peuvent être réalisées, y compris des calculs d'inférence de modèle d'IA accélérés, le traitement d'images et de vidéos en temps réel et une communication à faible latence entre les appareils.

Pour évaluer l'effet d'accélération de l'IA d'OpenVINO sur Rubik's Cube , OpenVINO Notebooks est sans aucun doute le premier choix. Bienvenue pour télécharger et installer OpenVINO Notebooks sur Rubik's Cube ! Bon codage. https://github.com/openvinotoolkit/openvino_notebooks

Je suppose que tu aimes

Origine blog.csdn.net/gc5r8w07u/article/details/130719843
conseillé
Classement