kubeflow初探(一):kubeflow综述

kubeflow是基于kubernetes的组件,因此它设计的本身就是面向工程化的。在软件公司工作的打工人应该都知道,软件的开发周期很长,很多工作是枯燥、重复的工作,完全可以通过机器自动实现,因此有了传统的自动化流水线、CI/CD,同时也为提供了大量的运维、测试岗位。而人工智能的开发这方面,开始却和流水线不太相容。AI开发过程中使用到的GPU资源的分配,AI开发过程中长时间的训练、模型迭代、参数调优,甚至训练数据清晰、标注等工作,让AI的开发过程掺杂的更多的人为因素。但“懒”是生产力进步的重要推手,我们总想在人工智能领域多多少少的也实现CI/CD,那么类似的AI自动化流水线就出现了。

kubeflow也许不是你作为AI流水线开发的最优解,他是依场景而定的,类似的还有ML Flow,Airflow等。我选择kubeflow也是基于我们的情况来确定的。

kubeflow的功能较多,包含的组件也比较广泛,在此可参照官方文档(由于很多官方文档的地址会发生变化,因此我在写的过程中会尽量少的放连接)。我将由纯技术的角度对kubeflow进行切入。kubeflow的前端使用的是TS,后端使用的是Go和Python,语言跨度虽大,但都是非常流行、先进的编程语言了。

由于kubeflow是基于kubernetes的组件,因此他的构成也是基于k8s生态下组件的开发,可以说kubeflow是众多k8s优秀组件的拼装,工程方面主要涉及Istio、Argo、Katib、MinIo、MySQL、Dex等,开发(主要是AI)方面涉及Jypyter、Tensorflow、Pytorch、sklearn、tfserving等(排名不区分复杂度和优先级)。kubeflow通过上述组件的组合,构成了一个较为完整的平台,可以单独进行使用,也可基于kubeflow进行二次开发。顺便提一下,Google目前也在布局AI开发平台相关的工作,其基础也是kubeflow(自己基于自己的开源进行产品化开发也算是Google的老套路了)。

目前AI学习流水线的相关研发还处在初级阶段,由于该研究过程中横向跨度大,且偏向于工程化,因此能够深入研究的人较少,后面我会对用到的模块逐个进行分析,同时也会对调试过程进行记录。

你可能感兴趣的:(深度学习,python,golang)