> 文章列表 > 基于容器平台 ACK 快速搭建 Stable Diffusion

基于容器平台 ACK 快速搭建 Stable Diffusion

基于容器平台 ACK 快速搭建 Stable Diffusion

作者:子白

本文介绍如何在阿里云容器平台 ACK 上快速搭建一套可对外提供服务的 Stable Diffusion。

CPU 版本

前提条件

  • 已创建 Kubernetes 托管版集群。具体操作,请参见创建 Kubernetes 托管版集群[1]。

📍无需 GPU,节点需要 8c16g 以上

  • 已通过 kubectl 连接 kubernetes 集群。具体操作,请参见通过 Kubectl 连接 Kubernetes 集群 [ 2]

使用控制台创建

  1. 登录容器服务管理控制台[3],在左侧导航栏选择集群。
  2. 在集群列表页面中,单击目标集群名称或者目标集群右侧操作列下的详情。
  3. 在集群管理页左侧导航栏中,选择工作负载 > 无状态
  4. 无状态页面中,单击使用镜像创建
  5. 应用基本信息配置向导页面中,设置应用的基本信息。

在这里插入图片描述

在这里插入图片描述

zibai-registry.cn-hangzhou.cr.aliyuncs.com/gpt/stable-diffusion:v1.cpu

在这里插入图片描述

["python3", "launch.py"]
["--listen", "--skip-torch-cuda-test", "--no-half"]

等待 pod ready

📍镜像大小为 12.7GB,内网下载约 10min

在这里插入图片描述

  1. 在集群管理页左侧导航栏中,选择网络 > 服务

新建服务,选择负载均衡类型。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

等待约 1min 后,刷新页面可以看到 External IP 列有具体 IP

在这里插入图片描述

在浏览器中访问上一步获取到的 http://xxx.xxx.xxx.xxx:7860,即可看到如下页面。

Prompt:Black and white photo of a beautiful city

Sampling method:DPM++ SDE

在这里插入图片描述

使用 kubectl 创建

stable-diffusion.yaml

apiVersion: apps/v1
kind: Deployment
metadata:labels:app: stable-diffusionname: stable-diffusionnamespace: default
spec:replicas: 1selector:matchLabels:app: stable-diffusiontemplate:metadata:labels:app: stable-diffusionspec:containers:- args:- --listen- --skip-torch-cuda-test- --no-halfcommand:- python3- launch.pyimage: zibai-registry.cn-hangzhou.cr.aliyuncs.com/gpt/stable-diffusion:v1.cpuimagePullPolicy: IfNotPresentname: stable-diffusionresources:requests:cpu: "2"memory: 2Gi
---
apiVersion: v1
kind: Service
metadata:annotations:service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type: internetservice.beta.kubernetes.io/alibaba-cloud-loadbalancer-instance-charge-type: PayByCLCUname: stable-diffusionnamespace: default
spec:externalTrafficPolicy: Localports:- port: 7860protocol: TCPtargetPort: 7860selector:app: stable-diffusiontype: LoadBalancer
kubectl apply -f stable-diffusion.yaml

等待 pod ready

📍镜像大小为 12.7GB,内网下载约 10min

# 查看pod状态,等待pod running
kubectl get po |grep stable-diffusion# 查看CLB IP
kubectl get svc stable-diffusionNAME               TYPE           CLUSTER-IP      EXTERNAL-IP    PORT(S)          AGE
stable-diffusion   LoadBalancer   192.168.x.x     xx.xx.xx.xxx   7860:32320/TCP   12m

在浏览器中访问上一步获取到的 http://xxx.xxx.xxx.xxx:7860,即可看到如下页面。

Prompt:Black and white photo of a beautiful city

Sampling method:DPM++ SDE

在这里插入图片描述

GPU 版本

前提条件

  • 已创建 Kubernetes 异构集群集群。具体操作,请参见创建托管 GPU 集群[4]。

📍需要 GPU 节点,磁盘剩余容量需大于 40G

  • 已通过 kubectl 连接kubernetes集群。具体操作,请参见通过 Kubectl 连接 Kubernetes 集群。

使用 kubectl 创建

stable-diffusion.yaml

apiVersion: apps/v1
kind: Deployment
metadata:labels:app: stable-diffusionname: stable-diffusionnamespace: default
spec:replicas: 1selector:matchLabels:app: stable-diffusiontemplate:metadata:labels:app: stable-diffusionspec:containers:- args:- --listencommand:- python3- launch.pyimage: zibai-registry.cn-hangzhou.cr.aliyuncs.com/gpt/stable-diffusion:v1.gpuimagePullPolicy: IfNotPresentname: stable-diffusionresources:requests:cpu: "2"memory: 2Gilimits:nvidia.com/gpu: 1
---
apiVersion: v1
kind: Service
metadata:annotations:service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type: internetservice.beta.kubernetes.io/alibaba-cloud-loadbalancer-instance-charge-type: PayByCLCUname: stable-diffusionnamespace: default
spec:externalTrafficPolicy: Localports:- port: 7860protocol: TCPtargetPort: 7860selector:app: stable-diffusiontype: LoadBalancer
kubectl apply -f stable-diffusion.yaml

等待 pod ready

📍镜像大小为 15.1GB,内网下载约 15min

# 查看pod状态,等待pod running
kubectl get po |grep stable-diffusion# 查看CLB IP
kubectl get svc stable-diffusionNAME               TYPE           CLUSTER-IP      EXTERNAL-IP    PORT(S)          AGE
stable-diffusion   LoadBalancer   192.168.x.x     xx.xx.xx.xxx   7860:32320/TCP   12m

在浏览器中访问上一步获取到的 http://xxx.xxx.xxx.xxx:7860,即可看到如下页面。

Prompt:Black and white photo of a beautiful city

Sampling method:DPM++ SDE

在这里插入图片描述

GPU 版本的图片生成速度明显优于 CPU 版本。

注:镜像可拉取时间截止至 2023 年 5 月 17 日

镜像仓库地址:zibai-registry.cn-hangzhou.cr.aliyuncs.com/gpt/stable-diffusion

相关链接:

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

[1] 创建 Kubernetes 托管版集群

https://help.aliyun.com/document_detail/95108.htm#task-skz-qwk-qfb

[2] 通过 Kubectl 连接 Kubernetes 集群

https://help.aliyun.com/document_detail/86494.htm#task-ubf-lhg-vdb

[3] 容器服务管理控制台

https://account.aliyun.com/login/login.htm?oauth_callback=https%3A%2F%2Fcs.console.aliyun.com%2F

[4] 创建托管 GPU 集群

https://help.aliyun.com/document_detail/171074.html?spm=a2c4g.171073.0.0.7989f95acmbnoT

点击此处即可查看容器服务 ACK 产品详情