Tous les produits
Search
Centre de documentation

Platform For AI:Déploiement de l'art génératif avec SDWebUI

Dernière mise à jour :Sep 24, 2026

Stable Diffusion (SD) est un modèle puissant de génération d'images capable de créer des visuels haute résolution et de grande qualité. Stable Diffusion WebUI offre une interface utilisateur graphique basée sur Gradio, accompagnée d'un ensemble complet d'outils de génération d'images. Elastic Algorithm Service (EAS) prend en charge le déploiement par scénarios. Vous pouvez déployer un service SD WebUI en un seul clic en configurant uniquement quelques paramètres.

Fonctionnalités et avantages

Par rapport aux services auto-gérés, PAI-EAS présente les avantages suivants :

  • Déploiement en un clic : Les images d'exécution préconfigurées intègrent toutes les dépendances nécessaires.

  • Mise à l'échelle automatique des GPU : Ajuste dynamiquement les ressources GPU en fonction de la demande.

  • Fonctionnalités de niveau entreprise : Isolation multi-utilisateurs, partage de GPU et répartition des coûts.

  • Gestion de fichiers intégrée : L'extension FileBrowser facilite le téléchargement des modèles.

Choisir la version adaptée

Version

Scénarios

Méthode d'appel

Facturation

Edition Standard

Tests personnels et développement de prototypes

WebUI, appels API (synchrone)

La facturation est basée sur la configuration du déploiement. Pour plus d'informations, consultez Facturation d'EAS.

Edition API

APIs pour environnement de production, scénarios à forte concurrence

Appels API (synchrone et asynchrone)

Edition Cluster WebUI

Collaboration en équipe, équipes de design

WebUI

Edition Serverless

Remarque

Cette édition est disponible uniquement dans les régions Chine (Shanghai) et Chine (Hangzhou).

Charges de travail élastiques, optimisation des coûts

WebUI

Le déploiement du service est gratuit. Vous êtes facturé uniquement pour la durée de la génération d'images.

Démarrage rapide : Déployer des services de génération d'art IA à l'aide d'un modèle basé sur un scénario

  1. Connectez-vous à la console PAI. Sélectionnez une région en haut de la page. Ensuite, choisissez l'espace de travail souhaité et cliquez sur Enter Elastic Algorithm Service (EAS).

  2. Sur la page Elastic Algorithm Service (EAS), cliquez sur Deploy Service. Puis, dans la zone Scenario-based Model Deployment, cliquez sur AI Painting - SD Web UI Deployment.

  3. Configurez les paramètres clés suivants :

    • Version : Sélectionnez Edition Standard.

    • Model Settings : Sélectionnez OSS ainsi qu'un chemin d'accès au bucket pour stocker les fichiers de modèle et les images générées par l'inférence.

    • Instance Type : Sélectionnez un type GPU. La spécification recommandée est ml.gu7i.c16m60.1-gu30 car elle offre le meilleur rapport coût-efficacité.

  4. Une fois les paramètres configurés, cliquez sur Deploy. Attendez 5 à 10 minutes jusqu'à ce que l'état du service passe à Running.

Appeler le service

Appel via WebUI

Vous pouvez utiliser WebUI pour appeler les services des éditions Standard, Cluster WebUI et Serverless. Suivez les étapes ci-dessous :

  1. Cliquez sur le nom du service cible pour accéder à la page Overview, puis cliquez sur Web applications dans le coin supérieur droit.

  2. Effectuez une validation de l'inférence du modèle.

    Sur la page Stable Diffusion WebUI, dans l'onglet Text-to-Image, saisissez un prompt positif, par exemple cute dog. Ensuite, cliquez sur Generate pour créer l'œuvre d'art IA.

Appel via des requêtes API synchrones

Après avoir déployé un service de type Edition Standard ou Edition API, vous pouvez envoyer des requêtes API synchrones.

Interroger les informations sur l'endpoint

  1. Une fois le service déployé, cliquez sur son nom pour ouvrir la page Overview.

  2. Dans la zone Basic Information, cliquez sur View Endpoint Information.

  3. Sur la page Invocation Information, récupérez l'endpoint public du service et le jeton (token).

Exemples d'appels

Enregistrer les images sur un appareil local

import requests
import base64
from PIL import Image
import io

# IMPORTANT: Remove the trailing slash (/) from the endpoint URL.
SERVICE_URL = "<your_endpoint_url>"
TOKEN = "<your_token>"

def generate_image(prompt: str) -> Image.Image:
    """Generates an image based on a text prompt."""
    payload = {
        "prompt": prompt,
        "negative_prompt": "blurry, low quality, deformed",
        "steps": 25,
        "width": 512,
        "height": 512,
        "cfg_scale": 7.5,
    }
    
    response = requests.post(
        f"{SERVICE_URL}/sdapi/v1/txt2img",
        json=payload,
        headers={"Authorization": TOKEN}
    )
    response.raise_for_status()
    
    # Decode the first image
    img_data = response.json()["images"][0]
    return Image.open(io.BytesIO(base64.b64decode(img_data)))

# Generate and save the image
image = generate_image("a serene mountain landscape at sunset")
image.save("output.png")

Enregistrer les images sur OSS

import requests

# IMPORTANT: Remove the trailing slash (/) from the endpoint URL.
SERVICE_URL = "<your_endpoint_url>"
TOKEN = "<your_token>"

payload = {
    "prompt": "professional portrait photography",
    "steps": 30,
    "alwayson_scripts": {
        "sd_model_checkpoint": "v1-5-pruned-emaonly.safetensors",
        "save_dir": "/code/stable-diffusion-webui/data/outputs"
    }
}

response = requests.post(
    f"{SERVICE_URL}/sdapi/v1/txt2img",
    json=payload,
    headers={"Authorization": TOKEN}
)

# Get the path of the saved image
data = response.json()

# This is the mount_path corresponding to the default mounted OSS folder when you deploy the EAS service.
mount_path = "/code/stable-diffusion-webui/data"

# This is the OSS bucket address you selected when you deployed the EAS service.
oss_url = "oss://examplebucket/data-oss"

for idx, img_path in enumerate(data['parameters']['image_url'].split(',')):
    # Get the actual address of the generated image in OSS.
    img_oss_path = img_path.replace(mount_path, oss_url)
    print(img_oss_path)

Vous pouvez également utiliser les formats de données LoRA et ControlNet dans les données de la requête.

Utiliser une configuration de modèle LoRA dans les données de la requête

Lors de l'envoi d'une requête de service, vous pouvez ajouter <lora:yaeMikoRealistic_Genshin:1000> au corps de la requête pour inclure un modèle LoRA. Pour plus d'informations, consultez Lora.

L'exemple suivant illustre la configuration du corps de la requête.

{
  "prompt":"girls <lora:yaeMikoRealistic_Genshin:1>",
  "steps":20,
  "save_images":true
}

Utiliser le format de données ControlNet dans les données de la requête

L'utilisation du format de données ControlNet dans les requêtes API permet d'effectuer des transformations d'images courantes. Pour savoir comment configurer cette option, consultez Format de données ControlNet pour la conversion texte-imageDéploiement de l'art génératif avec SDWebUI.

Appel via des requêtes API asynchrones

Après avoir déployé un service de type Edition API, vous pouvez envoyer des requêtes API asynchrones. En mode asynchrone, le client n'a pas besoin d'attendre le résultat. Il reçoit plutôt les résultats poussés depuis le serveur via un abonnement. Suivez les étapes ci-dessous :

Interroger les informations d'appel

  1. Une fois le service déployé avec succès, cliquez sur son nom pour accéder à la page Overview.

  2. Dans la zone Basic Information, cliquez sur View Endpoint Information.

  3. Sur la page Invocation Information, cliquez sur l'onglet Asynchronous Invocation pour obtenir l'adresse d'appel publique et le jeton (token).

Envoyer une requête

Le client envoie une requête au serveur via une opération API asynchrone.

import requests

SERVICE_URL = "<your_public_input_endpoint>"
TOKEN = "<your_token>"

response = requests.post(
    f"{SERVICE_URL}/sdapi/v1/txt2img?task_id=job_001",
    json={
        "prompt": "futuristic city skyline",
        "steps": 30,
        "alwayson_scripts": {
            "save_dir": "/code/stable-diffusion-webui/data/outputs"
        }
    },
    headers={"Authorization": TOKEN}
)
print(f"Task enqueued: {response.json()}")
Important
  • La file d'attente asynchrone impose des limites sur la taille des requêtes d'entrée et des résultats de sortie, qui ne doivent généralement pas dépasser 8 Ko. Par conséquent, lors de l'envoi de requêtes, vous devez respecter les deux conditions suivantes :

Résultats de l'abonnement

Le client reçoit les résultats via un abonnement. Une fois que le serveur a traité la requête, il pousse automatiquement le résultat vers le client.

from eas_prediction import QueueClient

# You must adjust the endpoint URL format to match the example: 112231234124214.cn-hangzhou.pai-eas.aliyuncs.com
SERVICE_URL = "<your_endpoint_url>"
TOKEN = "<your_token>"
# The service name configured when the service was created
SERVICE_NAME = "<your_service_name>"

sink = QueueClient(SERVICE_URL, SERVICE_NAME + '/sink')
sink.set_token(TOKEN)
sink.init()

for result in sink.watch(0, 5, auto_commit=True).run():
    print(f"Task {result.tags.get('task_id')} completed")
    print(f"Image URL: {result.data}")

EAS prend en charge de nouvelles fonctionnalités basées sur les opérations API natives de Stable Diffusion WebUI. Vous pouvez ajouter des paramètres optionnels aux données de la requête pour implémenter davantage de fonctionnalités. Pour plus d'informations, consultez Paramètres supplémentaires configurables pour les opérations APIParamètres supplémentaires configurables pour les opérations API.

Options de déploiement avancées

Déploiement personnalisé

Vous pouvez déployer des services WebUI en édition Standard, API et Cluster. Suivez les étapes ci-dessous :

  1. Connectez-vous à la console PAI. Sélectionnez une région en haut de la page. Ensuite, choisissez l'espace de travail souhaité et cliquez sur Enter Elastic Algorithm Service (EAS).

  2. Cliquez sur Deploy Service. Dans la section Inference Service, cliquez sur Custom Deployment dans la section Custom Model Deployment.

  3. Sur la page Custom Deployment, configurez les paramètres clés suivants.

    Paramètre

    Description

    Environment Information

    Deployment Method

    • Lors du déploiement des services WebUI en édition Standard et Cluster, sélectionnez Image-based Deployment et activez l'option Enable Web App.

    • Pour le déploiement d'un service en édition API, sélectionnez Image-based Deployment, puis activez l'option Asynchronous Services.

    Image Configuration

    Dans la liste Alibaba Cloud Image, sélectionnez stable-diffusion-webui et choisissez la dernière version pour le nom de l'image :

    • x.x-standard : édition Standard.

    • x.x-api : édition API.

    • x.x-cluster-webui : édition Cluster WebUI.

    Remarque
    • En raison des itérations rapides des versions, sélectionnez la dernière version de l'image lors du déploiement.

    • Si plusieurs utilisateurs doivent générer des images simultanément via une seule instance Stable Diffusion WebUI, choisissez la version x.x-cluster-webui.

    • Pour plus d'informations sur les scénarios d'utilisation de chaque version, consultez la section Choisir une version adaptée.

    Storage Mount

    Utilisé pour stocker les fichiers de modèle et les images générées.

    Important

    Le montage du stockage est obligatoire pour les éditions API et Cluster.

    Les types suivants sont pris en charge :

    • OSS

      • Uri : définissez le chemin OSS vers un bucket OSS existant.

      • Mount Path : définissez-le sur /code/stable-diffusion-webui/data.

    • NAS

      • File System : sélectionnez un système de fichiers NAS existant.

      • Mount Target : sélectionnez un point de montage existant.

      • File System Path : définissez-le sur /.

      • Mount Path : définissez-le sur /code/stable-diffusion-webui/data.

    • PAI Model

      • PAI Model : sélectionnez le modèle PAI et sa version.

      • Mount Path : définissez-le sur /code/stable-diffusion-webui/data.

    Cette rubrique utilise un montage OSS comme exemple.

    Command to Run

    Une fois les configurations précédentes effectuées, le système génère automatiquement la commande d'exécution correspondante.

    • Après le montage du stockage, vous devez ajouter le paramètre --data-dir à la commande d'exécution afin de monter les données sur le chemin spécifié de l'instance de service. Ce chemin doit correspondre au chemin de montage, par exemple --data-dir /code/stable-diffusion-webui/data.

    • (Facultatif) Vous pouvez également ajouter le paramètre --blade ou --xformers à la commande d'exécution pour activer l'accélération de l'inférence et améliorer la vitesse de génération des images. Pour plus d'informations sur la configuration des paramètres, consultez la section Paramètres configurables au démarrage du service.

    Resource Information

    Deployment

    Sélectionnez un type GPU. Pour la Resource Specification, la valeur recommandée est ml.gu7i.c16m60,1-gu30 (la plus rentable).

    Service Access

    VPC

    Lorsque vous sélectionnez NAS pour le Montage du stockage, le système associe automatiquement un VPC connecté à celui où réside le système de fichiers NAS. Aucune modification supplémentaire n'est nécessaire.

    vSwitch

    Security Group Name

  4. Une fois les paramètres configurés, cliquez sur Deploy.

Déploiement basé sur JSON

Vous pouvez utiliser une méthode basée sur JSON pour déployer un service Stable Diffusion WebUI. Les étapes suivantes montrent comment déployer les éditions Standard et API :

  1. Connectez-vous à la console PAI. Sélectionnez une région en haut de la page. Ensuite, choisissez l'espace de travail souhaité et cliquez sur Enter Elastic Algorithm Service (EAS).

  2. Sur la page Elastic Algorithm Service (EAS), cliquez sur Deploy Service. Dans la section Custom Model Deployment, cliquez sur JSON Deployment.

  3. Dans l'éditeur de la page JSON Deployment, configurez le contenu suivant au format JSON.

    Déployer un service en édition Standard

    {
        "metadata": {
            "instance": 1,
            "name": "sd_v32",
            "enable_webservice": true
        },
        "containers": [
            {
                "image": "eas-registry-vpc.<region>.cr.aliyuncs.com/pai-eas/stable-diffusion-webui:4.2",
                "script": "./webui.sh --listen --port 8000 --skip-version-check --no-hashing --no-download-sd-model --skip-prepare-environment --api --filebrowser --data-dir=/code/stable-diffusion-webui/data",
                "port": 8000
            }
        ],
        "cloud": {
            "computing": {
                "instance_type": "ml.gu7i.c16m60.1-gu30",
                "instances": null
            },
            "networking": {
                "vpc_id": "vpc-t4nmd6nebhlwwexk2****",
                "vswitch_id": "vsw-t4nfue2s10q2i0ae3****",
                "security_group_id": "sg-t4n85ksesuiq3wez****"
            }
        },
        "storage": [
            {
                "oss": {
                    "path": "oss://examplebucket/data-oss",
                    "readOnly": false
                },
                "properties": {
                    "resource_type": "model"
                },
                "mount_path": "/code/stable-diffusion-webui/data"
            },
            {
                "nfs": {
                    "path": "/",
                    "server": "726434****-aws0.ap-southeast-1.nas.aliyuncs.com"
                },
                "properties": {
                    "resource_type": "model"
                },
                "mount_path": "/code/stable-diffusion-webui/data"
            }
        ]
    } 

    Le tableau suivant décrit les paramètres clés.

    Paramètre

    Obligatoire

    Description

    metadata.name

    Oui

    Le nom personnalisé du service de modèle. Le nom doit être unique au sein de la même région.

    containers.image

    Oui

    Remplacez <region> par l'ID de la région actuelle. Par exemple, l'ID de la Chine (Shanghai) est cn-shanghai. Pour plus d'informations sur la recherche des ID de région, consultez la section Régions et zones.

    storage

    Non

    Deux méthodes de montage sont prises en charge. Vous pouvez en choisir une :

    • OSS : l'utilisation d'OSS pour le téléchargement et le transfert de données est plus pratique et permet de générer des URL d'accès public pour les images créées. Toutefois, le changement de modèle et l'enregistrement des images sont plus lents qu'avec NAS. Vous devez définir storage.oss.path sur le chemin d'un bucket OSS créé.

    • NAS : l'utilisation d'un montage NAS offre un changement de modèle et un enregistrement d'images plus rapides. Vous devez définir storage.nfs.server sur un système de fichiers NAS créé.

    Cette rubrique utilise un montage OSS comme exemple.

    cloud.networking

    Non

    Lors de l'utilisation d'un montage NAS pour le stockage, vous devez configurer un VPC, y compris vpc_id (ID du VPC), vswitch_id (ID du vSwitch) et security_group_id (ID du groupe de sécurité). Le VPC configuré doit être identique à celui du système de fichiers NAS General-purpose.

    Déployer un service en édition API

    {
        "metadata": {
            "name": "sd_async",
            "instance": 1,
            "rpc.worker_threads": 1,
            "type": "Async"
        },
        "cloud": {
            "computing": {
                "instance_type": "ml.gu7i.c16m60.1-gu30",
                "instances": null
            },
            "networking": {
                "vpc_id": "vpc-bp1t2wukzskw9139n****",
                "vswitch_id": "vsw-bp12utkudylvp4c70****",
                "security_group_id": "sg-bp11nqxfd0iq6v5g****"
            }
        },
        "queue": {
            "cpu": 1,
            "max_delivery": 1,
            "memory": 4000,
            "resource": ""
        },
        "storage": [
            {
                "oss": {
                    "path": "oss://examplebucket/aohai-singapore/",
                    "readOnly": false
                },
                "properties": {
                    "resource_type": "model"
                },
                "mount_path": "/code/stable-diffusion-webui/data"
            },
            {
                "nfs": {
                    "path": "/",
                    "server": "0c9624****-fgh60.cn-hangzhou.nas.aliyuncs.com"
                },
                "properties": {
                    "resource_type": "model"
                },
                "mount_path": "/code/stable-diffusion-webui/data"
            }
        ],
        "containers": [
            {
                "image": "eas-registry-vpc.<region>.cr.aliyuncs.com/pai-eas/stable-diffusion-webui:4.2",
                "script": "./webui.sh --listen --port 8000 --skip-version-check --no-hashing --no-download-sd-model --skip-prepare-environment --api-log --time-log --nowebui --data-dir=/code/stable-diffusion-webui/data",
                "port": 8000
            }
        ]
    } 

    Par rapport à la configuration du service en édition Standard, le service en édition API présente les modifications de configuration suivantes. Les autres paramètres restent identiques à ceux de l'édition Standard.

    Paramètre

    Description

    Supprimez les paramètres suivants :

    metadata.enable_webservice

    Supprimez ce paramètre pour indiquer que le service web n'est pas activé.

    containers.script

    Supprimez --filebrowser de la configuration containers.script afin d'accélérer le démarrage du service.

    Ajoutez les paramètres suivants :

    metadata.type

    Définissez la valeur sur Async pour activer le service asynchrone.

    metadata.rpc.worker_threads

    Définissez la valeur sur 1 pour permettre à une seule instance de traiter une requête à la fois.

    queue.max_delivery

    Définissez la valeur sur 1 pour empêcher les nouvelles tentatives après une erreur de traitement du message.

    containers.script

    Ajoutez --nowebui (pour accélérer le démarrage) et --time-log (pour enregistrer les temps de réponse de l'API) à la configuration containers.script.

    Pour plus d'informations sur la configuration des paramètres, consultez la section Déployer un service en édition Standard.

  4. Cliquez sur Deploy.

Installer des plug-ins pour des fonctionnalités avancées

Vous pouvez installer des plug-ins pour Stable Diffusion WebUI afin d'étendre ses fonctionnalités. PAI propose plusieurs plug-ins préinstallés, tels que le plug-in BeautifulPrompt, qui permet d'enrichir et d'affiner les prompts. La section suivante utilise BeautifulPrompt comme exemple pour illustrer l'installation et l'utilisation d'un plug-in.

Installer un plug-in

Vous pouvez consulter et installer des plug-ins depuis l'onglet Extensions de la page WebUI. Procédez comme suit :

  1. Cliquez sur le nom du service cible pour accéder à la page Overview, puis cliquez sur Web applications dans le coin supérieur droit.

  2. Sur la page WebUI, dans l'onglet Extensions, vérifiez si BeautifulPrompt est sélectionné. Si ce n'est pas le cas, sélectionnez le plug-in et cliquez sur Apply and restart UI pour recharger le plug-in BeautifulPrompt.

    Lors de l'installation du plug-in, la page WebUI redémarre automatiquement. Une fois le rechargement terminé, vous pouvez effectuer une validation par inférence.

Utiliser le plug-in pour la validation par inférence

  1. Basculez vers l'onglet BeautifulPrompt, saisissez un prompt simple dans la zone de texte, puis cliquez sur Generate pour générer un prompt plus détaillé.

    Vous pouvez configurer les paramètres de génération suivants :

    • Top K : 50

    • Top P : 0,9

    • Temperature : 0,9

    • Repetition penalty : 1,05

    • Max new tokens : 384

    • Num prompts : 5

    Après avoir cliqué sur Generate, le panneau de résultats à droite affiche plusieurs prompts Stable Diffusion enrichis. À droite de chaque résultat, les boutons to txt2img et to img2img vous permettent d'envoyer directement le prompt vers la page de fonctionnalité correspondante.

    PAI propose plusieurs modèles de génération de prompts, chacun produisant des prompts légèrement différents. Les modèles disponibles sont les suivants :

    • pai-bloom-1b1-text2prompt-sd-v2 : Excellent pour générer des prompts destinés à des scènes complexes.

    • pai-bloom-1b1-text2prompt-sd : Génère des prompts décrivant un objet unique.

    Sélectionnez le modèle approprié pour générer des prompts selon vos besoins. Vous pouvez également cocher la case Negative prompt pour générer simultanément des prompts négatifs.

  2. Sélectionnez le prompt souhaité et cliquez sur to txt2img à droite du prompt.

    La page bascule automatiquement vers l'onglet Text-to-Image et remplit la zone de prompt.

  3. Cliquez sur Generate pour générer une image sur le côté droit de la page WebUI.

    Le prompt enrichi inclut des descripteurs riches en qualité d'image et en composition, tels que masterpiece, best quality et ultra-detailed, qui aident à générer des images de haute qualité de style anime.

    Par rapport à une utilisation sans le plug-in BeautifulPrompt, son utilisation améliore la qualité esthétique des images générées et vous aide à ajouter plus de détails. Le tableau suivant présente une comparaison des résultats avec et sans le plug-in BeautifulPrompt pour d'autres scénarios.

    Input Prompt

    Result without BeautifulPrompt

    Result with BeautifulPrompt

    a cat

    image.png

    image.png

    a giant tiger

    image.png

    image.png

FAQ

Q : Comment monter mes propres modèles et répertoires de sortie ?

Une fois le service déployé, le système crée automatiquement la structure de répertoires suivante dans l'espace de stockage OSS ou NAS monté.

  • api_rec/

  • configs/

  • extensions/

  • images/

  • models/

  • progress_images/

  • requests_folder/

  • cache.json

  • params.txt

  • ui-config.json

Où :

  • models : Ce répertoire sert à stocker les fichiers de modèles.

  • outputs : Après le lancement d'une requête d'inférence, le système génère automatiquement les fichiers de résultats dans ce répertoire, conformément à la configuration prédéfinie dans le code API.

Vous pouvez stocker les modèles téléchargés depuis des communautés open source ou vos propres modèles LoRA ou Stable Diffusion entraînés dans les répertoires spécifiés pour les charger et les utiliser. Procédez comme suit :

  1. Téléchargez le fichier de modèle dans le sous-répertoire correspondant du répertoire models du stockage monté. Pour plus d'informations, consultez Étape 2 : Télécharger des fichiers.

  2. Sur la page Elastic Algorithm Service (EAS), cliquez sur image > Restart Service dans la colonne Actions du service cible. Les modifications prennent effet après le redémarrage réussi du service.

  3. Sur la page Stable Diffusion WebUI, changez de modèle et effectuez une validation par inférence du modèle.

    Cliquez sur la liste déroulante Stable Diffusion checkpoint et sélectionnez le modèle cible, par exemple chilloutmix_NiPrunedFp32Fix.safetensors ou deliberate_v2.safetensors.

Q : Les plug-ins téléchargés et les fichiers téléchargés sont-ils conservés dans l'instance si la configuration reste inchangée ?

Sans montage de stockage, le cycle de vie des fichiers est identique à celui du service. Si le service est arrêté, redémarré ou supprimé, tous les fichiers sont supprimés. Par conséquent, nous vous recommandons de monter un stockage externe, tel qu'OSS ou NAS, pour conserver ces fichiers.

Q : Que faire si le service reste bloqué pendant une longue période ?

  • Vous pouvez d'abord tenter de résoudre le problème en rouvrant l'interface Stable Diffusion WebUI ou en redémarrant le service EAS.

    • Cliquez sur le service cible pour accéder à la page Overview et cliquez sur Web applications dans le coin supérieur droit pour rouvrir Stable Diffusion WebUI.

    • Cliquez sur image > Restart Service dans la colonne Actions du service cible pour redémarrer le service EAS.

  • Si le redémarrage ne résout pas le problème après une longue période, il est probable que le service doive télécharger du contenu, tel que des modèles ou des plug-ins, depuis Internet. Par défaut, EAS n'a pas accès au réseau public. Les images d'exécution peuvent être démarrées hors ligne et le montage de modèles ne nécessite pas de connexion réseau. Cependant, certains plug-ins dépendent du téléchargement de contenu depuis Internet. Dans ce cas, nous vous recommandons de vérifier les journaux pour trouver le chemin de téléchargement du modèle ou du plug-in, de le télécharger manuellement, puis de le télécharger sur OSS pour le monter. Pour plus d'informations, consultez Q : Comment monter mes propres modèles et répertoires de sortie ?. Si vous avez toujours besoin d'une connexion Internet, consultez Accéder aux ressources du réseau public ou interne depuis EAS pour configurer une connexion au réseau public.

Q : Comment passer la langue par défaut de la page WebUI à l'anglais ?

  1. Sur la page Stable Diffusion WebUI, cliquez sur Settings.

  2. Dans le volet de navigation de gauche, cliquez sur User interface. Dans la section Localization à droite, sélectionnez None.

  3. En haut de la page Stable Diffusion WebUI, cliquez sur Apply settings, puis sur Reload UI.

    Actualisez la page WebUI pour passer la langue à l'anglais.

Q : Comment gérer mon système de fichiers ?

Lors du déploiement d'un service d'édition WebUI Standard ou Cluster, le système ajoute par défaut le paramètre --filebrowser à la commande d'exécution. Vous pouvez gérer votre système de fichiers directement via l'interface WebUI. Procédez comme suit :

  1. Cliquez sur le nom du service cible pour accéder à la page Overview, puis cliquez sur Web applications dans le coin supérieur droit.

  2. Sur la page Stable Diffusion WebUI, cliquez sur l'onglet FileBrowser. Vous pouvez afficher directement le système de fichiers ou effectuer des opérations de téléchargement et de téléversement.

Q : Erreur : No such file or directory: 'data-oss/data-.png'

  1. Vérifiez la version de déploiement. S'il s'agit de l'édition API (l'image est x.x-api) ou de l'édition Cluster WebUI (l'image est x.x-cluster-webui), vous devez configurer le modèle.

  2. Vérifiez le chemin de montage. Vérifiez si la commande d'exécution contient le paramètre --data-dir et assurez-vous que son chemin correspond au chemin de montage OSS.

    Par exemple, définissez à la fois le chemin de montage OSS et le paramètre --data-dir dans la commande d'exécution sur /code/stable-diffusion-webui/data. Voici un exemple complet de commande d'exécution :

    ./webui.sh --listen --port 8000 --skip-version-check --no-hashing --no-download-sd-model --skip-prepare-environment --api --filebrowser --cluster-status --data-dir /code/stable-diffusion-webui/data

Q : Je ne peux pas accéder à la page WebUI

Vérifiez la version de déploiement du service. L'édition API ne prend pas en charge WebUI. Si vous utilisez un déploiement personnalisé, l'image x.x-api correspond à l'édition API.

Annexe

Paramètres configurables au démarrage du service

  • Paramètres courants

    Common parameter

    Feature description

    Recommendation

    --blade

    Active l'accélération PAI-Blade pour accélérer la génération d'images.

    Nous vous recommandons d'activer cette option.

    --filebrowser

    Un plug-in qui permet de télécharger et de téléverser des modèles ou des images.

    Activé par défaut.

    --data-dir /code/stable-diffusion-webui/data-oss

    Le chemin utilisé pour les montages de stockage persistant.

    À utiliser lors du montage d'un stockage persistant. Le chemin de départ par défaut est /code/stable-diffusion-webui/. Vous pouvez également utiliser un chemin relatif.

    --api

    Le mode d'appel API pour WebUI.

    Activé par défaut.

    --enable-nsfw-censor

    Désactivé par défaut. Si vous avez des exigences de sécurité et de conformité, vous pouvez activer la fonctionnalité de détection de contenu pornographique.

    Ajustez selon vos besoins.

    --always-hide-tabs

    Spécifie que certains onglets sont masqués.

    Ajustez selon vos besoins.

    --min-ram-reserved 40 --sd-dynamic-cache

    Mise en cache du grand modèle Stable Diffusion en mémoire.

    Aucune.

  • Paramètres de l'édition Cluster

    Remarque

    Les LLM checkpoint (ckpt) et ControlNet LLM chargent automatiquement les fichiers du répertoire public et vos fichiers personnalisés.

    Cluster edition parameter

    Feature description

    Recommendation

    --lora-dir

    Spécifie le répertoire public des modèles LoRA. Par exemple, --lora-dir /code/stable-diffusion-webui/data-oss/models/Lora.

    Non configuré par défaut. Tous les répertoires LoRA des utilisateurs sont isolés et seuls les modèles LoRA du dossier de l'utilisateur sont chargés. Lorsqu'un répertoire spécifique est spécifié, tous les utilisateurs chargent à la fois les modèles LoRA de ce répertoire public et les modèles LoRA de leurs propres dossiers.

    --vae-dir

    Spécifie le répertoire public des modèles VAE. Par exemple, --vae-dir /code/stable-diffusion-webui/data-oss/models/VAE.

    Non configuré par défaut. Tous les répertoires VAE des utilisateurs sont isolés et seuls les modèles VAE du dossier de l'utilisateur sont chargés. Lorsqu'un répertoire spécifique est spécifié, tous les utilisateurs chargent uniquement les modèles VAE de ce répertoire public.

    --gfpgan-dir

    Spécifie le répertoire public des modèles GFPGAN. Par exemple, --gfpgan-dir /code/stable-diffusion-webui/data-oss/models/GFPGAN.

    Non configuré par défaut. Tous les répertoires GFPGAN des utilisateurs sont isolés et seuls les modèles GFPGAN du dossier de l'utilisateur sont chargés. Lorsqu'un répertoire spécifique est spécifié, tous les utilisateurs chargent uniquement les modèles GFPGAN de ce répertoire public.

    --embeddings-dir

    Spécifie le répertoire public des modèles embeddings. Par exemple, --embeddings-dir /code/stable-diffusion-webui/data-oss/embeddings.

    Non configuré par défaut. Tous les répertoires embeddings des utilisateurs sont isolés et seuls les modèles embeddings du dossier de l'utilisateur sont chargés. Lorsqu'un répertoire spécifique est spécifié, tous les utilisateurs chargent uniquement les modèles embeddings de ce répertoire public.

    --hypernetwork-dir

    Spécifie le répertoire public des modèles hypernetwork. Par exemple, --hypernetwork-dir /code/stable-diffusion-webui/data-oss/models/hypernetworks.

    Non configuré par défaut. Tous les répertoires hypernetwork des utilisateurs sont isolés et seuls les modèles hypernetwork du dossier de l'utilisateur sont chargés. Lorsqu'un répertoire spécifique est spécifié, tous les utilisateurs chargent uniquement les modèles hypernetwork de ce répertoire public.

    --root-extensions

    Le répertoire des plug-ins utilise un répertoire partagé. Avec ce paramètre, tous les utilisateurs voient exactement les mêmes plug-ins.

    Utilisez ce paramètre lorsque vous devez installer ou gérer des plug-ins de manière centralisée.

Paramètres supplémentaires configurables pour les opérations API

EAS prend en charge de nouvelles fonctionnalités basées sur l'API native Stable Diffusion WebUI. En plus des paramètres requis, vous pouvez ajouter des paramètres facultatifs à l'opération API pour implémenter davantage de fonctionnalités ou répondre à des exigences personnalisées.

  • Vous pouvez spécifier le modèle Stable Diffusion, le modèle VAE et le répertoire de sauvegarde.

  • Vous pouvez saisir des paramètres à l'aide d'une URL et recevoir les codes d'état correspondants.

  • Les images générées et leurs images ControlNet correspondantes sont accessibles via une URL.

Voici des exemples d'utilisation.

Exemples de requête et de réponse Text-to-image

Voici un exemple du format des données de requête.

{
      "alwayson_scripts": {
          "sd_model_checkpoint": "deliberate_v2.safetensors",  
          "save_dir": "/code/stable-diffusion-webui/data-oss/outputs",
          "sd_vae": "Automatic"
      },
      "steps": 20,
      "prompt": "girls",          
      "batch_size": 1,                                            
      "n_iter": 2,                                                 
      "width": 576, 
      "height": 576,
      "negative_prompt": "ugly, out of frame"
  }

Le tableau suivant décrit les paramètres clés.

  • sd_model_checkpoint : Spécifie le point de contrôle du modèle Stable Diffusion, ce qui permet le basculement automatique vers un grand modèle.

  • sd_vae : Spécifie le modèle VAE.

  • save_dir : Spécifie le chemin de sauvegarde des images générées.

Voici un exemple de requête API synchrone.

# Call the synchronous API operation to validate the model effect.

curl --location --request POST '<service_url>/sdapi/v1/txt2img' \
--header 'Authorization: <token>' \
--header 'Content-Type: application/json' \
--data-raw '{
      "alwayson_scripts": {
          "sd_model_checkpoint": "deliberate_v2.safetensors",
          "save_dir": "/code/stable-diffusion-webui/data-oss/outputs",
          "sd_vae": "Automatic"
      },
      "prompt": "girls",          
      "batch_size": 1,                                            
      "n_iter": 2,                                                 
      "width": 576, 
      "height": 576,
      "negative_prompt": "ugly, out of frame"
  }'

Voici un exemple du format des données de réponse :

{
  "images": [],
  "parameters": {
    "id_task": "14837",
    "status": 0,
    "image_url": "/code/stable-diffusion-webui/data-oss/outputs/txt2img-grids/2023-07-24/grid-29a67c1c-099a-4d00-8ff3-1ebe6e64931a.png,/code/stable-diffusion-webui/data-oss/outputs/txt2img-images/2023-07-24/74626268-6c81-45ff-90b7-faba579dc309-1146644551.png,/code/stable-diffusion-webui/data-oss/outputs/txt2img-images/2023-07-24/6a233060-e197-4169-86ab-1c18adf04e3f-1146644552.png",
    "seed": "1146644551,1146644552",
    "error_msg": "",
    "total_time": 32.22393465042114
  },
  "info": ""
}

Voici un exemple de requête API asynchrone :

# Send data directly to the asynchronous queue.
curl --location --request POST '<service_url>/sdapi/v1/txt2img' \
--header 'Authorization: <token>' \
--header 'Content-Type: application/json' \
--data-raw '{
    "alwayson_scripts": {
        "sd_model_checkpoint": "deliberate_v2.safetensors",
        "id_task": "14837",
        "uid": "123",
        "save_dir": "tmp/outputs"
    },
    "prompt": "girls",
    "batch_size": 1,
    "n_iter": 2,
    "width": 576,
    "height": 576,
    "negative_prompt": "ugly, out of frame"
}'

Exemple de format de données de requête Image-to-image

Voici un exemple du format des données de requête.

{
    "alwayson_scripts": {
        "image_link":"https://eas-cache-cn-hangzhou.oss-cn-hangzhou-internal.aliyuncs.com/stable-diffusion-cache/tests/boy.png",
        "sd_model_checkpoint": "deliberate_v2.safetensors",
        "sd_vae": "Automatic",
        "save_dir": "/code/stable-diffusion-webui/data-oss/outputs"
    },
    "prompt": "girl",
    "batch_size": 1,                                            
    "n_iter": 2,                                                 
    "width": 576, 
    "height": 576,
    "negative_prompt": "ugly, out of frame",
    "steps": 20, # Sampling steps
    "seed": 111,   
    "subseed": 111, # Variation seed
    "subseed_strength": 0, # Variation strength
    "seed_resize_from_h": 0, # Resize seed from height
    "seed_resize_from_w": 0, # Resize seed from width
    "seed_enable_extras": false, # Extra
    "sampler_name": "DDIM", # Sampling method
    "cfg_scale": 7.5, # CFG Scale
    "restore_faces": true, # Restore faces
    "tiling": false, # Tiling
    "init_images": [], # image base64 str, default None
    "mask_blur": 4, # Mask blur
    "resize_mode": 1, # 0 just resize, 1 crop and resize, 2 resize and fill, 3 just resize
    "denoising_strength": 0.75, # Denoising strength
    "inpainting_mask_invert": 0, #int, index of ['Inpaint masked', 'Inpaint not masked'], Mask mode
    "inpainting_fill": 0, #index of ['fill', 'original', 'latent noise', 'latent nothing'], Masked content
    "inpaint_full_res": 0, # index of ["Whole picture", "Only masked"], Inpaint area
    "inpaint_full_res_padding": 32, #minimum=0, maximum=256, step=4, value=32, Only masked padding, pixels
    #"image_cfg_scale": 1, # resized by scale
    #"script_name": "Outpainting mk2", # Name of the script to use. Do not add this field if not using a script.
    #"script_args": ["Outpainting", 128, 8, ["left", "right", "up", "down"], 1, 0.05]  # Parameters for the script, corresponding to: fixed field, pixels, mask_blur, direction, noise_q, color_variation
}

Voici un exemple du format des données de réponse.

{
    "images":[],
    "parameters":{
        "id_task":"14837",
        "status":0,
        "image_url":"/data/api_test/img2img-grids/2023-06-05/grid-0000.png,/data/api_test/img2img-images/2023-06-05/00000-1003.png,/data/api_test/img2img-images/2023-06-05/00001-1004.png",
        "seed":"1003,1004",
        "error_msg":""
    },
    "info":""
}

Format de données ControlNet pour text-to-image

Voici le format des données de requête.

{
    "alwayson_scripts": {
        "sd_model_checkpoint": "deliberate_v2.safetensors", #Model name, required
        "save_dir": "/code/stable-diffusion-webui/data-oss/outputs",
        "controlnet":{
            "args":[
                {
                    "image_link": "https://pai-aigc-dataset.oss-cn-hangzhou.aliyuncs.com/pixabay_images/00008b87bf3ff6742b8cf81c358b9dbc.jpg",
                    "enabled": true, 
                    "module": "canny", 
                    "model": "control_v11p_sd15_canny", 
                    "weight": 1, 
                    "resize_mode": "Crop and Resize", 
                    "low_vram": false, 
                    "processor_res": 512, 
                    "threshold_a": 100, 
                    "threshold_b": 200, 
                    "guidance_start": 0, 
                    "guidance_end": 1, 
                    "pixel_perfect": true, 
                    "control_mode": "Balanced", 
                    "input_mode": "simple", 
                    "batch_images": "", 
                    "output_dir": "", 
                    "loopback": false
                }
            ]
        }
    },
    # Main parameters
    "prompt": "girls",          
    "batch_size": 1,                                            
    "n_iter": 2,                                                 
    "width": 576, 
    "height": 576,
    "negative_prompt": "ugly, out of frame"
}

Voici un exemple du format des données de réponse.

{
    "images":[],
    "parameters":{
        "id_task":"14837",
        "status":0,
        "image_url":"/data/api_test/txt2img-grids/2023-06-05/grid-0007.png,/data/api_test/txt2img-images/2023-06-05/00014-1003.png,/data/api_test/txt2img-images/2023-06-05/00015-1004.png",
        "seed":"1003,1004",
        "error_msg":"",
        "image_mask_url":"/data/api_test/controlnet_mask/2023-06-05/00000.png,/data/api_test/controlnet_mask/2023-06-05/00001.png"
    },
    "info":""
}

Références