基于 ACK Serverless 解锁你家萌宠的 AI 形象详情

 


快速进入产品控制台

本实验相关云产品

云原生网关 MSE-Higress

容器服务ACK Serverless

更多云产品

云原生数据库 PolarDB PostgreSQL 版

DataV数据可视化

开源大数据平台 E-MapReduce

微服务治理 MSE-Sentinel/OpenSergo

GPU云服务器

云数据传输

RDS MySQL Serverless版

混合云备份 HBR

访问控制 RAM

企业级分布式应用服务 EDAS

可观测可视化 Grafana 版

性能测试 PTS

专有网络 VPC

资源编排 ROS

容器镜像服务 ACR

弹性容器实例

可观测监控Prometheus版

实时数仓Hologres

实时计算Flink版

应用实时监控服务-云拨测

生活物联网平台

表格存储

物联网平台

消息服务 MNS

消息队列 RabbitMQ 版

事件总线 EventBridge

QUICK BI

数据库自治服务 DAS

音视频通信 RTC

云效

云原生多模数据库Lindorm

机器学习PAI

龙蜥操作系统(Anolis OS)

智能开放搜索 OpenSearch

大数据计算服务 MaxCompute

数据湖构建DLF

DataWorks

阿里云ElasticSearch

数据管理 DMS

云数据库RDS PostgreSQL 版

数据传输 DTS

日志服务(SLS)

弹性伸缩

小程序云

NAT网关

全站加速DCDN

视频直播

云数据库Redis版

云数据库MongoDB版

云数据库HBase版

云原生分布式数据库PolarDB-X

CDN

函数计算FC

消息队列RocketMQ版

对象存储OSS

消息队列Kafka版

视频点播

弹性公网IP

云数据库RDS SQLServer版

Serverless应用引擎

云原生数据仓库AnalyticDB MySQL版

云原生关系型数据库PolarDB

容器服务 ACK

GPU云服务器

轻量应用服务器

文件存储NAS

云服务器ECS

负载均衡SLB

云数据库RDS MySQL版

基于 ACK Serverless 解锁你家萌宠的 AI 形象详情

结束实验

 

  • 实验手册
  • 实验报告

 

2. 准备您家萌宠数据集

一、准备数据集
  1. 挑选20张萌宠图片,要求萌宠主体清晰。支持.png、.jpg、 .jpeg、 .webp、.bmp 格式的照片。

注意:其他图片格式,会造成训练模型时报错,请一定要确认照片格式!如果您发现有些照片格式不符合要求,请使用图片转换工具,请不要通过给图片重命名来修改格式,也会导致训练报错。

  • 解释说明:挑选您家萌宠单独照片,为了模型训练效果,尽量保持照片背景干净,不要与人的合照,也不要与其他动物合照,保证有萌宠正脸照,尽量不要所有照片都是背面或者侧面。
  • 正确示范✅:

基于 ACK Serverless 解锁你家萌宠的 AI 形象_MSE


基于 ACK Serverless 解锁你家萌宠的 AI 形象_Server_02

  • 错误示范❌:

基于 ACK Serverless 解锁你家萌宠的 AI 形象_MSE_03

  1. 在您PC电脑上新建文件夹,文件夹名为您萌宠英文名(或中文名拼音,更推荐),将20张照片放入文件夹中。
  • 解释说明:若您萌宠有英文名,例如Bob,则您文件夹名为Bob;若您萌宠是中文名,例如桃子,则您文件夹名为taozi。

 

说明:我们在镜像中内置了“taozi”数据集,包含了一只名叫桃子的小猫的20张照片。如果您不想要准备自己的宠物数据集,但是想要体验容器化弹性部署、模型镜像加速拉取以及 Stable Diffusion 模型训练的过程,您可以直接使用“taozi”数据集来训练。

 

二、查看数据集路径,并保存路径

查看本地数据集路径方法如下。

 

  • 如果您电脑是 Mac 系统:

您可直接键盘 command+C,然后在终端command+V。

举例:

  1. 单击目标文件,如Bob2,键盘同时按下command+C。

基于 ACK Serverless 解锁你家萌宠的 AI 形象_MSE_04

  1. 打开本地终端,键盘同时按下command+V,即可看到文件夹路径,即/Users/XXXX/Downloads/Bob2 (如下截图)。

基于 ACK Serverless 解锁你家萌宠的 AI 形象_Server_05

  • 如果您电脑是 Windows 系统:

您可右键单击文件夹,单击属性,在属性面板中找到目标文件bob所在的位置。例如D:\。

 

基于 ACK Serverless 解锁你家萌宠的 AI 形象_MSE_06

 

快速进入产品控制台

本实验相关云产品

云原生网关 MSE-Higress

容器服务ACK Serverless

更多云产品

云原生数据库 PolarDB PostgreSQL 版

DataV数据可视化

开源大数据平台 E-MapReduce

微服务治理 MSE-Sentinel/OpenSergo

GPU云服务器

云数据传输

RDS MySQL Serverless版

混合云备份 HBR

访问控制 RAM

企业级分布式应用服务 EDAS

可观测可视化 Grafana 版

性能测试 PTS

专有网络 VPC

资源编排 ROS

容器镜像服务 ACR

弹性容器实例

可观测监控Prometheus版

实时数仓Hologres

实时计算Flink版

应用实时监控服务-云拨测

生活物联网平台

表格存储

物联网平台

消息服务 MNS

消息队列 RabbitMQ 版

事件总线 EventBridge

QUICK BI

数据库自治服务 DAS

音视频通信 RTC

云效

云原生多模数据库Lindorm

机器学习PAI

龙蜥操作系统(Anolis OS)

智能开放搜索 OpenSearch

大数据计算服务 MaxCompute

数据湖构建DLF

DataWorks

阿里云ElasticSearch

数据管理 DMS

云数据库RDS PostgreSQL 版

数据传输 DTS

日志服务(SLS)

弹性伸缩

小程序云

NAT网关

全站加速DCDN

视频直播

云数据库Redis版

云数据库MongoDB版

云数据库HBase版

云原生分布式数据库PolarDB-X

CDN

函数计算FC

消息队列RocketMQ版

对象存储OSS

消息队列Kafka版

视频点播

弹性公网IP

云数据库RDS SQLServer版

Serverless应用引擎

云原生数据仓库AnalyticDB MySQL版

云原生关系型数据库PolarDB

容器服务 ACK

GPU云服务器

轻量应用服务器

文件存储NAS

基于 ACK Serverless 解锁你家萌宠的 AI 形象详情

结束实验

 

  • 实验手册
  • 实验报告

 

3. 开通MSE云原生网关并完成授权

一、开通MSE云原生网关
  1. 前往开通MSE云原生网关页面。
  2. 单击确认授权,开通MSE云原生网关。
  3. 在访问控制快速授权对话框中,单击确认授权,完成授权。

 

基于 ACK Serverless 解锁你家萌宠的 AI 形象_MSE_07

二、为 MSE 访问 ECI 授权
  1. 前往MSE访问ECI授权页面。
  2. 单击同意授权,完成MSE访问ECI的授权。

 

基于 ACK Serverless 解锁你家萌宠的 AI 形象_云数据库_08

 


快速进入产品控制台

本实验相关云产品

云原生网关 MSE-Higress

容器服务ACK Serverless

更多云产品

云原生数据库 PolarDB PostgreSQL 版

DataV数据可视化

开源大数据平台 E-MapReduce

微服务治理 MSE-Sentinel/OpenSergo

GPU云服务器

云数据传输

RDS MySQL Serverless版

混合云备份 HBR

访问控制 RAM

企业级分布式应用服务 EDAS

可观测可视化 Grafana 版

性能测试 PTS

专有网络 VPC

资源编排 ROS

容器镜像服务 ACR

弹性容器实例

可观测监控Prometheus版

实时数仓Hologres

实时计算Flink版

应用实时监控服务-云拨测

生活物联网平台

表格存储

物联网平台

消息服务 MNS

消息队列 RabbitMQ 版

事件总线 EventBridge

QUICK BI

数据库自治服务 DAS

音视频通信 RTC

云效

云原生多模数据库Lindorm

机器学习PAI

龙蜥操作系统(Anolis OS)

智能开放搜索 OpenSearch

大数据计算服务 MaxCompute

数据湖构建DLF

DataWorks

阿里云ElasticSearch

数据管理 DMS

云数据库RDS PostgreSQL 版

数据传输 DTS

日志服务(SLS)

弹性伸缩

小程序云

NAT网关

全站加速DCDN

视频直播

云数据库Redis版

云数据库MongoDB版

云数据库HBase版

云原生分布式数据库PolarDB-X

CDN

函数计算FC

消息队列RocketMQ版

对象存储OSS

消息队列Kafka版

视频点播

弹性公网IP

云数据库RDS SQLServer版

Serverless应用引擎

云原生数据仓库AnalyticDB MySQL版

云原生关系型数据库PolarDB

容器服务 ACK

GPU云服务器

轻量应用服务器

文件存储NAS

云服务器ECS

4. 创建 ACK Serverless 集群

  1. 登录容器服务管理控制台,在左侧导航栏选择集群。

基于 ACK Serverless 解锁你家萌宠的 AI 形象_云数据库_09

  1. 在集群列表页面,单击页面右上角的创建集群。

基于 ACK Serverless 解锁你家萌宠的 AI 形象_云数据库_10

  1. 在创建集群页面,单击ACK Serverless集群页签,根据如下说明完成相关配置,其他配置项保持默认值,然后单击下一步:组件配置。

配置项

说明

配置建议

集群名称

填写集群的名称。

knative-sd-demo

集群规格

选择集群规格,支持Pro版和标准版

Pro版

地域

选择集群所在的地域。建议选择华北2(北京)地域。

华北2(北京)

可用区

选择集群所在的可用区。

目前华北2(北京)支持的可用区如下: 华北 2 可用区 C 华北 2 可用区 D 华北 2 可用区 G 华北 2 可用区 E 注意:请您在以上ECI支持GPU的四个可用区进行选择。

华北2 可用区G

API Server访问

ACK Serverless集群默认为API Server创建一个内网SLB实例,您可修改SLB实例规格。更多信息,请参见实例规格

您可设置是否开放使用EIP暴露API Server。

使用EIP暴露API Server

 

基于 ACK Serverless 解锁你家萌宠的 AI 形象_MSE_11

  1. 单击下一步:组件配置,选择Ingress为MSE Ingress,并选中开启 Knative。如您无需使用监控和日志服务等功能,可以取消选中使用阿里云可观测监控 Prometheus 版和使用日志服务,避免产生相关费用。其他配置项保持默认。

基于 ACK Serverless 解锁你家萌宠的 AI 形象_MSE_12

  1. 单击下一步:确认配置,确认配置信息,仔细阅读并选中相关协议,然后单击创建集群。预计等待3分钟。

 

 

基于 ACK Serverless 解锁你家萌宠的 AI 形象_Server_13

 

额外说明:

  1. 若您项目状态均为「通过」,您可忽略下方内容,直接点击文档「下一页」。
  2. 若您之前从未开通过 ACK 产品,以及若您是第一次使用阿里云产品,可能会出现如下2项状态「未通过」提醒。您可根据如下步骤,依次操作。

 

5.1 【服务开通检查】状态「未通过」

基于 ACK Serverless 解锁你家萌宠的 AI 形象_MSE_14

若您界面显示【服务开通检查】状态「未通过」,则点击「容器服务 ACK Pro 版」,跳转到新页面。

基于 ACK Serverless 解锁你家萌宠的 AI 形象_云数据库_15

在新页面勾选服务协议「我已阅读并同意容器服务ACK服务协议」,并点击「立即开通」。

出现如下页面,表示容器服务 ACK Pro 开通成功。

基于 ACK Serverless 解锁你家萌宠的 AI 形象_云数据库_16

回到容器服务控制台页面,点击「重新检查」

基于 ACK Serverless 解锁你家萌宠的 AI 形象_云数据库_17

【服务开通检查】状态显示为「通过」

基于 ACK Serverless 解锁你家萌宠的 AI 形象_MSE_18

 

5.2 【账户状态检查】状态「未通过」

点击用户中心 ,或者点击界面右上角头像,跳转到账号中心页面。

基于 ACK Serverless 解锁你家萌宠的 AI 形象_MSE_19

在账号中心页面查看「实名认证」情况,若您还未实名认证,点击进行认证即可。

基于 ACK Serverless 解锁你家萌宠的 AI 形象_MSE_20

点击页面上方的「费用」,跳转到用户中心首页

5. 安装 CSI 组件

 

  1. 待集群状态为「运行中」,在集群列表页面,单击目标集群knative-sd-demo进入集群信息页面,然后在左侧导航栏,选择运维管理 > 组件管理。

基于 ACK Serverless 解锁你家萌宠的 AI 形象_云数据库_21

  1. 在组件管理页面,单击存储页签,找到csi-provisioner (托管)组件,单击卡片右下方的安装。

基于 ACK Serverless 解锁你家萌宠的 AI 形象_MSE_22

  1. 单击确定完成CSI组件的安装。

 

基于 ACK Serverless 解锁你家萌宠的 AI 形象_云数据库_23


6. 部署并访问 Stable Diffusion 服务

一、Knative 部署 Stable Diffusion 服务

  1. 在集群列表页面,单击目标集群knative-sd-demo进入集群信息页面,然后在左侧导航栏,选择应用 > Knative。

基于 ACK Serverless 解锁你家萌宠的 AI 形象_Server_24

  1. 在Knative页面,单击服务管理页签,然后单击使用模板创建。

基于 ACK Serverless 解锁你家萌宠的 AI 形象_Server_25

  1. 在示例模板下拉列表中,选择 Resouce - Knative Service,删除原有的全部内容,并将以下 YAML 粘贴至模板,然后单击创建。

将会创建一个名为knative-sd-demo的服务。

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata: 
  name: alicloud-disk-efficiency
parameters:
  type: cloud_efficiency
  encrypted: "false"
provisioner: diskplugin.csi.alibabacloud.com
reclaimPolicy: Delete
allowVolumeExpansion: true
volumeBindingMode: Immediate
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: sd-pvc
spec:
  accessModes:
  - ReadWriteOnce
  volumeMode: Filesystem
  resources:
    requests:
      storage: 20Gi
  storageClassName: alicloud-disk-efficiency
---
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
  name: knative-sd-demo
  annotations:
    serving.knative.dev.alibabacloud/affinity: "cookie"
    serving.knative.dev.alibabacloud/cookie-name: "sd"
    serving.knative.dev.alibabacloud/cookie-timeout: "1800"
spec:
  template:
    metadata:
      annotations:
        autoscaling.knative.dev/class: mpa.autoscaling.knative.dev
        autoscaling.knative.dev/maxScale: '1'
        autoscaling.knative.dev/scale-down-delay: '1800s'
        autoscaling.knative.dev/scale-to-zero-pod-retention-period: '1800s'
        autoscaling.knative.dev/targetUtilizationPercentage: "100"
        k8s.aliyun.com/eci-extra-ephemeral-storage: 80Gi
        k8s.aliyun.com/eci-use-specs: 'ecs.gn5-c4g1.xlarge,ecs.gn5i-c8g1.2xlarge,ecs.gn5-c8g1.2xlarge'
    spec:
      containerConcurrency: 5
      initContainers:
      - name: init-sd
        image: yunqi-registry.cn-shanghai.cr.aliyuncs.com/lab/stable-diffusion:v2.0.0-gpu
        command: 
        - sh
        - -c 
        - "cp -n /stable-diffusion-webui/models/Stable-diffusion/v1-5-pruned-emaonly.safetensors /data/"
        volumeMounts:
        - name: sd-data
          mountPath: /data 
      containers:
      - args: 
        - --listen
        command:
        - python3
        - launch.py
        image: yunqi-registry.cn-shanghai.cr.aliyuncs.com/lab/stable-diffusion:v2.0.0-gpu
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 7860
          name: http1
          protocol: TCP
        name: stable-diffusion
        readinessProbe:
          tcpSocket:
            port: 7860
          initialDelaySeconds: 5
          periodSeconds: 1
          failureThreshold: 3
        volumeMounts:
        - name: sd-data
          mountPath: /stable-diffusion-webui/models/Stable-diffusion
      volumes:
      - name: sd-data
        persistentVolumeClaim:
          claimName: sd-pvc

基于 ACK Serverless 解锁你家萌宠的 AI 形象_Server_26

  1. 在服务管理页签,刷新页面后,当knative-sd-demo的状态变为成功时,表明SD服务部署成功。

 

基于 ACK Serverless 解锁你家萌宠的 AI 形象_云数据库_27

二、部署 portal server 并访问 Stable Diffusion 服务

部署观测服务portal-server,用于Stable Diffusion效果展示。

基于 ACK Serverless 解锁你家萌宠的 AI 形象_MSE_28


  1. 在Knative页面,单击服务管理页签,然后单击使用模板创建。

  2. 在示例模板下拉列表中,选择自定义,将以下portal-server压测服务的YAML示例粘贴至模板,然后单击创建。
---
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: portal-server
  name: portal-server
spec:
  replicas: 1
  selector:
    matchLabels:
      app: portal-server
  template:
    metadata:
      labels:
        app: portal-server
    spec:
      serviceAccountName: portal-server
      containers:
        - name: portal-server
          image: registry-vpc.cn-beijing.aliyuncs.com/acs/sd-yunqi-server:v1.0.3
          imagePullPolicy: IfNotPresent
          env:
            - name: MAX_CONCURRENT_REQUESTS
              value: "5"
            - name: POD_NAMESPACE
              value: "default"
          readinessProbe:
            failureThreshold: 3
            periodSeconds: 1
            successThreshold: 1
            tcpSocket:
              port: 8080
            timeoutSeconds: 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: portal-server
spec:
  externalTrafficPolicy: Local
  ports:
    - name: http-80
      port: 80
      protocol: TCP
      targetPort: 8080
    - name: http-8888
      port: 8888
      protocol: TCP
      targetPort: 8888
  selector:
    app: portal-server
  type: LoadBalancer
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: pod-list-cluster-role
rules:
  - apiGroups: [""]
    resources: ["pods"]
    verbs: ["list"]
  - apiGroups: ["networking.k8s.io"]
    resources: ["ingresses"]
    verbs: ["get"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: pod-list-cluster-role-binding
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: pod-list-cluster-role

7. 通过 kubectl 连接集群

一、如果您电脑是Windows系统

如下方法,根据您的偏好,二选一即可。

方法一:终端使用命令行方式安装和设置(此方法适合对于 Kubernetes 较为熟悉的同学)。

单击下载和安装kubectl,并安装至对应的本地客户端机器。

方法二:界面交互方式安装和设置(此方法适合对于 Kubernetes 不太熟悉的同学)。
  1. 下载kubectl最新补丁版 1.28至如下目录。

基于 ACK Serverless 解锁你家萌宠的 AI 形象_Server_29

  1. 在HOME目录下,创建不带后缀名的config文件。
  2. 在任务栏搜索框输入cmd,进入home目录 (例如C:\Users\用户名),输入mkdir .kube创建.kube文件夹。

基于 ACK Serverless 解锁你家萌宠的 AI 形象_MSE_30

  1. 输入cd .kube进入.kube文件夹下。

基于 ACK Serverless 解锁你家萌宠的 AI 形象_Server_31

  1. 输入type nul >config,在.kube文件夹下创建不带后缀名的config文件。

基于 ACK Serverless 解锁你家萌宠的 AI 形象_MSE_32

  1. 设置环境变量。右键单击我的电脑,选择属性,选择高级选项卡,单击环境变量。此处定义Path变量,只需要将kubectl.exe文件放在定义的这个路径下即可。

基于 ACK Serverless 解锁你家萌宠的 AI 形象_MSE_33

  1. 在cmd命令行中输入“kubectl version”,显示版本信息,表示环境变量设置成功。
  2. 复制如下公网访问凭据。
  3. 在集群列表页面,单击目标集群knative-sd-demo进入集群信息页面。
  4. 在集群信息页面,单击连接信息页签,选择公网访问,并复制公网访问凭证。

基于 ACK Serverless 解锁你家萌宠的 AI 形象_Server_34

  1. 确保config文件是没有任何后缀的文件,然后将复制的访问凭据粘贴至如下已创建的config文件中。

基于 ACK Serverless 解锁你家萌宠的 AI 形象_Server_35

基于 ACK Serverless 解锁你家萌宠的 AI 形象_Server_36

  1. 在cmd命令行中输入命令“kubectl get ns“,有预期输出说明已通过kubectl成功连接集群。

基于 ACK Serverless 解锁你家萌宠的 AI 形象_MSE_37

二、如果您电脑是 MacOS 系统

如下方法,根据您的偏好,二选一即可。

方法一:单击在macos系统上安装和设置kubectl,根据文档操作即可(此方法适合对于 Kubernetes 较为熟悉的同学)。
方法二:详细操作指导(此方法适合对于 Kubernetes 不太熟悉的同学)。

使用本地电脑(如个人笔记本),打开终端应用,并按下方文档操作。

基于 ACK Serverless 解锁你家萌宠的 AI 形象_Server_38

安装kubectl工具

如果您的电脑是 Intel 处理器,请复制下方命令,在终端应用中粘贴,并键盘敲回车执行

curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/amd64/kubectl"

举例

打开终端应用,复制上方命令,然后粘贴到终端,并在键盘上敲回车键,执行命令

基于 ACK Serverless 解锁你家萌宠的 AI 形象_Server_39

出现下方结果,代表正在下载安装 kubectl 工具

 

基于 ACK Serverless 解锁你家萌宠的 AI 形象_MSE_40

  1. 如果您的电脑是苹果处理器(如 M1 ),请复制下方命令,在终端应用中粘贴,并键盘敲回车执行
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/arm64/kubectl"

 

配置集群凭证,连接 ACK Serverless 集群

请复制下方命令,在终端应用中粘贴,并键盘敲回车执行

mkdir -p ~/.kube

8. 上传您家萌宠数据集

一、查看 Pod 名称

打开本地终端,复制以下命令并黏贴,敲键盘上回车键执行命令,可查看 Pod 名称。

kubectl get pod #获取Pod名称。

举例:

下图显示两个 pod,包含 Knative-sd-demo 的就是目标 pod,复制该 pod 名称即可(下图红框部分)

基于 ACK Serverless 解锁你家萌宠的 AI 形象_Server_41

 

二、 确认数据集路径

在本实验第一步,即「准备您家萌宠数据集」步骤中,已指导您查看您家萌宠的数据集路径,并保存路径。请您再次确认数据集路径。如果您忘记保存路径,可以基于下方步骤操作即可。

查看本地数据集路径方法如下。

如果您电脑是 Mac 系统:

  • 您可直接键盘 command+C,然后在终端 command+V

 

举例:

  1. 鼠标点击目标文件,如 Bob2,键盘同时按下 command+C

基于 ACK Serverless 解锁你家萌宠的 AI 形象_云数据库_42

2. 打开本地终端,键盘同时按下 command+V,即可看到文件夹路径,即 /Users/XXXX/Downloads/Bob2 (如下截图)

基于 ACK Serverless 解锁你家萌宠的 AI 形象_MSE_43

如果您电脑是 Windows 系统:

您可右键单击文件夹,选择属性,找到目标文件bob所在的位置。例如 D:\

此时,需要先进入对应的目标文件夹下,然后再执行cp命令。

基于 ACK Serverless 解锁你家萌宠的 AI 形象_云数据库_44

 

 

三、上传数据集

在本地终端复制以下命令并黏贴。注意:${local_data_set} 需要替换成您家萌宠的数据集路径,${pod_name}需要替换为您 Stable diffusion 的 pod 名称。

#请将下方 ${local_data_set} 替换为您的萌宠数据集路径。
#请将下方 ${local_data_set} 替换为您 Stable diffusion 的 pod 名称。
kubectl cp ${local_data_set} default/${pod_name}:/data/

举例:

下图红框中,是执行的命令,注意其中「/Users/yaxinli/Downloads/Bob」是替换后的数据集路径,「knative-sd-demo-00001-deployment-b979f7b65-d7dd4」是替换后的 pod 名称。

基于 ACK Serverless 解锁你家萌宠的 AI 形象_云数据库_45

 

四、确认数据集上传成功

在本地终端复制以下命令并黏贴。注意:${pod_name}需要替换为您 Stable diffusion 的 pod 名称。

# 上传完毕后,确认上传是否完成
kubectl exec -it ${pod_name} -c stable-diffusion  -- ls /data/

举例:

下图红框中,是执行的命令,注意其中「knative-sd-demo-00001-deployment-b979f7b65-d7dd4」是替换后的 pod 名

9. 训练您家萌宠模型

一、创建您的萌宠模型

在 Stable Diffusion 模型页面,根据图示操作步骤创建模型。Name 这里建议写您宠物名字,需要为英文,若没有英文名可以输入拼音,例如 bob 或 taozi。

基于 ACK Serverless 解锁你家萌宠的 AI 形象_云数据库_46

模型创建耗时约1分钟,创建成功后Output如下图所示。注意:如果发现超过一分钟还没有出结果,请刷新页面,再次创建。Stable Diffusion 是开源的模型,开源 WebUI 可能会出现不稳定的情况,刷新页面即可。

 

基于 ACK Serverless 解锁你家萌宠的 AI 形象_Server_47

二、训练您家萌宠专属模型

0. 解锁您家萌宠的 AI 形象!

一、使用您家萌宠专属模型生成图片

  1. 在 Stable Diffusion 模型页面左上方,点击刷新按钮,之后选择刚训练出的萌宠模型,如 bob/bob_380_lora_xxxx。

基于 ACK Serverless 解锁你家萌宠的 AI 形象_MSE_48

 

  1. 在界面上的「txt2img」对话框中输入Prompt(即关键词)。如: bob,cat,drink a cup of coffee,very detailed

注意:开源 Stable Diffusion 仅支持英文。以及 prompt 中的「bob,cat」这里请记得替换成您家宠物的名字和物种,如 beila,dog

下方列出一些 prompt 给您参考,您也可以充分发挥您的想象力来创作。

  • bob,cat,wearing a golden crown
  • bob,cat,diving
  • bob,cat,sitting on a table,drinking coffee
  • bob,cat,being an astronaut
  • bob,cat,sitting on beach,enjoying sunset

基于 ACK Serverless 解锁你家萌宠的 AI 形象_Server_49

 

二、下载生成的图片,并提交作品

 

基于 ACK Serverless 解锁你家萌宠的 AI 形象_云数据库_50

保存图片,并访问【萌宠 AI 变身秀】页面,提交作品

  1. 选择已创建的模型。如 bob

基于 ACK Serverless 解锁你家萌宠的 AI 形象_MSE_51

  1. 在Settings页面,根据如下截图配置模型参数。

基于 ACK Serverless 解锁你家萌宠的 AI 形象_云数据库_52

  1. 在Concepts页面,配置数据集路径Dataset Directory和一些文件关键字信息。注意:/data/是固定的,您输入即可,但是「Bob」需要替换成您自己的数据集名称,并且请注意大小写。如果您忘记了数据集名称,可以回到「上传您家萌宠数据集」步骤中,根据文档再次查看。

 

第3、4、5步,输入您宠物名字(拼音),以及宠物种类,如宠物叫 Bob,是猫,所以输入「bob,cat」。如您宠物叫贝拉,是狗,那就输入「beila,dog」。

基于 ACK Serverless 解锁你家萌宠的 AI 形象_Server_53

  1. 配置完成后单击Train,开始训练。训练时间的长短,取决于图片数据集大小。一般来说,格式不是太大的图片,训练大约30-40分钟。

基于 ACK Serverless 解锁你家萌宠的 AI 形象_云数据库_54

  1. 当Output区域,出现Training finished.Total lifetime steps表明训练已经完成。

 

基于 ACK Serverless 解锁你家萌宠的 AI 形象_MSE_55

特别提醒:

开源 Stable Diffusion 的 WebUI 可能会出现不稳定的情况,训练时页面有可能会卡住,您可以执行以下命令,通过日志查看训练进程。

替换以下 ${pod_name} 为您当前Pod的名称,您可以通过执行命令 kubectl get pod 获取当前 Pod 的名称。

kubectl logs ${pod_name} -c stable-diffusion

等待Steps为100%时,表明训练完成。

 

基于 ACK Serverless 解锁你家萌宠的 AI 形象_Server_56

 

称。

执行成功后,可以看到返回结果中,包含数据集名字,如下图红色箭头所指,包含 Bob,代表 Bob 数据集已上传成功。

 

基于 ACK Serverless 解锁你家萌宠的 AI 形象_MSE_57

P.S. 「taozi」是内置的数据集,包含了一只名叫桃子的小猫的20张照片。如果您不想要准备自己的宠物数据集,但是想要体验容器化弹性部署、模型镜像加速拉取以及 Stable Diffusion 模型训练的过程,您可以直接使用 taozi 数据集来训练。

 

 

 

vi ~/.kube/config

举例

  1. 打开终端应用,复制上方命令,然后粘贴到终端,并在键盘上敲回车键,执行命令

基于 ACK Serverless 解锁你家萌宠的 AI 形象_Server_58

  1. 出现以下结果,即打开空白文件

基于 ACK Serverless 解锁你家萌宠的 AI 形象_云数据库_59

基于 ACK Serverless 解锁你家萌宠的 AI 形象_MSE_60

打开容器服务控制台

  1. 在集群列表页面,单击目标集群knative-sd-demo进入集群信息页面。
  1. 在集群信息页面,单击连接信息页签,选择公网访问,并复制公网访问凭证。

打开终端应用,将复制好的集群凭证,粘贴(command+c,command+v)至终端

举例

如下图

基于 ACK Serverless 解锁你家萌宠的 AI 形象_Server_61

保存并退出(按下键盘ESC键,然后输入:wq,即可完成保存并退出 )。注意:输入「:wq」时要切换成英文输入法,否则可能产生无法输入或执行错误的情况。

举例

基于 ACK Serverless 解锁你家萌宠的 AI 形象_MSE_62

在终端中输入命令“kubectl get ns“,有预期输出说明已通过kubectl成功连接集群。

 

基于 ACK Serverless 解锁你家萌宠的 AI 形象_MSE_63

 

subjects: - kind: ServiceAccount name: portal-server namespace: default --- apiVersion: v1 kind: ServiceAccount metadata: name: portal-server namespace: default
  1. 在左侧导航栏,选择网络 > 服务。

基于 ACK Serverless 解锁你家萌宠的 AI 形象_Server_64

  1. 在服务页面,查看portal-server服务,在外部端点列下获取访问IP。

基于 ACK Serverless 解锁你家萌宠的 AI 形象_Server_65

  1. 点击您界面 portal server IP 123.56.XXXX 直接跳转,或在浏览器中输入http://123.56.XX.XX,然后在该页面单击Stable Diffusion跳转至Stable Diffusion访问页面。

基于 ACK Serverless 解锁你家萌宠的 AI 形象_Server_66

注意:这个界面的 pod status 最开始是黄色,代表 pod 启动中,等变绿代表 pod 已起来。等 Ready :true 时,代表应用已启动。一般等待 1-2 分钟即可正常打开 Stable Diffusion 界面。

基于 ACK Serverless 解锁你家萌宠的 AI 形象_MSE_67

点击充值即可。由于实验涉及到的产品为后付费,要求账户余额不低于100元。若您体验完实验后,不需要使用其他产品,您也可以随时进行提现。

基于 ACK Serverless 解锁你家萌宠的 AI 形象_MSE_68

回到容器服务控制台页面,点击「重新检查」

基于 ACK Serverless 解锁你家萌宠的 AI 形象_MSE_69

【服务状态检查】显示「通过」,然后勾选服务协议,并点击创建集群。

 

基于 ACK Serverless 解锁你家萌宠的 AI 形象_MSE_70


负载均衡SLB

云数据库RDS MySQL版

 

云服务器ECS

负载均衡SLB

云数据库RDS MySQL版

1. 释放资源

注意:当您执行下操作释放全部资源,您的萌宠专属模型,以及未下载的图片,均会丢失。

当您释放资源时,请切记仔细按照文档每一步完成全部资源释放。

 

 

 

一、释放容器服务ACK Serverless集群

  1. 在集群列表页面,找到您已创建的ACK Serverless集群,在右侧操作列,选择更多 > 删除。

基于 ACK Serverless 解锁你家萌宠的 AI 形象_MSE_71

  1. 在删除集群面板中,选中同时删除集群下的ALB资源、同时删除集群下的PrivateZone资源、我已知晓以上信息并确认删除集群,然后单击确定。

基于 ACK Serverless 解锁你家萌宠的 AI 形象_MSE_72

  1. 输入手机验证码,然后单击确定,ASK Pro集群删除完成。

 

二、释放MSE云原生网关

  1. 登录MSE管理控制台
  2. 在左侧导航栏,选择云原生网关 > 网关列表。

基于 ACK Serverless 解锁你家萌宠的 AI 形象_Server_73

  1. 在网关列表页面,切换至网关所在地域华北2(北京)

基于 ACK Serverless 解锁你家萌宠的 AI 形象_MSE_74



  1. 然后在页面右侧的操作列,单击
  2.  图标,然后单击释放实例。

 

基于 ACK Serverless 解锁你家萌宠的 AI 形象_MSE_75

  1. 在释放面板中,选中是否同时删除网关创建时代购的SLB实例,然后单击确定,MSE云原生网关删除完成。

基于 ACK Serverless 解锁你家萌宠的 AI 形象_MSE_76

三、释放NAT网关

  1. 登录NAT网关管理控制台
  2. 在左侧导航栏,选择概览,选择 NAT 网关,点击本次实验创建的华北2(北京)实例

基于 ACK Serverless 解锁你家萌宠的 AI 形象_MSE_77

 

  1. 点击页面更多操作,点击删除

基于 ACK Serverless 解锁你家萌宠的 AI 形象_MSE_78

2. 附:常见问题

问题1:Pod无法创建,报错NoStock

问题现象

Warning NoStock 65s EciService [eci.containergroup]Create ECI failed because the specified instance is out of stock. It is recommended to use the multi-zone creation function to avoid the risk of stockout. More info: https://help.aliyun.com/document_detail/157290.html

解决方案:

您可以通过API查询可用库存情况。具体操作,请参见DescribeAvailableResource - 查询可用ECS实例规格

基于 ACK Serverless 解锁你家萌宠的 AI 形象_云数据库_79

修改ECI配置,将Pod创建到资源充足的可用区。具体操作,请参见多可用区创建Pod

 

问题2:训练页面刷新后无法重新进入

出现此现象,仅前端页面无法显示,后端训练还在继续。

您可以通过执行以下命令,查看训练进度。

kubectl logs stable-diffusion-0|grep "Steps:"

等待训练进度为100%时,单击模型刷新按钮,即可查看训练完成的模型。

 

 

问题3:如需重新训练新的模型,但Pod已缩容,该如何上传数据集?

30分钟如果没有请求,Pod就会自动缩容到0。此时您可以重新登录SD服务页面,触发Pod重建,然后将数据集上传到重建后的Pod中进行训练。

 

 

问题4:如果SD页面出现如下错误怎么办?

如果您训练过程中,出现如下页面提示,可等待刷新页面后,再去查看训练进度如果是100%,说明训练已完成,可直接进行下一步生成图片的操作。

 

基于 ACK Serverless 解锁你家萌宠的 AI 形象_Server_80

 

如果您遇到任何

  1. 在删除网关面板中,选中强制删除(删除 NAT 网关及其包含资源),然后单击确定,NAT网关删除完成。

 

基于 ACK Serverless 解锁你家萌宠的 AI 形象_云数据库_81

 

请您再次按照文档每一步检查,确认完成全部资源释放。