暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

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

阿里云云原生 2023-05-12
599

前文回顾:

AI 作画火了,如何用 Serverless 函数计算部署 Stable Diffusion?

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

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

前置条件




Cloud Native

1. 注册并登录阿里云账号[1]
2. 开通函数计算[2]
3. 开通文件存储 NAS 服务[3]

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

快速开始




Cloud Native

首先进入应用中心:
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 的服务了。

源码定制




Cloud Native

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

基于↓

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




    Cloud Native

    下载模型不可用

    需要检查模型的文件命名是否正确。

    插件无法在线安装

    容器镜像部署有安全限制,可以将插件下载到本地,然后通过管理后台上传到 extensions 目录下,如果想支持通过 url ,需要自行定制 docker 镜像,修改相关的参数。

    如何访问到 Stable Diffusion 的api

    需要定制镜像,开启 --api 参数,然后访问 /docs 查看可调用 api。

    资费部分

    本次应用依赖函数计算和 NAS 文件存储,使用前请先领取相应的免费额度或者购买相应的资源包,具体的资费说明,请参考官网说明。

    更灵活的定制方案

    可以尝试将整个 webui 目录映射至 NAS, 这样修改源码比较方便。

    其他注意事项

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

    有奖体验




    Cloud Native

    阿里云将提供免费 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

    点击阅读原文进入体验

    文章转载自阿里云云原生,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

    评论