科技颠覆者 发表于 2024-11-10 07:49:55

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

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

条件条件



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


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


[*]登录容器服务管理控制台,在左侧导航栏选择集群。
[*]在集群列表页面中,单击目标集群名称或者目标集群右侧操作列下的详情。
[*]在集群管理页左侧导航栏中,选择工作负载 > 无状态。
[*]在无状态页面中,单击使用镜像创建。
[*]在应用根本信息配置向导页面中,设置应用的根本信息。
https://i-blog.csdnimg.cn/blog_migrate/7280c853b636eea45b517ec41f359b85.png
https://i-blog.csdnimg.cn/blog_migrate/36480511d3fd2f10805ae0880dc8b691.png
zibai-registry.cn-hangzhou.cr.aliyuncs.com/gpt/stable-diffusion:v1.cpu https://i-blog.csdnimg.cn/blog_migrate/10ac7025c4a296bec52875a942225e36.png
["python3", "launch.py"]
["--listen", "--skip-torch-cuda-test", "--no-half"] 等待 pod ready
镜像巨细为 12.7GB,内网下载约 10min
https://i-blog.csdnimg.cn/blog_migrate/d3ac08702e72caea6bbe30d73e7ef616.png

[*]在集群管理页左侧导航栏中,选择网络 > 服务。
新建服务,选择负载均衡类型。
https://i-blog.csdnimg.cn/blog_migrate/34a62ecf1680f2e9de0c711cc5e550d4.png
https://i-blog.csdnimg.cn/blog_migrate/90e9384bbdf989059bc206c0ece35620.png
https://i-blog.csdnimg.cn/blog_migrate/28b3440e93dae6ffe6dc077635e4ec68.png
等待约 1min 后,革新页面可以看到 External IP 列有具体 IP
https://i-blog.csdnimg.cn/blog_migrate/08e634c793f89c841e5adcc3b3ee39b1.png

在欣赏器中访问上一步获取到的 http://xxx.xxx.xxx.xxx:7860,即可看到如下页面。
Prompt:Black and white photo of a beautiful city
Sampling method:DPM++ SDE
https://i-blog.csdnimg.cn/blog_migrate/15c23e0e6af344a045ecbdc662c7ae8a.png

使用 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 在欣赏器中访问上一步获取到的 http://xxx.xxx.xxx.xxx:7860,即可看到如下页面。
Prompt:Black and white photo of a beautiful city
Sampling method:DPM++ SDE
https://i-blog.csdnimg.cn/blog_migrate/15c23e0e6af344a045ecbdc662c7ae8a.png
GPU 版本

条件条件



[*]已创建 Kubernetes 异构集群集群。具体操作,请参见创建托管 GPU 集群。
需要 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 在欣赏器中访问上一步获取到的 http://xxx.xxx.xxx.xxx:7860,即可看到如下页面。
Prompt:Black and white photo of a beautiful city
Sampling method:DPM++ SDE
https://i-blog.csdnimg.cn/blog_migrate/15c23e0e6af344a045ecbdc662c7ae8a.png
GPU 版本的图片天生速度明显优于 CPU 版本。
   注:镜像可拉取时间截止至 2023 年 5 月 17 日
镜像仓库地址:http://zibai-registry.cn-hangzhou.cr.aliyuncs.com/gpt/stable-diffusion相干链接:
https://github.com/AUTOMATIC1111/stable-diffusion-webui
创建 Kubernetes 托管版集群
https://help.aliyun.com/document_detail/95108.htm#task-skz-qwk-qfb
通过 Kubectl 连接 Kubernetes 集群
https://help.aliyun.com/document_detail/86494.htm#task-ubf-lhg-vdb
容器服务管理控制台
https://account.aliyun.com/login/login.htm?oauth_callback=https%3A%2F%2Fcs.console.aliyun.com%2F
创建托管 GPU 集群
https://help.aliyun.com/document_detail/171074.html?spm=a2c4g.171073.0.0.7989f95acmbnoT
作者:子白
原文链接
本文为阿里云原创内容,未经允许不得转载。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 基于容器平台 ACK 快速搭建 Stable Diffusion