Stable Diffusion API Serverless版解决方案

方案概览

当您想要独立部署和使用Stable Diffusion,您可能面临显卡成本高、购买难、并发处理能力有限以及多模型切换难等问题。函数计算推出了Stable Diffusion API Serverless版解决方案,帮助您通过函数计算快速部署基于Stable Diffusion模型的AI服务。使用本方案可以充分利用Stable Diffusion和Serverless技术优势,为开发者在AI绘画和其他AI应用领域的创新和商业化提供支持。

为了便于用户直观体验Stable Diffusion Serverless API解决方案的效果,函数计算团队基于此方案搭建了一个AI 艺术字创作应用,供用户快速体验生成AI艺术字。

image

本方案的技术架构包括以下基础设施和云服务:

  • 函数计算:用于提供Stable Diffusion模型的应用服务,提供GPU和CPU算力。

  • 对象存储 OSS:用于存储Serverless API生成的图像。

  • 表格存储 Tablestore:用于存储异步队列信息。

  • 专有网络 VPC:用于配置专有网络,让函数计算通过私网安全的访问文件存储 NAS

  • 文件存储 NAS:用于存储共享配置和Stable Diffusion模型。

部署Stable Diffusion Serverless API

  1. 登录函数计算3.0控制台,在左侧导航栏,单击应用

    当右上角显示返回函数计算2.0时,表示当前控制台为3.0控制台。

    image

  2. 在应用页面,单击创建应用,选择通过模板创建应用,在人工智能页签下找到AI 数字绘画 Stable Diffusion,光标移至该卡片,然后单击立即创建

    image

  3. 在创建应用页面,设置以下配置项,然后单击创建应用

    重点配置项说明如下,如果您没有特殊要求,其余配置项保持默认值即可。

    配置项名称

    说明

    示例值

    角色名

    创建应用所需的权限。首次创建应用的用户,需要单击前往授权创建AliyunFCServerlessDevsRole角色。

    image

    image

    AliyunFCServerlessDevsRole

    地域

    创建应用所在的地域。

    由于当前模板涉及GitHub以及HuggingFace等网站访问,国内部分地域可能无法直接使用。

    华东1(杭州)

    命名空间

    设置命名空间名称。如果您第一次创建Stable Diffusion应用,使用默认值即可;如果非第一次创建Stable Diffusion应用,建议手动设置命名空间名称,便于和其他应用区分。

    sd-api

    绘图类型

    按需选择绘图风格,本文以艺术字为例。

    艺术字

  4. 在弹出的对话框,仔细阅读应用创建提醒信息,勾选涉及的计费项和我已经了解上面的内容,并同意上述描述,然后单击同意并继续部署

    部署完成后,页面自动跳转到应用详情页。

    image

  5. 在应用详情页,单击Serverless API页签,单击初始化 Serverless API,在弹出的对话框,根据界面提示确认已开通对应产品,勾选我已阅读,并了解上述创建资源的目的以及部分资源可能产生的费用。我已知晓对应的计费规则,并决定继续部署该应用,然后单击下一步

    image

  6. 初始化Serverless API对话框,确认角色AliyunFCServerlessDevsRole的权限满足条件,勾选启用Serverless API复选框,配置Tablestore实例和OSS实例,然后单击确认

    如果您的账号下未创建过Tablestore实例和OSS实例,可选择自动创建。

    初始化Serverless API大约需要30~40秒。

    image

  7. 在应用详情页面,单击Serverless API页签,复制Serverless API域名用于后续调用API实现AI绘画或其他AI应用领域的创作。

    image

使用Serverless API进行创作

方式一:部署API

Stable Diffusion API Serverless版支持非推理类和推理类两类API接口,您可以通过多种方式部署并调用这些接口实现不同的功能。

  • 非推理类接口:用于结果和进度查询、模型管理、应用重启等。例如获取模型列表接口/models

  • 推理类接口:用于实现文生图、图生图、图片放大等。例如文生图接口/txt2img和图生图接口/img2img

更多支持的API列表及更多信息,请参见Stable Diffusion API Serverless版支持的API详情

说明

使用该方式前,需先初始化模型管理,具体操作,请参见创建自己的模型库并自定义模型

本文以使用Postman工具部署并调用接口/txt2img为例,进行演示如何基于Stable Diffusion API Serverless版实现AI的创作。

  1. 在Postman工具界面,填写步骤7复制的域名,并拼接接口/txt2img,选择请求方式POST,填写Body内容,然后单击Send

    Body的示例如下所示,更多参数设置,请参见api.yaml

    {
      "stable_diffusion_model": "sd-v1-5-inpainting.ckpt",  // 选择sd主模型
      "prompt": "Mountain landscape during sunset",  //  设置提示词
      "negative_prompt": "Avoid mountains"  // 设置反向提示词
    }

    出图完成后,下方返回结果中返回图片的URL,你可以复制此URL获取生成的图片。

    image

    image

方式二:部署AI艺术字创作应用

为了便于您直观体验该解决方案的效果,您可以使用函数计算团队基于Stable Diffusion Serverless API解决方案搭建的AI 艺术字创作应用,快速体验部署AI艺术字。

  1. 返回应用中心,在应用页面,单击创建应用,选择通过模板创建应用,在人工智能页签下找到AI 艺术字创作,光标移至该卡片,然后单击立即创建

    image

  2. 在创建应用页面,设置以下配置项,然后单击创建应用

    重点配置项说明如下,如果您没有特殊要求,其余配置项保持默认值即可。

    配置项名称

    说明

    示例值

    角色名

    创建应用所需的权限。首次创建应用的用户,需要单击前往授权创建AliyunFCServerlessDevsRole角色。

    image

    image

    AliyunFCServerlessDevsRole

    地域

    创建应用所在的地域。

    由于当前模板涉及GitHub以及HuggingFace等网站访问,国内部分地域可能无法直接使用。

    华东1(杭州)

    StableDiffusion域名

    输入步骤7复制的Serverless API域名。

    http://sd-****--proxy.fcv3.1034354********.cn-hangzhou.fc.devsapp.net

    部署完成后,单击访问域名,就可以跳转到头像生成页面开始生成头像。

    image

  3. 在头像生成页面,输入需要生成头像的文字内容,本文以2024年生肖龙字为例,单击生成,开始出图。

    您可以在右侧查看出图进展,预估的进度和剩余时间仅供参考。

    首次出图需要先启动程序,由于大模型较大,需要一定的冷启动时间,因此,第一张图生成较慢,第二张之后生成速度会明显变快。

    image

    默认一次会出4张图,可以在下方出图区域依次将鼠标悬浮在图片上,查看每张图的细节。

    image

    由于AIGC出图存在不确定性,需要您多次尝试来达到最好的效果。页面最下方提供了最近的出图历史,方便您挑选。

  4. (可选)设置高级选项,生成质量更佳的图像。

    如果您对图像风格有特殊的要求,在默认的参数基础上,您还可以单击高级设置,进行精细配置,然后根据高级设置反复调试图像质量。

    文字内容高级设置

    参数名称

    说明

    文字内容

    图像中要展示的文字,建议不要太长。

    字体

    使用的文字字体,您可以选择您本地字体、使用内置字体或者自行加载字体。

    前景色/背景色

    文字和背景的颜色,这将影响页面的整体色调。

    x/y

    文字在图像中的横向和纵向的位置。

    字体大小

    文字大小。

    边缘发光

    部分字体棱角过于分明,渲染时不够自然,通过边缘发光可以柔化文字边缘。

    其他操作

    是否将图像中的文字居中。

    Stable Diffusion参数高级设置

    参数名称

    说明

    每次出图数量

    并发出图数。

    提示词

    希望图像中出现哪些元素。

    反向提示词

    不希望图像中出现哪些元素。

    模型

    使用的基础模型。

    迭代步数

    模型渲染的步数。通常步数越多,图像会越精细,但花费的时间更长。

    文字生效步骤

    控制文字开始介入图像生成的步骤。介入的范围越大,文字越明显,但图像会更不自然。

    文字权重

    文字模型(ControlNet Tile)的权重。

    人脸修复

    是否开启Adetailer进行脸部修复。

    高清放大倍数

    出图结果要放大多少倍。默认是512 * 512大小,建议放大2倍到1024 * 1024,图像会更清晰。

    高清放大步数

    放大过程中需要执行多少步骤。适当调高生成的图像会更加自然、好看。

    image

清理资源

在本方案中,您部署Stable Diffusion应用和AI艺术字创作应用,创建了函数资源。创建模型管理使用了文件存储 NAS产品,增加了NAS挂载点。初始化Serverless API时,创建了Tablestore实例和OSS Bucket。

  • 函数计算的函数不调用不会计费,如果调用,则会收取函数调用费用和资源使用费用,详情请参见计费概述

  • 文件存储 NAS只要有模型存储在NAS文件系统下,就会收费,详情请参见计费概述

  • OSS Bucket中存放的图片,下载时需要收取流量费用和请求费用,详情请参见计费概述

  • Tablestore按量实例中创建的表会进行计量计费,详情请参见计费概述

因此,如果您后续不再使用Stable Diffusion生成AI图像,请及时删除以下四部分资源,避免继续产生费用。

删除Stable Diffusion使用的函数

  1. 登录函数计算控制台,在左侧导航栏,单击应用

  2. 在应用页面,找到2个目标应用,单击右侧操作列的删除应用

    image

  3. 在弹出的对话框,勾选我已确定资源删除的风险,依旧要删除上面已选择的资源,然后单击删除应用及所选资源

    image

删除模型管理使用的NAS

  1. 登录NAS文件存储控制台,在左侧导航栏选择文件系统 > 文件系统列表

  2. 在文件系统列表,找到目标文件系统,在其右侧操作列,单击image,然后单击删除

    image

  3. 在弹出的对话框,单击移除,移除挂载点,然后单击删除

    image

删除OSS存储资源

  1. 登录OSS对象存储控制台,在左侧导航栏,单击Bucket 列表

  2. Bucket 列表页面,单击目标Bucket,在目标Bucket页面左侧导航栏,单击删除 Bucket,然后根据界面提示手动删除必删文件后删除Bucket。

    image

删除Tablestore文件存储资源

  1. 登录表格存储控制台,在左侧导航栏,单击概览

  2. 概览页面,单击目标实例右侧操作列的释放,然后在弹出的对话框,单击确定

    image