如何创建用于模型再训练和推理的 ML 管道 [Kubernetes]

How to create an ML pipeline for model retraining and inference [Kubernetes]

我正在执行一项任务,我需要设计一个 ML 管道以在 Kubernetes

上进行模型再训练和推理

我阅读了一些文章并观看了一些教程,在这些教程的帮助下我创建了 2 个应用程序,如下所述

我不知道如何将最新训练的模型从 CronJob 转移到推理烧瓶应用程序

我是 Kubernetes 的新手任何建议都会有很大帮助

我们可以利用Google永久磁盘Kubernetes Volume and Kubernetes Persistent Volume Claim来做到这一点。

我尝试复制一个场景,其中 Cronjob 每次创建 Pod 时都会使用当前时间和日期更新文本文件。然后我在 Cronjob 之外创建了一个单独的 Pod 来访问这个文本文件并且成功了。以下是我遵循的步骤,

  1. 使用以下 gcloud 命令在 GCP 上创建标准永久磁盘,

    gcloud compute disks create pd-name   --size 500G   --type pd-standard   --zone us-central1-c
    
  2. 然后使用上述 PD 和 Persistent Volume Claim 创建一个 Kubernetes Persistent Volume,这样 pods 就可以使用以下配置在 Persistent Volume 上请求存储,

config.yaml:

apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv
spec:
  storageClassName: "test"
  capacity:
    storage: 10G
  accessModes:
    - ReadWriteOnce
  claimRef:
    namespace: default
    name: pv-claim
  gcePersistentDisk:
    pdName: pd-name
    fsType: ext4
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: pv-claim
spec:
  storageClassName: "test"
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 10G  
  1. 使用 PVC 配置部署一个 Cronjob,它使用以下配置将当前时间和日期写入存储在 PV 上的文本文件,

Cronjob.yaml:

apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: cron
spec:
  schedule: "*/1 * * * *"
  jobTemplate:
    spec:
      template:
        spec:
          volumes:
            - name: pv-storage
              persistentVolumeClaim:
                claimName: pv-claim
          containers:
            - name: container
              image: nginx
              volumeMounts:
                - mountPath: "/usr/data"
                  name: pv-storage
              command:
              - /bin/sh
              - -c
              - date >> /usr/data/msg.txt
          restartPolicy: OnFailure

Configure a Pod to Use a PersistentVolume for Storage 了解更多信息。

  1. 部署具有相同 PVC 配置的 Pod,以使用以下配置检查 Cronjob pods 添加的数据是否通过此 Pod 可见,

Readpod.yaml:

kind: Pod
apiVersion: v1
metadata:
  name: readpod
spec:
  volumes:
    - name: pv-storage
      persistentVolumeClaim:
       claimName: pv-claim
  containers:
    - name: read-container
      image: nginx
      volumeMounts:
        - mountPath: "/usr/data"
          name: pv-storage
  1. 然后使用kubectl exec命令将shell获取到上述Pod上的运行容器,通过使用以下命令,我们应该能够查看 cronjob 在其中更新时间和日期的文本文件。

         $ kubectl exec -it  readpod -- /bin/bash
         $ cd usr/data
         $ cat msg.txt
    

您可以利用上述概念并根据您的用例修改配置。