- Une bibliothèque pour exécuter Stable Diffusion sur un Raspberry Pi Zero 2 avec 512 Mo de RAM.
- Développement de la bibliothèque OnnxStream, axée sur l’optimisation de la consommation mémoire.
- L’utilisation mémoire est optimisée en séparant les composants qui fournissent les poids au modèle.
- En théorie, il est possible d’exécuter le modèle sans rien écrire sur le disque en transmettant directement les poids depuis un serveur HTTP.
- Résultat : jusqu’à 55 fois moins de mémoire utilisée qu’avec OnnxRuntime, mais avec une vitesse 0,5 à 2 fois plus lente.
- Cependant, le modèle VAE inclus dans Stable Diffusion utilise encore environ 1 Go de RAM, même avec cette bibliothèque.
- L’utilisation mémoire a été davantage optimisée pour le modèle VAE via une quantification statique 8 bits (W8A8).
- Au final, il a réussi à générer une image en 3 heures sur un vrai RPI Zero 2.
- La consommation mémoire finale n’est plus que d’environ 260 Mo de RAM.
3 commentaires
À quel point voulez-vous maltraiter ce petit machin.....
J’ai l’impression que l’être humain est la créature la plus barjo qui soit.
C’est vraiment impressionnant. Faire tourner un modèle de plusieurs Go avec 260 Mo de RAM...
Le fait que cela ait pris 3 heures vient surtout du Raspberry Pi ; sur un CPU hautes performances, ce serait évidemment bien plus rapide.
Et cela consomme aussi beaucoup moins de RAM.
À ce rythme, on finira peut-être par voir une méthode permettant de l’exécuter en serverless à l’edge....
Oh, projet intéressant. Merci !
J’imagine qu’il y aura aussi beaucoup de tentatives pour réduire le goulot d’étranglement entre le CPU et la RAM +_+