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

打印 上一主题 下一主题

主题 892|帖子 892|积分 2676

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

条件条件



  • 已创建 Kubernetes 托管版集群。具体操作,请参见创建 Kubernetes 托管版集群[1]。
无需 GPU,节点需要 8c16g 以上


  • 已通过 kubectl 连接 kubernetes 集群。具体操作,请参见通过 Kubectl 连接 Kubernetes 集群[2]
使用控制台创建


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


  1. zibai-registry.cn-hangzhou.cr.aliyuncs.com/gpt/stable-diffusion:v1.cpu
复制代码

  1. ["python3", "launch.py"]
  2. ["--listen", "--skip-torch-cuda-test", "--no-half"]
复制代码
等待 pod ready
镜像巨细为 12.7GB,内网下载约 10min


  • 在集群管理页左侧导航栏中,选择网络 > 服务
新建服务,选择负载均衡类型。



等待约 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
  1. apiVersion: apps/v1
  2. kind: Deployment
  3. metadata:
  4.   labels:
  5.     app: stable-diffusion
  6.   name: stable-diffusion
  7.   namespace: default
  8. spec:
  9.   replicas: 1
  10.   selector:
  11.     matchLabels:
  12.       app: stable-diffusion
  13.   template:
  14.     metadata:
  15.       labels:
  16.         app: stable-diffusion
  17.     spec:
  18.       containers:
  19.       - args:
  20.         - --listen
  21.         - --skip-torch-cuda-test
  22.         - --no-half
  23.         command:
  24.         - python3
  25.         - launch.py
  26.         image: zibai-registry.cn-hangzhou.cr.aliyuncs.com/gpt/stable-diffusion:v1.cpu
  27.         imagePullPolicy: IfNotPresent
  28.         name: stable-diffusion
  29.         resources:
  30.           requests:
  31.             cpu: "2"
  32.             memory: 2Gi
  33. ---
  34. apiVersion: v1
  35. kind: Service
  36. metadata:
  37.   annotations:
  38.     service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type: internet
  39.     service.beta.kubernetes.io/alibaba-cloud-loadbalancer-instance-charge-type: PayByCLCU
  40.   name: stable-diffusion
  41.   namespace: default
  42. spec:
  43.   externalTrafficPolicy: Local
  44.   ports:
  45.   - port: 7860
  46.     protocol: TCP
  47.     targetPort: 7860
  48.   selector:
  49.     app: stable-diffusion
  50.   type: LoadBalancer
复制代码

  1. kubectl apply -f stable-diffusion.yaml
复制代码
等待 pod ready
镜像巨细为 12.7GB,内网下载约 10min
  1. # 查看pod状态,等待pod running
  2. kubectl get po |grep stable-diffusion
  3. # 查看CLB IP
  4. kubectl get svc stable-diffusion
  5. NAME               TYPE           CLUSTER-IP      EXTERNAL-IP    PORT(S)          AGE
  6. 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
  1. apiVersion: apps/v1
  2. kind: Deployment
  3. metadata:
  4.   labels:
  5.     app: stable-diffusion
  6.   name: stable-diffusion
  7.   namespace: default
  8. spec:
  9.   replicas: 1
  10.   selector:
  11.     matchLabels:
  12.       app: stable-diffusion
  13.   template:
  14.     metadata:
  15.       labels:
  16.         app: stable-diffusion
  17.     spec:
  18.       containers:
  19.       - args:
  20.         - --listen
  21.         command:
  22.         - python3
  23.         - launch.py
  24.         image: zibai-registry.cn-hangzhou.cr.aliyuncs.com/gpt/stable-diffusion:v1.gpu
  25.         imagePullPolicy: IfNotPresent
  26.         name: stable-diffusion
  27.         resources:
  28.           requests:
  29.             cpu: "2"
  30.             memory: 2Gi
  31.           limits:
  32.             nvidia.com/gpu: 1
  33. ---
  34. apiVersion: v1
  35. kind: Service
  36. metadata:
  37.   annotations:
  38.     service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type: internet
  39.     service.beta.kubernetes.io/alibaba-cloud-loadbalancer-instance-charge-type: PayByCLCU
  40.   name: stable-diffusion
  41.   namespace: default
  42. spec:
  43.   externalTrafficPolicy: Local
  44.   ports:
  45.   - port: 7860
  46.     protocol: TCP
  47.     targetPort: 7860
  48.   selector:
  49.     app: stable-diffusion
  50.   type: LoadBalancer
复制代码

  1. kubectl apply -f stable-diffusion.yaml
复制代码
等待 pod ready
镜像巨细为 15.1GB,内网下载约 15min
  1. # 查看pod状态,等待pod running
  2. kubectl get po |grep stable-diffusion
  3. # 查看CLB IP
  4. kubectl get svc stable-diffusion
  5. NAME               TYPE           CLUSTER-IP      EXTERNAL-IP    PORT(S)          AGE
  6. 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 日  
  镜像仓库地址:http://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
作者:子白
原文链接
本文为阿里云原创内容,未经允许不得转载。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

科技颠覆者

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表