关于serverless:换模型更简单如何用-Serverless-一键部署-Stable-Diffusion

作者|寒斜(阿里云智能技术专家)

前文回顾

AI 作画火了,如何用 Serverless 函数计算部署 Stable Diffusion?
【本人更换模型】如何用 Serverless 一键部署 Stable Diffusion?

本篇章是阿里云函数计算部署stablediffusion系列的第三篇,如果说第一篇是尝试应用云服务来解决用户本地部署sd的问题(显卡老本,部署技术简单),第二篇是面向技术同学解决云服务sd的实用性问题(自定义模型,扩大),那么本篇则是以更公众的形式实现本地电脑的平替,使得人人皆可领有一套实用的sd服务,不论你是普通用户,或者是技术同学,皆可实用。

前置条件

  • 1.注册并登录阿里云账号
  • 2.开明函数计算
  • 3.开明文件存储Nas服务

大家不必通费用的问题,自身函数计算和文件存储Nas都是应用的时候才去计费,而且费用比拟低廉。

疾速开始

首先进入利用核心:
https://account.aliyun.com/login/login.htm?oauth_callback=htt…

通过模版创立利用-> 人工智能选项卡-> AI数字绘画stable-diffusion自定义模板->立刻创立

填写表单项

抉择间接部署-> 杭州地区 -> 复制开发者筹备好的容器镜像
点击创立并部署默认环境。

利用部署

接下来什么都不须要操作,期待利用部署即可,约破费5-10分钟, 如果你是技术同学,能够开展看看咱们提供的部署日志,察看部署过程

配置管理后盾

部署胜利后失去两个域名

其中sd结尾的是主服务,目前因为没镜像还不能拜访,admin结尾的是咱们的治理后盾,接下来咱们须要先配置一下治理后盾,而后把咱们的模型上传上去

治理后盾应用的是 可道云提供的 kod-box,对于你而言一路点点点,就能够

等初始化好之后,设置本人的登录账号和明码

之后进行登录

登录后在门路输出 /mnt/auto/sd

如果你相熟sd-webui的目录的话,你能够看到对应的目录

接下来咱们关上/mnt/auto/sd/models/Stable-diffusion/ ,而后点击上传->离线下载

在这里咱们输出sd1.5的模型地址
https://huggingface.co/runwayml/stable-diffusion-inpainting/resolve/main/sd-v1-5-inpainting.ckpt
当然,你也能够输出任意本人的地址,除了下载,你也能够把本地的模型间接拖拽上传。
因为模型较大,下载工夫预计破费5-15分钟,能够劳动期待一下(如果晋升出错能够疏忽)

另外须要分外留神,如果是从huggingface源站下载下来的文件,须要把文件后缀改一下。比方这里,须要确保文件的名字是严格的 比方sd-v1-5-inpainting.ckpt这种
模型下载完,咱们能够关上sd的服务了

源码定制

在这里也贴上构建镜像的源码,如果您是一名开发同学,能够构建本人的镜像

基于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镜像,批改相干的参数。

如何拜访到 sd 的api

须要定制镜像,开启 –api 参数,而后拜访 /docs 查看可调用api

资费局部

本次利用依赖函数计算和Nas文件存储,应用前请先支付相应的收费额度或者购买响应的资源包,具体的资费阐明,请参考官网阐明

更灵便的定制计划

能够尝试将整个 webui 目录映射直nas, 这样批改源码比拟不便。

其余注意事项

请关注对应的开源协定,避免您商业化可能得危险。

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理