[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博客

相关推荐
陌上阳光2 小时前
docker搭建ray集群
docker·容器·ray
这就是佬们吗2 小时前
初识 docker [上]
java·开发语言·笔记·docker·容器
FJW0208143 小时前
负载均衡集群HAproxy
linux·服务器·云原生·负载均衡
BigBigHang3 小时前
【docker】DM8达梦数据库的docker-compose以及一些启动踩坑
数据库·docker·容器
云道轩3 小时前
使用Docker在Rocky Linux 9.5上在线部署LangFlow
linux·人工智能·docker·容器·langflow
伟大的大威3 小时前
Docker 部署 Supabase并连接
运维·docker·容器
杰克逊的日记3 小时前
k8s的csi对接GPFS
云原生·容器·kubernetes·存储·gpfs
岚天start4 小时前
云服务器以域名形式访问机房Kubernetes集群服务之解决方案
nginx·docker·kubernetes·kubesphere·解决方案·云服务器·机房
容器魔方8 小时前
「中科类脑」正式加入 Karmada 用户组!携手社区共建多集群生态
云原生·容器·云计算
终端行者8 小时前
k8s之ingress定义https访问方式
容器·https·kubernetes