架构

(本文翻译kubeflow官网)

Kubeflow是为那些想要建立和实验机器学习管道的数据科学家提供的平台。Kubeflow也适用于那些希望将机器学习系统部署到各种环境中进行开发、测试和生产级服务的ML工程师和运维团队。

概念综述

Kubeflow是Kubernetes的ML工具箱

下图显示了Kubeflow作为一个平台,在Kubernetes之上编排你的机器学习系统的组件。

Kubeflow是建立在Kubernetes之上的系统,用于部署、扩展和管理复杂系统。

使用Kubeflow的配置页面,你可以指定工作流所需的ML工具。然后,你可以将工作流部署到各种云、本地和企业内部的平台,用于实验和生产。

ML工作流程

当你开发和部署一个ML系统时,ML工作流程通常由几个阶段组成。开发一个ML系统是一个反复的过程。你需要评估ML工作流程各个阶段的输出,并在必要时对模型和参数进行修改,以确保模型不断产生你需要的结果。

为了简单起见,下图依次显示了工作流程的各个阶段。工作流程末端的箭头指向回流,以表明该过程的迭代性质。

更详细地看一下这些阶段:

  • 在实验阶段,你根据最初的假设开发你的模型,并反复测试和更新模型,以产生你所寻找的结果:
    • 确定你要用机器学习系统解决的问题
    • 收集分析你需要的数据用于模型训练
    • 选择模型框架和算法,编码初始的模型
    • 验证你的数据和你训练的模型
    • 调整模型的超参数,以确保最有效的处理和最准确的结果。
  • 在生产阶段,你执行下面的步骤部署了一个系统:
    • 将数据转换成你的训练系统需要的格式。为了确保你的模型在训练和预测过程中表现一致,转换过程在实验和生产阶段必须是相同的
    • 训练模型
    • 将模型用于在线预测或在batch mode下运行
    • 监测模型的性能,并将结果反馈给你的流程,以调整或重新训练模型

kubeflow组件在ML工作流中对应的位置

下图将Kubeflow添加到工作流中,显示了在每个阶段哪些Kubeflow组件是有用的

要了解更多信息,请阅读以下关于Kubeflow组件的指南

  • Kubeflow包括用于启动和管理Jupyter notebook的服务。使用notebook进行交互式数据科学和ML工作流程的实验。
  • kubeflow pipeline是一个基于docker container 用于创建、部署、管理多个ML工作流步骤的平台
  • Kubeflow提供了几个组件,你可以用来在多个平台上建立你的ML训练、超参数调整和服务工作负载

一个具体的ML工作流程的例子

下图显示了一个具体的ML工作流程的简单例子,你可以用它来训练和服务一个在MNIST数据集上训练的模型。

Kubeflow web 页面

本节介绍了你可以用来与Kubeflow互动,并在Kubeflow上构建和运行你的ML工作流的web页面

UI提供了一个中央仪表板,你可以用它来访问Kubeflow部署的组件

Kubeflow APIs and SDKs

Kubeflow的各种组件提供了API和Python SDK。参见以下几组参考文档。

  • https://www.kubeflow.org/docs/components/pipelines/reference/
  • https://www.kubeflow.org/docs/external-add-ons/fairing/reference/

参考文章:https://www.kubeflow.org/docs/started/architecture/