Simple-StableDiffusion-WebUI UNE INTERFACE WEB SIMPLE POUR GÉNÉRER DES IMAGES EN

Adrien présente son projet open-source Simple Stable Diffusion WebUI, une interface web minimale en Python pur (zéro dépendance) pour piloter un serveur Stable Diffusion CPP, avec un déploiement simple en service systemd.

Voir la source

SYNTHÈSE STRUCTURÉE

Contexte et motivation du projet

Adrien revient sur sa vidéo précédente consacrée à Stable Diffusion CPP, où il avait fourni un script Python fonctionnel mais peu ergonomique. Il explique que les solutions web existantes ne lui convenaient pas : « Soit parce que c’était des trucs développés en Python et qu’il fallait installer toute une ribambelle de modules supplémentaires pour le faire fonctionner, ou alors c’était développé dans un autre langage et puis on avait parfois du Node JS. » Il a donc créé son propre outil, pensé pour être léger, simple à installer et à exécuter en tant que service.

Architecture du projet : un seul fichier Python

Le projet se résume à un unique fichier ssd_webui.py d’environ 28 Ko, dont plus de la moitié est constituée de CSS et de HTML intégrés. Adrien précise que « c’est un script Python en un seul fichier zéro dépendance externe », utilisant uniquement la bibliothèque standard de Python. La configuration se fait exclusivement via des options en ligne de commande, ce qui facilite le déploiement automatisé et l’intégration dans des services.

Options de lancement et paramètres clés

Le script accepte plusieurs options avec des valeurs par défaut. Les plus importantes sont :

  • --sd-url : l’URL du serveur Stable Diffusion CPP (par défaut http://127.0.0.1:8082)
  • --host : l’adresse d’écoute (par défaut 127.0.0.1, à passer à 0.0.0.0 pour un accès réseau)
  • --port : le port d’écoute de l’interface web (par défaut 8080)
  • --output : le dossier de sauvegarde des images générées (par défaut output)
  • --disable-save : désactive l’enregistrement local des images

Adrien insiste sur le fait que toutes les options disposent d’une valeur par défaut, ce qui permet un lancement immédiat sans configuration préalable.

Fonctionnalités de l’interface web

L’interface propose trois onglets principaux :

  • Text to Image : saisie d’un prompt, réglage de la taille (par défaut 512x512), du nombre de steps, du niveau de créativité (CFG scale), et du nombre d’images à générer (batch).
  • Image to Image : permet d’éditer une image existante, si le modèle le supporte.
  • Galerie : affiche les images générées et enregistrées dans le dossier output.

Chaque option dispose d’une infobulle explicative, ce qui rend l’outil accessible même aux utilisateurs novices.

Génération d’images : exemple pratique

Adrien lance le script avec --sd-url http://192.168.1.218:8082 et génère six images de « pingouins sur la plage » en 10,8 secondes. Il montre ensuite l’intérêt d’augmenter le nombre de steps (70 au lieu de la valeur par défaut) pour obtenir des images plus réalistes, au prix d’un temps de calcul plus long. Il souligne que « chaque option a une petite infobulle qui vous donne des informations sur ce à quoi ça correspond ».

Déploiement en service systemd

Adrien explique comment transformer l’outil en service système. Il copie le fichier Python dans /opt/ssd-webui/, puis crée un fichier unité systemd dans /etc/systemd/system/ssd-webui.service. Le fichier contient notamment :

  • User= pour spécifier l’utilisateur d’exécution (il réutilise celui de Stable Diffusion CPP)
  • ExecStart= avec les options --disable-save, --host 0.0.0.0 et --port 8085
  • --sd-url pointant vers la machine distante hébergeant Stable Diffusion CPP

Il précise que si l’on souhaite activer la sauvegarde des images, il faut s’assurer que l’utilisateur du service a les droits d’écriture sur le dossier cible.

Activation et vérification du service

Après avoir copié le fichier unité, Adrien exécute :

systemctl daemon-reload
systemctl start ssd-webui

Il vérifie ensuite que le service répond bien sur le port 8085 et que la génération d’images fonctionne. Il note que la galerie est masquée lorsque --disable-save est actif, car le service n’a plus accès au dossier local.

Consommation mémoire remarquablement faible

Adrien met en avant un point fort de son outil : « en RAM, ça consomme 15 M de RAM ce service ». Cette légèreté permet de faire tourner l’interface sur une petite machine, potentiellement distincte de celle qui héberge Stable Diffusion CPP. Il rappelle que l’outil n’est qu’un client API et ne fait aucun calcul lourd.

Projet open-source et accueil de la communauté

Le projet est disponible sur GitHub, avec une documentation en anglais pour toucher un public international. Adrien invite les utilisateurs à réagir et à proposer des améliorations : « Si le projet vous plaît aussi, vous pouvez mettre une petite étoile sur GitHub en plus de mettre un like sur la vidéo évidemment. »

CONCEPTS CLÉS

  • Stable Diffusion CPP : implémentation en C++ du modèle de génération d’images Stable Diffusion, optimisée pour fonctionner en local sans GPU puissant.
  • API REST : interface de communication HTTP utilisée par le serveur Stable Diffusion CPP pour recevoir les requêtes de génération et renvoyer les images.
  • Service systemd : mécanisme de gestion de processus sous Linux permettant de lancer, superviser et automatiser le démarrage d’un programme au boot.
  • Zéro dépendance : un script Python qui n’utilise que la bibliothèque standard, donc aucune installation de modules supplémentaires (pip install) n’est nécessaire.

CONCLUSION

Ce projet illustre parfaitement la philosophie « faire simple » : une interface web fonctionnelle, légère et facile à déployer, sans surcouche technique inutile. En utilisant uniquement la bibliothèque standard de Python et en s’appuyant sur une API existante, Adrien démontre qu’il est possible de créer un outil pratique et robuste en quelques centaines de lignes de code. Pour un administrateur système, cette approche est un modèle de conception : privilégier la simplicité, la maintenabilité et la faible empreinte mémoire, tout en offrant une expérience utilisateur satisfaisante.

Du même canal

Tout voir