本文介绍如何在函数计算中结合NAS搭建可切换模型的Stable Diffusion的WebUI框架实现文本生成图片。同时将SD公共模型库转存至函数计算下的NAS文件系统。
背景信息
阿里云函数计算FC是Serverless架构的一种形态,面向函数编程,基于事件驱动提供阿里云云服务之间端到端的解决方案。借助函数计算,您可以快速构建任何类型的应用和服务,并且只需为任务实际消耗的资源付费。
阿里云文件存储 NAS是一种分布式的网络文件存储,为ECS、HPC、Docker、BatchCompute等提供安全、无限容量、高性能、高可靠、简单易用的文件存储服务。阿里云文件存储NAS支持与函数计算无缝集成。这使您的函数可以像访问本地文件系统一样访问存储在NAS文件系统上的文件。
Stable Diffusion(简称SD)是一个可通过文本生成图像的扩散模型,基于CLIP模型从文字中提取隐变量,并通过UNet模型生成图片;最后通过逐步扩散、逐步处理图像,优化图像质量。
AIGC(Artificial Intelligence Generated Content)是指人工智能生成内容。“文生图”技术是指使用AI绘画创作图片。
阿里云不对第三方模型的合法性、安全性、准确性进行任何保证,阿里云不对由此引发的任何损害承担责任。
您应自觉遵守第三方模型的用户协议、使用规范和相关法律法规,并就使用第三方模型的合法性、合规性自行承担相关责任。
前提条件
已开通文件存储NAS服务。
首次登录文件存储NAS产品详情页时,按照页面引导开通服务。
已开通函数计算服务,详情请参见开通函数计算服务。
费用说明
部署Stable Diffusion应用框架,并使用其生成图片将产生部分费用,包括GPU资源使用、vCPU资源使用、内存资源使用、磁盘资源使用和公网出流量以及函数调用的费用。具体信息,请参见计费概述。
说明无论是否生成图片,进入Stable Diffusion WebUI使用界面就会耗费GPU资源。所以在不需要使用Stable Diffusion WebUI生成图片的时候,请及时关闭Stable Diffusion WebUI使用界面。
使用NAS存储AIGC的模型,NAS将根据文件系统类型、存储容量及时长收取文件存储费用,建议搭配NAS资源包使用。更多计费信息,请参见计费概述。
使用在线迁移服务将SD公共模型库转存至NAS时,在线迁移服务将根据迁移类型和迁移场景收取源端请求费用。更多信息,请参见新版计费项。
步骤一:部署可更换模型的FC Stable Diffusion
登录函数计算控制台,单击右上角返回函数计算2.0。
在左侧导航栏,单击应用。
如果您首次使用函数计算的应用中心,或您的账号下没有创建任何应用,在左侧导航栏,单击应用后,将自动进入创建应用页面。
如果您之前使用过应用中心,在左侧导航栏,单击应用,然后在应用页面单击创建应用。
在创建应用页面,选择通过模版创建应用,然后在应用列表中选择人工智能页签,并将光标移至AI数字绘画stable-diffusion自定义模型版卡片,单击立即创建。
在应用配置页面,配置以下参数,然后单击创建应用。
参数
示例值
说明
地域
cn-beijing
选择部署应用的地域。支持部署应用到华东1(杭州)、华东2(上海)、华北2(北京)和华南1(深圳)地域。
重要如果部署异常,例如AIGC公共镜像拉取耗时长,拉取失败,请切换到其他地域重试。
服务名
fc-stable-diffusion-plus
当您有多个挂载NAS的Stable Diffusion应用时,相同的服务名可以挂载在同一个目录。
函数名
sd
如果同一个服务下部署了多个Stable Diffusion,需要通过函数名区分开,否则会覆盖部署。
绘图类型
动漫风格
根据需要选择绘图类型,应用中心内置了SD1.5、动漫风格、真人风格的绘图类型。
为了方便您使用,函数计算提供基于开源项目stable-diffusion-webui构建的镜像,您可以直接使用。如果您想自定义Stable Diffusion镜像,请参见如何构建并使用stable-diffusion-webui镜像。
角色名
AliyunFCServerlessDevsRole
首次登录用户,需要单击前往授权配置角色权限。
如果您的角色名称已有相关权限,则无需设置。
在弹出的活动应用创建提醒对话框,仔细阅读提示内容,勾选已知当前收费项复选框,然后勾选我已经了解上面的内容,并同意上述描述复选框,最后单击同意并继续部署。
等待几分钟后,应用部署完成,页面跳转至应用详情。您可以查看应用的基本信息、项目详情和资源信息等。
在应用详情页面,单击模型管理域名右侧的初始化模型管理。
在弹出的初始化模型管理对话框,仔细阅读提示内容,勾选我已阅读,并了解上述创建资源的目的以及部分资源可能产生的费用。我已知晓对应的计费规则,并决定继续部署该应用复选框,然后单击确认。
配置NAS文件系统。
自动配置:系统自动为您创建一个新的通用型NAS文件系统。
如您再次选择自动配置,系统查询到前一次选择自动配置时创建的通用型NAS文件系统后,将不会再重新创建。关于费用详情,请参见通用型NAS计费。
手动配置:您需要手动配置如下参数才能配置NAS文件系统。
单击确认。
步骤二:将公共模型库转存到NAS存储
方案一:通过内置模型库下载单个模型
登录函数计算控制台,单击右上角返回函数计算2.0。
在左侧导航栏,单击应用。
找到您需要转存模型库的应用,并单击应用名称,进入应用详情页面。
在项目详情区域,单击模型管理域名右侧的域名。
在模型管理页面,选择模型库,然后将光标放置您感兴趣的模型卡片,单击下载模型。
在弹出的文件下载确认对话框,单击下载选择的模型。
您可以单击传输列表,查看模型下载进度。下载完成后,您可以进入文件管理查看下载的模型( /mnt/auto/sd/models/Stable-diffusion),重启Stable Diffusion即可使用模型进行文生图的体验。
说明模型会被下载至文件管理(NAS)进行存储,NAS将根据您的NAS文件系统类型、存储容量和时长进行收费,详细的计费信息,请参见计费概述。
方案二:通过数据迁移服务,将公共模型库转存到NAS
在左侧导航栏,单击数据地址。
配置源地址(OSS)。
在管理数据地址页面,单击创建数据地址。
在创建数据地址面板,配置以下参数,并单击确定。
主要配置项说明如下,其余配置项保持默认值即可。
参数
示例
说明
数据类型
OSS
SD模型库的数据类型。
数据名称
ossmodel
输入3~63位字符。不支持短划号(-)和下划线(_)之外的特殊字符。
数据所在区域
华东1(杭州)
选择SD模型所在区域。
OSS Endpoint
http://oss-cn-hangzhou-internal.aliyuncs.com
根据您数据所在区域,选择一个Endpoint。建议使用内网,以HTTP方式上传或下载数据。
http://oss-cn-endpoint.aliyuncs.com:表示使用HTTP协议的外网Endpoint访问OSS。
https://oss-cn-endpoint.aliyuncs.com:表示使用HTTPS协议的外网Endpoint访问OSS。
http://oss-cn-qingdao-internal.aliyuncs.com:表示使用HTTP协议的内网Endpoint访问OSS。
https://oss-cn-qingdao-internal.aliyuncs.com:表示使用HTTPS协议的内网Endpoint访问OSS。
Access Key Id
LTAI5tKe2ba65Dq2KGTJ****
输入用于迁移账号的访问密钥。建议使用RAM用户进行迁移。关于创建RAM用户并授予相关权限,请参见准备工作。
Access Key Secret
cGsbh4ZdghhLx1AsmV1q6b68Yw****
OSS Bucket
sdmodel-hangzhou
输入对应region下模型库的Bucket名称。例如,本次迁移地域为华东1(杭州),则Bucket名称为sdmodel-hangzhou。
OSS Prefix
data-oss
SD模型库的迁移数据路径。
配置目的地址(NAS)。
再次单击创建数据地址。
在创建数据地址页面,配置以下参数,并单击确定。
说明首次使用数据迁移的用户,数据类型选择为NAS时,需要进行授权,请根据对话框中的提示,完成数据迁移服务(MGW)授权。
参数
示例
说明
数据类型
NAS
NAS
数据名称
fcnas
输入3~63位字符。不支持短划号(-)和下划线(_)之外的特殊字符。
数据所在区域
华东1(杭州)
选择SD模型所在区域。
NAS来源
阿里云
选择阿里云。
文件系统
0749d4****
选择步骤一部署的NAS文件系统。
您可以登录函数计算控制台,在应用页面,单击目标模型应用名称前的图标,然后单击默认环境,在基础资源区域,查看NAS挂载点和文件系统ID。
挂载点
0749d4****-c****.cn-hangzhou.nas.aliyuncs.com
选择目标NAS对应的挂载点。
重要目前只支持挂载在VPC网络上的NAS,经典网络暂时不支持。
子目录
fc-stable-diffusion-plus/sd
填写子目录后可将迁移的数据存放在指定的文件目录。若不填写,则默认为根目录“/”。
配置迁移任务,实现模型库转存至NAS。
在左侧导航栏,选择迁移任务。
在迁移任务列表页面,单击创建迁移任务。
在创建迁移任务面板,阅读迁移服务条款协议,选中我理解如上条款,并开通数据迁移服务,单击下一步。
在弹出的费用提示对话框,单击确认,继续创建。
在配置任务页签,配置以下参数,单击下一步。
主要配置参数说明如下,其余配置项保持默认值即可。
参数
示例
说明
任务名称
osstofcnas
输入3~63位小写字母、数字、短划线(-),且不能以短划线(-)开头或结尾。
源地址
ossmodel
选择已创建的源地址。
目的地址
fcnas
选择已创建的目的地址。
指定目录
包含,models/
设置迁移时包含或排除指定目录下的文件和子目录。
文件覆盖方式
不覆盖
源地址中文件和目的地址中文件同名时,迁移过程中执行的覆盖方式。包括如下选项:
最后修改时间优先:对于同名文件,判断两个文件的LastModified,即最后修改时间。
如果源地址中文件的LastModified晚于目的地址中文件的LastModified,则执行覆盖。
如果源地址中文件的LastModified早于目的地址中文件的LastModified,则执行跳过。
如果两个文件的LastModified相同,则继续判断两个文件的Size和Content-Type是否均相同。
如果两个文件的Size和Content-Type均相同,则执行跳过;如果两个文件的Size或者Content-Type中存在至少一个不同,则执行覆盖。
条件覆盖:对于同名文件,判断两个文件的LastModified、Size和Content-Type是否相同。
如果两个文件的LastModified、Size和Content-Type均相同,则执行跳过。
如果两个文件的LastModified、Size和Content-Type中存在至少一个不同,则执行覆盖。
全覆盖:对于同名文件,不进行任何判断,直接执行覆盖。
不覆盖:对于同名文件,不进行任何判断,直接执行跳过。
在性能调优页签的数据预估区域,填写待迁移存储量和待迁移文件个数。
说明为了迁移任务的顺利进行,请尽量准确进行数据预估。更多信息,请参见预估迁移数据。
待迁移存储量:70 GB
待迁移文件个数:50
可选:在性能调优页签的流量控制区域,设置限流时间段和最大流量,然后单击添加。
说明为了不影响您在线业务的访问,建议您根据业务访问的波峰和波谷来设置迁移时的限流时间段和最大流量。
单击创建,等待迁移任务完成。
迁移过程大概需要10分钟,当迁移任务的任务状态为已完成时,您可以单击操作列的管理,查看任务迁移的详情。同时,您也可以前往函数计算控制台,找到您的应用,并单击链接访问Stable Diffusion的WebUI。在WebUI页面的左上角下拉菜单查看已经迁移过来的模型文件。
步骤三:验证模型推理
登录函数计算控制台。
在左侧导航栏,选择应用。
找到目标应用,单击应用名称,进入应用详情页面。
在项目详情区域,单击WebUI 域名,进入Stable Diffusion WebUI操作界面,在文生图页签下的输入框中,填入相应的提示词,然后单击右侧的生成按钮即可生成描述提示词的图片。
例如,在Stable Diffusion模型(ckpt)下拉列表中切换模型为dreamshaper_7,切换完成后,在文生图页面输入如下信息,然后单击生成。
提示词:photo of the warrior Aragorn from Lord of the Rings, film grain
反向提示词:BadDream, (UnrealisticDream:1.2)
采样方法(Sampler):DPM++ SDE Karras
采样步数(steps):30
提示词引导系数:4
图像生成种子:82742
后续操作
- 本页导读 (1)