# Stable Diffusion WebUI

L'interface web la plus populaire pour Stable Diffusion sur les GPU CLORE.AI.

{% hint style="success" %}
Tous les exemples peuvent être exécutés sur des serveurs GPU loués via [Place de marché CLORE.AI](https://clore.ai/marketplace).
{% endhint %}

## Exigences serveur

| Paramètre          | Minimum       | Recommandé |
| ------------------ | ------------- | ---------- |
| RAM                | 16 Go         | 32 Go+     |
| VRAM               | 8 Go          | 12 Go+     |
| Réseau             | 500 Mbps      | 1 Gbps+    |
| Temps de démarrage | 10-20 minutes | -          |

{% hint style="warning" %}
**Temps de démarrage :** Le premier lancement installe les dépendances Python et télécharge le modèle de base (10-20 minutes selon la vitesse du réseau). Un HTTP 502 pendant cette période est normal.
{% endhint %}

## Pourquoi SD WebUI ?

* **Riche en fonctionnalités** - txt2img, img2img, inpainting, outpainting
* **Extensions** - Énorme écosystème de plugins
* **Convivial** - Interface web intuitive
* **Bien documenté** - Large support communautaire

> 📚 Voir aussi : [Comment exécuter Stable Diffusion sur un GPU Cloud](https://blog.clore.ai/how-to-run-stable-diffusion-cloud-gpu/)

## Déploiement rapide sur CLORE.AI

**Image Docker :**

```
universonic/stable-diffusion-webui:latest
```

**Ports :**

```
22/tcp
8080/http
```

**Commande :**

```bash
./webui.sh --listen --xformers
```

### Vérifier que cela fonctionne

Après le déploiement, trouvez votre `http_pub` URL dans **Mes commandes**:

```bash
# Vérifier si l'interface est accessible (peut prendre 10-20 min au premier lancement)
curl https://your-http-pub.clorecloud.net/
```

{% hint style="info" %}
Si vous avez HTTP 502 pendant plus de 20 minutes, vérifiez :

1. Le serveur a 16 Go+ de RAM
2. Le serveur a 8 Go+ de VRAM
3. La vitesse du réseau est suffisante pour télécharger les dépendances
   {% endhint %}

## Accéder à votre service

Lorsqu'il est déployé sur CLORE.AI, accédez à SD WebUI via le `http_pub` URL :

* **Interface Web :** `https://your-http-pub.clorecloud.net/`
* **API (si activée) :** `https://your-http-pub.clorecloud.net/sdapi/v1/`

{% hint style="info" %}
Tout `localhost:7860` Les exemples ci-dessous fonctionnent lorsqu'ils sont connectés via SSH. Pour un accès externe, remplacez par votre `https://your-http-pub.clorecloud.net/` URL.
{% endhint %}

## Installation

### Utilisation de Docker (recommandé)

```bash
docker run -d --gpus all \
    -p 8080:8080 \
    -v sd-webui-data:/app/stable-diffusion-webui \
    universonic/stable-diffusion-webui:latest
```

### Installation manuelle

```bash
# Installer les dépendances
sudo apt install python3.10 python3.10-venv git wget

# Cloner le dépôt
git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git
cd stable-diffusion-webui

# Exécuter (installe tout automatiquement)
./webui.sh --listen --xformers
```

## Structure du répertoire

```
stable-diffusion-webui/
├── models/
│   ├── Stable-diffusion/   # Modèles principaux (.safetensors)
│   ├── Lora/               # Modèles LoRA
│   ├── VAE/                # Modèles VAE
│   ├── ControlNet/         # Modèles ControlNet
│   └── ESRGAN/             # Upscalers
├── embeddings/             # Inversions textuelles
├── extensions/             # Extensions installées
├── outputs/                # Images générées
└── scripts/                # Scripts personnalisés
```

## Télécharger les modèles

### Points de contrôle

```bash
cd models/Stable-diffusion

# SD 1.5
wget https://huggingface.co/runwayml/stable-diffusion-v1-5/resolve/main/v1-5-pruned.safetensors

# SDXL
wget https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0/resolve/main/sd_xl_base_1.0.safetensors

# Realistic Vision (Photorealiste)
wget "https://civitai.com/api/download/models/245598" -O realisticVision_v60B1.safetensors

# DreamShaper (Artistique)
wget "https://civitai.com/api/download/models/351306" -O dreamshaper_8.safetensors
```

### VAE (Meilleures couleurs)

```bash
cd models/VAE

# SD 1.5 VAE
wget https://huggingface.co/stabilityai/sd-vae-ft-mse-original/resolve/main/vae-ft-mse-840000-ema-pruned.safetensors

# SDXL VAE
wget https://huggingface.co/stabilityai/sdxl-vae/resolve/main/sdxl_vae.safetensors
```

## Utilisation de base

### txt2img (Texte vers Image)

1. Sélectionnez le modèle dans le menu déroulant
2. Entrez le prompt positif : ce que vous voulez
3. Entrez le prompt négatif : ce qu'il faut éviter
4. Définissez les dimensions (512x512 pour SD1.5, 1024x1024 pour SDXL)
5. Cliquez sur Générer

### img2img (Image vers Image)

1. Allez dans l'onglet img2img
2. Téléversez l'image source
3. Entrez un prompt décrivant les modifications souhaitées
4. Ajuster **Force de débruitage** (0.3-0.8)
5. Générer

### Inpainting

1. Allez dans img2img → Inpaint
2. Téléchargez l'image
3. Dessinez un masque sur la zone à modifier
4. Entrez le prompt pour la zone masquée
5. Générer

## Paramètres essentiels

### Paramètres de génération

| Paramètre       | SD 1.5          | SDXL            |
| --------------- | --------------- | --------------- |
| Largeur         | 512             | 1024            |
| Hauteur         | 512             | 1024            |
| Étapes          | 20-30           | 20-40           |
| Échelle CFG     | 7               | 5-7             |
| Échantillonneur | DPM++ 2M Karras | DPM++ 2M Karras |

### Arguments de ligne de commande

```bash
./webui.sh \
    --listen \              # Autoriser l'accès externe
    --port 7860 \           # Numéro de port
    --xformers \            # Optimisation de la mémoire
    --enable-insecure-extension-access \  # Autoriser les extensions
    --api \                 # Activer l'API
    --no-half-vae           # Corriger les images noires
```

### Pour faible VRAM

```bash
./webui.sh \
    --listen \
    --medvram \           # 6-8 Go VRAM
    # ou
    --lowvram \           # 4 Go VRAM
    --xformers
```

## Extensions populaires

### Indispensables

| Extension                 | But                                  |
| ------------------------- | ------------------------------------ |
| ControlNet                | Génération guidée                    |
| ADetailer                 | Correction automatique visages/mains |
| Ultimate SD Upscale       | Meilleur upscaling                   |
| sd-webui-segment-anything | Segmentation                         |
| Regional Prompter         | Prompts multi-régions                |

### Installer des extensions

1. Aller à **Extensions** onglet
2. Cliquez **Disponible**
3. Cliquez **Charger depuis**
4. Rechercher et installer
5. Appliquer et redémarrer l'interface

Ou manuellement :

```bash
cd extensions
git clone https://github.com/Mikubill/sd-webui-controlnet.git
```

## ControlNet

### Installation

```bash
# Installer l'extension
cd extensions
git clone https://github.com/Mikubill/sd-webui-controlnet.git

# Télécharger les modèles
cd ../models/ControlNet
wget https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/control_v11p_sd15_canny.pth
wget https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/control_v11p_sd15_openpose.pth
wget https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/control_v11f1p_sd15_depth.pth
```

### Utilisation

1. Développez la section ControlNet
2. Téléversez l'image de contrôle
3. Sélectionnez le préprocesseur (Canny, OpenPose, etc.)
4. Sélectionnez le modèle correspondant au préprocesseur
5. Générer

## Utilisation de l'API

Activez avec `--api` le drapeau, puis :

```python
import requests
import base64

# Pour un accès externe, utilisez votre URL http_pub :
API_URL = "https://your-http-pub.clorecloud.net"
# Ou via SSH : API_URL = "http://localhost:7860"

def txt2img(prompt, negative="", steps=20, width=512, height=512):
    response = requests.post(
        f"{API_URL}/sdapi/v1/txt2img",
        json={
            "prompt": prompt,
            "negative_prompt": negative,
            "steps": steps,
            "width": width,
            "height": height,
        }
    )
    return base64.b64decode(response.json()["images"][0])

# Générer et sauvegarder
image_data = txt2img("Un magnifique coucher de soleil sur des montagnes")
with open("output.png", "wb") as f:
    f.write(image_data)
```

### API img2img

```python
import base64

def img2img(prompt, image_path, denoising=0.5):
    with open(image_path, "rb") as f:
        image_b64 = base64.b64encode(f.read()).decode()

    response = requests.post(
        f"{API_URL}/sdapi/v1/img2img",
        json={
            "prompt": prompt,
            "init_images": [image_b64],
            "denoising_strength": denoising,
            "steps": 30,
        }
    )
    return base64.b64decode(response.json()["images"][0])
```

## Rédaction de prompts

### Structure de base

```
[sujet], [style], [détails], [éclairage], [tags de qualité]
```

### Exemples de prompts

```
# Portrait
portrait d'une jeune femme, photographie professionnelle,
éclairage doux, faible profondeur de champ, 8k uhd,
très détaillé, photoréaliste

# Paysage
paysage montagneux majestueux au coucher du soleil, nuages dramatiques,
éclairage heure dorée, style National Geographic,
fond d'écran 8k, très détaillé

# Anime
1fille, cheveux argentés, yeux bleus, uniforme scolaire,
fleurs de cerisier, printemps, chef-d'œuvre, meilleure qualité
```

### Prompts négatifs

```
# Général
basse résolution, mauvaise anatomie, mauvaises mains, texte, erreur,
doigts manquants, recadré, pire qualité, basse qualité,
artefacts jpeg, signature, filigrane, flou

# Pour photoréaliste
cartoon, anime, illustration, peinture, dessin,
rendu 3D, CGI
```

## Conseils de performance

1. **Activer xFormers** - Gain de vitesse significatif
2. **Utiliser VAE** - Meilleures couleurs
3. **Taille de lot 1** - Pour VRAM limitée
4. **Hires Fix** - Générer petit, puis upscaler
5. **ADetailer** - Correction automatique des visages

## Exigences GPU

| Modèle          | VRAM minimale | VRAM recommandée | RAM min |
| --------------- | ------------- | ---------------- | ------- |
| SD 1.5          | 4 Go          | 8 Go             | 16 Go   |
| SD 2.1          | 6 Go          | 8 Go             | 16 Go   |
| SDXL            | 8 Go          | 12 Go            | 16 Go   |
| Avec ControlNet | +2 Go         | +4 Go            | 16 Go   |

## Préréglages GPU

### RTX 3060 12GB (Budget)

```bash
# Commande de lancement
./webui.sh --medvram --xformers

# Paramètres recommandés.json :
# - SD 1.5 : 512x512, batch 4, 20-30 étapes
# - SDXL : 768x768, batch 1, 20 étapes
# - Activer le tiling VAE dans les Paramètres
# - Utiliser ADetailer pour les visages
```

**Meilleurs modèles :** SD 1.5, DreamShaper, RealisticVision

### RTX 3090 24GB (Optimal)

```bash
# Commande de lancement
./webui.sh --xformers

# Paramètres recommandés :
# - SD 1.5 : 512x512, batch 8, 30 étapes
# - SDXL : 1024x1024, batch 2, 30 étapes
# - ControlNet + SD 1.5 fonctionne très bien
# - Hires fix à 2x fonctionne
```

**Meilleurs modèles :** SDXL, Juggernaut, RealVisXL

### RTX 4090 24GB (Performance)

```bash
# Commande de lancement
./webui.sh --xformers --opt-sdp-attention

# Paramètres recommandés :
# - SD 1.5 : 512x512, batch 16, 30 étapes
# - SDXL : 1024x1024, batch 4, 40 étapes
# - Plusieurs ControlNets simultanément
# - Hires fix à 4x
```

**Meilleurs modèles :** SDXL, Pony Diffusion, Tout modèle haute résolution

### A100 40GB/80GB (Production)

```bash
# Commande de lancement
./webui.sh --opt-sdp-attention --no-half-vae

# Paramètres recommandés :
# - SDXL : 1024x1024, batch 8+, 50 étapes
# - Plusieurs ControlNet + IP-Adapter
# - Hires fix jusqu'à 4096x4096
# - AnimateDiff pour la vidéo
```

**Idéal pour :** Génération par lot, flux de travail complexes, vidéo

## Estimation des coûts

Tarifs typiques du marketplace CLORE.AI :

| GPU      | VRAM  | Prix/jour  | Vitesse SD1.5 | Vitesse SDXL |
| -------- | ----- | ---------- | ------------- | ------------ |
| RTX 3060 | 12 Go | $0.15–0.30 | \~4 s         | \~12 s       |
| RTX 3090 | 24 Go | $0.30–1.00 | \~2 s         | \~6 s        |
| RTX 4090 | 24 Go | $0.50–2.00 | \~1 s         | \~3 s        |
| A100     | 40 Go | $1.50–3.00 | \~0,5 s       | \~2 s        |

*Prix en USD/jour. Les tarifs varient selon le fournisseur — vérifiez* [*Place de marché CLORE.AI*](https://clore.ai/marketplace) *pour les tarifs actuels.*

## Dépannage

### HTTP 502 pendant longtemps

1. **Vérifier la RAM :** Le serveur doit avoir 16 Go+ de RAM
2. **Vérifier la VRAM :** Doit avoir 8 Go+ pour SDXL
3. **Installation des dépendances :** Le premier lancement prend 10-20 min
4. **Réseau lent :** Une faible bande passante entraîne un démarrage plus long

### Images noires

```bash
# Ajouter aux arguments de lancement
--no-half-vae
```

### Mémoire insuffisante

```bash
# Utiliser l'optimisation
--medvram
--xformers
```

### Extensions qui ne se chargent pas

```bash
--enable-insecure-extension-access
```

### Génération lente

1. Activer xFormers
2. Réduire la taille de l'image
3. Diminuer les étapes (20 suffit souvent)

## Étapes suivantes

* [ComfyUI](https://docs.clore.ai/guides/guides_v2-fr/generation-dimages/comfyui) - Flux de travail plus avancés
* [FLUX.1](https://docs.clore.ai/guides/guides_v2-fr/generation-dimages/flux) - Dernier modèle
* [ControlNet](https://docs.clore.ai/guides/guides_v2-fr/traitement-dimages/controlnet-advanced) - Génération guidée
* [Entraînement LoRA](https://docs.clore.ai/guides/guides_v2-fr/entrainement/kohya-training) - Modèles personnalisés
