在 Kubeflow 中, 已经介绍了 Kubeflow
的安装, 那么在使用前,我们应该先知道 Kubeflow
是什么, 以及可我们为什么需要使用 Kubeflow
。
那么这一次我尝试从我的角度来谈一谈这个。
对于 官网 的定义:
Kubeflow is the machine learning toolkit for Kubernetes.
我们可以看出 Kubeflow
是一个基于 kubernetes
的机器学习工具集。 这也就说明了对于 Kubeflow
, 我们应该认识到几点:
-
Kubeflow
是基于Kubernetes
的, 也就是说我们应该在Kubernetes
上使用Kubeflow
。 -
同时
Kubeflow
的基础是Kubernetes
, 其中很多实现的原理都是Kubernetes
, 所以了解Kubernetes
对于Kubeflow
会有很大的益处。 -
最为关键的是,
Kubeflow
只是个工具集, 本身并不提供任何的功能。 而是通过Kubeflow
部署的各种工具帮助我们进行机器学习。 所以我们应该着眼于Kubeflow
中的各种工具。
那么接下来我们就来看一下 Kubeflow
中究竟有哪些工具。
首先我试着整理了一下 Kubeflow
中的工具, 参照下图:
根据上面的图,我们来分别说明一下其中几个工具的作用:
在上图,我们可以看到 pipeline
的前面有个 * , 这是因为在 Kubeflow v0.1.3
之后, pipeline
已经成为了 Kubeflow
的核心组件了。
pipieline
为什么能成为Kubeflow
的核心组件?
这就要说到 Kubeflow
这个项目的成立目的了。Kubeflow
主要是为了简化在 Kubernetes
上面运行机器学习任务的流程, 最终希望能够实现一套完整可用的流水线, 来实现机器学习从数据到模型的一整套端到端的过程。 所以从这个层面来说,pipeline
能够成为 Kubeflow
的核心组件一点也不意外。
pipeline
是什么?
pipeline
是一个工作流平台,能够编译部署机器学习的工作流。对于其功能和目标可以前往 官网。 这次我们就不过多的说明这些了。
pipeline
的最终显示效果如下图:
pipeline
是如何工作的呢?
在上图我们可以看到, pipeline最终建立的是一个工作流,工作流的原理就是,每一个组件都定义好自己的输入和输出,然后根据输入和输出关系确定工作流的流程。所以工作流的方式对于组件的复用可以起到很好的作用。
对于机器学习框架,每一个都有很多的内容可以说。也都有对应的文档可以参考,所以由于文章关注点不在于此,所以这里就不在赘述。
对于模型的超参调优,一直都是非常重要的内容。所以 Kubeflow
集成了一个超参调优工具 Katib
。 值得一提的是, Katib
并不依赖于特定的机器学习框架。
通过指定超参的类型和范围, Katib
会跑许多个训练任务,并保存它们的结果。
如果对 CNCF
的比较感兴趣的话,可以知道 Istio
是一个非常有名的服务网格。 而 Kubeflow
主要利用 Istio
来进行资源的管理和进行运维, 例如查看相关资源的指标, 权限的验证, 资源的分配和测试等等。 这样对于我们运行和维护起来会更加方便。
这些都是为了方便机器学习的科学家和工程师们提供的工具,由于个人的理解有限,就不在此多做描述了。具体的可以参考 Kubeflow
官网或者相应的组件官网。
看完上面这些,我们可以大致了解 Kubeflow
的服务对象其实是希望在 Kubernetes
上部署机器学习任务的科学家或者工程师。所以虽然 Kubeflow
提供了很多有用的工具,但是并不适用于所有的机器学习场景。而且 Kubeflow
主要关注于训练的过程, 对于其他方面,则应该找寻更为合适的框架或者平台。
Kubeflow
目前还是比较新的项目,还有很多可以优化的。例如更加方便的使用方式,统一的界面管理等等, 但是对于想要接触开源项目以及想要了解 Kubernetes
的人来说,都是一个很不错的项目。可以去看一看或者使用一下试试。