Kubernetes上运行机器学习的分析


【编者的话】Vishal Biyani的从业经历覆盖了从代码开发,部署到客户支持的整个SDLC工作过程。他的工作角色跨越了从财富500强企业的顾问到互联网公司的平台建设专家。他是一位DepOps的实践者,喜欢从事敏捷开发。他的兴趣包括持续交付,Kubernetes容器和安全等。在创立InfraCloud之前,Vishal Biyani曾在HCL和Audience Science等公司工作,建立了多个云计算和DevOps解决方案。

对于项目中容器数量不断增加带来的编排关联性的问题,在过去数年里,有不同的项目和公司都一直在尝试采用各种方法解决这个问题。直到Kubernetes这个优越的容器运行平台出现。目前,已经有许多公司正在或即将计划把自己的各种应用迁移到Kubernetes平台上,包括了无状态的微服务,计划任务以及有状态的数据库服务等。不过,这些应用都只是现实环境中的小部分云平台应用而已。举个例子,有些平台应用会需要像GPU这样的专用硬件。对于这种案例,平台的资源管理工作组正全力聚焦在这一领域,致力于项目和技术的调整,以便Kubernetes平台可以搭载更为多样化的应用。
QQ图片20180523154159.jpg

当我看到Abhishek Tiwari发的关于在Kubernetes上运行大数据应用的帖子时,我被那些发生过的一系列工作所吸引。这篇文章尝试探索在Kubernetes平台上运行机器学习/深度学习应用,而且还有其他的项目和公司也在从事类似的研究。其中,在Kubernetes上运行ML应用的一个关键条件是实现对GPU的支持。这方面,Kubernetes社区自v1.6版本后就已经实现了,详细信息可查阅对应的版本文档。

为什么选择Kubernetes?

在深入研究各种项目和努力实现ML/DL运行在Kubernetes平台之前,我们先回答这个问题:为什么选择Kubernetes?因为它具备如下的优势:
  1. 为打包应用(容器)提供一致的方法,从笔记本电脑到服务器集群,它保证了跨设备途径的一致性。
  2. 对硬件底层的复杂性和节点管理进行了抽象,因此在商用硬件节点之上,Kubernetes成为了一个优越的应用搭载平台。
  3. 可以基于应用和集群本身的需要而进行弹性扩展。
  4. Kubernetes已经是一个被广泛接受的微服务搭载平台,并且还在不断演化。 在Kubernetes上运行无服务的应用,平台可以对底层资源进行抽象,让运维人员非常简便的管理这个平台,这点非常棒!


RAD分析

Redhat公司在Kubernetes/OpenShift平台上运行智能应用项目的一些早期成果,已经封装成了RAD分析。这个项目早期的重点是实现在Kubernetes运行Spark集群,而这个目标,在Oshinko项目中已经实现了,其中的一个方法就是通过oshinko-cli和其他工具的组合实现这个部署。网络教程内有各种类型的相关案例,也可以关注网上各种类似项目的进展情况。

百度的Paddle平台

2016年9月,百度开源了他的深度学习和机器学习平台Paddle。这是一个用Python语言写的并行分布式深度学习平台。在此之前的2016年2月,百度就已经宣布,Paddle可以运行在Kubernetes架构上。它可以用于图像识别,自然语言处理和推荐系统。Paddle采用了Kubernetes的原生架构,例如利用作业进行分片的培训,在培训的时候,Paddle完成一个一个的学习作业。它还部署了教练机Pod,并且根据负载情况进行缩放,以便有效的进行负载分配。

商业型的选择

在Kubernetes上运行机器学习方面,有些公司提供具备一定能力的商业或开源的软件。例如,Seldon公司发布了一个开源的内核,但仅限于一定规模下,超出就需要有商业授权。而微软公司的机器学习项目的技术来自于Litbit。初创企业RiseML也提供基于Kubernetes架构的机器学习平台。

Kubeflow项目

Kubeflow是2017年奥斯丁Kubecon大会上宣布的。是Google的一个Kubernetes架构下机器学习的开源项目。这个项目最初定义的版本只是支持Jyputer笔记本和TensorFlow作业,但最终的目标是支持机器学习的外部开源工具。它希望成为一个工具包,可以让用户选定工具来简化机器学习的部署和扩展。

结论

一个专注于解决机器学习问题的数据科学家可能没有足够的经验和时间来构建一个弹性的基础架构来运行大规模的工作。同样地,一个能够构建弹性基础架构的工程师可能又不是机器学习方面的大师。这个道理在我们探索的所有项目中都可以看到——缩小二者之间的差距,我们就可以在弹性的基础架构上运行大型的ML/DL应用。尽管还有许多工作要做,但这是一个伟大的开端,非常期待2018年和以后的未来。

原文链接:Machine Learning on Kubernetes(翻译:易理林)

0 个评论

要回复文章请先登录注册