Todos os produtos
Search
Central de documentação

Platform For AI:Deploy Stable Diffusion web UI

Última atualização: Jun 27, 2026

Implante a WebUI do Stable Diffusion no EAS para gerar imagens com IA usando modelos de implantação com um clique e dimensionamento automático de GPU.

Recursos e benefícios

Vantagens do PAI-EAS em relação a serviços autoconstruídos:

  • Implantação com um clique: Imagens pré-configuradas incluem todas as dependências.

  • Dimensionamento automático de GPU: Ajusta dinamicamente os recursos de GPU conforme a demanda.

  • Recursos de nível empresarial: Isolamento multiusuário, compartilhamento de GPU e alocação de custos.

  • Gerenciamento integrado de arquivos: A extensão FileBrowser integrada simplifica o upload de modelos.

Selecione uma versão

Versão

Cenários

Método de invocação

Faturamento

Edição Standard

Testes pessoais, desenvolvimento de protótipos

WebUI, invocação de API (síncrona)

Faturamento baseado na configuração da implantação. Para mais detalhes, consulte Visão geral do faturamento do EAS.

Edição API

API para ambiente de produção, cenários de alta concorrência

Invocação de API (síncrona e assíncrona)

WebUI em cluster

Colaboração em equipe, equipes de design

WebUI

Edição Serverless

Nota

Suportado apenas nas regiões China (Shanghai) e China (Hangzhou).

Carga elástica, otimização de custos

WebUI

A implantação do serviço é gratuita. O faturamento baseia-se apenas na duração da geração de imagens.

Início rápido

  1. Faça login no PAI console. Selecione uma região na parte superior da página. Em seguida, selecione o workspace desejado e clique em Elastic Algorithm Service (EAS).

  2. Na página Elastic Algorithm Service (EAS), clique em Deploy Service. Na área Scenario-based Model Deployment, clique em AI Painting - SD Web UI Deployment.

  3. Configure os parâmetros principais:

    • Version: Selecione Standard edition.

    • Model Settings: Armazena arquivos de modelo e imagens geradas por inferência. Selecione OSS e escolha um caminho de bucket.

    • Instance Type: Selecione o tipo GPU. O tipo de instância recomendado é ml.gu7i.c16m60.1-gu30 (melhor custo-benefício).

  4. Clique em Deploy. Aguarde de 5 a 10 minutos até que o status do serviço mude para Running.

Invocar o serviço

WebUI

Acesse os serviços das edições Standard, WebUI em cluster e Serverless pela WebUI:

  1. Clique no nome do serviço desejado para abrir a página Overview e clique em Web applications no canto superior direito.

  2. Verifique a inferência do modelo.

    Na página da WebUI do Stable Diffusion, na aba Text-to-Image, insira um prompt positivo como cute dog. Clique em Generate para concluir a geração de arte por IA. Resultado:

    image

API síncrona

Após implantar serviços da edição Standard ou da edição API, envie solicitações de API síncronas.

Obter endpoint

  1. Após implantar o serviço, clique no nome do serviço para acessar a página Overview.

  2. Em Basic Information, clique em View Endpoint Information.

  3. Em Invocation Information, obtenha o endpoint público do serviço e o Token.

Exemplos

Salvar imagens localmente

import requests
import base64
from PIL import Image
import io

# Important: Remove the trailing / from the service URL.
SERVICE_URL = "<service_url>"
TOKEN = "<Token>"

def generate_image(prompt: str) -> Image.Image:
    """Generate an image from 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
image = generate_image("a serene mountain landscape at sunset")
image.save("output.png")

Salvar imagens no OSS

import requests

# Important: Remove the trailing / from the service URL.
SERVICE_URL = "<service_url>"
TOKEN = "<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 saved image paths
data = response.json()

# This corresponds to the mount_path of the OSS folder mounted when deploying as an EAS Service.
mount_path = "/code/stable-diffusion-webui/data"

# This corresponds to the OSS bucket URL selected when deploying as an EAS Service.
oss_url = "oss://examplebucket/data-oss"

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

Para recursos avançados, use LoRA e ControlNet nas solicitações de API.

Usar modelos LoRA nas solicitações

Adicione <lora:yaeMikoRealistic_Genshin:1000> ao campo prompt no corpo da solicitação para aplicar um modelo LoRA. Consulte LoRA.

Exemplo de corpo de solicitação:

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

Usar ControlNet nas solicitações

Utilize o ControlNet nas solicitações de API para transformações de imagem, como manter a orientação horizontal ou vertical. Para detalhes de configuração, consulte txt2img usando formato de dados do ControlNet.

API assíncrona

Após implantar serviços da edição API, envie solicitações de API assíncronas. Os clientes enviam solicitações e inscrevem-se em uma fila de resultados para receber respostas enviadas pelo servidor.

Obter endpoint

  1. Após implantar o serviço, clique no nome do serviço para acessar a página Overview.

  2. Em Basic Information, clique em View Endpoint Information.

  3. Em Invocation Information, alterne para Asynchronous Invocation para obter o endpoint de entrada de rede pública e o Token.

Enviar solicitações

Envie solicitações ao servidor pela API assíncrona.

import requests

SERVICE_URL = "<Public service URL>"
TOKEN = "<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"Job enqueued: {response.json()}")
Importante
  • A fila assíncrona possui limites de tamanho tanto para solicitações de entrada quanto para resultados de saída (geralmente 8 KB). Ao enviar solicitações:

    • Se os dados da solicitação incluírem imagens, use URLs para passar as informações da imagem. A WebUI do Stable Diffusion baixa e analisa os dados da imagem automaticamente.

    • Para excluir dados da imagem original dos resultados, use save_dir para especificar o caminho de salvamento. Para mais detalhes, consulte Parâmetros adicionais suportados pelas operações de API.

Inscrever-se nos resultados

Inscreva-se em uma fila de resultados para receber respostas enviadas pelo servidor após o processamento.

from eas_prediction import QueueClient

# Adjust the service URL format to the example: 112231234124214.cn-hangzhou.pai-eas.aliyuncs.com
SERVICE_URL = "<service_url>"
TOKEN = "<Token>"
# Service name configured during service creation.
SERVICE_NAME = "<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}")

O EAS estende a API nativa da WebUI do Stable Diffusion com parâmetros adicionais. Consulte Parâmetros adicionais suportados pelas operações de API.

Opções avançadas de implantação

Implantação personalizada

Implante serviços das edições Standard, API e WebUI em cluster:

  1. Faça login no PAI console. Selecione uma região na parte superior da página. Em seguida, selecione o workspace desejado e clique em Elastic Algorithm Service (EAS).

  2. Clique em Deploy Service. Na seção Custom Model Deployment, clique em Custom Deployment.

  3. Em Custom Deployment, configure os parâmetros principais.

    Parâmetro

    Descrição

    Environment Information

    Deployment Method

    • Ao implantar serviços das edições Standard e WebUI em cluster, selecione Image-based Deployment e ative Enable Web App.

    • Ao implantar serviços da edição API, selecione Image-based Deployment e ative Asynchronous Services.

    Image Configuration

    Em Alibaba Cloud Image, selecione stable-diffusion-webui e escolha a versão mais recente da imagem. Versões disponíveis:

    • x.x-standard: Edição Standard.

    • x.x-api: Edição API.

    • x.x-cluster-webui: WebUI em cluster.

    Nota
    • As versões de imagem são atualizadas frequentemente. Sempre selecione a versão mais recente durante a implantação.

    • Se vários usuários precisarem gerar imagens simultaneamente usando uma única WebUI do Stable Diffusion, selecione x.x-cluster-webui.

    • Para cenários de uso de cada versão, consulte Selecione uma versão.

    Storage Mount

    Armazena arquivos de modelo e imagens geradas por inferência.

    Importante

    Montagens de armazenamento são obrigatórias para a edição API e WebUI em cluster.

    Tipos suportados:

    • OSS

      • Uri: Configure o caminho do OSS para um caminho de bucket OSS existente.

      • Mount Path: Configure como /code/stable-diffusion-webui/data.

    • NAS

      • File System: Selecione um sistema de arquivos NAS existente.

      • Mount Target: Selecione um destino de montagem existente.

      • File System Path: Configure como /.

      • Mount Path: Configure como /code/stable-diffusion-webui/data.

    • PAI Model

      • PAI Model: Selecione um modelo PAI e a versão do modelo.

      • Mount Path: Configure como /code/stable-diffusion-webui/data.

    Este tópico usa a montagem OSS como exemplo.

    Command to Run

    Após concluir a configuração, o sistema gera o comando de execução.

    • Após montar o armazenamento, adicione o parâmetro --data-dir ao comando de execução para montar dados no caminho especificado da instância de serviço. O caminho deve corresponder ao caminho de montagem, como --data-dir /code/stable-diffusion-webui/data.

    • (Opcional) Adicione --blade ou --xformers para ativar a aceleração de inferência. Para mais parâmetros, consulte Parâmetros suportados durante a inicialização do serviço.

    Resource Information

    Deployment

    Selecione o tipo GPU. A Resource Specification recomendada é ml.gu7i.c16m60.1-gu30 (melhor custo-benefício).

    Service Access

    VPC

    Quando Storage Mount estiver definido como NAS, o sistema associa automaticamente a VPC conectada ao NAS.

    vSwitch

    Security Group Name

  4. Clique em Deploy.

Implantação autônoma via JSON

Implante serviços da WebUI do Stable Diffusion usando configuração JSON. Os exemplos a seguir cobrem as edições Standard e API.

  1. Faça login no PAI console. Selecione uma região na parte superior da página. Em seguida, selecione o workspace desejado e clique em Elastic Algorithm Service (EAS).

  2. Na página Elastic Algorithm Service (EAS), clique em Deploy Service. Na área Custom Model Deployment, clique em JSON Deployment.

  3. No editor da página JSON Deployment, configure este conteúdo JSON.

    Implantar um serviço da edição 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"
            }
        ]
    } 

    Parâmetros principais:

    Parâmetro

    Obrigatório

    Descrição

    metadata.name

    Sim

    Um nome de serviço personalizado. Deve ser único dentro da região.

    containers.image

    Sim

    Substitua <region> pelo ID da região atual (por exemplo, cn-shanghai para China (Shanghai)). Para IDs de região, consulte Regiões e zonas.

    storage

    Não

    Dois métodos de montagem são suportados. Selecione um:

    • OSS: Conveniente para upload e download de dados. Suporta a geração de URLs públicas para imagens geradas, mas a troca de modelos e o salvamento de imagens são mais lentos do que no NAS. Defina storage.oss.path como um caminho de bucket OSS existente.

    • NAS: Mais rápido para troca de modelos e salvamento de imagens. Defina storage.nfs.server como um sistema de arquivos NAS existente.

    Este tópico usa a montagem OSS como exemplo.

    cloud.networking

    Não

    Quando storage usar montagem NAS, configure a virtual private cloud (VPC), incluindo vpc_id (ID da VPC), vswitch_id (ID do vSwitch) e security_group_id (ID do grupo de segurança). A VPC configurada deve corresponder ao sistema de arquivos NAS de uso geral.

    Implantar um serviço da edição 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
            }
        ]
    } 

    A tabela a seguir lista apenas as diferenças em relação à configuração da edição Standard. Todos os outros parâmetros são idênticos.

    Parâmetro

    Descrição

    Exclua estes parâmetros:

    metadata.enable_webservice

    Exclua este parâmetro para desativar o servidor web.

    containers.script

    Remova --filebrowser configurado em containers.script para acelerar a inicialização do serviço.

    Adicione estes parâmetros:

    metadata.type

    Configure como Async para ativar o serviço assíncrono.

    metadata.rpc.worker_threads

    Configure como 1. Uma única instância permite o processamento simultâneo de apenas uma solicitação.

    queue.max_delivery

    Configure como 1. Não são permitidas novas tentativas após um erro de processamento de mensagem.

    containers.script

    Adicione --nowebui (para acelerar a inicialização) e --time-log (para registrar o tempo de resposta da API) à configuração containers.script.

    Para mais instruções de configuração de parâmetros, consulte Implantar um serviço da edição Standard.

  4. Clique em Deploy.

Instalar plugins

Estenda a WebUI do Stable Diffusion com plugins. O PAI pré-instala o BeautifulPrompt, que expande e refina prompts.

Instalar plugin

Visualize e instale plugins na aba Extensions da página da WebUI:

  1. Clique no nome do serviço desejado para abrir a página Overview e clique em Web applications no canto superior direito.

  2. Na página da WebUI, sob a aba Extensions, verifique se BeautifulPrompt está selecionado. Caso contrário, selecione o plugin e clique em Apply changes and reload UI para recarregar o plugin BeautifulPrompt.image

    A página da WebUI reinicia automaticamente quando um plugin é instalado. Após o recarregamento, verifique se a inferência funciona corretamente.

Verificar inferência

  1. Alterne para a aba BeautifulPrompt. Na caixa de texto, insira um prompt simples. Clique em Generate para criar um prompt mais detalhado.image

    O PAI fornece vários modelos de geração de prompts. Cada modelo gera prompts ligeiramente diferentes:

    • pai-bloom-1b1-text2prompt-sd-v2: Destaca-se na geração de prompts para cenários complexos.

    • pai-bloom-1b1-text2prompt-sd: Gera prompts que descrevem objetos únicos.

    Selecione o modelo apropriado para gerar prompts conforme necessário.image

  2. Selecione o prompt a ser usado. Clique em to txt2img à direita do prompt.

    A página redireciona automaticamente para a aba Text-to-Image e preenche automaticamente a área de prompt.image

  3. Clique em Generate para gerar uma imagem no lado direito da página da WebUI.image

    O BeautifulPrompt melhora a estética da imagem e adiciona mais detalhes em comparação com prompts básicos:

    Prompt de entrada

    Efeito sem BeautifulPrompt

    Efeito com BeautifulPrompt

    a cat

    image.png

    image.png

    a giant tiger

    image.png

    image.png

Perguntas frequentes

P: Como monto meus diretórios de modelos e de saída?

Após a implantação, o sistema cria esta estrutura de diretórios no armazenamento OSS ou NAS montado: image

Isso inclui:

  • models: Este diretório armazena arquivos de modelo.

  • Após iniciar uma solicitação de inferência, o sistema gera automaticamente arquivos de resultado neste diretório de acordo com as configurações pré-definidas no código da API.

Para carregar modelos personalizados ou baixados da comunidade, armazene-os nos diretórios correspondentes listados acima:

  1. Faça upload dos arquivos de modelo para o subdiretório correspondente no diretório models do armazenamento montado. Para mais detalhes, consulte Etapa 2: Fazer upload de arquivos.

  2. Na página Elastic Algorithm Service (EAS), clique em image>Restart Service na coluna Actions do serviço desejado. As alterações entram em vigor após a reinicialização bem-sucedida do serviço.

  3. Na página da WebUI do Stable Diffusion, troque de modelos e verifique a inferência do modelo.

    image

P: Plugins baixados e arquivos enviados são salvos na instância se a configuração permanecer inalterada?

Sem montagens de armazenamento, o ciclo de vida dos arquivos está vinculado ao serviço. Todos os arquivos são excluídos quando o serviço é interrompido, reiniciado ou excluído. Monte armazenamento externo, como OSS ou NAS, para persistir arquivos.

P: O que fazer se o serviço ficar travado por muito tempo?

  • Primeiro, tente reabrir a interface da WebUI do Stable Diffusion ou reiniciar o serviço EAS para resolver o problema:

    • Clique no serviço desejado para acessar a página Overview. No canto superior direito, clique em Web applications para reabrir a WebUI do Stable Diffusion.

    • Na coluna Actions do serviço desejado, clique em image > Restart Service para reiniciar o serviço EAS.

  • Se a reinicialização não resolver o problema, o serviço pode precisar baixar modelos ou plugins da rede pública. O EAS não ativa o acesso à rede pública por padrão. As imagens podem iniciar offline e os modelos montados não requerem rede. No entanto, alguns plugins exigem o download de conteúdo da Internet. Verifique nos logs o caminho de download, baixe manualmente o modelo e faça upload dele no OSS para montagem. Para mais detalhes, consulte P: Como monto meus diretórios de modelos e de saída?. Se o acesso à rede pública for necessário, consulte Acessar recursos de rede pública ou interna no EAS.

P: Como altero o idioma padrão da página da WebUI para inglês?

  1. Na página da WebUI do Stable Diffusion, clique em Settings.

  2. No painel de navegação à esquerda, clique em User Interface. Na área Localization à direita, selecione None.

  3. Na parte superior da página da WebUI do Stable Diffusion, clique em Save Settings. Após salvar, clique em Reload UI.

    Atualize a página da WebUI para alternar para o inglês.

P: Como gerencio meu sistema de arquivos?

Para serviços das edições Standard e WebUI em cluster, o sistema adiciona o parâmetro --filebrowser ao comando de execução por padrão. Gerencie arquivos diretamente pela WebUI:

  1. Clique no nome do serviço desejado para abrir a página Overview e clique em Web applications no canto superior direito.

  2. Na página da WebUI do Stable Diffusion, clique na aba FileBrowser. Visualize o sistema de arquivos diretamente ou realize operações de upload e download.

    image

P: Erro: No such file or directory: 'data-oss/data-.png'

  1. Verifique a versão da implantação. Se for uma edição API (imagem x.x-api) ou WebUI em cluster (imagem x.x-cluster-webui), a configuração do modelo é obrigatória.

  2. Verifique o caminho de montagem. Confirme se o parâmetro --data-dir está no comando de execução e garanta que seu caminho seja consistente com o caminho de montagem do OSS.

    image

P: Não consigo acessar a página da WebUI.

Verifique a versão de implantação do serviço. A edição API não suporta o uso da WebUI. Se estiver usando implantação personalizada, a imagem x.x-api é destinada à edição API.

Apêndice

Parâmetros suportados durante a inicialização do serviço

  • Parâmetros comuns

    Parâmetro

    Descrição

    Recomendação

    --blade

    Ativa a aceleração PAI-Blade para melhorar a velocidade de geração de imagens.

    Recomendado.

    --filebrowser

    Habilita upload e download de arquivos para modelos e imagens.

    Ativado por padrão.

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

    Caminho para montagem de armazenamento persistente.

    Use ao montar armazenamento persistente. O caminho inicial padrão é /code/stable-diffusion-webui/. Caminhos relativos também são suportados.

    --api

    Habilita o acesso à API da WebUI.

    Ativado por padrão.

    --enable-nsfw-censor

    Desativado por padrão. Ative para filtragem de conteúdo NSFW se necessário para conformidade.

    Ajuste conforme necessário.

    --always-hide-tabs

    Oculta abas especificadas da WebUI.

    Ajuste conforme necessário.

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

    Armazena o modelo Stable Diffusion em cache na memória para troca mais rápida de modelos.

    Opcional.

  • Parâmetros da edição em cluster

    Nota

    Modelos grandes de Checkpoint e ControlNet carregam automaticamente arquivos da pasta pública e arquivos personalizados.

    Parâmetro

    Descrição

    Recomendação

    --lora-dir

    Especifique o diretório público de modelos LoRA, por exemplo: --lora-dir /code/stable-diffusion-webui/data-oss/models/Lora.

    Não configurado por padrão. Todos os diretórios LoRA do usuário são isolados, e apenas modelos LoRA nas pastas do usuário são carregados. Quando um diretório específico é especificado, todos os usuários carregam simultaneamente modelos LoRA tanto do diretório público quanto de suas pastas de usuário.

    --vae-dir

    Especifique o diretório público de modelos VAE, por exemplo: --vae-dir /code/stable-diffusion-webui/data-oss/models/VAE.

    Não configurado por padrão. Todos os diretórios VAE do usuário são isolados, e apenas modelos VAE nas pastas do usuário são carregados. Quando um diretório específico é especificado, todos os usuários carregam apenas modelos VAE desse diretório público.

    --gfpgan-dir

    Especifique o diretório público de modelos GFPGAN, por exemplo: --gfpgan-dir /code/stable-diffusion-webui/data-oss/models/GFPGAN.

    Não configurado por padrão. Todos os diretórios GFPGAN do usuário são isolados, e apenas modelos GFPGAN nas pastas do usuário são carregados. Quando um diretório específico é especificado, todos os usuários carregam apenas modelos GFPGAN desse diretório público.

    --embeddings-dir

    Especifique o diretório público de modelos de embeddings, por exemplo: --embeddings-dir /code/stable-diffusion-webui/data-oss/embeddings.

    Não configurado por padrão. Todos os diretórios de embeddings do usuário são isolados, e apenas modelos de embeddings nas pastas do usuário são carregados. Quando um diretório específico é especificado, todos os usuários carregam apenas modelos de embeddings desse diretório público.

    --hypernetwork-dir

    Especifique o diretório público de modelos hypernetwork, por exemplo: --hypernetwork-dir /code/stable-diffusion-webui/data-oss/models/hypernetworks.

    Não configurado por padrão. Todos os diretórios hypernetwork do usuário são isolados, e apenas modelos hypernetwork nas pastas do usuário são carregados. Quando um diretório específico é especificado, todos os usuários carregam apenas modelos hypernetwork desse diretório público.

    --root-extensions

    O diretório de plugins usa um diretório compartilhado. Após usar este parâmetro, todos os usuários veem plugins idênticos.

    Use este parâmetro ao centralizar a instalação ou gerenciamento de plugins.

Parâmetros adicionais para operações de API

EAS estende a API nativa da WebUI do Stable Diffusion com parâmetros opcionais adicionais:

  • Especifique modelos Stable Diffusion, modelos VAE e diretórios de saída.

  • Passe parâmetros de entrada via URL e receba códigos de status correspondentes.

  • Acesse imagens geradas e imagens do ControlNet via URL.

Exemplos:

Exemplos de solicitação e resposta txt2img

Exemplo de solicitação:

{
      "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"
  }

Parâmetros principais:

  • sd_model_checkpoint: Especifica o modelo Stable Diffusion e habilita a troca automática de modelos.

  • sd_vae: Especifica o modelo VAE.

  • save_dir: Especifica o caminho de salvamento para imagens geradas.

O exemplo de solicitação de API síncrona é o seguinte:

# Invoke the synchronous API to verify model effects.

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"
  }'

O exemplo de formato de dados de resposta é o seguinte:

{
  "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": ""
}

O exemplo de solicitação de API assíncrona é o seguinte:

# 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"
}'

Exemplo de formato de dados de solicitação img2img

Exemplo de formato de dados de solicitação:

{
    "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", # The script name to use. Do not add this field if not used.
    #"script_args": ["Outpainting", 128, 8, ["left", "right", "up", "down"], 1, 0.05]  # The parameters corresponding to the script. Here, they correspond to: fixed field, pixels, mask_blur, direction, noise_q, color_variation
}

Exemplo de formato de dados de resposta:

{
    "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":""
}

txt2img usando formato de dados do ControlNet

Formato de dados de solicitação:

{
    "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"
}

Exemplo de formato de dados de resposta:

{
    "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":""
}

Referências