3.1.3 初识Kubeflow Pipeline
除了提供实现特定功能的专门参数外,Kubeflow还包括Pipeline组件(https://oreil.ly/QZjNV),用于编排机器学习应用程序的执行。Pipeline实现基于Argo Workflow(https://oreil.ly/6PsLK),这是一个开源的、容器原生的Kubernetes工作流引擎。Kubeflow安装了所有的Argo组件。
在高层次上,Pipeline的执行包含以下组件(https://oreil.ly/QZjNV):
Python SDK
你可以使用Kubeflow Pipeline领域专用语言(DSL)(https://oreil.ly/c2DRj)创建组件或指定Pipeline。
DSL编译器
DSL编译器(https://oreil.ly/5o2Yw)将Pipeline的Python代码转换为静态配置(YAML)。
Pipeline Service
Pipeline Service从静态配置中创建一个Pipeline运行。
Kubernetes资源
Pipeline Service调用Kubernetes API服务器来创建必要的Kubernetes自定义资源定义(CRD)(https://oreil.ly/5wPjy)来运行Pipeline。
编排控制器
一组编排控制器执行Kubernetes资源指定Pipeline所需的容器。容器在虚拟机上的Kubernetes pod中执行。一个示例控制器是Argo Workflow(https://oreil.ly/leX50)控制器,它负责编排任务驱动的工作流。
制品存储
Kubernetes pod存储以下两类数据。
元数据
实验、作业、运行、单标量指标(一般为排序和过滤而汇总)等。Kubeflow Pipeline将元数据存储在MySQL数据库中。
制品
Pipeline包、视图、大规模指标(如时间序列)通常用于调试和检测单个运行的性能。Kubeflow Pipeline将制品存储在MinIO服务器(https://docs.minio.io)、Google Cloud Storage(GCS)(https://oreil.ly/k1bQz)或Amazon S3(https://aws.amazon.com/s3)等存储库中。
Kubeflow Pipeline让你拥有了让机器学习作业重复持续进行并处理新数据的能力。它在Python中提供了一个直观的DSL来编写Pipeline。随后,Pipeline会被编译成现有的Kubernetes工作流引擎(目前是Argo工作流)。Kubeflow的Pipeline组件使得用于构建端到端机器学习项目的所需工具更加容易使用和协调。除此之外,Kubeflow可以同时跟踪数据和元数据,提高我们对作业的理解能力。例如,在第5章中,我们使用这些制品来理解模式。Pipeline还可以公开内置的机器学习算法的参数,方便Kubeflow进行调优。