阿里云函数计算:如何用 Serverless 一键部署 Stable Diffusion?

2023-05-2513:07:20云计算与物联网Comments2,344 views字数 3097阅读模式

阿里云函数计算:如何用 Serverless 一键部署 Stable Diffusion?
作者|寒斜(阿里云智能技术专家)文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/42447.html

本篇章是阿里云函数计算部署stablediffusion系列的第三篇,如果说第一篇是尝试使用云服务来解决用户本地部署sd的问题(显卡成本,部署技术复杂),第二篇是面向技术同学解决云服务sd的实用性问题(自定义模型,扩展),那么本篇则是以更大众的方式实现本地电脑的平替,使得人人皆可拥有一套实用的sd服务,不管你是普通用户,或者是技术同学,皆可适用。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/42447.html

前置条件

大家不用通费用的问题,本身函数计算和文件存储Nas都是使用的时候才去计费,而且费用比较低廉。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/42447.html

快速开始

首先进入应用中心:
https://account.aliyun.com/login/login.htm?oauth_callback=htt...文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/42447.html

通过模版创建应用-> 人工智能选项卡-> AI数字绘画stable-diffusion自定义模板->立即创建文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/42447.html

填写表单项

选择直接部署-> 杭州地域 -> 复制开发者准备好的容器镜像
点击创建并部署默认环境。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/42447.html

应用部署

接下来什么都不需要操作,等待应用部署即可,约花费5-10分钟, 如果你是技术同学,可以展开看看我们提供的部署日志,观察部署过程文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/42447.html

配置管理后台

部署成功后得到两个域名文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/42447.html

阿里云函数计算:如何用 Serverless 一键部署 Stable Diffusion?文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/42447.html

其中sd开头的是主服务,目前因为没镜像还不能访问,admin开头的是我们的管理后台,接下来我们需要先配置一下管理后台,然后把我们的模型上传上去文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/42447.html

阿里云函数计算:如何用 Serverless 一键部署 Stable Diffusion?文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/42447.html

管理后台使用的是 可道云提供的 kod-box,对于你而言一路点点点,就可以文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/42447.html

阿里云函数计算:如何用 Serverless 一键部署 Stable Diffusion?文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/42447.html

等初始化好之后,设置自己的登录账号和密码文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/42447.html

阿里云函数计算:如何用 Serverless 一键部署 Stable Diffusion?文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/42447.html

之后进行登录文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/42447.html

阿里云函数计算:如何用 Serverless 一键部署 Stable Diffusion?文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/42447.html

登录后在路径输入 /mnt/auto/sd文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/42447.html

阿里云函数计算:如何用 Serverless 一键部署 Stable Diffusion?文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/42447.html

如果你熟悉sd-webui的目录的话,你可以看到对应的目录文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/42447.html

阿里云函数计算:如何用 Serverless 一键部署 Stable Diffusion?文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/42447.html

接下来我们打开/mnt/auto/sd/models/Stable-diffusion/ ,然后点击上传->离线下载文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/42447.html

阿里云函数计算:如何用 Serverless 一键部署 Stable Diffusion?文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/42447.html

在这里我们输入sd1.5的模型地址
https://huggingface.co/runwayml/stable-diffusion-inpainting/resolve/main/sd-v1-5-inpainting.ckpt
当然,你也可以输入任意自己的地址,除了下载,你也可以把本地的模型直接拖拽上传。
因为模型较大,下载时间预计花费5-15分钟,可以休息等待一下(如果提升出错可以忽略)文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/42447.html

阿里云函数计算:如何用 Serverless 一键部署 Stable Diffusion?文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/42447.html

另外需要格外注意,如果是从huggingface源站下载下来的文件,需要把文件后缀改一下。比如这里,需要确保文件的名字是严格的 比如sd-v1-5-inpainting.ckpt这种
模型下载完,我们可以打开sd的服务了文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/42447.html

阿里云函数计算:如何用 Serverless 一键部署 Stable Diffusion?文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/42447.html

源码定制

在这里也贴上构建镜像的源码,如果您是一名开发同学,可以构建自己的镜像文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/42447.html

基于https://github.com/AbdBarho/stable-diffusion-webui-docker/tree/master/services/AUTOMATIC1111
这个项目,替换其中的entrypoint.sh文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/42447.html

#!/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 "$@"

定制好自己的镜像之后可以替换上面流程中需要填写的镜像部分即可,注意对应好地域。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/42447.html

Q&A

下载模型不可用

需要检查模型的文件命名是否正确文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/42447.html

插件无法在线安装

容器镜像部署有安全限制,可以将插件下载到本地,然后通过管理后台上传到extensions目录下,如果想支持通过url ,需要自行定制docker镜像,修改相关的参数。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/42447.html

如何访问到 sd 的api

需要定制镜像,开启 --api 参数,然后访问 /docs 查看可调用api文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/42447.html

资费部分

本次应用依赖函数计算和Nas文件存储,使用前请先领取相应的免费额度或者购买响应的资源包,具体的资费说明,请参考官网说明文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/42447.html

更灵活的定制方案

可以尝试将整个 webui 目录映射直nas, 这样修改源码比较方便。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/42447.html

其他注意事项

请关注对应的开源协议,防止您商业化可能得风险。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/42447.html

  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/yunda/42447.html

Comment

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定