Modèles et plateformes d’IA

StreamDiffusion : Une Solution de Niveau de Pipeline pour la Génération Interactive en Temps Réel

mm
Ajouter Unite.AI à vos sources préférées sur Google
StreamDiffusion: A Pipeline-level Solution for Real-time Interactive Generation

En raison de son immense potentiel et de ses opportunités de commercialisation, en particulier dans les domaines du jeu, de la diffusion et de la vidéo en streaming, le Metaverse est actuellement l’une des technologies à la croissance la plus rapide. Les applications Metaverse modernes utilisent des cadres d’intelligence artificielle, notamment la vision par ordinateur et les modèles de diffusion, pour améliorer leur réalisme. Un défi important pour les applications Metaverse est l’intégration de divers pipelines de diffusion qui offrent une faible latence et un débit élevé, garantissant une interaction efficace entre les humains et ces applications.

Aujourd’hui, les cadres d’intelligence artificielle basés sur la diffusion excellent dans la création d’images à partir de prompts textuels ou d’images, mais font défaut dans les interactions en temps réel. Cette limitation est particulièrement évidente dans les tâches qui nécessitent des entrées continues et un débit élevé, telles que les graphiques de jeux vidéo, les applications Metaverse, la diffusion et la vidéo en streaming en direct.

Dans cet article, nous allons discuter de StreamDiffusion, un pipeline de diffusion en temps réel conçu pour générer des images interactives et réalistes, en répondant aux limitations actuelles des cadres de diffusion dans les tâches impliquant des entrées continues. StreamDiffusion est une approche innovante qui transforme le bruitage séquentiel de l’image originale en débruitage par lots, visant à permettre un débit élevé et des flux fluides. Cette approche s’éloigne de la méthode traditionnelle d’attente et d’interaction utilisée par les cadres de diffusion existants. Dans les sections à venir, nous allons examiner le cadre StreamDiffusion en détail, en explorant son fonctionnement, son architecture et ses résultats comparatifs par rapport aux cadres actuels de pointe. Commençons.

StreamDiffusion : Une Introduction à la Génération Interactive en Temps Réel

Les applications Metaverse sont des applications gourmandes en performances, car elles traitent une grande quantité de données, notamment des textes, des animations, des vidéos et des images en temps réel, pour offrir à leurs utilisateurs des interfaces interactives et des expériences de marque. Les applications Metaverse modernes s’appuient sur des cadres d’intelligence artificielle, notamment la vision par ordinateur, le traitement d’images et les modèles de diffusion, pour atteindre une faible latence et un débit élevé, garantissant une expérience utilisateur fluide. Actuellement, la majorité des applications Metaverse s’appuient sur la réduction du nombre d’itérations de débruitage pour assurer un débit élevé et améliorer les capacités interactives en temps réel. Ces cadres optent pour une stratégie commune qui consiste soit à reformuler le processus de diffusion avec des équations différentielles ordinaires (ODE), soit à réduire les modèles de diffusion multi-étapes à quelques étapes ou même à une seule étape. Bien que cette approche donne des résultats satisfaisants, elle présente certaines limites, notamment une flexibilité limitée et des coûts de calcul élevés.

En revanche, StreamDiffusion est une solution de niveau de pipeline qui commence dans une direction orthogonale et améliore les capacités du cadre pour générer des images interactives en temps réel tout en assurant un débit élevé. StreamDiffusion utilise une stratégie simple qui consiste à débruirer l’étape de débruitage. Cette stratégie s’inspire du traitement asynchrone, car le cadre n’a pas besoin d’attendre que la première étape de débruitage soit terminée avant de passer à la deuxième étape, comme le montre l’image suivante. Pour résoudre le problème de la fréquence de traitement du U-Net et de la fréquence d’entrée de manière synchrone, le cadre StreamDiffusion met en œuvre une stratégie de file d’attente pour mettre en cache l’entrée et les sorties.

Bien que le pipeline StreamDiffusion s’inspire du traitement asynchrone, il est unique en son genre, car il met en œuvre un parallélisme GPU qui permet au cadre d’utiliser un seul composant U-Net pour débruirer une fonction de bruit latente par lots. De plus, les pipelines de diffusion existants mettent l’accent sur les prompts donnés dans les images générées en incorporant une guidance sans classeur, ce qui rend les pipelines actuels encombrés de surcharges de calcul et de redondances. Pour éviter que le pipeline StreamDiffusion ne rencontre les mêmes problèmes, il met en œuvre une approche innovante de guidance sans classeur résiduelle (RCFG) qui utilise un bruit résiduel virtuel pour approximer les conditions négatives, permettant ainsi au cadre de calculer les conditions de bruit négatif dans les premières étapes du processus. De plus, le pipeline StreamDiffusion réduit les exigences de calcul d’un pipeline de diffusion traditionnel en mettant en œuvre une stratégie de filtrage de similarité stochastique qui détermine si le pipeline doit traiter les images d’entrée en calculant les similarités entre les entrées continues.

Le cadre StreamDiffusion est construit sur les connaissances des modèles de diffusion et des modèles de diffusion accélérés.

Les modèles de diffusion sont connus pour leurs capacités exceptionnelles de génération d’images et le contrôle qu’ils offrent. En raison de leurs capacités, les modèles de diffusion ont trouvé des applications dans l’édition d’images, la génération d’images à partir de textes et la génération de vidéos. De plus, le développement de modèles cohérents a démontré le potentiel d’améliorer l’efficacité du traitement des échantillons sans compromettre la qualité des images générées par le modèle, ce qui a ouvert de nouvelles portes pour étendre l’applicabilité et l’efficacité des modèles de diffusion en réduisant le nombre d’étapes d’échantillonnage. Bien que très capables, les modèles de diffusion ont une limitation majeure : la génération d’images lente. Pour résoudre cette limitation, les développeurs ont introduit des modèles de diffusion accélérés, des cadres de diffusion basés sur la prédiction et la correction, et des solveurs de pas de taille adaptative pour augmenter les vitesses de sortie.

Le facteur de distinction entre StreamDiffusion et les cadres de diffusion traditionnels est que tandis que les seconds se concentrent principalement sur la faible latence des modèles individuels, les premiers introduisent une approche de niveau de pipeline conçue pour atteindre des débits élevés, permettant une diffusion interactive efficace.

StreamDiffusion : Fonctionnement et Architecture

Le pipeline StreamDiffusion est un pipeline de diffusion en temps réel conçu pour générer des images interactives et réalistes, et il emploie 6 composants clés, notamment la guidance sans classeur résiduelle (RCFG), la stratégie de lots de diffusion, le filtre de similarité stochastique, une file d’attente d’entrée-sortie, des outils d’accélération de modèle avec auto-encodeur, et une procédure de précalcul. Parlons de ces composants en détail.

Stratégie de Lots de Diffusion

Traditionnellement, les étapes de débruitage dans un modèle de diffusion sont effectuées séquentiellement, ce qui entraîne une augmentation significative du temps de traitement du U-Net par rapport au nombre d’étapes de traitement. Cependant, il est essentiel d’augmenter le nombre d’étapes de traitement pour générer des images de haute fidélité, et le cadre StreamDiffusion introduit la stratégie de lots de diffusion pour surmonter la latence élevée dans les cadres de diffusion interactifs.

Dans la stratégie de lots de diffusion, les opérations de débruitage séquentielles sont restructurées en processus par lots, chaque lot correspondant à un nombre prédéterminé d’étapes de débruitage, et le nombre de ces étapes de débruitage est déterminé par la taille de chaque lot. Grâce à cette approche, chaque élément du lot peut procéder à une étape supplémentaire en utilisant le U-Net unique dans la séquence de débruitage. En mettant en œuvre la stratégie de lots de diffusion de manière itérative, les images d’entrée codées à l’instant “t” peuvent être transformées en leurs résultats d’image à image respectifs à l’instant “t+n”, ce qui rationalise le processus de débruitage.

Guidance sans Classeur Résiduelle

La guidance sans classeur (CFG) est un algorithme d’intelligence artificielle qui effectue une série de calculs vectoriels entre le terme de conditionnement d’origine et un terme de conditionnement négatif ou non conditionnel pour améliorer l’effet du conditionnement d’origine. L’algorithme renforce l’effet du prompt, même si pour calculer le bruit de conditionnement négatif, il est nécessaire de coupler les variables latentes d’entrée individuelles avec un incrustation de conditionnement négatif, suivie du passage de ces incrustations à travers le U-Net à l’instant de référence.

Pour résoudre ce problème posé par l’algorithme de guidance sans classeur, le cadre StreamDiffusion introduit l’algorithme de guidance sans classeur résiduelle avec l’objectif de réduire les coûts de calcul pour les interférences supplémentaires du U-Net pour l’incrustation de conditionnement négatif. Tout d’abord, l’entrée latente codée est transférée à la distribution de bruit en utilisant les valeurs déterminées par le planificateur de bruit. Une fois que le modèle de cohérence latent a été mis en œuvre, l’algorithme peut prédire la distribution de données et utiliser le bruit résiduel de la CFG pour générer la distribution de bruit suivante.

File d’Attente d’Entrée-Sortie

Le problème majeur avec les cadres de génération d’images à haute vitesse est leurs modules de réseau de neurones, notamment les composants U-Net et VAE. Pour maximiser l’efficacité et la vitesse de sortie globale, les cadres de génération d’images déplacent les processus tels que le prétraitement et le post-traitement des images qui ne nécessitent pas de traitement supplémentaire par les modules de réseau de neurones en dehors du pipeline, puis les traitent en parallèle. De plus, en termes de traitement de l’image d’entrée, des opérations spécifiques, notamment la conversion de format de tenseur, la redimensionnement des images d’entrée et la normalisation, sont exécutées par le pipeline de manière minutieuse.

Pour résoudre la disparité entre les fréquences de traitement du modèle et les entrées humaines, le pipeline intègre un système de file d’attente d’entrée-sortie qui permet une parallélisation efficace, comme le montre l’image suivante.

Les tenseurs d’entrée traités sont d’abord mis en file d’attente de manière méthodique pour les modèles de diffusion, et à chaque trame, le modèle récupère le tenseur le plus récent de la file d’entrée et le transmet à l’encodeur VAE, ce qui déclenche le processus de génération d’images. En même temps, le tenseur de sortie de l’encodeur VAE est transmis à la file de sortie. Enfin, les données d’image traitées sont transmises au client de rendu.

Filtre de Similarité Stochastique

Dans les scénarios où les images restent inchangées ou montrent des changements minimaux sans environnement statique ou sans interaction utilisateur active, des images d’entrée ressemblant les unes aux autres sont alimentées à plusieurs reprises dans les composants U-Net et VAE. Cela entraîne la génération d’images presque identiques et une consommation supplémentaire de ressources GPU. De plus, dans les scénarios impliquant des entrées continues, des images d’entrée non modifiées peuvent apparaître occasionnellement. Pour surmonter ce problème et éviter une utilisation inutile des ressources, le pipeline StreamDiffusion emploie un composant de filtre de similarité stochastique dans son pipeline. Le filtre de similarité stochastique calcule d’abord la similarité cosinuse entre l’image de référence et l’image d’entrée, et utilise le score de similarité cosinuse pour calculer la probabilité de sauter les processus U-Net et VAE suivants.

Sur la base du score de probabilité, le pipeline décide si les processus suivants, tels que le codage VAE, le décodage VAE et le U-Net, doivent être sautés ou non. Si ces processus ne sont pas sautés, le pipeline enregistre l’image d’entrée à ce moment-là et met à jour simultanément l’image de référence à utiliser dans le futur. Ce mécanisme de saut basé sur la probabilité permet au pipeline StreamDiffusion de fonctionner pleinement dans des scénarios dynamiques avec une faible similarité entre les trames, tandis que dans les scénarios statiques, le pipeline fonctionne avec une similarité plus élevée entre les trames. Cette approche aide à conserver les ressources de calcul et assure une utilisation optimale du GPU en fonction de la similarité des images d’entrée.

Précalcul

L’architecture U-Net nécessite à la fois des incrustations de conditionnement et des variables latentes d’entrée. Traditionnellement, les incrustations de conditionnement sont dérivées d’incrustations de prompts qui restent constantes entre les trames. Pour optimiser la dérivation à partir des incrustations de prompts, le pipeline StreamDiffusion précalcule ces incrustations de prompts et les stocke dans un cache, qui sont ensuite appelés en mode de diffusion ou interactif. Dans le cadre du U-Net, la paire clé-valeur est calculée sur la base de l’incrustation de prompt précalculée de chaque trame, et avec des modifications mineures dans le U-Net, ces paires clé-valeur peuvent être réutilisées.

Accélération de Modèle et Auto-Encodeur Léger

Le pipeline StreamDiffusion emploie TensorRT, un outil d’optimisation de Nvidia (NVDA ) pour les interfaces d’apprentissage automatique, pour construire les moteurs VAE et U-Net, afin d’accélérer la vitesse d’inférence. Pour ce faire, le composant TensorRT effectue de nombreuses optimisations sur les réseaux de neurones conçus pour améliorer l’efficacité et le débit pour les cadres et les applications d’apprentissage automatique.

Pour optimiser la vitesse, le cadre StreamDiffusion configure le cadre pour utiliser des dimensions d’entrée fixes et des tailles de lots statiques, afin d’assurer une allocation de mémoire et des graphiques de calcul optimaux pour une taille d’entrée spécifique, dans le but d’atteindre des temps de traitement plus rapides.

La figure ci-dessus fournit une vue d’ensemble du pipeline d’inférence. Le pipeline de diffusion de base abrite les composants U-Net et VAE. Le pipeline intègre un lot de débruitage, un cache de bruit échantillonné, un cache d’incrustation de prompt précalculée et un cache de valeurs de planificateur pour améliorer la vitesse et la capacité du pipeline à générer des images en temps réel. Le filtre de similarité stochastique (SSF) est déployé pour optimiser l’utilisation du GPU et également pour gérer dynamiquement le passage du modèle de diffusion.

StreamDiffusion : Expériences et Résultats

Pour évaluer ses capacités, le pipeline StreamDiffusion est mis en œuvre sur les cadres LCM et SD-turbo. Le TensorRT de NVIDIA est utilisé comme accélérateur de modèle, et pour permettre une efficacité légère, le pipeline emploie le composant TAESD. Examinons maintenant comment le pipeline StreamDiffusion se comporte par rapport aux cadres actuels de pointe.

Évaluation Quantitative

La figure suivante montre la comparaison d’efficacité entre le U-Net séquentiel d’origine et les composants de débruitage par lots dans le pipeline, et comme on peut le voir, la mise en œuvre de l’approche de débruitage par lots aide à réduire le temps de traitement de manière significative, d’environ 50%, par rapport aux boucles U-Net traditionnelles à des étapes de débruitage séquentielles.

De plus, le temps d’inférence moyen à différentes étapes de débruitage connaît également une augmentation significative avec différents facteurs d’accélération par rapport aux pipelines actuels de pointe, et les résultats sont présentés dans l’image suivante.

Ensuite, le pipeline StreamDiffusion avec le composant RCFG montre un temps d’inférence inférieur par rapport aux pipelines incluant le composant CFG traditionnel.

De plus, l’impact de l’utilisation du composant RCFG est évident dans les images suivantes par rapport à l’utilisation du composant CFG.

Comme on peut le voir, l’utilisation de la CFG intensifie l’impact du prompt textuel dans la génération d’images, et l’image ressemble beaucoup plus au prompt d’entrée par rapport aux images générées par le pipeline sans utiliser le composant CFG. Les résultats s’améliorent encore avec l’utilisation du composant RCFG, car l’influence des prompts sur les images générées est très significative par rapport au composant CFG d’origine.

Pensées Finales

Dans cet article, nous avons discuté de StreamDiffusion, un pipeline de diffusion en temps réel conçu pour générer des images interactives et réalistes, et pour résoudre les limitations actuelles des cadres de diffusion dans les tâches impliquant des entrées continues. StreamDiffusion est une approche simple et innovante qui vise à transformer le bruitage séquentiel de l’image originale en débruitage par lots. StreamDiffusion vise à permettre un débit élevé et des flux fluides en éliminant l’approche traditionnelle d’attente et d’interaction utilisée par les cadres de diffusion actuels. Les gains d’efficacité potentiels mettent en évidence le potentiel du pipeline StreamDiffusion pour les applications commerciales offrant un calcul haute performance et des solutions convaincantes pour l’intelligence artificielle générative.

Un ingénieur de profession, un écrivain de cœur. Kunal est un rédacteur technique avec une profonde affection et une compréhension de l'IA et du ML, dédié à simplifier les concepts complexes dans ces domaines grâce à sa documentation engageante et informative.