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

发布时间 2023-05-03 17:57:29作者: 阿里云云原生

作者:寒斜

立即体验基于函数计算部署 Stable Diffusion:

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

AIGC 领域目前大火, 除了 Chatgpt,在文生图领域 Stable Diffusion 大放异彩,深刻的地影响着绘画、视频制作等相关领域。利用这项技术,普通人也可以制作出令人惊叹的艺术作品。今天我们将使用阿里云函数计算来部署一套 Stable Diffusion WebUi,给大家展示一下这项技术的魅力。 在进入技术教程之前,我们先看一下笔者生成的相关图片内容。

Stable Diffusion WebUi:

https://github.com/AUTOMATIC1111/stable-diffusion-webui

画廊

sd+ mdjrny/ChilloutMix

image

Cheese Daddy

image

国风

image

daclefo_painting

image

函数计算的优势

  • 开箱即用,通过应用中心或者 Serverless Devs 一键部署快速体验,无需进行复杂的环境配置
  • 用时消费,通过 Serverless 弹性策略在您启动服务的才开始计费
  • 支持 GPU 渲染,出图快,花费低

准备项

  1. 开通阿里云**函数计算 [ 1]**

  2. 开通阿里云**容器镜像服务 ACR [ 2]**

  3. 下载 Serverless Devs [ 3]

  4. 使用 Serverless Devs 配置**阿里云秘钥信息 [ 4]**

快速开始

一行指令部署

  • 创建一个本地文件目录如 stable-diffusion
  • 在 stable-diffusion 目录下创建一个 s.yaml 文件,内容如下
edition: 1.0.0
name: fc-stable-diffusion
access: default
services:
  cn-shanghai-stable-diffusion-sd:
    component: devsapp/fc
    props:
      region: cn-shanghai
      service:
        description: stable-diffusion部署到函数计算
        internetAccess: true
        name: stable-diffusion
      function:
        handler: index.handler
        timeout: 600
        diskSize: 10240
        caPort: 7860
        instanceType: fc.gpu.tesla.1
        runtime: custom-container
        cpu: 8
        customContainerConfig:
          args: ''
          accelerationType: Default
          image: registry.cn-shanghai.aliyuncs.com/vipas/stable-diffusion-web:v2
          accelerationInfo:
            status: Preparing
          command: ''
          webServerMode: true
        instanceConcurrency: 1
        memorySize: 32768
        environmentVariables: {}
        gpuMemorySize: 16384
        name: sd
        asyncConfiguration: {}
      triggers:
        - name: defaultTrigger
          description: ''
          type: http
          qualifier: LATEST
          config:
            methods:
              - GET
              - POST
              - PUT
              - DELETE
            authType: anonymous
            disableURLInternet: false
      customDomains:
        - domainName: auto
          protocol: HTTP
          routeConfigs:
            - path: /*
  • 执行部署指令
s deploy

效果预览及操作

执行完部署指令后,很快就能拿到访问地址,如下面↓

http://sd.stable-diffusion.xxxxxx.cn-shanghai.fc.devsapp.net 内容(xxxxxx为您自己账号 uid)

cn-shanghai-stable-diffusion-sd: 
  region:   cn-shanghai
  service: 
    name: stable-diffusion
  function: 
    name:       sd
    runtime:    custom-container
    handler:    index.handler
    memorySize: 32768
    timeout:    600
  url: 
    system_url:    https://sd-stable-iffusion-zulpjlkgaj.cn-shanghai.fcapp.run
    custom_domain: 
      - 
        domain: http://sd.stable-diffusion.xxxxxx.cn-shanghai.fc.devsapp.net
  triggers: 
    - 
      type: http
      name: defaultTrigger

函数计算初次启动要花费 3-4 分钟,需要完成镜像拉取,冷启动等操作。

最后画面如下:

image

我们提供的默认镜像自带了 sd 基础模型。

部署成功之后您可以输入一些文字描述进行图片生成,如上图 sd 生成了一只可爱的小狗?。

总结及扩展

函数计算部署 SD,一行指令运行即可。但我们仍然面临很多实际的使用问题,比如这里使用的镜像仅保留了一个基础模型,后面要扩展需要重新打镜像,非常麻烦,整体冷启动时长较长,初次访问体验欠佳。诸如以上,如何动态管理模型和扩展,以及加快启动速度,在接下来实践篇我们进一步探讨。

有奖体验

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

? 体验地址:

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

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

image

相关链接:

[1] 函数计算

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

[2] 容器镜像服务 ACR

https://www.aliyun.com/product/acr?spm=5176.28055625.J_3207526240.121.1d22154aWn0gl1&scm=20140722.M_4776670._.V_1

[3] Serverless Devs

https://docs.serverless-devs.com/serverless-devs/quick_start

[4] 阿里云秘钥信息

https://docs.serverless-devs.com/serverless-devs/command/config#config-add-%E5%91%BD%E4%BB%A4