日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

基于Knative的Stable Diffusion服務(wù)最佳實(shí)踐

您可以通過(guò)Knative解決方案在AIGC領(lǐng)域?qū)崿F(xiàn)按需使用的Serverless能力,并且做到并發(fā)請(qǐng)求精準(zhǔn)處理,實(shí)現(xiàn)自動(dòng)彈性擴(kuò)縮容。本文介紹如何基于Knative打造生產(chǎn)可用的Stable Diffusion服務(wù)。

索引

前提條件

背景信息

重要
  • 阿里云不對(duì)第三方模型“Stable Diffusion”的合法性、安全性、準(zhǔn)確性進(jìn)行任何保證,阿里云不對(duì)由此引發(fā)的任何損害承擔(dān)責(zé)任。

  • 您應(yīng)自覺(jué)遵守第三方模型“Stable Diffusion”的用戶(hù)協(xié)議、使用規(guī)范和相關(guān)法律法規(guī),并就使用第三方模型的合法性、合規(guī)性自行承擔(dān)相關(guān)責(zé)任。

隨著生成型AI技術(shù)能力的提升,大家越來(lái)越關(guān)注通過(guò)AI模型提升研發(fā)效率。作為AIGC (AI Gererative Content)領(lǐng)域的知名項(xiàng)目Stable Diffusion , 可以幫助用戶(hù)快速、準(zhǔn)確地生成想要的場(chǎng)景及圖片。但目前使用Stable Diffusion會(huì)面臨如下問(wèn)題:

  • 單個(gè)Pod處理請(qǐng)求的吞吐率有限,如果多個(gè)請(qǐng)求轉(zhuǎn)發(fā)到同一個(gè)Pod,會(huì)導(dǎo)致服務(wù)端過(guò)載異常,因此需要精準(zhǔn)的控制單個(gè)Pod請(qǐng)求并發(fā)處理數(shù)。

  • 由于GPU資源很珍貴,期望做到按需使用資源,在業(yè)務(wù)低谷及時(shí)釋放GPU資源。

基于以上兩個(gè)問(wèn)題,阿里云容器服務(wù)提供Knative解決方案,可以做到基于并發(fā)請(qǐng)求數(shù)精準(zhǔn)處理,實(shí)現(xiàn)自動(dòng)彈性擴(kuò)縮容,打造生產(chǎn)可用的Stable Diffusion服務(wù)。具體實(shí)現(xiàn)流程如下所示。

image.png

步驟一:部署Stable Diffusion服務(wù)

  1. 登錄容器服務(wù)管理控制臺(tái),在左側(cè)導(dǎo)航欄選擇集群

  2. 集群列表頁(yè)面,單擊目標(biāo)集群名稱(chēng),然后在左側(cè)導(dǎo)航欄,選擇應(yīng)用 > Knative

  3. Knative頁(yè)面的服務(wù)管理頁(yè)簽下,選擇命名空間default,然后單擊使用模板創(chuàng)建,將以下YAML示例粘貼至模板,最后單擊創(chuàng)建,創(chuàng)建一個(gè)名為knative-sd-demo的服務(wù)。

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: knative-sd-demo
      annotations:
        serving.knative.dev.alibabacloud/affinity: "cookie"
        serving.knative.dev.alibabacloud/cookie-name: "sd"
        serving.knative.dev.alibabacloud/cookie-timeout: "1800"
    spec:
      template:
        metadata:
          annotations:
            autoscaling.knative.dev/class: mpa.autoscaling.knative.dev
            autoscaling.knative.dev/maxScale: '10'
            autoscaling.knative.dev/targetUtilizationPercentage: "100"
            k8s.aliyun.com/eci-use-specs: ecs.gn5-c4g1.xlarge,ecs.gn5i-c8g1.2xlarge,ecs.gn5-c8g1.2xlarge  
        spec:
          containerConcurrency: 1
          containers:
          - args:
            - --listen
            - --skip-torch-cuda-test
            - --api
            command:
            - python3
            - launch.py
            image: yunqi-registry.cn-shanghai.cr.aliyuncs.com/lab/stable-diffusion@sha256:62b3228f4b02d9e89e221abe6f1731498a894b042925ab8d4326a571b3e992bc
            imagePullPolicy: IfNotPresent
            ports:
            - containerPort: 7860
              name: http1
              protocol: TCP
            name: stable-diffusion
            readinessProbe:
              tcpSocket:
                port: 7860
              initialDelaySeconds: 5
              periodSeconds: 1
              failureThreshold: 3

    如圖所示,表明knative-sd-demo服務(wù)已部署成功。

    image.png

步驟二:訪問(wèn)服務(wù)

  1. 服務(wù)管理頁(yè)簽,獲取服務(wù)的訪問(wèn)網(wǎng)關(guān)默認(rèn)域名

    image.png

  2. knative-sd-demo服務(wù)的網(wǎng)關(guān)地址與需要訪問(wèn)的域名進(jìn)行Host綁定,在Hosts文件中添加綁定信息。綁定示例如下:

    47.xx.xxx.xx knative-sd-demo.default.example.com # 網(wǎng)關(guān)IP和域名請(qǐng)以您的實(shí)際數(shù)據(jù)為準(zhǔn)。
  3. 完成Host綁定后,在服務(wù)管理頁(yè)簽,單擊knative-sd-demo服務(wù)的默認(rèn)域名,訪問(wèn)Stable Diffusion。

    如圖所示,可通過(guò)域名直接對(duì)Stable Diffusion進(jìn)行訪問(wèn)。

    image.png

步驟三:基于請(qǐng)求實(shí)現(xiàn)自動(dòng)彈性擴(kuò)縮容

  1. 使用Hey壓測(cè)工具,執(zhí)行壓測(cè)。

    說(shuō)明

    Hey壓測(cè)工具的詳細(xì)介紹,請(qǐng)參見(jiàn)Hey

    # 發(fā)送50個(gè)請(qǐng)求,并發(fā)數(shù)為5,請(qǐng)求超時(shí)時(shí)間為180秒。
    ./hey -n 50 -c 5 -t 180 -m POST -T "application/json"  -d '{"prompt": "pretty dog"}' http://knative-sd-demo.default.example.com/sdapi/v1/txt2img

    預(yù)期輸出:

    Summary:
      Total:	252.1749 secs
      Slowest:	62.4155 secs
      Fastest:	9.9399 secs
      Average:	23.9748 secs
      Requests/sec:	0.1983
    
    
    Response time histogram:
      9.940 [1]	|■■
      15.187 [17]	|■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
      20.435 [9]	|■■■■■■■■■■■■■■■■■■■■■
      25.683 [11]	|■■■■■■■■■■■■■■■■■■■■■■■■■■
      30.930 [1]	|■■
      36.178 [1]	|■■
      41.425 [3]	|■■■■■■■
      46.673 [1]	|■■
      51.920 [2]	|■■■■■
      57.168 [1]	|■■
      62.415 [3]	|■■■■■■■
    
    
    Latency distribution:
      10% in 10.4695 secs
      25% in 14.8245 secs
      50% in 20.0772 secs
      75% in 30.5207 secs
      90% in 50.7006 secs
      95% in 61.5010 secs
      0% in 0.0000 secs
    
    Details (average, fastest, slowest):
      DNS+dialup:	0.0424 secs, 9.9399 secs, 62.4155 secs
      DNS-lookup:	0.0385 secs, 0.0000 secs, 0.3855 secs
      req write:	0.0000 secs, 0.0000 secs, 0.0004 secs
      resp wait:	23.8850 secs, 9.9089 secs, 62.3562 secs
      resp read:	0.0471 secs, 0.0166 secs, 0.1834 secs
    
    Status code distribution:
      [200]	50 responses

    可以看到持續(xù)發(fā)送了50個(gè)請(qǐng)求,請(qǐng)求成功率為100%。

  2. 執(zhí)行如下命令,可實(shí)時(shí)觀察Pod擴(kuò)縮容情況。

    watch -n 1 'kubectl get po'

    image.png

    由于部署Stable Diffusion服務(wù)時(shí)配置了單Pod的最大并發(fā)數(shù)是1 (containerConcurrency: 1),因此壓測(cè)期間自動(dòng)擴(kuò)容了5個(gè)Pod。

步驟四:查看Stable Diffusion服務(wù)監(jiān)控?cái)?shù)據(jù)

Knative提供開(kāi)箱即用的可觀測(cè)能力,在Knative頁(yè)面,單擊監(jiān)控大盤(pán)頁(yè)簽,即可查看Stable Diffusion服務(wù)的監(jiān)控?cái)?shù)據(jù)情況。如何開(kāi)啟Knative監(jiān)控大盤(pán),請(qǐng)參見(jiàn)通過(guò)阿里云Prometheus監(jiān)控查看Knative大盤(pán)

  • Overview (average over the selected time range)區(qū)域,可查看Stable Diffusion服務(wù)的請(qǐng)求量(Request Volume)、請(qǐng)求成功率(Success Rate)、4xx(客戶(hù)端錯(cuò)誤)、5xx(服務(wù)器端錯(cuò)誤)和Pod擴(kuò)縮容趨勢(shì)的監(jiān)控?cái)?shù)據(jù)。

    image.png

  • Response Time區(qū)域,查看Knative的響應(yīng)延遲數(shù)據(jù),包括P50、P90、P95和P99。

    image.png