如何用 Serverless 一鍵部署 Stable Diffusion?

Serverless發表於2023-05-11

思路

其實很簡單, 我們只需要將映象裡面的動態路徑對映到 NAS檔案儲存裡面即可,利用 NAS 獨立儲存檔案模型,擴充套件,語言包等,並且我們可以為管理 NAS 單獨配置一個視覺化的後臺,用簡單的檔案上傳刪除的方式管理我們的檔案,為此我們需要展開打映象的指令碼,為了完成全套的流程我們接下來盤一下整體的準備項。

準備項

  1. 開通阿里雲函式計算
  2. 檔案儲存 NAS(可以根據情況自己建立效能更好的例項)
  3. 開通阿里雲容器映象服務 ACR
  4. 安裝 Serverless Devs
$ npm install @serverless-devs/s -g
  1. 使用 Serverless Devs 配置阿里雲金鑰資訊

快速開始

初始化應用模版

s init fc-stable-diffusion-plus

選擇 region:cn-hangzhou

輸入映象:registry.cn-hangzhou.aliyuncs.com/serverlessdevshanxie/sd-auto-nas:v1

部署應用模版

cd fc-stable-diffusion-plus && s deploy

部署需要花費一些時間(預估 5 分鐘),之後你會收到兩個域名返回。

fc-nas-init: 
  region:   cn-hangzhou
  service: 
    name: fc-stable-diffusion-plus
  function: 
    name:       nas-init
    runtime:    python3.9
    handler:    index.handler
    memorySize: 3072
    timeout:    1200
    cpu:        2
    diskSize:   512
fc-nas-filemgr: 
  region:   cn-hangzhou
  service: 
    name: fc-stable-diffusion-plus
  function: 
    name:       admin
    runtime:    custom
    handler:    index.handler
    memorySize: 3072
    timeout:    7200
    cpu:        2
    diskSize:   512
  url: 
    system_url:          https://xxx.cn-hangzhou.fcapp.run
    system_intranet_url: https://xxx.cn-hangzhou-vpc.fcapp.run
    custom_domain: 
      - 
        domain: http://admin.fc-stable-diffusion-plus.xxxx.cn-hangzhou.fc.devsapp.net
  triggers: 
    - 
      type: http
      name: httpTrigger
keep-warm: 
  region:   cn-hangzhou
  service: 
    name: fc-stable-diffusion-plus
  function: 
    name:       keep-warm
    runtime:    python3
    handler:    index.handler
    memorySize: 128
    timeout:    120
    cpu:        0.1
    diskSize:   512
  triggers: 
    - 
      type: timer
      name: timerTrigger
stable-diffusion-sd-server: 
  region:   cn-hangzhou
  service: 
    name: fc-stable-diffusion-plus
  function: 
    name:       sd
    runtime:    custom-container
    handler:    index.handler
    memorySize: 32768
    timeout:    600
    cpu:        8
    diskSize:   10240
  url: 
    system_url:          https://xxx.cn-hangzhou.fcapp.run
    system_intranet_url: https://xxx.cn-hangzhou-vpc.fcapp.run
    custom_domain: 
      - 
        domain: http://sd.fc-stable-diffusion-plus.xxxxx.cn-hangzhou.fc.devsapp.net
  triggers: 
    - 
      type: http
      name: defaultTrigger

其中:

http://admin.fc-stable-diffusion-plus.xxxx.cn-hangzhou.fc.dev... 是後臺管理頁面

http://sd.fc-stable-diffusion-plus.xxxxx.cn-hangzhou.fc.devsa... 是 Stable Diffusion 的操作介面

上傳模型

因為上面容器映象中移除了模型部分,所以你現在還無法啟動 Stable Diffusion 的操作介面,需要上傳自己的模型,之後再去啟動 Stable Diffusion 操作介面,上傳模型有兩個方法:

方法一

透過視覺化介面上傳,訪問 http://admin.fc-stable-diffusion-plus.xxxx.cn-hangzhou.fc.dev...,點點點,配好登入密碼之後,進來到這個介面:檔案管理,然後在路徑欄裡輸入"/mnt/auto/sd"

 title=

 title=

 title=

你就看到自己熟悉的本地目錄了~

 title=

然後再訪問 models/Stable-diffusion/ 把模型拖進來就行。

不過值得注意的是,這種方式上傳的模型超過 2、3 個 G 的時候會不穩定。所以如果你的模型很大,可以考慮用我們提供的 nas 指令。

方法二

使用 nas 指令上傳,進入專案根目錄,執行↓

s fc-nas-init nas upload -r <你的模型地址> /mnt/auto/sd/models/Stable-diffusion/

就可以,剩下的就是等待,可能要花費 30 分鐘。

注: 其他的如 controlNet,extension 可以按照類似的方式,不過注意對應的 nas 地址變一下。

頁面瀏覽

準備就緒後我們開始使用頁面了,開啟這個地址↓

http://sd.fc-stable-diffusion-plus.xxxxx.cn-hangzhou.fc.devsa... 冷啟動會有一定的載入時間。

文生圖

 title=

圖生圖

 title=

其他的自己可以多摸索摸索。

有獎體驗

阿里雲將提供免費 Serverless 函式計算產品資源,邀請你,體驗一把 AIGC 級的畢加索、達芬奇、梵高等大師作畫的快感。下面請盡情發揮你的想象空間!!雙重獎品設定,完成體驗場景可得社群 1000 積分兌換獎品,還可參加 AI 生成影像比賽贏取 Airpods、500 元貓超卡及社群定製抱枕!

? 體驗地址:

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

<p align=center>你也可以輕鬆做出下方畫作??</p>

 title=

相關文章