像Google一样构建机器学习系统 - 在阿里云上搭建Kubeflow Pipelines

2019 年 5 月 1 日 云栖社区

作者 必嘫,阿里云容器技术专家


介绍


机器学习的工程复杂度,除了来自于常见的软件开发问题外,还和机器学习数据驱动的特点相关,这就带来了其工作流程链路更长,数据版本失控,实验难以跟踪、结果难以重现,模型迭代成本巨大等一系列问题。为了解决这些机器学习特有的问题,很多企业构建了内部机器学习平台来管理机器学习生命周期,其中最有名的是Google的Tensorflow Extended,Facebook的FBLearner Flow,Uber的Michelangelo,遗憾的是这些平台都需要绑定在公司内部的基础设施之上,无法彻底开源。而这些机器学习平台的骨架就是机器学习工作流系统,它可以让数据科学家灵活定义自己的机器学习流水线,重用已有的数据处理和模型训练能力,进而更好的管理机器学习生命周期。



谈到机器学习工作流平台,Google的工程经验非常丰富,它的TensorFlow Extended机器学习平台支撑了Google的搜索,翻译,视频等核心业务;更重要的是其对机器学习领域工程效率问题的理解深刻,


Google的Kubeflow团队于2018年底开源了Kubeflow Pipelines(KFP), KFP的设计与Google内部机器学习平台TensorFlow Extended一脉相承,唯一的区别是KFP运行在Kubenretes的平台上,TFX是运行在Borg之上的。


什么是Kubeflow Pipelines


Kubeflow Pipelines平台包括:


  • 能够运行和追踪实验的管理控制台

  • 能够执行多个机器学习步骤的工作流引擎(Argo)

  • 用来自定义工作流的SDK,目前只支持Python


而Kubeflow Pipelines的目标在于:


  • 端到端的任务编排: 支持编排和组织复杂的机器学习工作流,该工作流可以被直接触发,定时触发,也可以由事件触发,甚至可以实现由数据的变化触发

  • 简单的实验管理: 帮助数据科学家尝试众多的想法和框架,以及管理各种试验。并实现从实验到生产的轻松过渡。

  • 通过组件化方便重用: 通过重用Pipelines和组件快速创建端到端解决方案,无需每次从0开始的重新构建


在阿里云上运行Kubeflow Pipeline


看到Kubeflow Piplines的能力,大家是不是都摩拳擦掌,想一睹为快?但是目前国内想使用Kubeflow Pipeline有两个挑战:


  1. Pipelines需要通过Kubeflow部署;而Kubeflow默认组件过多,同时通过Ksonnet部署Kubeflow也是很复杂的事情。

  2. Pipelines本身和谷歌云平台有深度耦合,无法在运行其他云平台上或者裸金属服务器的环境。


为了方便国内的用户安装Kubeflow Pipelines,阿里云容器服务团队提供了基于Kustomize的Kubeflow Pipelines部署方案。和普通的Kubeflow基础服务不同,Kubeflow Pipelines需要依赖于mysql和minio这些有状态服务,也就需要考虑如何持久化和备份数据。在本例子中,我们借助阿里云SSD云盘作为数据持久化的方案,分别自动的为mysql和minio创建SSD云盘。


您可以在阿里云上尝试一下单独部署最新版本Kubeflow Pipelines。


前提条件


  • 您需要安装kustomize

    https://github.com/kubernetes-sigs/kustomize.git


在Linux和Mac OS环境,可以执行



在Windows环境,

可以下载kustomize_2.0.3_windows_amd64.exe

https://github.com/kubernetes-sigs/kustomize/releases/download/v2.0.3/kustomize_2.0.3_windows_amd64.exe


  • 在阿里云容器服务创建Kubernetes集群, 可以参考 文档

    https://github.com/AliyunContainerService/ai-starter/blob/master/docs/setup/CREATE_CLUSTER.md


部署过程


1.通过ssh访问Kubernetes集群,具体方式可以参考文档。

https://help.aliyun.com/document_detail/86491.html


2.下载源代码



3.安全配置


3.1 配置TLS证书。如果没有TLS证书,可以通过下列命令生成



如果您有TLS证书,请分别将私钥和证书保存到kubeflow-aliyun/overlays/ack-auto-clouddisk/tls.key和kubeflow-aliyun/overlays/ack-auto-clouddisk/tls.crt下


3.2 配置admin的登录密码



4.首先利用kustomize生成部署yaml



5.查看所在的Kubernetes集群节点所在的地域和可用区,并且根据其所在节点替换可用区,假设您的集群所在可用区为cn-hangzhou-g,可以执行下列命令



建议您检查一下/tmp/ack-auto-clouddisk.yaml修改是否已经设置


6.将容器镜像地址由gcr.io替换为registry.aliyuncs.com



建议您检查一下/tmp/ack-auto-clouddisk.yaml修改是否已经设置


7.调整使用磁盘空间大小, 比如需要调整磁盘空间为200G



8.验证pipelines的yaml文件


kubectl create --validate=true --dry-run=true -f /tmp/ack-auto-clouddisk.yaml


9.利用kubectl部署pipelines


kubectl create -f /tmp/ack-auto-clouddisk.yaml


10.查看访问pipelines的方式,我们通过ingress暴露pipelines服务,在本例子中,访问ip是112.124.193.271。而Pipelines管理控制台的链接是:https://112.124.193.271/pipeline/



11.访问pipelines管理控制台


如果使用自签发证书,会提示此链接非私人链接,请点击显示详细信息, 并点击访问此网站。



请输入步骤2.2中的用户名admin和设定的密码



这时就可以使用pipelines管理和运行训练任务了。



Q&A


1.为什么这里要使用阿里云的SSD云盘?


这是由于阿里云的SSD云盘可以设置定期的自动备份,保证pipelines中的元数据不会丢失。


2.如何进行云盘备份?


如果您想备份云盘的内容,可以为云盘 手动创建快照 或者 为硬盘设置自动快照策略 按时自动创建快照。


3.如何清理Kubeflow Piplines部署?


这里的清理工作分为两个部分:


  • 删除Kubeflow Pipelines的组件

    kubectl delete -f /tmp/ack-auto-clouddisk.yaml

  • 通过释放云盘分别释放mysql和minio存储对应的两个云盘


4.如何使用现有云盘作为数据库存储,而避免自动创建云盘?


请参考文档

https://github.com/AliyunContainerService/kubeflow-aliyun/tree/master/overlays/ack-manual-clouddisk


总结


本文为您初步介绍了Kubeflow Pipelines的背景和其所要解决的问题,以及如何在阿里云上通过Kustomize快速构建一套服务于机器学习的Kubeflow Pipelines,后续我们会分享如何利用Kubeflow Pipelines开发一个完整的机器学习流程。


更多精彩


阿里云发布 Redis 5.0 缓存服务:全新 Stream 数据类型带来不一样缓存体验

 【阿里小程序云30问】问你所问,答你所惑


【资料合集】2019阿里云峰会•北京回顾合集:PDF下载

如果觉得本文还不错,点击好看一下!

点此阅读作者更多好文!

登录查看更多
6

相关内容

模型优化基础,Sayak Paul,67页ppt
专知会员服务
75+阅读 · 2020年6月8日
TensorFlow Lite指南实战《TensorFlow Lite A primer》,附48页PPT
专知会员服务
69+阅读 · 2020年1月17日
【干货】大数据入门指南:Hadoop、Hive、Spark、 Storm等
专知会员服务
95+阅读 · 2019年12月4日
【机器学习课程】Google机器学习速成课程
专知会员服务
164+阅读 · 2019年12月2日
阿里云发布机器学习平台PAI v3.0
雷锋网
12+阅读 · 2019年3月22日
官方解读:TensorFlow 2.0 新的功能特性
云头条
3+阅读 · 2019年1月23日
TF Boys必看!一文搞懂TensorFlow 2.0新架构!
引力空间站
18+阅读 · 2019年1月16日
资源 | 《Tensorflow:实战Google深度学习框架》
AI研习社
9+阅读 · 2018年8月21日
【机器学习】基于TensorFlow搭建一套通用机器学习平台
机器学习必知的15大框架
云栖社区
16+阅读 · 2017年12月10日
Arxiv
8+阅读 · 2018年1月25日
VIP会员
相关资讯
阿里云发布机器学习平台PAI v3.0
雷锋网
12+阅读 · 2019年3月22日
官方解读:TensorFlow 2.0 新的功能特性
云头条
3+阅读 · 2019年1月23日
TF Boys必看!一文搞懂TensorFlow 2.0新架构!
引力空间站
18+阅读 · 2019年1月16日
资源 | 《Tensorflow:实战Google深度学习框架》
AI研习社
9+阅读 · 2018年8月21日
【机器学习】基于TensorFlow搭建一套通用机器学习平台
机器学习必知的15大框架
云栖社区
16+阅读 · 2017年12月10日
Top
微信扫码咨询专知VIP会员