Intelligence Artificielle
StreamDiffusion : une solution au niveau du pipeline pour la génération interactive en temps réel

En raison de son vaste potentiel et de ses opportunités de commercialisation, notamment dans les domaines des jeux, de la diffusion et du streaming vidéo, le Metaverse est actuellement l'une des technologies à la croissance la plus rapide. Les applications Metaverse modernes utilisent des cadres d'IA, notamment des modèles de vision par ordinateur et de diffusion, pour améliorer leur réalisme. Un défi important pour les applications Metaverse consiste à intégrer divers pipelines de diffusion qui offrent une faible latence et un débit élevé, garantissant ainsi une interaction efficace entre les humains et ces applications.
Les frameworks d'IA basés sur la diffusion d'aujourd'hui excellent dans la création d'images à partir d'invites textuelles ou d'images, mais ne sont pas à la hauteur des interactions en temps réel. Cette limitation est particulièrement évidente dans les tâches qui nécessitent une saisie continue et un débit élevé, telles que les graphismes de jeux vidéo, les applications Metaverse, la diffusion et le streaming vidéo en direct.
Dans cet article, nous discuterons de StreamDiffusion, un pipeline de diffusion en temps réel développé pour générer des images interactives et réalistes, abordant les limites actuelles des cadres basés sur la diffusion dans les tâches impliquant une entrée continue. StreamDiffusion est une approche innovante qui transforme le bruit séquentiel de l'image originale en débruitage par lots, dans le but de permettre des flux fluides et à haut débit. Cette approche s'éloigne de la méthode traditionnelle d'attente et d'interaction utilisée par les cadres basés sur la diffusion. Dans les sections à venir, nous approfondirons le framework StreamDiffusion en détail, en explorant son fonctionnement, son architecture et ses résultats comparatifs par rapport aux frameworks de pointe actuels. Commençons.
StreamDiffusion : une introduction à la génération interactive en temps réel
Les métaverses 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 ses interfaces et son expérience interactives de marque. Les applications Metaverse modernes s'appuient sur des cadres basés sur l'IA, notamment des modèles de vision par ordinateur, de traitement d'image et de diffusion, pour atteindre une faible latence et un débit élevé afin de garantir une expérience utilisateur transparente. Actuellement, la majorité des applications Metaverse s’appuient sur la réduction de l’apparition d’itérations de débruitage pour garantir un débit élevé et améliorer les capacités interactives de l’application en temps réel. Ces cadres optent pour une stratégie commune qui implique soit de recadrer le processus de diffusion avec des ODE neuronales (équations différentielles ordinaires), soit de réduire les modèles de diffusion à plusieurs étapes en quelques étapes, voire en 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.
D'autre part, StreamDiffusion est une solution au niveau du pipeline qui part d'une direction orthogonale et améliore les capacités du framework pour générer des images interactives en temps réel tout en garantissant un débit élevé. StreamDiffusion utilise une stratégie simple dans laquelle, au lieu de débruiter l'entrée d'origine, le framework regroupe l'étape de débruitage. La stratégie s'inspire du traitement asynchrone car le framework n'a pas besoin d'attendre la fin de la première étape de débruitage avant de pouvoir passer à la deuxième étape, comme le montre l'image suivante. Pour résoudre le problème de la fréquence de traitement U-Net et de la fréquence d'entrée de manière synchrone, le framework StreamDiffusion implémente 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 à sa manière car il implémente le parallélisme GPU qui permet au framework d'utiliser un seul composant UNet pour débruiter une fonctionnalité de bruit latent par lots. Par ailleurs, existant pipelines basés sur la diffusion Mettez l'accent sur les invites données dans les images générées en incorporant des conseils sans classificateur, ce qui fait que les pipelines actuels sont truqués avec des frais de calcul redondants et excessifs. Pour garantir que le pipeline StreamDiffusion ne rencontre pas les mêmes problèmes, il met en œuvre une approche innovante RCFG ou Residual Classifier-Free Guidance qui utilise un bruit résiduel virtuel pour se rapprocher des conditions négatives, permettant ainsi au cadre de calculer les conditions de bruit négatives dans la phase initiale. étapes du processus lui-même. De plus, le pipeline StreamDiffusion réduit également 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 similitudes entre les entrées continues.
Le framework StreamDiffusion s'appuie sur les enseignements de modèles de diffusion et modèles de diffusion par accélération.
Les modèles de diffusion sont connus pour leurs capacités exceptionnelles de génération d’images et le niveau de contrôle qu’ils offrent. En raison de leurs capacités, les modèles de diffusion ont trouvé leurs applications dans l'édition d'images, la génération de texte en image et la génération de vidéos. En outre, 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 qu’extrêmement performants, les modèles de diffusion ont tendance à avoir une limitation majeure : la lenteur de la génération d’images. Pour remédier à cette limitation, les développeurs ont introduit des modèles de diffusion accélérée, des cadres basés sur la diffusion qui ne nécessitent pas d'étapes de formation supplémentaires ni ne mettent en œuvre de stratégies de prédicteur-correcteur et des solveurs adaptatifs par taille de pas pour augmenter les vitesses de sortie.
Le facteur distinctif entre StreamDiffusion et les frameworks traditionnels basés sur la diffusion est que, alors que ce dernier se concentre principalement sur la faible latence des modèles individuels, le premier introduit une approche au niveau du pipeline conçue pour atteindre des débits élevés permettant une diffusion interactive efficace.
StreamDiffusion : Travail et Architecture
Le pipeline StreamDiffusion est un pipeline de diffusion en temps réel développé pour générer des images interactives et réalistes, et il utilise 6 composants clés à savoir : RCFG ou Residual Classifier Free Guidance, stratégie Stream Batch, Stochastic Similarity Filter, 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 diffusion par lots
Traditionnellement, les étapes de débruitage d'un modèle de diffusion sont effectués de manière séquentielle, ce qui entraîne une augmentation significative du temps de traitement 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 haute fidélité, et le framework StreamDiffusion introduit la stratégie Stream Batch pour surmonter la résolution à latence élevée dans les frameworks de diffusion interactive.
Dans la stratégie Stream Batch, 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 avancer une étape plus loin en utilisant le passage unique UNet dans la séquence de débruitage. En mettant en œuvre la stratégie de traitement par lots de flux de manière itérative, les images d'entrée codées au pas de temps « t » peuvent être transformées en leurs résultats image à image respectifs au pas de temps « t+n », rationalisant ainsi le processus de débruitage.
Conseils gratuits sur le classificateur résiduel
CFG ou Classifier Free Guidance est un algorithme d'IA qui effectue une multitude de calculs vectoriels entre le terme de conditionnement d'origine et un terme de conditionnement ou d'inconditionnement négatif pour améliorer l'effet du conditionnement d'origine. L'algorithme renforce l'effet de l'invite même si pour calculer le bruit résiduel de conditionnement négatif, il est nécessaire de coupler des variables latentes d'entrée individuelles avec une intégration de conditionnement négatif suivie du passage des intégrations via UNet au moment de référence.
Pour résoudre ce problème posé par l'algorithme Classifier Free Guidance, le cadre StreamDiffusion introduit l'algorithme Residual Classifier Free Guidance dans le but de réduire les coûts de calcul liés aux interférences UNet supplémentaires pour l'intégration de conditionnement négatif. Tout d'abord, l'entrée latente codée est transférée à la distribution de bruit en utilisant des valeurs déterminées par le planificateur de bruit. Une fois le modèle de cohérence latente implémenté, l'algorithme peut prédire la distribution des données et utiliser le bruit résiduel CFG pour générer la distribution du bruit de l'étape suivante.
File d'attente d'entrée et de sortie
Le problème majeur des cadres de génération d'images à grande vitesse réside dans leurs modules de réseau neuronal, notamment les composants UNet 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 les images de pré et post-traitement qui ne nécessitent pas de traitement supplémentaire par les modules de réseau neuronal en dehors du pipeline, après quoi ils sont traités en parallèle. De plus, en termes de gestion de l'image d'entrée, des opérations spécifiques, notamment la conversion du format tensoriel, le redimensionnement des images d'entrée et la normalisation, sont exécutées méticuleusement par le pipeline.
Pour remédier à la disparité des fréquences de traitement entre le débit du modèle et l'entrée humaine, le pipeline intègre un système de file d'attente d'entrée-sortie qui permet une parallélisation efficace, comme le démontre l'image suivante.
Les tenseurs d'entrée traités sont d'abord mis en file d'attente méthodiquement pour les modèles de diffusion, et au cours de chaque image, le modèle récupère le tenseur le plus récent de la file d'attente d'entrée et transmet le tenseur à l'encodeur VAE, initiant ainsi le processus de génération d'image. Dans le même temps, la sortie du tenseur du décodeur VAE est introduite dans la file d'attente 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 présentent des changements minimes sans environnement statique ou sans interaction active de l'utilisateur, les images d'entrée se ressemblant sont introduites à plusieurs reprises dans les composants UNet et VAE. L'alimentation répétée conduit à 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 utilise un composant Stochastic Similarity Filter dans son pipeline. Le filtre de similarité stochastique calcule d'abord la similarité cosinusoïdale entre l'image de référence et l'image d'entrée, et utilise le score de similarité cosinusoïdale pour calculer la probabilité d'ignorer les processus UNet et VAE ultérieurs.
Sur la base du score de probabilité, le pipeline décide si les processus suivants tels que l'encodage VAE, le décodage VAE et U-Net doivent être ignorés ou non. Si ces processus ne sont pas ignorés, le pipeline enregistre l'image d'entrée à ce moment-là et met simultanément à jour l'image de référence à utiliser ultérieurement. 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é inter-trame, tandis que dans des scénarios statiques, le pipeline fonctionne avec une similarité inter-trame plus élevée. L'approche aide à conserver les ressources de calcul et garantit également une utilisation optimale du GPU basée sur la similarité des images d'entrée.
Pré-calcul
L'architecture UNet nécessite à la fois des intégrations de conditionnement ainsi que des variables latentes d'entrée. Traditionnellement, les plongements de conditionnement sont dérivés de plongements rapides qui restent constants d’une trame à l’autre. Pour optimiser la dérivation à partir des intégrations d'invites, le pipeline StreamDiffusion a précalculé ces intégrations d'invites et les stocke dans un cache, qui sont ensuite appelées en mode streaming ou interactif. Dans le cadre UNet, la paire clé-valeur est calculée sur la base de l'intégration d'invite pré-calculée de chaque trame, et avec de légères modifications dans U-Net, ces paires clé-valeur peuvent être réutilisées.
Accélération du modèle et petit auto-encodeur
Le pipeline StreamDiffusion utilise TensorRT, une boîte à outils d'optimisation de Nvidia pour les interfaces d'apprentissage en profondeur, pour construire les moteurs VAE et UNet, afin d'accélérer la vitesse d'inférence. Pour y parvenir, le composant TensorRT effectue de nombreuses optimisations sur les réseaux de neurones conçues pour augmenter l'efficacité et améliorer le débit des cadres et applications d'apprentissage en profondeur.
Pour optimiser la vitesse, StreamDiffusion configure le framework pour utiliser des dimensions d'entrée fixes et des tailles de lots statiques afin de garantir une allocation de mémoire optimale et des graphiques de calcul pour une taille d'entrée spécifique dans le but d'obtenir des temps de traitement plus rapides.
La figure ci-dessus donne un aperçu du pipeline d'inférence. Le pipeline de diffusion principal héberge les composants UNet et VAE. Le pipeline intègre un lot de débruitage, un cache de bruit échantillonné, un cache d'intégration d'invites précalculé 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 ou SSF est déployé pour optimiser l'utilisation du GPU et également pour contrôler dynamiquement la réussite du modèle de diffusion.
StreamDiffusion : Expériences et résultats
Pour évaluer ses capacités, le pipeline StreamDiffusion est implémenté sur les frameworks LCM et SD-turbo. Le TensorRT de NVIDIA est utilisé comme accélérateur de modèle, et pour permettre un VAE léger et efficace, le pipeline utilise le composant TAESD. Voyons maintenant les performances du pipeline StreamDiffusion par rapport aux frameworks de pointe actuels.
Évaluation quantitative
La figure suivante montre la comparaison d'efficacité entre l'UNet séquentiel d'origine et les composants du lot de débruitage dans le pipeline, et comme on peut le voir, la mise en œuvre de l'approche par lots de débruitage permet de réduire considérablement le temps de traitement de près de 50 % par rapport à l'UNet traditionnel. boucles à des étapes de débruitage séquentielles.
En outre, le temps d'inférence moyen à différentes étapes de débruitage connaît également une augmentation substantielle avec différents facteurs d'accélération par rapport aux pipelines de pointe actuels, et les résultats sont démontrés dans l'image suivante.
En progressant, le pipeline StreamDiffusion avec le composant RCFG démontre moins de temps d'inférence 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 constater, l'utilisation de CFG intensifie l'impact de l'invite textuelle dans la génération d'images, et l'image ressemble beaucoup plus aux invites 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 invites sur les images générées est assez significative par rapport au composant CFG d'origine.
Réflexions finales
Dans cet article, nous avons parlé de StreamDiffusion, un pipeline de diffusion en temps réel développé pour générer des images interactives et réalistes, et nous avons abordé les limitations actuelles posées par les cadres basés sur la diffusion sur les tâches impliquant une saisie continue. StreamDiffusion est une approche simple et nouvelle qui vise à transformer le bruitage séquentiel de l'image originale en débruitage par lots. StreamDiffusion vise à permettre des flux à haut débit et fluides en éliminant l'approche traditionnelle d'attente et d'interaction choisie par les cadres actuels basés sur la diffusion. 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'IA générative.