目录

Kubeflow-Pipeline部署记录

概述

Kubeflow 集成了机器学习的很多组件,比如训练、调参、模型部署,也包括了像 Tensorflow, Pytorch 等框架的支持。另外就是其还提供了 Pipeline 组件,用于用户定义机器学习的流程,从开始 -> 训练 -> 保存模型,等常见的机器学习任务流。本文主要从单独部署和测试,两个方面,展示一下使用 Pipeline 的姿势。

部署

Pipeline 作为 Kubeflow 的组件之一,其实是可以单独部署的,方法可以参考 Github 上的文档

/kubeflow-pipeline%E9%83%A8%E7%BD%B2%E8%AE%B0%E5%BD%95/image_1dhto8p9v1fem164srq112o33c9.png

明确一下部署的目标,本文只针对给一个 K8S 集群上部署 Pipeline,不在 GCP 也不在 AWS 这些云厂商上,并且是通过 port-forward 来访问 UI。

根据部署的目标,我们需要去掉 proxy 这个模块,也就是修改文件的红色方框的部分,从原文件删除。

/kubeflow-pipeline%E9%83%A8%E7%BD%B2%E8%AE%B0%E5%BD%95/image_1dhtome6814qtfdg1iha1cbh18kq13.png

另外注意一下 kubectl 的版本。

/kubeflow-pipeline%E9%83%A8%E7%BD%B2%E8%AE%B0%E5%BD%95/image_1dhtosrk9sp413r31jhm1j8j1jqi1g.png
1
2
3
4
5
6
7
8
# 克隆项目
git clone https://github.com/kubeflow/pipelines.git
# 注意目录不要错
cd pipelines/manifests/kustomize/namespaced-install
# 创建 kubeflow 命名空间
kubectl creat ns kubeflow
# 执行部署
kubectl kustomize . | kubectl apply -f -

这是部署的过程。建议详细看看部署了什么资源。

/kubeflow-pipeline%E9%83%A8%E7%BD%B2%E8%AE%B0%E5%BD%95/image_1dhtojotb1k6011ucmolj6g1ujem.png /kubeflow-pipeline%E9%83%A8%E7%BD%B2%E8%AE%B0%E5%BD%95/image_1dhtp1ubc1ak41ds1jin19eu3nh1t.png

部署成功之后的 UI 还是相当简洁的。

/kubeflow-pipeline%E9%83%A8%E7%BD%B2%E8%AE%B0%E5%BD%95/image_1dhtp903g1i5g1g211nshccvk222a.png

举个例子,Conditional execution,也就是条件运行的一个 Pipeline。

/kubeflow-pipeline%E9%83%A8%E7%BD%B2%E8%AE%B0%E5%BD%95/image_1dhtpdlsk6v41bhe1eet1gae1n8j2q.png

整个 Pipeline 是一个有向无环图,不过他有一些条件,比如说满足 condition1 会走左分支。

/kubeflow-pipeline%E9%83%A8%E7%BD%B2%E8%AE%B0%E5%BD%95/image_1dhtph92rqgm1ddh159t1i1qka37.png /kubeflow-pipeline%E9%83%A8%E7%BD%B2%E8%AE%B0%E5%BD%95/image_1dhtpifad1d4t1u83ib7fpi1ptd3k.png /kubeflow-pipeline%E9%83%A8%E7%BD%B2%E8%AE%B0%E5%BD%95/image_1dhtpkihh1mdrekh31l1j727n441.png

总结

Pipeline 是基于 Argo 来做的,本质是一个容器工作流,所以背后的 Run 实际上都是一些容器。Pipeline 可以帮助用户构建机器学习的任务流,通过组成 DAG 来串联起数据处理的过程,不过在描绘 Pipeline 的时候,需要用到该项目提供的 Python SDK,这是需要一定的学习成本的,虽然官网也提供了一些教程,但是总体而言,还是有点麻烦,暂时还不确定是否可以在 DAG 中加入时间调度的因素,后面还会继续展开。

参考资料

  1. https://github.com/kubeflow/pipelines/tree/master/manifests/kustomize
警告
本文最后更新于 2017年2月1日,文中内容可能已过时,请谨慎参考。