作者:子白

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

CPU 版别

前提条件

  • 已创立 Kubernetes 保管版集群。具体操作,请拜见创立 Kubernetes 保管版集群[1]。

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

  • 已经过 kubectl 衔接 kubernetes 集群。具体操作,请拜见**经过 Kubectl 衔接 Kubernetes 集群 [ 2] **。

运用控制台创立

  1. 登录容器服务办理控制台[3],在左侧导航栏挑选集群。
  2. 在集群列表页面中,单击目标集群称号或者目标集群右侧操作列下的概况。
  3. 在集群办理页左侧导航栏中,挑选工作负载 > 无状况
  4. 无状况页面中,单击运用镜像创立
  5. 使用基本信息装备向导页面中,设置使用的基本信息。

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

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

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

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

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

等候 pod ready

镜像巨细为 12.7GB,内网下载约 10min

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

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

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

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

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

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

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

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

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

Prompt:Black and white photo of a beautiful city

Sampling method:DPM++ SDE

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

运用 kubectl 创立

stable-diffusion.yaml

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: zibai-registry.cn-hangzhou.cr.aliyuncs.com/gpt/stable-diffusion:v1.cpu
        imagePullPolicy: IfNotPresent
        name: stable-diffusion
        resources:
          requests:
            cpu: "2"
            memory: 2Gi
---
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
  namespace: default
spec:
  externalTrafficPolicy: Local
  ports:
  - port: 7860
    protocol: TCP
    targetPort: 7860
  selector:
    app: stable-diffusion
  type: 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-diffusion
NAME               TYPE           CLUSTER-IP      EXTERNAL-IP    PORT(S)          AGE
stable-diffusion   LoadBalancer   192.168.x.x     xx.xx.xx.xxx   7860:32320/TCP   12m

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

Prompt:Black and white photo of a beautiful city

Sampling method:DPM++ SDE

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

GPU 版别

前提条件

  • 已创立 Kubernetes 异构集群集群。具体操作,请拜见创立保管 GPU 集群[4]。

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

  • 已经过 kubectl 衔接kubernetes集群。具体操作,请拜见经过 Kubectl 衔接 Kubernetes 集群。

运用 kubectl 创立

stable-diffusion.yaml

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
        command:
        - python3
        - launch.py
        image: zibai-registry.cn-hangzhou.cr.aliyuncs.com/gpt/stable-diffusion:v1.gpu
        imagePullPolicy: IfNotPresent
        name: stable-diffusion
        resources:
          requests:
            cpu: "2"
            memory: 2Gi
          limits:
            nvidia.com/gpu: 1
---
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
  namespace: default
spec:
  externalTrafficPolicy: Local
  ports:
  - port: 7860
    protocol: TCP
    targetPort: 7860
  selector:
    app: stable-diffusion
  type: 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-diffusion
NAME               TYPE           CLUSTER-IP      EXTERNAL-IP    PORT(S)          AGE
stable-diffusion   LoadBalancer   192.168.x.x     xx.xx.xx.xxx   7860:32320/TCP   12m

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

Prompt:Black and white photo of a beautiful city

Sampling method:DPM++ SDE

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

GPU 版别的图片生成速度显着优于 CPU 版别。

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

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

相关链接:

github.com/AUTOMATIC11…

[1]创立 Kubernetes 保管版集群

help.aliyun.com/document_de…

[2]经过 Kubectl 衔接 Kubernetes 集群

help.aliyun.com/document_de…

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

account.aliyun.com/login/login…

[4]创立保管 GPU 集群

help.aliyun.com/document_de…

点击此处即可检查容器服务 ACK 产品概况