Kubeflow Pipeline - 构建自定义的 Workflow

1 Overview

要把 Kubeflow 的 Pipeline 用溜了,肯定是需要有自定义 Pipeline 的能力了,所以需要熟悉一下 Pipeline 里的一些概念。

如果要搞清楚 Pipeline,?这些文档都必须要读一下,否则你是不清楚怎么利用 Kubeflow 团队提供的 SDK 来构建自己的容器工作流的。

image_1dhv3asi41gqm1qjf14esmrksj79.png-194.3kB

https://www.kubeflow.org/docs/pipelines/

本文的目标就是构建一个简单并且本地可用的 Pipeline。

P.S. 这里先不涉及做机器学习的流程

2 Steps

2.1 理解 component 和 pipeline

A -> B -> C

?这个流程可以理解成 pipeline,A, B, C 分别就是 component。

image_1dhvg6auf13g92e17g2ssb1bvr1g.png-97.1kB

pipeline 可以只有一个 component。

image_1dhvg18ku1d1mpnb1b4e5akkch13.png-52.3kB

2.2 Python SDK 构建 component 和 pipeline

假设现在你想写一个机器学习的 pipeline,大概抽象成?几个步骤。

读取数据 -> 进行训练 -> 保存模型

要构建完整的 pipeline,需要先考虑构建每个步骤 component 的问题。

构建 pipeline 可以有几种方式,区别在于是否将 Python SDK 的代码嵌入到业务代码里。因为如果你本来就写好了一个 training 的程序,那么这时候就可以直接利用 Docker 镜像,将业务代码封装成一个镜像,无需侵入。另一种方法就是边写 training 程序的时候边把 SDK 中构建 component 的方法带上。

两种方法都是 workd 的,可以参考 https://www.kubeflow.org/docs/pipelines/sdk/sdk-overview/

?是一个简单的例子。

import kfp
from kfp import dsl


def test_for_test():
  # 假设 python:alpine3.6 就是我们要工作的镜像和执行的具体代码的地方
  # 通过 dsl.ContainerOp() 就把上述工作内容作为一个 component 
  return dsl.ContainerOp(
      name='testfortest',
      image='python:alpine3.6',
      command=['sh', '-c'],
      arguments=["echo 'testfortest'"]
  )

# 然后就是设计 pipeline
# 本例很简单,只有一个 component
@dsl.pipeline(
    name='test for test',
    description='test for test'
)
def try_test_for_test():
  test_for_test()


if __name__ == '__main__':
  # 通过这个方法,生成一个 zip 文件,用来在 Pipeline UI 上上传的
  kfp.compiler.Compiler().compile(try_test_for_test, __file__ + '.zip')

image_1dhvgu5l61rlt1hoh1dr9ig46m1t.png-266.6kB

2.3 上传 pipeline

至于为什么是一个 zip 文件,其实是因为通过前端上传 zip 文件,后端会解析成 Argo 需要的 YAML 文件。

image_1dhvh01m64if17l5152smcq2rb2a.png-287.1kB

上传完成,可以试跑一下,只要能访问镜像,就可以。这里就不赘述了。

image_1dhvh3acp1nno1t951ttas7b2ot2n.png-123.2kB

3 Summary

Pipeline 实际上提供了一个 Workflow 这样的一个开箱即用的工具,通过 Python SDK,用户可以自定义自己的工作流。

本文只介绍了一个简答的 pipeline,后面的文章还会介绍一下,如果运行一个真正的机器学习的任务。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值