首页 > 其他分享 >【换模型更简单】如何用 Serverless 一键部署 Stable Diffusion?

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

时间:2023-05-15 19:03:15浏览次数:60  
标签:Serverless Diffusion auto mnt ROOT Stable MOUNTS config sd

作者:寒斜

本篇章是阿里云函数计算部署 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

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

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

填写表单项

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

应用部署

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

配置管理后台

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

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

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

【换模型更简单】如何用 Serverless 一键部署 Stable Diffusion?_云原生_03

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

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

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

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

之后进行登录:

【换模型更简单】如何用 Serverless 一键部署 Stable Diffusion?_云原生_06

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

【换模型更简单】如何用 Serverless 一键部署 Stable Diffusion?_云原生_07

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

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

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

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

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

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

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

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

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

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

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

源码定制

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

基于↓

<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 元猫超卡及社区定制抱枕!

标签:Serverless,Diffusion,auto,mnt,ROOT,Stable,MOUNTS,config,sd
From: https://blog.51cto.com/u_13778063/6280473

相关文章

  • 【论文翻译-RL×Diffusion】Planning with Diffusion for Flexible Behavior Synthesi
    PlanningwithDiffusionforFlexibleBehaviorSynthesis可视化:https://diffusion-planning.github.io/SergeyLevine组的大作,中了ICML2022年的longtalk。究竟是大佬整活,还是将扩散模型用于强化学习的开山之作呢?翻译可能有问题的地方,以原文为准(狗头)。摘要基于模型的强......
  • Stable Diffusion 常用的视角
    角度提示词可以帮助摄影师选择拍摄角度,使得拍摄出的照片更有层次感和视觉冲击力。我们用草地上的一只猫来常见的视角效果:注意:这里我们没法固定seed种子了,因为seed部分时候会固定视角,我们提示词的视角会不起作用。默认不带任何视角PromptacatonthegrassSteps:20,Samp......
  • 视觉族: 基于Stable Diffusion的免费AI绘画图片生成器工具
    视觉族是一款基于StableDiffusion文生图模型的免费在线AI绘画图片生成器工具,可以使用提示关键词快速生成精美的艺术图片,支持中文提示。无论你是想要创作自己的原创作品,还是想要为你的文字增添一些视觉效果,视觉族都可以帮助你实现你的想象。网址链接:https://www.shijuezu.com特......
  • 开源图像模型Stable Diffusion入门手册
    StableDiffusion是2022年发布的深度学习文字到图像生成模型。它主要用于根据文字的描述产生详细图像,能够在几秒钟内创作出令人惊叹的艺术作品,本文是一篇使用入门教程。硬件要求建议使用不少于16GB内存,并有60GB以上的硬盘空间。需要用到CUDA架构,推荐使用N卡。(目......
  • 通过Serverless私有化部署ChatGPT Web
    作为开发人员,想要自己部署一个渠道访问或是想随时访问但是奈何魔法有限,又或是海外服务器太贵,不想耗费这个钱,本文借助Serverless来搭建一下私有ChatGPT服务,Serverless按照使用量来计费,个人使用下(满足工作和生活)费用相当低。本文过程较为繁琐,也有更为简便的其他方式:https:......
  • Stable Diffusion 的 CFG Scale 参数
    在图像生成过程中,CFGScale参数是一个关键因素,它控制着文本提示对生成图像的影响程度。简而言之CFGScale:参数越大,生成的图像与文本提示的相关性越高,但可能会失真。数值越小,相关性则越低,越有可能偏离提示或输入图像,但质量越好。在实际应用中,将其设置在7到11之间往往能......
  • 如何用 Serverless 一键部署 Stable Diffusion?
    思路其实很简单,我们只需要将镜像里面的动态路径映射到NAS文件存储里面即可,利用NAS独立存储文件模型,扩展,语言包等,并且我们可以为管理NAS单独配置一个可视化的后台,用简单的文件上传删除的方式管理我们的文件,为此我们需要展开打镜像的脚本,为了完成全套的流程我们接下来盘一下......
  • Stable Diffusion 的随机种子 seed
    seed参数允许您指定一个随机种子,将用于初始化图像生成过程。相同的种子值每次都会产生相同的图像集,这对于再现性和一致性很有用。如果将种子值保留为-1,则每次运行文本-图像特性时将生成一个随机种子。最重要的是,具有相同参数、prompt和seed将产生完全相同的图像。多亏了这......
  • Diffusion models as plug-and-play priors
    目录概问题与扩散模型的联系应用条件采样语义分割解决离散问题代码GraikosA.,MalkinN.,JojicN.andSamarasD.Diffusionmodelsasplug-and-playpriors.NIPS,2022.概有了先验分布\(p(\mathbf{x})\)(用一般的扩散模型去拟合),我们总是像添加一些约束,即希望从......
  • Stable Diffusion 反向提示词 Negative prompts
    反向提示词(Negativeprompts)用于描述图片中不希望出现的内容。常用于阻止生成特定的事物、样式或修复某些图像异常。下面是一些例子从“宁静的精灵森林”中移除“苔藓”宁静的精灵森林peacefulelvenforest,thickforest,largelivingtreesarevisibleinthebackgro......