Todos os produtos
Search
Central de documentação

Platform For AI:Implantação de arte com IA usando o SDWebUI

Última atualização: Sep 24, 2026

O Stable Diffusion (SD) é um modelo avançado de geração de imagens, capaz de criar imagens de alta qualidade e resolução. O Stable Diffusion WebUI oferece uma interface visual baseada no Gradio, com um conjunto abrangente de ferramentas para geração de imagens. O Elastic Algorithm Service (EAS) oferece suporte à implantação baseada em cenários. Você pode implantar um serviço do SD WebUI com apenas um clique, configurando poucos parâmetros.

Recursos e vantagens

Em comparação com os serviços autogerenciados, o PAI-EAS oferece as seguintes vantagens:

  • Implantação com um clique: as imagens de tempo de execução pré-configuradas contêm todas as dependências.

  • Auto Scaling de GPU: ajusta dinamicamente os recursos de GPU com base na demanda.

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

  • Gerenciamento integrado de arquivos: a extensão FileBrowser facilita o upload de modelos.

Escolha a versão adequada

Versão

Cenários

Método de invocação

Faturamento

Edição Standard

Testes pessoais e desenvolvimento de protótipos

WebUI, chamadas de API (síncronas)

A cobrança baseia-se na configuração da implantação. Para mais informações, consulte Billing of EAS.

Edição de API

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

Chamadas de API (síncronas e assíncronas)

Edição Cluster WebUI

Colaboração em equipe, equipes de design

WebUI

Edição Serverless

Nota

Esta edição está disponível apenas nas regiões China (Shanghai) e China (Hangzhou).

Cargas de trabalho elásticas, otimização de custos

WebUI

A implantação do serviço é gratuita. A cobrança ocorre apenas pela duração da geração de imagens.

Início rápido: implante serviços de geração de arte com IA usando um modelo baseado em cenários

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

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

  3. Configure os seguintes parâmetros principais:

    • Version: selecione a Edição Standard.

    • Model Settings: selecione OSS e o caminho de um bucket para armazenar os arquivos de modelo e as imagens geradas pela inferência.

    • Instance Type: selecione um tipo de GPU. A especificação recomendada é ml.gu7i.c16m60.1-gu30, pois oferece o melhor custo-benefício.

  4. Após configurar os parâmetros, clique em Deploy. Aguarde de 5 a 10 minutos até que o status do serviço mude para Running.

Invoque o serviço

Invoque pelo WebUI

Use o WebUI para invocar serviços das edições Standard, Cluster WebUI e Serverless. Siga estas etapas:

  1. Clique no nome do serviço de destino para acessar a página Overview e, em seguida, clique em Web applications no canto superior direito.

  2. Execute a validação de inferência do modelo.

    Na página do Stable Diffusion WebUI, na aba Text-to-Image, insira um prompt positivo, como cute dog. Em seguida, clique em Generate para criar a arte com IA.

Invoque por chamadas de API síncronas

Após implantar um serviço da Edição Standard ou da Edição de API, envie requisições de API síncronas.

Consulte as informações do endpoint

  1. Após a implantação do serviço, clique no nome do serviço para abrir a página Overview.

  2. Na área Basic Information, clique em View Endpoint Information.

  3. Na página Invocation Information, obtenha o endpoint público do serviço e o token.

Exemplos de chamada

Salve imagens em um dispositivo 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")

Salve imagens no 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)

Use também os formatos de dados LoRA e ControlNet no corpo da requisição.

Use uma configuração de modelo LoRA nos dados da requisição

Ao enviar uma requisição de serviço, adicione <lora:yaeMikoRealistic_Genshin:1000> ao corpo da requisição para incluir um modelo LoRA. Para mais informações, consulte Lora.

O exemplo a seguir mostra a configuração do corpo da requisição.

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

Use o formato de dados ControlNet nos dados da requisição

Usar o formato de dados ControlNet nas requisições de API permite realizar transformações comuns em imagens. Para mais informações sobre como configurar isso, consulte ControlNet data format for text-to-image.

Invoque por chamadas de API assíncronas

Após implantar um serviço da Edição de API, envie requisições de API assíncronas. No modo assíncrono, o cliente não precisa aguardar o resultado; em vez disso, recebe os resultados enviados pelo servidor por meio de uma assinatura. Siga estas etapas:

Consulte as informações de invocação

  1. Após a implantação bem-sucedida do serviço, clique no nome do serviço para acessar a página Overview.

  2. Na área Basic Information, clique em View Endpoint Information.

  3. Na página Invocation Information, clique na aba Asynchronous Invocation para obter o endereço de invocação público e o token.

Envie uma requisição

O cliente envia uma requisição ao servidor por meio de uma operação de API assíncrona.

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()}")
Importante
  • A fila assíncrona tem limites para o tamanho das requisições de entrada e dos resultados de saída, que normalmente não devem exceder 8 KB. Portanto, ao enviar requisições, atenda às seguintes condições:

    • Se os dados da requisição contiverem imagens, use URLs para passar as informações da imagem. O Stable Diffusion WebUI baixa e analisa esses dados automaticamente.

    • Para garantir que o resultado retornado não contenha os dados da imagem original, use save_dir para especificar o caminho de salvamento das imagens geradas. Para mais informações, consulte Additional parameters configurable for API operations.

Resultados da assinatura

O cliente recebe os resultados por meio de uma assinatura. Após o servidor processar a requisição, o resultado é enviado automaticamente para o cliente.

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

O EAS oferece suporte a novos recursos com base nas operações nativas da API do Stable Diffusion WebUI. Adicione parâmetros opcionais aos dados da requisição para implementar mais recursos. Para mais informações, consulte Additional parameters configurable for API operations.

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

Implantação personalizada

Implante serviços das edições Standard, de API e Cluster WebUI. Siga estas etapas:

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

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

  3. Na página Custom Deployment, configure os seguintes parâmetros principais.

    Parâmetro

    Descrição

    Environment Information

    Deployment Method

    • Ao implantar serviços da Edição Standard e da Edição Cluster WebUI, selecione Image-based Deployment e marque Enable Web App.

    • Ao implantar um serviço da Edição de API, selecione Image-based Deployment e marque Asynchronous Services.

    Image Configuration

    Na lista Alibaba Cloud Image, selecione stable-diffusion-webui e, para o nome da imagem, selecione a versão mais recente:

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

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

    • x.x-cluster-webui: Edição Cluster WebUI.

    Nota
    • Devido às iterações rápidas de versão, selecione a versão mais recente da imagem durante a implantação.

    • Se vários usuários precisarem gerar imagens usando um único Stable Diffusion WebUI ao mesmo tempo, selecione a versão x.x-cluster-webui.

    • Para mais informações sobre os cenários de cada versão, consulte Escolha a versão adequada.

    Storage Mount

    Use para armazenar arquivos de modelo e imagens geradas.

    Importante

    Configure montagens de armazenamento para as edições de API e Cluster.

    Há suporte para os seguintes tipos:

    • OSS

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

      • Mount Path: defina 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: defina como /.

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

    • PAI Model

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

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

    Este tópico usa uma montagem OSS como exemplo.

    Command to Run

    Após concluir as configurações anteriores, o sistema gera automaticamente o comando de execução correspondente.

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

    • (Opcional) Adicione o parâmetro --blade ou --xformers ao comando de execução para ativar a aceleração de inferência e melhorar a velocidade de geração de imagens. Para mais informações sobre as configurações de parâmetros, consulte Parameters configurable at service startup.

    Resource Information

    Deployment

    Selecione um tipo de GPU. Para Resource Specification, o valor recomendado é ml.gu7i.c16m60.1-gu30 (melhor custo-benefício).

    Service Access

    VPC

    Ao selecionar NAS para Storage Mount, o sistema associa automaticamente uma VPC conectada à VPC onde o sistema de arquivos NAS reside. Nenhuma modificação adicional é necessária.

    vSwitch

    Security Group Name

  4. Após configurar os parâmetros, clique em Deploy.

Implantação baseada em json

Use um método baseado em json para implantar um serviço do Stable Diffusion WebUI. As etapas a seguir mostram como implantar as edições Standard e de API:

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

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

  3. No editor da página JSON Deployment, configure o seguinte conteúdo no formato json.

    Implante 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"
            }
        ]
    } 

    A tabela a seguir descreve os parâmetros principais.

    Parâmetro

    Obrigatório

    Descrição

    metadata.name

    Sim

    O nome personalizado do serviço de modelo. O nome deve ser exclusivo na mesma região.

    containers.image

    Sim

    Substitua <region> pelo ID da região atual. Por exemplo, o ID para China (Shanghai) é cn-shanghai. Para mais informações sobre como consultar os IDs de região, consulte Regions and zones.

    storage

    Não

    Há suporte para os dois métodos de montagem a seguir. Escolha um deles:

    • OSS: usar o OSS para fazer upload e download de dados é mais conveniente e pode gerar URLs de acesso público para as imagens geradas. No entanto, a troca de modelos e o salvamento de imagens são mais lentos do que com o NAS. Defina storage.oss.path para o caminho de um bucket do OSS criado.

    • NAS: usar uma montagem NAS fornece troca de modelos e salvamento de imagens mais rápidos. Defina storage.nfs.server para um sistema de arquivos NAS criado.

    Este tópico usa uma montagem OSS como exemplo.

    cloud.networking

    Não

    Ao usar uma montagem NAS para armazenamento, configure uma 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 ser a mesma do sistema de arquivos NAS de uso geral.

    Implante um serviço da Edição de 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
            }
        ]
    } 

    Em comparação com a configuração do serviço da Edição Standard, o serviço da Edição de API apresenta as seguintes alterações. As outras configurações de parâmetros permanecem iguais às do serviço da Edição Standard.

    Parâmetro

    Descrição

    Exclua os seguintes parâmetros:

    metadata.enable_webservice

    Exclua este parâmetro para indicar que o serviço web está desativado.

    containers.script

    Exclua --filebrowser da configuração containers.script para acelerar a inicialização do serviço.

    Adicione os seguintes parâmetros:

    metadata.type

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

    metadata.rpc.worker_threads

    Defina como 1 para permitir que uma única instância processe apenas uma requisição simultaneamente.

    queue.max_delivery

    Defina como 1 para evitar novas tentativas após um erro de processamento de mensagem.

    containers.script

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

    Para mais informações sobre as configurações de parâmetros, consulte Deploy a Standard Edition service.

  4. Clique em Deploy.

Instale plug-ins para recursos aprimorados

Instale plug-ins no Stable Diffusion WebUI para estender sua funcionalidade. O PAI fornece vários plug-ins pré-instalados, como o BeautifulPrompt, que expande e refina prompts. A seção a seguir usa o BeautifulPrompt como exemplo para mostrar como instalar e usar um plug-in.

Instale um plug-in

Visualize e instale plug-ins na aba Extensions da página do WebUI. Siga estas etapas:

  1. Clique no nome do serviço de destino para acessar a página Overview e, em seguida, clique em Web applications no canto superior direito.

  2. Na página do WebUI, na aba Extensions, verifique se o BeautifulPrompt está selecionado. Caso não esteja, selecione o plug-in e clique em Apply and restart UI para recarregar o plug-in BeautifulPrompt.

    Ao instalar o plug-in, a página do WebUI reinicia automaticamente. Após o recarregamento, execute a validação de inferência.

Use o plug-in para validação de inferência

  1. Mude para a aba BeautifulPrompt, insira um prompt simples na caixa de texto e clique em Generate para gerar um prompt mais detalhado.

    Configure os seguintes parâmetros de geração:

    • Top K: 50

    • Top P: 0.9

    • Temperature: 0.9

    • Repetition penalty: 1.05

    • Max new tokens: 384

    • Num prompts: 5

    Após clicar em Generate, o painel de resultados à direita exibe vários prompts expandidos do Stable Diffusion. À direita de cada resultado, os botões to txt2img e to img2img permitem enviar o prompt diretamente para a página do recurso correspondente.

    O PAI fornece vários modelos de geração de prompts, e cada um gera prompts ligeiramente diferentes. Os modelos são:

    • pai-bloom-1b1-text2prompt-sd-v2: destaca-se na geração de prompts para cenas complexas.

    • pai-bloom-1b1-text2prompt-sd: gera prompts que descrevem um único objeto.

    Escolha o modelo adequado para gerar prompts conforme a necessidade. Marque também a caixa de seleção Negative prompt para gerar prompts negativos ao mesmo tempo.

  2. Selecione o prompt que deseja usar e clique em to txt2img à direita do prompt.

    A página muda automaticamente para a aba Text-to-Image e preenche a área do prompt.

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

    O prompt aprimorado inclui descritores ricos de qualidade de imagem e composição, como masterpiece, best quality e ultra-detailed, que ajudam a gerar imagens de alta qualidade no estilo anime.

    O uso do plug-in BeautifulPrompt melhora a qualidade estética das imagens geradas e ajuda a adicionar mais detalhes em comparação com a não utilização do plug-in. A tabela a seguir compara os resultados com e sem o BeautifulPrompt para outros cenários.

    Prompt de entrada

    Resultado sem o BeautifulPrompt

    Resultado com o BeautifulPrompt

    a cat

    image.png

    image.png

    a giant tiger

    image.png

    image.png

Perguntas frequentes

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

Após a implantação do serviço, o sistema cria automaticamente a seguinte estrutura de diretórios no espaço de armazenamento OSS ou NAS montado.

  • api_rec/

  • configs/

  • extensions/

  • images/

  • models/

  • progress_images/

  • requests_folder/

  • cache.json

  • params.txt

  • ui-config.json

Onde:

  • models: diretório usado para armazenar arquivos de modelo.

  • outputs: após o início de uma requisição de inferência, o sistema envia automaticamente os arquivos de resultado para este diretório, de acordo com a configuração predefinida no código da API.

Armazene modelos baixados de comunidades de código aberto ou seus próprios modelos LoRA ou Stable Diffusion treinados nos diretórios especificados para carregá-los e usá-los. Siga estas etapas:

  1. Faça o upload do arquivo de modelo para o subdiretório correspondente dentro do diretório models do armazenamento montado. Para mais informações, consulte Step 2: Upload files.

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

  3. Na página do Stable Diffusion WebUI, troque o modelo e execute a validação de inferência do modelo.

    Clique na lista suspensa Stable Diffusion checkpoint e selecione o modelo de destino, por exemplo, chilloutmix_NiPrunedFp32Fix.safetensors ou deliberate_v2.safetensors.

P: Os plug-ins baixados e os arquivos enviados são salvos na instância se a configuração não for alterada?

Sem uma montagem de armazenamento, o ciclo de vida dos arquivos é o mesmo do serviço. Se o serviço for interrompido, reiniciado ou excluído, todos os arquivos serão excluídos. Portanto, monte um armazenamento externo, como OSS ou NAS, para salvar esses arquivos.

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

  • Primeiro, tente resolver o problema reabrindo a interface do Stable Diffusion WebUI ou reiniciando o serviço do EAS.

    • Clique no serviço de destino para acessar a página Overview e clique em Web applications no canto superior direito para reabrir o Stable Diffusion WebUI.

    • Clique em image > Restart Service na coluna Actions do serviço de destino para reiniciar o serviço do EAS.

  • Se a reinicialização não resolver o problema após um longo período, é provável que o serviço precise baixar conteúdo da Internet, como modelos ou plug-ins. Por padrão, o EAS não tem acesso à rede pública. As imagens de tempo de execução podem ser iniciadas offline, e a montagem de modelos não requer conexão de rede. No entanto, alguns plug-ins dependem do download de conteúdo da Internet. Nesse caso, verifique os logs para encontrar o caminho de download do modelo ou plug-in, baixe-o manualmente e faça o upload para o OSS para montagem. Para mais informações, consulte Q: How do I mount my own models and output directories?. Se ainda precisar se conectar à Internet, consulte Access public or internal network resources from EAS para configurar uma conexão de rede pública.

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

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

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

  3. Na parte superior da página do Stable Diffusion WebUI, clique em Apply settings e, em seguida, clique em Reload UI.

    Atualize a página do WebUI para mudar o idioma para inglês.

P: Como gerencio meu sistema de arquivos?

Ao implantar um serviço da Edição Standard ou Cluster WebUI, o sistema adiciona o parâmetro --filebrowser ao comando de execução por padrão. Gerencie seu sistema de arquivos diretamente pela interface do WebUI. Siga estas etapas:

  1. Clique no nome do serviço de destino para acessar a página Overview e, em seguida, clique em Web applications no canto superior direito.

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

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

  1. Verifique a versão da implantação. Se for a Edição de API (imagem x.x-api) ou a Edição Cluster WebUI (imagem x.x-cluster-webui), configure o modelo.

  2. Verifique o caminho de montagem. Verifique se o comando de execução contém o parâmetro --data-dir e garanta que seu caminho seja consistente com o caminho de montagem do OSS.

    Por exemplo, defina tanto o caminho de montagem do OSS quanto o parâmetro --data-dir no comando de execução como /code/stable-diffusion-webui/data. Um exemplo completo do comando de execução:

    ./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

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

Verifique a versão de implantação do serviço. A Edição de API não oferece suporte ao WebUI. Se usar uma implantação personalizada, a imagem x.x-api é para a Edição de API.

Apêndice

Parâmetros configuráveis na inicialização do serviço

  • Parâmetros comuns

    Parâmetro comum

    Descrição do recurso

    Recomendação

    --blade

    Ativa a aceleração do PAI-Blade para acelerar a geração de imagens.

    É recomendável ativar este recurso.

    --filebrowser

    Um plug-in que permite fazer upload e download de modelos ou imagens.

    Ativado por padrão.

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

    O caminho usado para montagens de armazenamento persistente.

    Use ao montar armazenamento persistente. O caminho inicial padrão é /code/stable-diffusion-webui/. Você também pode usar um caminho relativo.

    --api

    O modo de chamada de API para o WebUI.

    Ativado por padrão.

    --enable-nsfw-censor

    Desativado por padrão. Se houver requisitos de segurança e conformidade, ative o recurso de detecção de pornografia.

    Ajuste conforme a necessidade.

    --always-hide-tabs

    Especifica que algumas abas fiquem ocultas.

    Ajuste conforme a necessidade.

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

    Armazena em cache o modelo grande do Stable Diffusion na memória.

    Nenhuma.

  • Parâmetros da edição Cluster

    Nota

    Os LLMs de checkpoint (ckpt) e os LLMs do ControlNet carregam automaticamente arquivos do diretório público e os arquivos personalizados.

    Parâmetro da edição Cluster

    Descrição do recurso

    Recomendação

    --lora-dir

    Especifica 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 os modelos LoRA na pasta do usuário são carregados. Ao especificar um diretório específico, todos os usuários carregarão tanto os modelos LoRA desse diretório público quanto os modelos LoRA em suas próprias pastas.

    --vae-dir

    Especifica 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 os modelos VAE na pasta do usuário são carregados. Ao especificar um diretório específico, todos os usuários carregarão apenas os modelos VAE desse diretório público.

    --gfpgan-dir

    Especifica 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 os modelos GFPGAN na pasta do usuário são carregados. Ao especificar um diretório específico, todos os usuários carregarão apenas os modelos GFPGAN desse diretório público.

    --embeddings-dir

    Especifica 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 os modelos de embeddings na pasta do usuário são carregados. Ao especificar um diretório específico, todos os usuários carregarão apenas os modelos de embeddings desse diretório público.

    --hypernetwork-dir

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

    Não configurado por padrão. Todos os diretórios de hypernetwork do usuário são isolados, e apenas os modelos de hypernetwork na pasta do usuário são carregados. Ao especificar um diretório específico, todos os usuários carregarão apenas os modelos de hypernetwork desse diretório público.

    --root-extensions

    O diretório de plug-ins usa um diretório compartilhado. Com este parâmetro, todos os usuários veem exatamente os mesmos plug-ins.

    Use este parâmetro quando precisar instalar ou gerenciar plug-ins de forma centralizada.

Parâmetros adicionais configuráveis para operações de API

EAS oferece suporte a novos recursos com base na API nativa do Stable Diffusion WebUI. Além dos parâmetros obrigatórios, adicione parâmetros opcionais à operação de API para implementar mais recursos ou requisitos personalizados.

  • Especifique o modelo do Stable Diffusion, o modelo VAE e o diretório de salvamento.

  • Insira parâmetros usando uma URL e receba os códigos de status correspondentes.

  • Acesse as imagens geradas e suas imagens correspondentes do ControlNet usando uma URL.

A seguir, exemplos de uso.

Exemplos de requisição e resposta de texto para imagem

O exemplo a seguir mostra o formato dos dados da requisiçã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"
  }

A lista a seguir descreve os parâmetros principais.

  • sd_model_checkpoint: especifica o checkpoint do modelo Stable Diffusion, o que permite a troca automática para um modelo grande.

  • sd_vae: especifica o modelo VAE.

  • save_dir: especifica o caminho de salvamento para as imagens geradas.

O exemplo a seguir mostra uma requisição de API síncrona.

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

O exemplo a seguir mostra o formato dos dados de resposta:

{
  "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 a seguir mostra uma requisição de API assíncrona:

# 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 requisição de imagem para imagem

O exemplo a seguir mostra o formato dos dados da requisiçã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", # 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
}

O exemplo a seguir mostra o formato dos 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":""
}

Formato de dados do ControlNet para texto para imagem

O formato dos dados da requisição é o seguinte.

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

O exemplo a seguir mostra o formato dos 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