本文介绍如何基于ACK Serverless集群快速部署Stable Diffusion应用。本教程中,您可以通过控制台或kubectl两种方式来部署应用,并在部署完成后通过外部端点访问Stable Diffusion,开启AIGC文生图体验。
前提条件
已创建ACK Serverless集群并为集群开启公网访问能力,且集群所在地域为华北2(北京)、华东1(杭州)、华东2(上海)、华南1(深圳)。具体操作,请参见创建ASK集群。
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
镜像Tag
填写: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文件。
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
步骤二:访问服务
-
登录容器服务管理控制台,在左侧导航栏选择集群。
-
在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择网络 > 服务。
-
在服务列表的外部端点列,查看并单击您创建的服务stable-diffusion-svc的外部端点,例如
47.111.XX.XX:7860
。您可以开始访问体验Stable Diffusion应用。
例如,通过输入Black and white photo of a beautiful city,然后单击Generate,即可查看Stable Diffusion生成的图片。
步骤三:释放资源
实践教程完成后,请务必注意及时删除资源,避免额外资损。
删除已创建的应用和服务
-
在容器服务管理控制台的集群列表页面,单击目标集群名称,然后在左侧导航栏,选择工作负载 > 无状态,找到已创建的stable-diffusion应用,在页面右侧操作列,选择更多 > 删除。
-
在确认面板中,选中移除关联的服务(Service)stable-diffusion-svc,然后单击确定。
删除集群
ASK集群目前处于公测中,可免费试用。但是在使用ASK集群过程中用到的其他阿里云云产品资源,您需要按照各云产品规定的计费规则,为您使用的资源付费,费用由各云产品收取。完成教程后,请参考以下场景处理集群:
-
如果无需继续使用集群,请登录容器服务管理控制台,在集群列表页面的操作列,单击目标集群对应的更多 > 删除。在删除集群页面,选中同时删除集群下的ALB资源、同时删除集群下的PrivateZone资源和我已知晓以上信息并确认删除集群,然后单击确定。关于删除ASK集群的更多信息,请参见删除集群。
-
如果需要继续使用集群,请至少在试用期到期1小时前为阿里云账号充值,确保账户金额不小于100.00元人民币。在使用ASK Pro版集群过程中用到的其他阿里云云产品资源,相关计费说明,请参见云产品资源计费。
联系我们
如果您在ACK AIGC教程实践过程中有任何疑问或建议,欢迎您加入钉群(钉群号:31850017754)交流。
内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家
阿里云企业补贴进行中: 马上申请
腾讯云限时活动1折起,即将结束: 马上收藏
同尘科技为腾讯云授权服务中心。
购买腾讯云产品享受折上折,更有现金返利:同意关联,立享优惠
转转请注明出处:https://www.yunxiaoer.com/169447.html