La démo Stable Diffusion WebGPU est un outil en ligne pratique qui vous aide à générer des images facilement en utilisant simplement votre navigateur web.
Cette application web est construite sur le framework create-react-app et repose sur JavaScript pour fonctionner. Pour commencer, assurez-vous d'utiliser la dernière version de Chrome et que JavaScript est activé. Vous devrez également activer quelques fonctionnalités expérimentales : "WebAssembly expérimental" et "Intégration de promesse JavaScript WebAssembly expérimentale (JSPI)" dans les paramètres de votre navigateur.
Une fois que vous êtes prêt, cet outil génère des images à travers une série d'étapes. Chaque étape prend environ une minute, avec 10 secondes supplémentaires nécessaires pour que le décodeur VAE termine l'image. Juste un petit avertissement : si vous avez les DevTools ouverts pendant l'exécution de l'application, cela pourrait ralentir le tout d'environ deux fois plus !
Le modèle UNET, qui fait le gros du travail de création de vos images, fonctionne sur le CPU. Ce choix est fait pour de meilleures performances et des résultats plus précis par rapport à son exécution sur le GPU. Il est recommandé de passer par au moins 20 étapes pour obtenir des résultats décents, mais si vous l'essayez juste, 3 étapes suffiront.
Cette application dispose d'une interface conviviale qui vous permet de charger facilement le modèle, de lancer la génération d'images et de visualiser les résultats. Si vous rencontrez des problèmes en l'utilisant, ne vous inquiétez pas ; il y a une section FAQ avec des conseils de dépannage pour vous aider.
Gardez à l'esprit que bien qu'elle utilise un GPU, l'implémentation WebGPU dans onnxruntime est encore à ses débuts. Cela signifie que vous pourriez rencontrer certaines opérations incomplètes, car les données doivent être continuellement transférées entre le CPU et le GPU, ce qui peut affecter les performances. Actuellement, le multi-threading n'est pas pris en charge, et certaines limitations dans WebAssembly signifient que vous ne pouvez pas créer de mémoire 64 bits en utilisant SharedArrayBuffer.
La bonne nouvelle est que le développeur est conscient de ces problèmes et travaille activement sur des solutions à travers des changements et des correctifs proposés. Si vous êtes intéressé à expérimenter l'outil par vous-même, le code source est disponible sur GitHub. Il existe également une version patchée d'onnxruntime qui vous permet de travailler avec de grands modèles de langage via transformers.js, bien que sa fiabilité puisse varier selon la situation. De plus, le développeur prévoit de soumettre une demande de tirage au dépôt onnxruntime pour aider à l'améliorer davantage.
∞