- Cet article traite de l’exécution de Stable Diffusion XL 1.0 sur un micro-ordinateur Raspberry Pi Zero 2 doté de 512 Mo de RAM.
- Le défi consiste à faire tourner Stable Diffusion 1.5, un grand modèle Transformer de près d’un milliard de paramètres, sans augmenter l’espace de swap ni déporter les résultats intermédiaires sur disque.
- L’auteur a créé OnnxStream, une petite bibliothèque d’inférence modifiable et orientée vers le bidouillage, conçue pour minimiser la consommation mémoire.
- OnnxStream sépare le moteur d’inférence et le composant qui fournit les poids du modèle, ce qui permet différents types de chargement, de mise en cache et de préchargement des paramètres du modèle.
- OnnxStream consomme 55 fois moins de mémoire que OnnxRuntime, tout en n’étant que 0,5 à 2 fois plus lent.
- L’article inclut des images générées par une implémentation d’exemple de Stable Diffusion utilisant OnnxStream, avec différentes précisions pour le décodeur VAE.
- L’implémentation d’exemple Stable Diffusion d’OnnxStream prend désormais en charge SDXL 1.0, qui coûte plus cher en calcul que SD 1.5 mais peut générer des images plus grandes.
- OnnxStream peut exécuter SDXL 1.0 avec moins de 300 Mo de RAM, ce qui le rend adapté au Raspberry Pi Zero 2.
- L’article présente des optimisations spécifiques à SDXL 1.0, notamment l’utilisation du décodage en tuiles pour réduire la consommation mémoire de 4,4 Go à 298 Mo.
- Parmi les fonctionnalités d’OnnxStream figurent la séparation entre le moteur d’inférence et le WeightsProvider, l’attention slicing, la quantification dynamique et statique, ainsi que la prise en charge du FP16.
- L’article fournit des instructions détaillées pour compiler l’exemple Stable Diffusion sur différents systèmes d’exploitation.
- L’implémentation Stable Diffusion de sd.cpp repose sur deux autres projets et a été modifiée pour utiliser OnnxStream à la place de NCNN.
1 commentaires
Avis sur Hacker News