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

news2024/10/7 12:23:01

作者:寒斜

本篇章是阿里云函数计算部署 Stable Diffusion 系列的第三篇,如果说第一篇是尝试使用云服务来解决用户本地部署 Stable Diffusion 的问题(显卡成本,部署技术复杂),第二篇是面向技术同学解决云服务 Stable Diffusion 的实用性问题(自定义模型,扩展),那么本篇则是以更大众的方式实现本地电脑的平替,使得人人皆可拥有一套实用的 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

在这里插入图片描述

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

填写表单项

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

应用部署

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

配置管理后台

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

在这里插入图片描述

其中 Stable Diffusion 开头的是主服务,目前因为没镜像还不能访问,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 源站下载下来的文件,需要把文件后缀改一下。

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

在这里插入图片描述

源码定制

在这里也贴上构建镜像的源码,如果您是一名开发同学,可以构建自己的镜像。

基于↓

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 函数计算产品资源,邀请你,体验一把 AIGC 级的毕加索、达芬奇、梵高等大师作画的快感。下面请尽情发挥你的想象空间!!双重奖品设置,完成体验场景可得社区 1000 积分兑换奖品,还可参加 AI 生成图像比赛赢取 Airpods、500 元猫超卡及社区定制抱枕!

🌏 体验地址:

https://developer.aliyun.com/topic/aigc

你也可以轻松做出下方画作👇👇

在这里插入图片描述

相关链接:

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

https://account.aliyun.com/login/login.htm

[2] 开通函数计算

https://www.aliyun.com/product/fc?spm=5176.devs

[3] 开通文件存储 Nas 服务

https://www.aliyun.com/product/nas

点击此处进入体验

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/529535.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Wijmo 2023 v1 Crack

改进了 FlexGrid,支持 React 18 严格模式和可访问性。 5月 15, 2023 - 10:51 新版本 特征 改进了对 React 18 的支持 - 添加了对 React 18 严格模式的支持,可帮助开发人员在开发过程中查找常见错误。辅助功能改进 - 以下是此版本中…

postman工具使用中,遇到的简单疑问

post请求和get请求有什么区别? GET请求和POST请求都是HTTP协议中的两种常见请求方式,主要区别如下: GET请求在请求URL的后面附带参数,而POST请求则将参数包含在请求体中。 GET请求的数据是以查询字符串的形式传递的,而…

JavaEE(系列4) -- 多线程(线程的状态)

目录 观察线程的所有状态 1. new状态 2. TERMINATED 状态 3. RUNNABLE 就绪状态,运行状态 4. TIMED_WAITNG 休眠状态 5. BLOCKED 表示等待锁出现的状态 6. WAITING 使用wait方法出现的状态 观察线程的所有状态 线程的状态是一个枚举类型 public class test2 {public static v…

【AI绘图 丨 Midjourney 系列教程二】— 初识超火的AI绘画神器Midjourney

今天起,由 Midjourney 打头阵,让我们开始共同探索一系列的 AI 领域革命性作品,包括 Midjourney、Stable Diffusion、ChatGPT 等等,学习这些新时代的魔法和它的咒语。 写在前面 官方文档是最好的入门课程。相较于市面上琳琅满目的…

git入门(必看)

git入门 git简介 文章目录 git入门git简介版本控制系统发展可以分为三个阶段: Git 的诞生Git 诞生的背景Linus 两周完成 GitGit 的发展壮大 git安装在 Windows 上安装在 macOS 上安装在 Linux 上安装 Git环境配置配置用户名和邮件地址检查配置Git 颜色配置Git忽略文…

STC15单片机+nRF24L01通讯利用PCA输入捕获触发

STC15单片机+nRF24L01通讯利用PCA输入捕获触发 📍相关篇《STC单片机 NRF24L01通讯实验》📌《STC单片机 NRF24L01通讯带状态反馈》🔖验证对象:STC15L2K60S2📍STC15L2K60S2自制系统板硬件开源地址:https://oshwhub.com/perseverance51/stc15l2k60s2-ji-tong-ban⏱时钟频…

C++ - AVL树

之前的文章中我们学习过二叉搜索树,学习完该部分之后,在进行OJ的练习和思考中会发现如果一颗搜索树由于初始结点选择的不好这棵树就会变成成一颗歪脖子树,这样搜索的效率反而会变的不是很理想。那么在今天的文章中我们就要来介绍一种基于搜索…

【啃书C++Primer5】-c++有些理论基础需要了解,墙裂建议看看原书,有太多细节需要注意了

任何常用的编程语言都具备一组公共的语法特征,不同语言仅在特征的细节上有所区别。要想学习并掌握–种编程语言,理解其语法特征的实现细节是第一步。最基本的特征包括: 整型、字符型等内置类型变量,用来为对象命名 表达式和语句,…

10款最好的Photoshop替代软件

Photoshop作为一种老式的设计软件,在世界上享有很高的声誉,所以很多人说学习设计,第一反应是学习Photoshop,结果打开电脑发现:配置不够,预算不足,课程有点困难,因为这条路不起作用&a…

嵌入式系统入门基础知识分析(一)

目录 ​编辑 一、什么是嵌入式 二、嵌入式系统的组成 三、实时系统

薪资21K,在字节外包工作是一种什么样的体验...

我17年毕业于一个普通二本学校,电子信息工程学院,是一个很不出名的小本科。大学期间专业知识也没有去认真的学习,所以毕业的时候就随便找了一份工作,在一个小公司做功能测试。 记得那时候税前薪资大概是7k左右,因为是…

每日一练 | 华为认证真题练习Day46

1、在存在冗余的二层网络中,可以使用下列哪种协议避免出现环路? A. ARP B. STP C. UDP D. VRRP 2、静态MAC地址表在系统复位、接口板热插拔或接口板复位后,保存的表项不会丢失。 A. 对 B. 错 3、如下图所示,假设SWA的MAC地址…

web开发 处理多媒体文件

文章目录 图片格式gifpngjpgwebp图片格式对比 图片的使用方式图片的其它内容 视频格式转换 音频wavmp3转换 图片 html用img标签在网页上输出图片。 格式 图片的格式有很多种,常见如下 gif、jpg、png、webp。 gif gif 格式,常用于页面中的简单动画&a…

《链》接未来:力扣“复制带随机指针的链表”题解

本篇博客会讲解力扣“138. 复制带随机指针的链表”的解题思路,这是题目链接。 先来审题: 以下是输出示例: 以下是提示: 本题要实现复杂链表的深拷贝。复杂链表,是正常的单链表,每个结点中多存了一个指针…

【Vector VN1630/40 I/O应用】-2-信号发生器

案例背景(共5页精简):该篇博客将告诉您: 将Vector VN1630A/VN1640A CAN/LIN Interface的I/O接口充当一个简易的“信号发生器”使用:高低电平(如TTL电平)和PWM波。用作信号发生器,唤醒ECU控制器(硬件唤醒,如…

C语言参悟-循环控制

C语言参悟-循环控制 一、循环综述1. C语言的循环概念2. 循环条件3. 循环单元4. 循环中断 二、for 循环三、while 循环四、do while 循环 一、循环综述 下面只是我的对于C语言的认识拙见,可以多多提出批评建议😄 计算机的诞生很大程度上就是为了来进行重…

即拼七人拼团系统开发模式,上帮下扶机制逻辑规则解析

即拼七人拼团模式是最近非常火爆的商业模式,它主要融合了二二复制和拼团两种模式玩法,在快速裂变团队的同时,还能提高用户活跃度和粘性。这个模式中最大的亮点,就是它的上帮下扶机制,今天就在这里详细说一下。 所谓上帮…

6.文本三剑客--sed

文章目录 文本三剑客sed介绍命令介绍打印内容删除替换插入分组 文本三剑客 sed 介绍 sed编辑器 sed是一种流编辑器,流编辑器会在编辑器处理数据之前基于预先提供的一组规则来 编辑数据流。 sed编辑器可以根据命令来处理数据流中的数据,这些命令要么…

Robot Techology

Two-Stage Grasping: A New Bin Picking Framework for Small Objects 摘要:本文提出了一种新的抓仓框架,两级抓取,旨在精确抓取杂乱的小物体。 在第一阶段进行了对象密度估计和粗糙抓取。在第二阶段,需要进行精细的分割、检测、…

怎么制作网站?手把手教你10个网站建设的步骤!

怎么制作网站?手把手教你10个网站建设的步骤!网站建设需要进行10个步骤,首先要确定网站建设的目标,考虑用户、品牌信息和竞争对手等,避免方向错误。其次,绘制网站建设地图和原型,确定位置大小、…