Kubeflow:云计算和机器学习的桥梁
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

3.3 Kubeflow 的核心组件

Kubeflow 现在已经有三十多个项目,其中比较活跃的核心项目有近二十个,并且不断有新的项目产生。Kubeflow 的核心组件如图3-5 所示。

本节先对Kubeflow 的核心组件进行简要概述,详细讲解将在后续章节中进行。

1.Operator

Kubeflow 的作用是支持机器学习框架在Kubernetes 云平台上运行,它通过提供对应的Operator、基于Kubernetes 的Pod/Headless Service 等基础资源为机器学习框架提供与之相配的更高层次的、自定义的资源。Kubeflow 提供的主要Operator 如图3-6 所示。根据图3-6 可知,Kubeflow 支持大部分机器学习框架,如PyTorch、TensorFlow、Caffe2、MXNet、MPI、XGBoost 等。其中,TF Operator 为TensorFlow 提供了Job 维度的生命周期管理能力,以满足TensorFlow 进行分布式训练的资源和拓扑需求,实现了一键式部署TensorFlow 训练任务的效果。

img

图3-5 Kubeflow 的核心组件

img

图3-6 Kubeflow 提供的主要Operator

目前,Kubeflow 社区支持的Operator 有7 个,分别是TF Operator、PyTorch Operator、MPI Operator、XGBoost Operator、MXNet Operator、Caffe2 Operator、Chainer Operator,其中使用最多的是TF Operator 和PyTorch Operator,这两个Operator 会在安装Kubeflow时绑定安装。

2.Kubeflow Pipelines

Kubeflow Pipelines 类似一个管道,提供了一个工作流(Workflow)方案,将机器学习中的应用代码按照流水线的方式编排,形成可重复的工作流,并且提供平台相关的工作,如编排、部署、管理这些端到端的机器学习工作流。Kubeflow Pipelines 可以有效地连接机器学习的各个步骤(如数据采集、数据检查、数据预处理、模型分析、模型检验、服务发布等),并且保存上一步的结果供后续步骤使用,也可以用于对比不同的机器学习效果(例如,设置不同的超参得到不同的模型,对比这些模型)。

3.Metadata

Metadata 项目是指跟踪和管理Kubeflow 机器学习工作流的元数据。元数据是关于执行(运行)、模型、数据集和其他组成机器学习工作流组件的输入、输出的文件和对象信息。Metadata 具有类似于modelDB 的功能,但不是基于modelDB 开发的,而是一个全新的实现。

4.KFServing

KFServing 是用于发布服务、监控和解释模型、升级并回滚服务的组件。经过训练,在得到满足性能要求的模型之后,在一般情况下,需要对外发布服务,使模型发挥作用。在目前的机器学习领域,可以跨框架快速发布服务的组件有Seldon、KFServing 等,KFServing 属于后起之秀,并且有苗头发展成跨框架快速发布模型的标杆技术。因为KFServing 是基于Istio/Knative 开发的,有着天然的Serverless 优势。目前KFServing 的功能不仅是服务的发布和管理,还包括模型解释、预测之后的行为定义等。

5.Katib

Katib 是超参调优和神经架构搜索的原生Kubernetes 系统,该系统是受Google 的vizier项目启发而设计的,它支持多个机器学习框架,如TensorFlow、MXNet、PyTorch 等。

6.Manifests

Manifests 是基于kustomize 安装Kubeflow 的工具包。

7.Kfctl

Kfctl 是部署和管理Kubeflow 的工具。

8.Fairing

Kubeflow Fairing 是一个Python 库,用于帮助数据科学家和机器学习工程师将机器学习的镜像构建、模型训练和服务发布等流程快速运行到本地或云平台上,部署的平台可以是基于Kubernetes 的混合云平台,也可以是公有云平台。目前Kubeflow Fairing 支持大部分公有云平台,如AWS 云服务、Google Cloud、微软云、IBM Cloud 等。

9.Kubebench

Kubebench 是在Kubernetes 集群中运行机器学习Benchmark 作业的组件,可以利用Kubeflow 的TFJob 管理功能及基于Argo 的工作流程实现基准测试。由于Kubebench 适用于Kubernetes 云平台,因此基于Kubebench 的基准测试可以很方便地迁移到任何Kubernetes 云平台上运行。Kubebench 可以在大规模的工作负载和各个机器学习框架、不同的硬件平台上进行基准测试,或者在相同的维度下,对比各个机器学习框架或不同的硬件平台的运行结果。其他组件将在后续章节中讲解。

总而言之,Kubeflow 主要用于解决机器学习在Kubernetes 云平台上运行的各个环节、各个方面的问题。Kubeflow 的脑图如图3-7 所示。

img

图3-7 Kubeflow 的脑图