Stable Diffusion API Serverless版解决方案
方案概览
当您想要独立部署和使用Stable Diffusion,您可能面临显卡成本高、购买难、并发处理能力有限以及多模型切换难等问题。函数计算推出了Stable Diffusion API Serverless版解决方案,帮助您通过函数计算快速部署基于Stable Diffusion模型的AI服务。使用本方案可以充分利用Stable Diffusion和Serverless技术优势,为开发者在AI绘画和其他AI应用领域的创新和商业化提供支持。
为了便于用户直观体验Stable Diffusion Serverless API解决方案的效果,函数计算团队基于此方案搭建了一个AI 艺术字创作应用,供用户快速体验生成AI艺术字。
本方案的技术架构包括以下基础设施和云服务:
函数计算:用于提供Stable Diffusion模型的应用服务,提供GPU和CPU算力。
对象存储 OSS:用于存储Serverless API生成的图像。
表格存储 Tablestore:用于存储异步队列信息。
专有网络 VPC:用于配置专有网络,让函数计算通过私网安全的访问文件存储 NAS。
文件存储 NAS:用于存储共享配置和Stable Diffusion模型。
部署Stable Diffusion Serverless API
登录函数计算3.0控制台,在左侧导航栏,单击应用。
当右上角显示返回函数计算2.0时,表示当前控制台为3.0控制台。
在应用页面,单击创建应用,选择通过模板创建应用,在人工智能页签下找到AI 数字绘画 Stable Diffusion,光标移至该卡片,然后单击立即创建。
在创建应用页面,设置以下配置项,然后单击创建应用。
重点配置项说明如下,如果您没有特殊要求,其余配置项保持默认值即可。
配置项名称
说明
示例值
角色名
创建应用所需的权限。首次创建应用的用户,需要单击前往授权创建AliyunFCServerlessDevsRole角色。
AliyunFCServerlessDevsRole
地域
创建应用所在的地域。
由于当前模板涉及GitHub以及HuggingFace等网站访问,国内部分地域可能无法直接使用。
华东1(杭州)
命名空间
设置命名空间名称。如果您第一次创建Stable Diffusion应用,使用默认值即可;如果非第一次创建Stable Diffusion应用,建议手动设置命名空间名称,便于和其他应用区分。
sd-api
镜像选择
按需选择绘图风格,本文以艺术字为例。
艺术字
在弹出的对话框,仔细阅读应用创建提醒信息,勾选涉及的计费项和我已经了解上面的内容,并同意上述描述,然后单击同意并继续部署。
部署完成后,页面自动跳转到应用详情页。
在应用详情页,单击Serverless API页签,单击初始化 Serverless API,在弹出的对话框,根据界面提示确认已开通对应产品,勾选我已阅读,并了解上述创建资源的目的以及部分资源可能产生的费用。我已知晓对应的计费规则,并决定继续部署该应用,然后单击下一步。
在初始化Serverless API对话框,确认角色AliyunFCServerlessDevsRole的权限满足条件,勾选启用Serverless API复选框,配置Tablestore实例和OSS实例,然后单击确认。
如果您的账号下未创建过Tablestore实例和OSS实例,可选择自动创建。
初始化Serverless API大约需要30~40秒。
在应用详情页面,单击Serverless API页签,复制Serverless API域名用于后续调用API实现AI绘画或其他AI应用领域的创作。
使用Serverless API进行创作
方式一:部署API
Stable Diffusion API Serverless版支持非推理类和推理类两类API接口,您可以通过多种方式部署并调用这些接口实现不同的功能。
非推理类接口:用于结果和进度查询、模型管理、应用重启等。例如获取模型列表接口
/models
。推理类接口:用于实现文生图、图生图、图片放大等。例如文生图接口
/txt2img
和图生图接口/img2img
。
更多支持的API列表及更多信息,请参见Stable Diffusion API Serverless版支持的API详情。
使用该方式前,需先初始化模型管理,具体操作,请参见创建自己的模型库并自定义模型。
本文以使用Postman工具部署并调用接口/txt2img
为例,进行演示如何基于Stable Diffusion API Serverless版实现AI的创作。
在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获取生成的图片。
方式二:部署AI艺术字创作应用
为了便于您直观体验该解决方案的效果,您可以使用函数计算团队基于Stable Diffusion Serverless API解决方案搭建的AI 艺术字创作应用,快速体验部署AI艺术字。
返回应用中心,在应用页面,单击创建应用,选择通过模板创建应用,在人工智能页签下找到AI 艺术字创作,光标移至该卡片,然后单击立即创建。
在创建应用页面,设置以下配置项,然后单击创建应用。
重点配置项说明如下,如果您没有特殊要求,其余配置项保持默认值即可。
配置项名称
说明
示例值
角色名
创建应用所需的权限。首次创建应用的用户,需要单击前往授权创建AliyunFCServerlessDevsRole角色。
AliyunFCServerlessDevsRole
地域
创建应用所在的地域。
由于当前模板涉及GitHub以及HuggingFace等网站访问,国内部分地域可能无法直接使用。
华东1(杭州)
StableDiffusion域名
输入步骤7复制的Serverless API域名。
http://sd-****--proxy.fcv3.1034354********.cn-hangzhou.fc.devsapp.net
部署完成后,单击访问域名,就可以跳转到头像生成页面开始生成头像。
在头像生成页面,输入需要生成头像的文字内容,本文以2024年生肖龙字为例,单击生成,开始出图。
您可以在右侧查看出图进展,预估的进度和剩余时间仅供参考。
首次出图需要先启动程序,由于大模型较大,需要一定的冷启动时间,因此,第一张图生成较慢,第二张之后生成速度会明显变快。
默认一次会出4张图,可以在下方出图区域依次将鼠标悬浮在图片上,查看每张图的细节。
由于AIGC出图存在不确定性,需要您多次尝试来达到最好的效果。页面最下方提供了最近的出图历史,方便您挑选。
(可选)设置高级选项,生成质量更佳的图像。
如果您对图像风格有特殊的要求,在默认的参数基础上,您还可以单击高级设置,进行精细配置,然后根据高级设置反复调试图像质量。
文字内容高级设置
参数名称
说明
文字内容
图像中要展示的文字,建议不要太长。
字体
使用的文字字体,您可以选择您本地字体、使用内置字体或者自行加载字体。
前景色/背景色
文字和背景的颜色,这将影响页面的整体色调。
x/y
文字在图像中的横向和纵向的位置。
字体大小
文字大小。
边缘发光
部分字体棱角过于分明,渲染时不够自然,通过边缘发光可以柔化文字边缘。
其他操作
是否将图像中的文字居中。
Stable Diffusion参数高级设置
参数名称
说明
每次出图数量
并发出图数。
提示词
希望图像中出现哪些元素。
反向提示词
不希望图像中出现哪些元素。
模型
使用的基础模型。
迭代步数
模型渲染的步数。通常步数越多,图像会越精细,但花费的时间更长。
文字生效步骤
控制文字开始介入图像生成的步骤。介入的范围越大,文字越明显,但图像会更不自然。
文字权重
文字模型(ControlNet Tile)的权重。
人脸修复
是否开启Adetailer进行脸部修复。
高清放大倍数
出图结果要放大多少倍。默认是512 * 512大小,建议放大2倍到1024 * 1024,图像会更清晰。
高清放大步数
放大过程中需要执行多少步骤。适当调高生成的图像会更加自然、好看。
清理资源
在本方案中,您部署Stable Diffusion应用和AI艺术字创作应用,创建了函数资源。创建模型管理使用了文件存储 NAS产品,增加了NAS挂载点。初始化Serverless API时,创建了Tablestore实例和OSS Bucket。
函数计算的函数不调用不会计费,如果调用,则会收取函数调用费用和资源使用费用,详情请参见计费概述。
文件存储 NAS只要有模型存储在NAS文件系统下,就会收费,详情请参见计费概述。
OSS Bucket中存放的图片,下载时需要收取流量费用和请求费用,详情请参见计费概述。
Tablestore按量实例中创建的表会进行计量计费,详情请参见计费概述。
因此,如果您后续不再使用Stable Diffusion生成AI图像,请及时删除以下四部分资源,避免继续产生费用。
删除Stable Diffusion使用的函数
登录函数计算控制台,在左侧导航栏,单击应用。
在应用页面,找到2个目标应用,单击右侧操作列的删除应用。
在弹出的对话框,勾选我已确定资源删除的风险,依旧要删除上面已选择的资源,然后单击删除应用及所选资源。
删除模型管理使用的NAS
登录NAS文件存储控制台,在左侧导航栏选择 。
在文件系统列表,找到目标文件系统,在其右侧操作列,单击,然后单击删除。
在弹出的对话框,单击移除,移除挂载点,然后单击删除。
删除OSS存储资源
登录OSS对象存储控制台,在左侧导航栏,单击Bucket 列表。
在Bucket 列表页面,单击目标Bucket,在目标Bucket页面左侧导航栏,单击删除 Bucket,然后根据界面提示手动删除必删文件后删除Bucket。
删除Tablestore文件存储资源
登录表格存储控制台,在左侧导航栏,单击概览。
在概览页面,单击目标实例右侧操作列的释放,然后在弹出的对话框,单击确定。