简书不活跃,欢迎到这里捉到我,查看更多干货。
针对Kubeflow组件较多,容易搞不清每个组件是干什么的,本文先对Kubeflow
进行一个系统的概括,让大家明白各个组件分别的用处,并对组件间的关系进行理顺,帮助大家合理快速的选择自己需要的组件,随后会对每个组件的底层架构和流程分别进行详细的介绍和剖析,供大家针对性的进一步学习。
什么是Kubeflow?
Kubeflow是Kubernetes
的机器学习工具包。Kubeflow
是运行在K8S
之上的一套技术栈,这套技术栈包含了很多组件,组件之间的关系比较松散,我们可以配合起来用,也可以单独用其中的一部分。下图是官网显示Kubeflow
作为在Kubernetes
上安排ML系统组件的平台:

我们先大体看一眼
Kubeflow
都有哪些组件,是不是很多?接下来我会带大家逐步了解每个组件都有哪些作用。
当我们开发和部署ML系统时,ML工作流程通常包括几个阶段。开发ML系统是一个反复的过程。我们需要评估ML工作流各个阶段的输出,并在必要时对模型和参数进行更改,以确保模型不断产生所需的结果。
为了便于理解,下图按顺序显示了工作流程阶段,并将
Kubeflow
添加到工作流中,显示在每个阶段都有哪些
Kubeflow
组件有用。工作流末尾的箭头指向流程,以表示流程的迭代性质:


-
在实验阶段,我们将基于初始假设来开发模型,并反复测试和更新模型以产生所需的结果:
- 确定我们要ML系统解决的问题。
- 收集和分析训练ML模型所需的数据。
- 选择一个ML框架和算法,并为模型的初始版本编码。
- 试验数据并训练模型。
- 调整模型超参数以确保最有效的处理和最准确的结果。
-
在生产阶段,我们将部署执行以下过程的系统:
- 将数据转换为训练系统所需的格式(为了确保我们的模型在训练和预测过程中行为始终一致,转换过程在实验阶段和生产阶段必须相同)。
- 训练ML模型。
- 服务模型以进行在线预测或以批处理模式运行。
- 监督模型的性能,并将结果输入到我们的程序中,以调整或重新训练模型。
由此可以看出,Kubeflow
的目标是基于K8S
,构建一整套统一的机器学习平台,覆盖最主要的机器学习流程(数据->特征->建模->服务→监控),同时兼顾机器学习的实验探索阶段和正式的生产环境。
Kubeflow组件
Kubeflow
提供了一大堆组件,涵盖了机器学习的方方面面,为了对Kubeflow
有个更直观深入的了解,先整体看一下Kubeflow
都有哪些组件,并对Kubeflow
的主要组件进行简单的介绍:
- Central Dashboard:
Kubeflow
的dashboard
看板页面 - Metadata:用于跟踪各数据集、作业与模型
- Jupyter Notebooks:一个交互式业务IDE编码环境
- Frameworks for Training:支持的ML框架
- Chainer
- MPI
- MXNet
- PyTorch
- TensorFlow
- Hyperparameter Tuning:
Katib
,超参数服务器 - Pipelines:一个ML的工作流组件,用于定义复杂的ML工作流
- Tools for Serving:提供在
Kubernetes
上对机器学习模型的部署- KFServing
- Seldon Core Serving
- TensorFlow Serving(TFJob):提供对
Tensorflow
模型的在线部署,支持版本控制及无需停止线上服务、切换模型等 - NVIDIA Triton Inference Server(Triton以前叫TensorRT)
- TensorFlow Batch Prediction
- Multi-Tenancy in Kubeflow:Kubeflow中的多租户
- Fairing:一个将
code
打包构建image
的组件
Kubeflow
中大多数组件的实现都是通过定义CRD
来工作。目前Kubeflow
主要的组件有: - Operator是针对不同的机器学习框架提供资源调度和分布式训练的能力(
TF-Operator
,PyTorch-Operator
,Caffe2-Operator
,MPI-Operator
,MXNet-Operator
); - Pipelines是