文章目录
Kubeflow基本概念
Kubeflow 是一个 Google 主导的 Kubernetes 与机器学习工作流集成框架,帮助机器学习任务更好的运行在云环境中,进行分布式的处理,扩展到大量的机器,可以移植到不同平台,观察模型的运行效果等等。
Kubeflow 可以做的事情包括:
- data preparation
- model training
- prediction serving
- service management
机器学习工作流分为开发流程和生产流程两个阶段
Kubeflow 有以下的概念:
-
Pipeline - 一个机器学习工作流管线,执行一系列的计算步骤,有多个 component 组成
-
Component - 工作流中的一个计算任务,相当于一个 python 函数,有固定的输入和输出,并且相互依赖
-
Experiment - 工作流的一个配置环境,一套执行的参数
-
Run - 表示 Pipeline 在一个 Experiment 环境下的一次执行
-
Recurring Run - 是一种会定时重复执行的 Run,也称为 Job
-
Step - 对应 Run 中一个 Component 的执行
-
Artifact - 一个输入或输出得到数据集
创建Kubeflow的Component
Kubeflow 的设计中,每个 Component 就是一个 python 函数
,被打包成 Docker 容器
,多个 Component 组成一个 Pipeline,提交到 Kubernetes 进行执行,并按要求分配指定的计算资源需求, Kubeflow Pipeline 的 Server 进行管理。指定输入和输出数据的 s3 路径,由系统进行加载。Run 的记录,Pipeline 的配置,以及运行的结果可以在 Kubeflow UI 中查看,以及创建新的 Run。
每个 Component 是一个具体的计算任务,支持多种机器学习框架,如 Tensorflow,PyTorch,MXNet,MPI。Pipeline 除了可以通过 YAML 文件定义之外还可以用 Python 脚本或者在 Jupyter Notebook 中动态创建。除了单次执行的 Pipeline,**还支持以 Serving 的方式将计算模型部署成一个服务,并监控 Serving 的状态。**任务依赖是由 Argo 来进行管理的。每一种计算任务有相应的 Operator 调度,控制底层 Kubernetes 的调度和资源分配。整个系统可以运行在不同的云平台上。
相关文档:
通过Yaml定义
代码1 一个 Component 的定义:
name: xgboost4j - Train classifier
description: Trains a boosted tree ensemble classifier using xgboost4j
inputs:
- {
name: Training data}
- {
name: Rounds