【换模型更简单】如何用 Serverless 一键部署 Stable Diffusion?

本文涉及的产品
Serverless 应用引擎 SAE,800核*时 1600GiB*时
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 本篇则是以更大众的方式实现本地电脑的平替,使得人人皆可拥有一套实用的 Stable Diffusion 服务,不管你是普通用户,或者是技术同学,皆可适用。

前置条件

1. 注册并登录阿里云账号[1]

2. 开通函数计算[2]

3. 开通文件存储 NAS 服务[3]


函数计算和文件存储 NAS 都是使用的时候才去计费,目前,函数计算和文件存储 NAS 都有新用户免费额度,可以去阿里云官网领取。


快速开始

首先进入应用中心:
https://account.aliyun.com/login/login.htm?oauth_callback=https%3A%2F%2Ffcnext.console.aliyun.com%2Fapplications&lang=zh

image.png

通过模版创建应用-> 人工智能选项卡-> AI 数字绘画 Stable-Diffusion 自定义模板->立即创建。


填写表单项

选择直接部署-> 杭州地域 -> 复制开发者准备好的容器镜像


击创建并部署默认环境。


应用部署

接下来什么都不需要操作,等待应用部署即可,约花费 5-10 分钟, 如果你是技术同学,可以展开看看我们提供的部署日志,观察部署过程。


配置管理后台

部署成功后得到两个域名。

image.png

其中 Stable Diffusion 开头的是主服务,目前因为没镜像还不能访问,admin 开头的是我们的管理后台,接下来我们需要先配置一下管理后台,然后把我们的模型上传上去。

image.png

管理后台使用的是可道云提供的 kod-box,对于你而言一路点点点,就可以。

image.png

等初始化好之后,设置自己的登录账号和密码:

image.png

之后进行登录:

image.png

登录后在路径输入 /mnt/auto/sd。

image.png

如果你熟悉 sd-webui 的目录的话,你可以看到对应的目录:

image.png

接下来我们打开 /mnt/auto/sd/models/Stable-diffusion/,然后点击上传->离线下载。

image.png

在这里我们输入 sd1.5 的模型地址:
https://huggingface.co/runwayml/stable-diffusion-inpainting/resolve/main/sd-v1-5-inpainting.ckpt


当然,你也可以输入任意自己的地址,除了下载,你也可以把本地的模型直接拖拽上传。


因为模型较大,下载时间预计花费 5-15 分钟,可以休息等待一下(如果提示出错可以忽略)。

image.png

另外需要格外注意,如果是从 huggingface 源站下载下来的文件,需要把文件后缀改一下。


模型下载完,我们可以打开 Stable Diffusion 的服务了。

image.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, 这样修改源码比较方便。


其他注意事项

请关注对应的开源协议,防止您商业化可能的风险。


相关实践学习
基于函数计算一键部署掌上游戏机
本场景介绍如何使用阿里云计算服务命令快速搭建一个掌上游戏机。
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
相关文章
|
1天前
|
人工智能 运维 Serverless
函数计算产品使用问题之上传模型文件占用的是什么空间
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
1天前
|
缓存 监控 Serverless
函数计算操作报错合集之在模型管理域名中,点击 Stable Diffusion 菜单时报错,该怎么办
在使用函数计算服务(如阿里云函数计算)时,用户可能会遇到多种错误场景。以下是一些常见的操作报错及其可能的原因和解决方法,包括但不限于:1. 函数部署失败、2. 函数执行超时、3. 资源不足错误、4. 权限与访问错误、5. 依赖问题、6. 网络配置错误、7. 触发器配置错误、8. 日志与监控问题。
|
1天前
|
存储 运维 Cloud Native
函数计算产品使用问题之SD常用模型插件是否都需要自己下载模型或者上传吗
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
1天前
|
运维 Serverless API
函数计算产品使用问题之上传了几个g的模型到sd目录之后,无法打开,同时也无法打开webui,是什么导致的
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
2天前
|
运维 并行计算 前端开发
函数计算产品使用问题之在部署 Stable Diffusion 时,是否可以自定义显存占用
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
2天前
|
存储 运维 Serverless
函数计算产品使用问题之模型存放在NAS中,如何删除NAS中的模型文件
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
18天前
|
运维 Serverless PHP
Serverless 应用引擎产品使用合集之官方Stable Diffusion模板采用的是什么方式
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
1天前
|
运维 Serverless API
函数计算产品使用问题之如何重启SD应用
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
函数计算产品使用问题之如何重启SD应用
|
2天前
|
运维 前端开发 Serverless
函数计算产品使用问题之wordpress应用模板在什么地方
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
18天前
|
消息中间件 Serverless PyTorch
Serverless 应用引擎产品使用合集之FC内网访问VPC内的资源不通是什么导致的
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。

相关产品

  • 函数计算