Featured image of post À la découverte de Stable Diffusion : installation sur serveur dédié avec GPU Nvidia

À la découverte de Stable Diffusion : installation sur serveur dédié avec GPU Nvidia

Suite de l’épisode 1 : À la découverte de Stable Diffusion : introduction

Comme la carte NVIDIA GeForce MX150 de mon PC portable n’est pas assez puissante pour Stable Diffusion, j’ai pris le parti de l’installer sur un serveur dédié équipé d’un GPU adapté aux travaux de Machine Learning et de Rendering.

C’est le cas des instances GPU de Scaleway :

Scaleway GPU instances

Sur votre serveur, il vous suffit de cloner le dépôt https://github.com/hleroy/stable-diffusion-webui-docker.

Le dépôt contient :

  • Un fichier Dockerfile pour construire un container avec AUTOMATIC1111 Stable Diffusion WebUI. C’est un web front-end pour Stable Diffusion avec des dizaines d’extensions et une API disposant d’un client Python.
  • Un fichier docker-compose.yml qui définit plusieurs services :
    • download : pour télécharger les modèles nécessaires.
    • webui et webui-cpu : pour lancer le front-end Stable Diffusion, en mode GPU ou CPU respectivement, avec des paramètres d’environnement spécifiques pour chaque mode.
    • nginx : un reverse-proxy Nginx pour gérer les requêtes et configurer automatiquement un certificat TLS avec Let’s Encrypt.
    • letsencrypt : un service pour la gestion automatique des certificats avec Let’s Encrypt.
  • Plusieurs volumes sont définis pour la persistance des données et la configuration.

Instructions de configuration

Après avoir cloné le dépôt, créez un fichier .env et personnalisez-le avec votre propre domaine et email :

VIRTUAL_HOST=sd.votredomaine.com
VIRTUAL_PORT=7860
LETSENCRYPT_HOST=sd.votredomaine.com
LETSENCRYPT_EMAIL=username@votredomaine.com

Avant de continuer, assurez-vous que vos paramètres DNS sont correctement configurés pour pointer votre domaine (par exemple, sd.votredomaine.com) vers l’adresse IP de votre serveur cloud. Cette étape est cruciale pour que Let’s Encrypt puisse vérifier votre domaine et émettre un certificat SSL.

Créez un fichier .htpasswd pour configurer l’authentification HTTP afin de protéger l’interface Web :

$ htpasswd -c .htpasswd nomdutilisateur

Vous devrez peut-être installer le paquet apache2-utils :

$ sudo apt-get install apache2-utils

Construire & lancer :

# Téléchargement initial des modèles (à faire une fois)
$ docker compose --profile download up --build

# Démarrage de l'interface Web en mode détaché (-d)
$ docker compose --profile cloud up -d --build

La construction initiale est assez longue (4-5 minutes) même sur un serveur puissant. Les lancements ultérieurs prendront quelques secondes.

L’interface Web sera disponible à https://sd.votredomaine.com (comme défini dans votre fichier .env).

Si vous rencontrez un problème, vous pouvez vérifier les journaux :

$ docker compose logs -tf

Attention aux coûts : #FinOps

Un serveur dédié avec GPU coûte une petite fortune en comparaison avec les serveur d’entrée de gamme de Scaleway.

Deux heures de location d’un serveur avec une carte NVIDIA Tesla P100 coûte 2,93€ TTC (1.2211,22). Faites attention à bien arrêter / démarrer le serveur juste pour le temps du rendering. Pour du rendering Stable Diffusion, faites plutôt le choix de l’instance avec GPU RTX 3070 qui s’avère en pratique plus performant, tout en étant moins onéreux.

Prix des instances GPU en août 2023

Photos d’illustration

Les photos d’illustration ont été générées avec les paramètres suivants :

  • Model: DreamShaper_dreamshaper_8
  • Positive prompt: (masterpiece, best quality), concept art for a post-apocalyptic world with ruins, (seine river), (overgrown vegetation), (two moons), eiffel tower dramatic sky
  • Negative prompt: (worst quality, low quality, letterboxed) BadDream, FastNegativeV2
  • Other params: Steps: 35, Sampler: DPM++ SDE Karras, CFG scale: 8, Seed: 303411604, Size: 512x192, Model hash: 879db523c3, , Variation seed: 2, Variation seed strength: 0.33, Denoising strength: 0.35, Hires upscale: 1.5, Hires steps: 14, Hires upscale…

Mise à jour de l’article le 7 janvier 2024 : nouveau dépôt GitHub et instructions mises à jour.

Généré avec Hugo
Thème Stack conçu par Jimmy