光之使者 发表于 2024-8-16 14:39:15

怎样用 Serverless 一键部署 Stable Diffusion?

本篇章是阿里云函数计算部署 Stable Diffusion 系列的第三篇,假如说第一篇是实验利用云服务来办理用户当地部署 Stable Diffusion 的问题(显卡成本,部署技能复杂),第二篇是面向技能同砚办理云服务 Stable Diffusion 的实用性问题(自界说模子,扩展),那么本篇则是以更大众的方式实现当地电脑的平替,使得大家皆可拥有一套实用的 Stable Diffusion 服务,不管你是普通用户,大概是技能同砚,皆可实用。
前置条件

1. 注册并登录阿里云账号
2. 开通函数计算
3. 开通文件存储 NAS 服务
函数计算和文件存储 NAS 都是利用的时间才去计费,目前,函数计算和文件存储 NAS 都有新用户免费额度,可以去阿里云官网领取。
快速开始

起首进入应用中心:https://account.aliyun.com/login/login.htm?oauth_callback=https%3A%2F%2Ffcnext.console.aliyun.com%2Fapplications&lang=zh
https://i-blog.csdnimg.cn/blog_migrate/800ad4da980b5429aa4bb9b3b8f771f6.png
通过模版创建应用-> 人工智能选项卡-> AI 数字绘画 Stable-Diffusion 自界说模板->立刻创建。
填写表单项

选择直接部署-> 杭州地域 -> 复制开发者预备好的容器镜像点击创建并部署默认环境。
应用部署

接下来什么都不需要操作,等候应用部署即可,约耗费 5-10 分钟, 假如你是技能同砚,可以展开看看我们提供的部署日记,观察部署过程。
配置管理配景

部署成功后得到两个域名。
https://i-blog.csdnimg.cn/blog_migrate/e5dd751e717aba075bff86b93f3fd3d7.png
其中 Stable Diffusion 开头的是主服务,目前因为没镜像还不能访问,admin 开头的是我们的管理配景,接下来我们需要先配置一下管理配景,然后把我们的模子上传上去。
https://i-blog.csdnimg.cn/blog_migrate/4440a553005bc2f3d265770a7538233a.png
管理配景利用的是可道云提供的 kod-box,对于你而言一出发点点点,就可以。
https://i-blog.csdnimg.cn/blog_migrate/5daec7e1d81a5f1223d36c51e090a1c5.png
等初始化好之后,设置自己的登录账号和暗码:
https://i-blog.csdnimg.cn/blog_migrate/9a7dbf3d646743d44e47545ea830a051.png
之后进行登录:
https://i-blog.csdnimg.cn/blog_migrate/6f4b6542a924cff3fe0566b6e0ba1dab.png
登录后在路径输入 /mnt/auto/sd。
https://i-blog.csdnimg.cn/blog_migrate/9889fb9fe715e3ca049d40ff0c74ecb8.png
假如你熟悉 sd-webui 的目录的话,你可以看到对应的目录:
https://i-blog.csdnimg.cn/blog_migrate/a567ef6f2f0aecdc1a4bf5d22958d451.png
接下来我们打开 /mnt/auto/sd/models/Stable-diffusion/,然后点击上传->离线下载。
https://i-blog.csdnimg.cn/blog_migrate/1e2558cc051178087a19702788a9aba5.png
在这里我们输入 sd1.5 的模子地址:https://huggingface.co/runwayml/stable-diffusion-inpainting/resolve/main/sd-v1-5-inpainting.ckpt
固然,你也可以输入任意自己的地址,除了下载,你也可以把当地的模子直接拖拽上传。
因为模子较大,下载时间预计耗费 5-15 分钟,可以休息等候一下(假如提示出错可以忽略)。
https://i-blog.csdnimg.cn/blog_migrate/934ff90c0686331677ae765d96f473d2.png
另外需要格外注意,假如是从 huggingface 源站下载下来的文件,需要把文件后缀改一下。
模子下载完,我们可以打开 Stable Diffusion 的服务了。
https://i-blog.csdnimg.cn/blog_migrate/f740f857fbb774cb78bc18a2ecbe4626.png
源码定制

在这里也贴上构建镜像的源码,假如您是一名开发同砚,可以构建自己的镜像。
基于↓
https://github.com/AbdBarho/stable-diffusion-webui-docker/tree/master/services/AUTOMATIC1111
这个项目,更换其中的 entrypoint.sh
#!/bin/bash

set -Eeuo pipefail

# TODO: move all mkdir -p ?
mkdir -p /mnt/auto/sd/config/auto/scripts/
# mount scripts individually
find "${ROOT}/scripts/" -maxdepth 1 -type l -delete
cp -vrfTs /mnt/auto/sd/config/auto/scripts/ "${ROOT}/scripts/"

cp -n /docker/config.json /mnt/auto/sd/config/auto/config.json
jq '. * input' /mnt/auto/sd/config/auto/config.json /docker/config.json | sponge /mnt/auto/sd/config/auto/config.json

if [ ! -f /mnt/auto/sd/config/auto/ui-config.json ]; then
echo '{}' >/mnt/auto/sd/config/auto/ui-config.json
fi

declare -A MOUNTS

MOUNTS["/root/.cache"]="/mnt/auto/sd/.cache"

# main
MOUNTS["${ROOT}/models"]="/mnt/auto/sd/models"
MOUNTS["${ROOT}/embeddings"]="/mnt/auto/sd/embeddings"
MOUNTS["${ROOT}/config.json"]="/mnt/auto/sd/config/auto/config.json"
MOUNTS["${ROOT}/ui-config.json"]="/mnt/auto/sd/config/auto/ui-config.json"
MOUNTS["${ROOT}/extensions"]="/mnt/auto/sd/config/auto/extensions"
MOUNTS["${ROOT}/outputs"]="/mnt/auto/sd/config/auto/outputs"
MOUNTS["${ROOT}/extensions-builtin"]="/mnt/auto/sd/extensions-builtin"
MOUNTS["${ROOT}/configs"]="/mnt/auto/sd/configs"
MOUNTS["${ROOT}/localizations"]="/mnt/auto/sd/localizations"

# extra hacks
MOUNTS["${ROOT}/repositories/CodeFormer/weights/facelib"]="/mnt/auto/sd/.cache"

for to_path in "${!MOUNTS[@]}"; do
set -Eeuo pipefail
from_path="${MOUNTS[${to_path}]}"
rm -rf "${to_path}"
if [ ! -f "$from_path" ]; then
    mkdir -vp "$from_path"
fi
mkdir -vp "$(dirname "${to_path}")"
ln -sT "${from_path}" "${to_path}"
echo Mounted $(basename "${from_path}")
done

if [ -f "/mnt/auto/sd/config/auto/startup.sh" ]; then
pushd ${ROOT}
. /mnt/auto/sd/config/auto/startup.sh
popd
fi

exec "$@" 定制好自己的镜像之后更换上面流程中需要填写的镜像部分即可,注意对应好地域。
Q&A

下载模子不可用

需要查抄模子的文件命名是否正确。
插件无法在线安装

容器镜像部署有安全限制,可以将插件下载到当地,然后通过管理配景上传到 extensions 目录下,假如想支持通过 url ,需要自行定制 docker 镜像,修改相关的参数。
怎样访问到 Stable Diffusion 的api

需要定制镜像,开启 --api 参数,然后访问 /docs 查看可调用 api。
资费部分

本次应用依靠函数计算和 NAS 文件存储,利用前请先领取相应的免费额度大概购买相应的资源包,详细的资费阐明,请参考官网阐明。
更机动的定制方案

可以实验将整个 webui 目录映射至 NAS, 如许修改源码比较方便。
其他注意事项

请关注对应的开源协议,防止您贸易化可能的风险。
相关链接:
注册并登录阿里云账号
https://account.aliyun.com/login/login.htm
开通函数计算
https://www.aliyun.com/product/fc?spm=5176.devs
开通文件存储 Nas 服务
https://www.aliyun.com/product/nas
作者:寒斜
原文链接
本文为阿里云原创内容,未经允许不得转载。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 怎样用 Serverless 一键部署 Stable Diffusion?