全部产品
Search
文档中心

人工智能平台 PAI:AI绘画-SDWebUI部署

更新时间:Feb 27, 2026

Stable Diffusion(SD)是强大的图像生成模型,能够生成高质量、高分辨率的图像,并具有良好的稳定性和可控性。Stable Diffusion WebUI开源项目在模型的基础上进行封装,基于Gradio开发了可视化图形界面,为用户提供了丰富的生图工具。EAS提供了场景化部署方式,您只需配置几个参数,即可一键部署基于Stable Diffusion WebUI的服务。

功能与优势

PAI-EAS 相比自建服务具有以下优势:

  • 一键部署:预配置镜像,包含所有依赖项。

  • GPU 弹性伸缩:根据需求动态调整 GPU 资源。

  • 企业级功能:多用户隔离、GPU 共享、成本分摊。

  • 集成文件管理:FileBrowser 扩展便于上传模型。

选择适合版本

版本

适用场景

调用方式

计费

标准版

个人测试、原型开发

WebUI、API调用(同步)

根据部署配置进行计费,详情请参见EAS计费说明

API版

生产环境 API、高并发场景

API调用(同步 & 异步)

集群版WebUI

团队协作、设计团队

WebUI

Serverless版

说明

仅支持华东2(上海)、华东1(杭州)地域。

弹性负载、成本优化

WebUI

服务部署完全免费,只根据使用出图的时长进行计费。

快速入门:使用场景化方式部署AI绘画

  1. 登录PAI控制台,在页面上方选择目标地域,并在右侧选择目标工作空间,然后单击进入EAS

  2. 模型在线服务(EAS)页面,单击部署服务,然后在场景化模型部署区域,单击AI绘画-SDWebUI部署

  3. 配置以下关键参数:

    • 版本选择:选择标准版。

    • 模型配置:用来存放模型文件和推理生成的图片,选择对象存储(OSS)并选择Bucket路径。

    • 实例规格:选择GPU类型,规格推荐ml.gu7i.c16m60.1-gu30(性价比最高)。

  4. 参数配置完成后,单击部署。等待 5-10 分钟,直到服务状态变为运行中

调用服务

使用WebUI调用

通过WebUI,您可以调用标准版、集群版WebUI和Serverless版的服务。具体操作步骤如下:

  1. 单击目标服务名称进入概览页面,在右上角单击Web应用

  2. 进行模型推理验证。

    在Stable Diffusion WebUI页面文生图页签中,输入正向提示词Prompt,例如cute dog,然后单击生成,即可完成AI绘图,效果图如下:

    image

使用API同步调用

标准版和API版服务部署成功后,您可以参照以下操作步骤发送同步接口请求。

查询调用信息

  1. 服务部署成功后,单击服务名称,进入概览页面。

  2. 基本信息区域中,单击查看调用信息

  3. 调用信息页面,获取服务公共调用地址和Token。

调用示例

图片保存至本地

import requests
import base64
from PIL import Image
import io

# 注意 !!!!:请删除调用地址末尾的 /。
SERVICE_URL = "<调用地址>"
TOKEN = "<Token>"

def generate_image(prompt: str) -> Image.Image:
    """根据文本提示词生成图片。"""
    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()
    
    # 解码第一张图片
    img_data = response.json()["images"][0]
    return Image.open(io.BytesIO(base64.b64decode(img_data)))

# 生成并保存
image = generate_image("a serene mountain landscape at sunset")
image.save("output.png")

图片保存至OSS

import requests

# 注意 !!!!:请删除调用地址末尾的 /。
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}
)

# 获取保存的图片路径
data = response.json()

# 对应部署EAS服务时,默认挂载OSS文件夹对应的mount_path。
mount_path = "/code/stable-diffusion-webui/data"

# 对应部署EAS服务时,选择的OSS地址bucket
oss_url = "oss://examplebucket/data-oss"

for idx, img_path in enumerate(data['parameters']['image_url'].split(',')):
    # 获取生成的图像在OSS中的实际地址。
    img_oss_path = img_path.replace(mount_path, oss_url)
    print(img_oss_path)

此外,您还可以在请求数据中使用LoRA和Controlnet数据格式,以实现特定的功能。

请求数据中使用LoRA模型配置

发送服务请求时,您可以直接在请求体上加入<lora:yaeMikoRealistic_Genshin:1000>来增加Lora。更多详细内容,请参见Lora

请求体配置示例如下:

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

请求数据中使用ControlNet数据格式

API请求数据中使用ControlNet数据格式可以方便地对图像进行一些常见的变换操作,比如使图像保持水平或垂直等。具体配置方法,请参见txt2img使用controlnet的数据格式

使用API异步调用

API版服务部署成功后,您可以向该服务发送异步接口请求,即客户端不再同步等待结果,通过订阅的方式在请求计算完成后等待服务端的结果推送。具体操作步骤如下:

查询调用信息

  1. 服务部署成功后,单击服务名称,进入概览页面。

  2. 基本信息区域中,单击查看调用信息

  3. 调用信息页面,单击切换至异步调用页签,获取公网输入调用地址和Token。

发送请求

客户端通过异步接口向服务端发送请求

import requests


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"任务已入队: {response.json()}")
重要
  • 异步队列对输入请求和输出结果的大小都有限制,通常不建议超过8 KB。因此,在发送请求时,需要满足以下两个条件:

    • 如果请求数据中包含图片,建议使用URL来传递图片信息。Stable Diffusion WebUI内部会自动下载并解析这些图片数据。

    • 为了确保返回结果中没有原始图片数据,建议您使用save_dir来指定生成图片的保存路径。具体操作,请参见API接口额外支持配置的参数

订阅结果

客户端采用订阅方式,一旦服务端完成相关请求的处理,便会自动推送结果至客户端,实现高效异步通信。

from eas_prediction import QueueClient

# 请必须将调用地址的格式调整为示例格式:112231234124214.cn-hangzhou.pai-eas.aliyuncs.com
SERVICE_URL = "<调用地址>"
TOKEN = "<Token>"
# 创建服务时配置的服务名称
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"任务 {result.tags.get('task_id')} 已完成")
    print(f"图片地址: {result.data}")

EAS基于原生Stable Diffusion WebUI接口支持了一些新特性,您可以在请求数据中添加一些可选参数用于实现更加丰富的功能或定制化需求。具体操作,请参见API接口额外支持配置的参数

高级部署选项

自定义部署

支持部署标准版、API版和集群版WebUI服务。具体操作步骤如下:

  1. 登录PAI控制台,在页面上方选择目标地域,并在右侧选择目标工作空间,然后单击进入EAS

  2. 推理服务页签,单击部署服务,然后在自定义模型部署区域,单击自定义部署

  3. 自定义部署页面,配置以下关键参数。

    参数

    描述

    环境信息

    部署方式

    • 部署标准版和集群版WebUI服务时,选择镜像部署,并选中开启Web应用

    • 部署API版服务时,选择镜像部署,并选中异步服务

    镜像配置

    官方镜像列表中选择stable-diffusion-webui,镜像名称选择最高版本,其中:

    • x.x-standard:表示标准版。

    • x.x-api:表示API版。

    • x.x-cluster-webui:表示集群版WebUI。

    说明
    • 由于版本迭代迅速,部署时镜像版本选择最高版本即可。

    • 当需要实现多人同时使用一个Stable Diffusion WebUI出图时,您可以选择x.x-cluster-webui版本。

    • 更多关于每个版本的使用场景说明,请参见选择适合版本

    存储挂载

    用来存放模型文件和推理生成的图片。

    重要

    API版和集群版必须配置存储挂载。

    支持以下几种类型:

    • OSS

      • Uri:将OSS路径配置为已创建的OSS Bucket路径。

      • 挂载路径:配置为/code/stable-diffusion-webui/data

    • NAS

      • 选择文件系统:选择已创建的NAS文件系统。

      • 文件系统挂载点:选择已创建的挂载点。

      • 文件系统路径:配置为/

      • 挂载路径:配置为/code/stable-diffusion-webui/data

    • PAI模型

      • PAI模型:选择PAI模型和模型版本。

      • 挂载路径:配置为/code/stable-diffusion-webui/data

    本文以OSS挂载为例来说明。

    运行命令

    完成上述配置后,系统将自动生成相应的运行命令。

    • 进行存储挂载后,需要在运行命令中增加参数--data-dir,将数据挂载到服务实例的指定路径。要求路径与挂载路径一致,如 --data-dir /code/stable-diffusion-webui/data

    • (可选)您也可以在运行命令中增加参数--blade--xformers来开启推理加速功能,以提升出图速度。更多参数配置说明,请参见服务启动时支持配置的参数

    资源信息

    部署资源

    选择GPU类型,资源规格推荐使用ml.gu7i.c16m60.1-gu30(性价比最高)。

    服务接入

    专有网络(VPC)

    存储挂载选择NAS时,系统会自动匹配与NAS所在VPC相连通的专有网络,无需进行额外的修改。

    交换机

    安全组名称

  4. 参数配置完成后,单击部署

JSON独立部署

您可以使用JSON独立部署方式,来部署Stable Diffusion WebUI服务,以下以标准版和API版为例,具体操作步骤如下:

  1. 登录PAI控制台,在页面上方选择目标地域,并在右侧选择目标工作空间,然后单击进入EAS

  2. 模型在线服务(EAS)页面,单击部署服务,在自定义模型部署区域,单击JSON独立部署

  3. JSON独立部署页面编辑框中,配置以下JSON格式的内容。

    部署标准版服务

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

    其中关键参数说明如下:

    参数

    是否必选

    描述

    metadata.name

    自定义模型服务名称,同地域唯一。

    containers.image

    其中<region>需要替换为当前地域ID,例如华东2(上海)为cn-shanghai。关于如何查询地域ID,请参见地域和可用区

    storage

    支持以下两种挂载方式,任意选择一种即可:

    • OSS:使用OSS上传和下载数据更方便,能够为生成后的图像生成公网访问地址,但切换模型和保存图像的速度比NAS慢。您需要将storage.oss.path配置为已创建的OSS存储空间路径。

    • NAS:使用NAS挂载方式,切换模型和保存图像的速度更快。您需要将storage.nfs.server配置为已创建的NAS文件系统。

    本文以挂载OSS为例来说明。

    cloud.networking

    当storage使用NAS挂载时,您需要配置专有网络,包括vpc_id(专有网络ID)、vswitch_id(交换机ID)和security_group_id(安全组ID),且配置的专有网络需要与通用型NAS文件系统保持一致。

    部署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
            }
        ]
    } 

    相较于标准版服务的配置,以下是API版服务的配置变更,其他参数配置与标准版服务相同。

    参数

    描述

    删除以下参数:

    metadata.enable_webservice

    删除该参数,表示不开启webserver。

    containers.script

    删除containers.script中配置的--filebrowser,加快服务启动速度。

    新增以下参数:

    metadata.type

    配置为Async,表示打开异步服务。

    metadata.rpc.worker_threads

    配置为1,单个实例只允许并发处理一个请求。

    queue.max_delivery

    配置为1,消息处理错误后不允许重试。

    containers.script

    containers.script配置中新增--nowebui(加快启动速度)和--time-log(记录接口响应时间)。

    更多参数配置说明,请参见部署标准版服务

  4. 单击部署

安装插件实现增强功能

您可以为Stable Diffusion WebUI配置插件,以实现更加多样化的功能。PAI预置了丰富的插件,例如PAI自主研发的BeautifulPrompt插件,用来实验Prompt的扩写和美化。下文将以BeautifulPrompt插件为例,为您介绍插件的安装和使用方法。

安装插件

您可以在WebUI页面的扩展页签中,查看并安装插件。具体操作步骤如下:

  1. 单击目标服务名称进入概览页面,在右上角单击Web应用

  2. 在WebUI页面中的扩展页签下,检查是否已选中BeautifulPrompt。如果未选中,您需要选中该插件,并单击应用更改并重载前端,来重新加载BeautifulPrompt插件。image

    在安装插件时,WebUI页面将会自动重启,待重新加载完成后即可进行推理验证。

使用插件进行推理验证

  1. 切换到BeautifulPrompt页签,在文本框中输入一个比较简单的Prompt,然后单击生成,即可生成更详细的Prompt。image

    PAI提供了多个Prompt生成模型,每个模型生成的Prompt略有不同。其中:

    • pai-bloom-1b1-text2prompt-sd-v2:擅长生成复杂场景下的Prompt。

    • pai-bloom-1b1-text2prompt-sd:生成描述单个物体的Prompt。

    您可以根据场景需要选择合适的模型来生成Prompt。image

  2. 选择需要使用的Prompt,单击Prompt右侧的to txt2img

    页面自动跳转至文生图页签,并自动填充了提示词(Prompt)区域。image

  3. 单击生成,即可在WebUI页面右侧生成图片。image

    与不使用BeautifulPrompt插件相比,使用BeautifulPrompt插件可以提升生成图像的美观度,并且帮助您补充更多细节。其他场景使用BeautifulPrompt插件前后效果对比如下:

    输入Prompt

    不使用BeautifulPrompt的效果

    使用BeautifulPrompt的效果

    a cat

    image.png

    image.png

    a giant tiger

    image.png

    image.png

常见问题

Q:如何挂载自己的模型及输出目录等内容

服务部署成功后,系统会自动在已挂载的OSS或NAS存储空间中创建以下目录结构:image

其中:

  • models:该目录用来存放模型文件。

  • 发起推理请求后,系统将按照API代码中预设的配置,自动将结果文件输出至该目录中。

您可以将从开源社区下载的模型或自己训练得到的LoRA或Stable Diffusion等模型存放于上述指定目录中,以便加载使用新的模型。具体操作步骤如下:

  1. 请将模型文件上传至挂载存储的models目录下的相应子目录中,具体操作,请参见步骤二:上传文件

  2. 模型在线服务(EAS)页面,单击目标服务操作列下的image>重启服务,服务重启成功后,即可生效。

  3. 在Stable Diffusion WebUI页面切换模型,进行模型推理验证。

    image

Q:下载的插件、上传的文件等,在配置不变的情况下,会保存在实例中么?

不挂载存储的情况下,文件的生命周期和服务一致。服务停止、重启、删除,所有文件都会被删除。故建议通过挂载外部存储(如OSS、NAS)的方式来保存这些文件。

Q:服务长时间卡住怎么办?

  • 您可以先尝试重新打开Stable Diffusion WebUI界面或重启EAS服务来解决:

    • 单击目标服务进入概览页面,右上角单击Web应用,重新打开Stable Diffusion WebUI。

    • 单击目标服务操作列下的image>重启服务,重启EAS服务。

  • 如果重启后长时间无法解决,则大概率是因为服务需要从外网下载模型或插件等内容导致。EAS默认不开公网,镜像可以离线启动,挂载模型也无需网络。但部分插件的使用,需要依赖从互联网下载相关内容。此时推荐您根据日志,找到模型或插件的下载路径,手动下载模型并上传到OSS进行挂载,详情请参见Q:如何挂载自己的模型及输出目录等内容。如果仍需要连接互联网,请参见EAS访问公网或内网资源进行公网连接配置。

Q:如何将WebUI页面的默认语言切换为英文?

  1. 在Stable Diffusion WebUI页面单击设置

  2. 在左侧导航栏单击用户界面,在右侧页面本地化区域,选择

  3. 在Stable Diffusion WebUI页面上方,单击保存设置,保存成功后单击重载前端

    重新刷新WebUI页面,即可切换为英文。

Q:如何管理自己的文件系统?

在部署标准版、集群版WebUI服务时,系统已默认在运行命令中增加了--filebrowser参数,您可以直接通过WebUI界面管理您的文件系统。具体操作步骤如下:

  1. 单击目标服务名称进入概览页面,在右上角单击Web应用

  2. 在Stable Diffusion WebUI页面,单击FileBrowser页签。您可以直接查看文件系统,或进行上传、下载操作。

    image

Q:报错:No such file or directory: 'data-oss/data-********.png'

  1. 检查部署版本。如果是API版(镜像为x.x-api)或者集群版WebUI(镜像为x.x-cluster-webui),必须进行模型配置。

  2. 检查挂载路径。请检查运行命令中是否有--data-dir参数,并且需要保证其路径与OSS的挂载路径一致。

    image

Q:无法访问WebUI页面

请检查服务部署版本,API版不支持使用WebUI。如使用自定义部署,x.x-api的镜像是API版。

附录

服务启动时支持配置的参数

  • 公共参数

    公共参数

    功能说明

    使用建议

    --blade

    启用PAI-blade加速,提升出图速度。

    建议开启。

    --filebrowser

    支持您自主上传、下载模型或图片的插件。

    默认启用。

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

    持久化存储挂载使用的路径。

    挂载持久化存储时使用,默认起始路径为/code/stable-diffusion-webui/,也可以使用相对路径。

    --api

    WebUI的API调用模式。

    默认启用。

    --enable-nsfw-censor

    默认关闭。如果您有安全合规需求,则可以选择开启鉴黄过滤功能。

    根据业务需要进行调整。

    --always-hide-tabs

    指定部分Tab页处于隐藏状态。

    根据业务需要进行调整。

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

    缓存Stable Diffusion大模型到内存中。

    无。

  • 集群版参数

    说明

    ckpt的大模型和ControlNet的大模型会自动加载公共目录下的文件和您自定义的文件。

    集群版参数

    功能说明

    使用建议

    --lora-dir

    指定公共LoRA模型目录,例如:--lora-dir /code/stable-diffusion-webui/data-oss/models/Lora

    默认不配置,用户的所有LoRA目录将被隔离,并且只加载用户文件夹中的LoRA模型。当指定特定目录后,所有的用户将同时加载该公共目录中的LoRA模型和用户文件夹中的LoRA模型。

    --vae-dir

    指定公共VAE模型目录,例如:--vae-dir /code/stable-diffusion-webui/data-oss/models/VAE

    默认不配置,用户的所有VAE目录将被隔离,并且只加载用户文件夹中的VAE模型。当指定特定目录后,所有的用户只加载该公共目录下的VAE模型。

    --gfpgan-dir

    指定公共GFPGAN模型目录,例如:--gfpgan-dir /code/stable-diffusion-webui/data-oss/models/GFPGAN

    默认不配置,用户的所有GFPGAN目录将被隔离,并且只加载用户文件夹中的GFPGAN模型。当指定特定目录后,所有的用户只加载该公共目录下的GFPGAN模型。

    --embeddings-dir

    指定公共embeddings模型目录,例如:--embeddings-dir /code/stable-diffusion-webui/data-oss/embeddings

    默认不配置,用户的所有embeddings目录将被隔离,并且只加载用户文件夹中的embeddings模型。当指定特定目录后,所有的用户只加载该公共目录下的embeddings模型。

    --hypernetwork-dir

    指定公共hypernetwork模型目录,例如:--hypernetwork-dir /code/stable-diffusion-webui/data-oss/models/hypernetworks

    默认不配置,用户的所有hypernetwork目录将被隔离,并且只加载用户文件夹中的hypernetwork模型。当指定特定目录后,所有的用户只加载该公共目录下的hypernetwork模型。

    --root-extensions

    插件目录使用共享目录。使用该参数后,所有用户看到的插件完全相同。

    需要集中安装插件或集中管理插件时使用该参数。

API接口额外支持配置的参数

EAS基于原生Stable Diffusion WebUI接口支持了一些新特性,在API接口中除了必填参数以外,还可以添加一些可选参数用于实现更加丰富的功能或定制化需求:

  • 可以指定Stable Diffusion模型、VAE模型以及保存目录。

  • 支持通过URL输入参数,并返回相应的状态码。

  • 生成的图片和ControlNet所对应的图片可以通过URL进行访问。

具体使用示例如下:

txt2img请求和返回示例

请求数据格式示例如下:

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

其中关键参数说明如下:

  • sd_model_checkpoint:指定Stable Diffusion模型参数,并且可以自动切换到大模型。

  • sd_vae:指定VAE模型。

  • save_dir:指定生成图片的保存路径。

发送同步接口请求示例如下:

# 调用同步接口验证模型效果。

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

返回数据格式示例如下:

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

发送异步接口请求示例如下:

# 将数据直接送入异步队列。
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"
}'

img2img请求数据格式示例

请求数据格式示例如下:

{
    "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", # 使用的script名字,不使用的话不要加这个字段
    #"script_args": ["Outpainting", 128, 8, ["left", "right", "up", "down"], 1, 0.05]  # 对应script脚本的参数,此处依次对应: 固定字段, pixels, mask_blur, direction, noise_q, color_variation
}

返回数据格式示例如下:

{
    "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使用controlnet的数据格式

请求数据格式如下:

{
    "alwayson_scripts": {
        "sd_model_checkpoint": "deliberate_v2.safetensors", #模型名称,需要带着 
        "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
                }
            ]
        }
    },
    # 主要参数
    "prompt": "girls",          
    "batch_size": 1,                                            
    "n_iter": 2,                                                 
    "width": 576, 
    "height": 576,
    "negative_prompt": "ugly, out of frame"
}

返回数据格式示例如下:

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

相关文档