本文介紹如何基于ACK Serverless集群快速部署Stable Diffusion應用。本教程中,您可以通過控制臺或kubectl兩種方式來部署應用,并在部署完成后通過外部端點訪問Stable Diffusion,開啟AIGC文生圖體驗。
前提條件
已創建ACK Serverless集群,且集群所在地域為華北2(北京)、華東1(杭州)、華東2(上海)、華南1(深圳)。具體操作,請參見創建ACK Serverless集群。
Stable Diffusion介紹
Stable Diffusion WebUI是Github上一個熱門項目,可以通過文本生成圖像。Stable Diffusion分為文字理解和圖片生成兩個部分。文字理解部分使用CLIP模型對文本進行Encoding,圖片生成采用Diffusion模型。
阿里云不對第三方模型“Stable Diffusion”的合法性、安全性、準確性進行任何保證,阿里云不對由此引發的任何損害承擔責任。
您應自覺遵守第三方模型“Stable Diffusion”的用戶協議、使用規范和相關法律法規,并就使用第三方模型的合法性、合規性自行承擔相關責任。
步驟一:部署Stable Diffusion應用
您可以通過控制臺部署Stable Diffusion應用,也可以通過kubectl連接Kubernetes集群,然后創建YAML文件部署應用。
通過控制臺部署
登錄容器服務管理控制臺,在左側導航欄選擇集群。
在集群列表頁面,單擊目標集群名稱,然后在左側導航欄,選擇 。
在無狀態頁面,單擊使用鏡像創建。
在應用基本信息頁簽,設置應用名稱,例如stable-diffusion,然后單擊下一步。
在容器配置頁簽,按照頁面內容依次設置基本配置、健康檢查、生命周期相關的配置項,然后單擊下一步。
配置大類
配置項
示例值
配置頁面
基本配置
鏡像名稱
公網:yunqi-registry.cn-shanghai.cr.aliyuncs.com/lab/stable-diffusion:v1.2.0
內網訪問時,請根據不同地域集群選擇不同的內網地址
內網:
華北2(北京): registry-vpc.cn-beijing.aliyuncs.com/yunqi-lab/stable-diffusion:v1.2.0
華東2(上海):registry-vpc.cn-shanghai.aliyuncs.com/yunqi-lab/stable-diffusion:v1.2.0
華東1(杭州):registry-vpc.cn-hangzhou.aliyuncs.com/yunqi-lab/stable-diffusion:v1.2.0
華南1(深圳):registry-vpc.cn-shenzhen.aliyuncs.com/yunqi-lab/stable-diffusion:v1.2.0
所需資源
CPU:8Core
內存:16GB
健康檢查
就緒檢查
就緒檢查:開啟
選擇TCP連接
端口:7860
生命周期
啟動執行
命令:["python3", "launch.py"]
參數: ["--listen", "--skip-torch-cuda-test", "--no-half"]
在高級配置頁簽,單擊服務(Service)右側的創建。
在創建服務對話框中,設置服務相關的參數,然后單擊創建。
通過該服務公開Stable Diffusion應用。
返回在高級配置頁面,單擊創建。
返回如下頁面,表明應用創建成功,您可以單擊查看應用詳情,查看應用的容器組、訪問方式、事件、容器伸縮、歷史版本、日志和觸發器等信息。
等待Pod狀態變為Running,Stable Diffusion應用部署完成。
通過kubectl部署
通過kubectl連接ACK Serverless集群。具體操作,請參見通過kubectl連接Kubernetes集群。
復制以下示例代碼,創建Stable Diffusion應用的stable-diffusion.yaml文件。
以下示例代碼中
image
為公網訪問的鏡像地址,如需通過內網訪問,需根據集群地域替換為如下image
地址。華北2(北京): registry-vpc.cn-beijing.aliyuncs.com/yunqi-lab/stable-diffusion:v1.2.0
華東2(上海):registry-vpc.cn-shanghai.aliyuncs.com/yunqi-lab/stable-diffusion:v1.2.0
華東1(杭州):registry-vpc.cn-hangzhou.aliyuncs.com/yunqi-lab/stable-diffusion:v1.2.0
華南1(深圳):registry-vpc.cn-shenzhen.aliyuncs.com/yunqi-lab/stable-diffusion:v1.2.0
apiVersion: apps/v1 kind: Deployment metadata: labels: app: stable-diffusion name: stable-diffusion namespace: default spec: replicas: 1 selector: matchLabels: app: stable-diffusion template: metadata: labels: app: stable-diffusion spec: containers: - args: - --listen - --skip-torch-cuda-test - --no-half command: - python3 - launch.py image: yunqi-registry.cn-shanghai.cr.aliyuncs.com/lab/stable-diffusion:v1.2.0 imagePullPolicy: IfNotPresent name: stable-diffusion ports: - containerPort: 7860 protocol: TCP readinessProbe: tcpSocket: port: 7860 resources: limits: cpu: "8" memory: 16Gi ephemeral-storage: 50Gi --- apiVersion: v1 kind: Service metadata: annotations: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type: internet service.beta.kubernetes.io/alibaba-cloud-loadbalancer-instance-charge-type: PayByCLCU name: stable-diffusion-svc namespace: default spec: externalTrafficPolicy: Local ports: - port: 7860 protocol: TCP targetPort: 7860 selector: app: stable-diffusion type: LoadBalancer
執行以下命令,部署Stable Diffusion應用。
kubectl apply -f stable-diffusion.yaml
執行以下命令,確認應用狀態正常。
kubectl get deployment stable-diffusion
預期輸出:
NAME READY UP-TO-DATE AVAILABLE AGE stable-diffusion 1/1 1 1 103m
步驟二:訪問服務
登錄容器服務管理控制臺,在左側導航欄選擇集群。
在集群列表頁面,單擊目標集群名稱,然后在左側導航欄,選擇
。在服務頁面,單擊目標服務名稱,進入服務詳情頁面,在基本信息區域,單擊該服務的外部端點的,例如47.111.XX.XX:7860,開始訪問體驗Stable Diffusion應用。
例如,通過輸入Black and white photo of a beautiful city,然后單擊Generate,即可查看Stable Diffusion生成的圖片。
步驟三:釋放資源
實踐教程完成后,請務必注意及時刪除資源,避免額外資損。
刪除已創建的應用和服務
在容器服務管理控制臺的集群列表頁面,單擊目標集群名稱,然后在左側導航欄,選擇工作負載 > 無狀態,找到已創建的stable-diffusion應用,在頁面右側操作列,選擇更多 > 刪除。
在確認面板中,選中移除關聯的服務(Service)stable-diffusion-svc,然后單擊確定。
刪除集群
ACK Serverless集群目前處于公測中,可免費試用。但是在使用ACK Serverless集群過程中用到的其他阿里云云產品資源,您需要按照各云產品規定的計費規則,為您使用的資源付費,費用由各云產品收取。完成教程后,請參考以下場景處理集群:
聯系我們
如果您在ACK AIGC教程實踐過程中有任何疑問或建議,歡迎您加入釘群(釘群號:31850017754)交流。