[Kubernetes]Kubeflow Pipelines - 基本介绍与安装方法

1. 背景

近些年来,人工智能技术在自然语言处理、视觉图像和自动驾驶方面都取得不小的成就,无论是工业界还是学术界大家都在惊叹一个又一个的模型设计。但是对于真正做过算法工程落地的同学,在惊叹这些模型的同时,更多的是在忧虑如果快速且有效的将这些模型落地到业务中,并产生商业价值。正如Google 《Hidden Technical Debt in Machine Learning Systems》中说的,ML code仅是Machine Learning systems中的一小部分,像数据收集、特征抽取、配置管理、资源管理、模型部署、模型监控等同样十分的重要。

当我们看到一个典型的机器学习系统由这么多组件或子系统构成时,我们会进而想到另一个问题:这么多子系统应该如何高效的配合起来?

答案是机器学习工作流。 通过机器学习工作流,可以有效的将各个子系统串联起,每一个业务场景可以通过一个端到端的机器学习工作流来描述,同时通过工作流也可以追溯每一次模型产出或模型上线的元信息(例如数据、配置、base model等)。

在工业界,比较成熟的机器学习工作流是Google 的Vertex AI Pipeline和Amazon的Sagemaker Pipeline,大家如果感兴趣可以自行去他们的官网体验。

本文将要介绍的是开源机器学习工作流的解决方案Kubeflow Pipelines(注:Vertex AI Pipeline是基于Kubeflow Pipelines进行改造而来的)。

2. Kubeflow Pipelines

Kubeflow是一个基于云原生的Machine Learning Platform,旨于快速在kubernetes环境中构建一套开箱即用的机器学习平台。Kubeflow由多个子系统构成,覆盖了机器学习声明周期的全流程。

  • 在训练阶段:Kubeflow针对不同机器学习框架提供了对应operator,方便用户在kubernetes环境中提交分布式训练任务;
  • 在部署阶段:Kubeflow同样提供了多种的部署框架让用户根据自己的业务需求来选择;
  • 在监控阶段:Kubeflow提供了Metadata和TensorBoard来对模型的Artifact、血缘和性能进行分析;

针对于机器学习上述阶段,Kubeflow提供了Kubeflow Pipeline工作流平台,用于将机器学习的各个阶段进行串联,同时提供了下述能力:

  • 任务编排:Kubeflow Pipeline通过argo提供workflow的能力,能够实现丰富多样的DAG 工作流,用户可以根据的业务需求定义、管理和复用自己工作流;
  • 实验管理:Kubeflow Pipeline通过Experiments的能力,能够展示和对比不同实验参数(例如:模型超参)下Pipeline的运行结果,用户可以根据结果来对工作流任务进行调优;
  • 模型追溯:Kubeflow Pipeline通过Tracking的能力,能够记录每一次Pipeline运行中每个step的输入和输出信息,用户可以根据记录的内容进行问题排查或模型调优;

3. 部署安装

Kubeflow Pipelines有两种安装模式:

  • 模式一:安装全套Kubeflow Platform,此时会同时安装Kubeflow Pipelines
  • 模式二:独立安装Kubeflow Pipelines,本文介绍此种情况比如使用

安装 kubeflow pipeline 1.8.0 版本

(K8S必须安装coreDNS服务)

https://github.com/kubeflow/pipelines/tree/1.8.0

https://github.com/kubeflow/pipelines/tree/1.8.0/manifests/kustomize

 安装方法如下图: 

Install:

KFP_ENV=platform-agnostic
kubectl apply -k cluster-scoped-resources/
kubectl wait crd/applications.app.k8s.io --for condition=established --timeout=60s
kubectl apply -k "env/${KFP_ENV}/"
kubectl wait pods -l application-crd-id=kubeflow-pipelines -n kubeflow --for condition=Ready --timeout=1800s
kubectl port-forward -n kubeflow svc/ml-pipeline-ui 8080:80

Now you can access Kubeflow Pipelines UI in your browser by http://localhost:8080.

要下载对应image

安装成功后:

 (所有Pod都需要Running)

1. mysql与minio 因为依赖storage,要修改 对应的deployment里的volumn

4 服务卸载

4.1 namespace范围资源卸载
kubectl kustomize env/platform-agnostic | kubectl delete -f -
4.2 cluster范围资源卸载
kubectl delete -k cluster-scoped-resources/

二进制安装kubernetes 1.23.2_kubectl二进制安装_老段工作室的博客-CSDN博客

二进制安装 k8s v1.25.0_基于ubuntu 20.04 安装二进制k8s 1.25_给你对象一枪的博客-CSDN博客

猜你喜欢

转载自blog.csdn.net/zwqjoy/article/details/132205408