前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Apache Submarine

Apache Submarine

作者头像
Fayson
发布2019-11-06 10:54:59
2.5K0
发布2019-11-06 10:54:59
举报
文章被收录于专栏:Hadoop实操Hadoop实操

作者:Yan Liu

审阅:Zhankun Tang,WangDa Tan

Hadoop Submarine这个项目是很少被人知道的,因为想去了解他的这个群体本身就非常的小。但是它其实在尝试解决一个很关键的问题,就是如何更高效的让分布式的DL负载跑在不同的资源框架下。

如果你是一个Data Scientist,你可能不会关注这个话题,因为你不关心怎么去把你写的东西扔到一个更大的资源池里去运行,你更擅长的是读或者写论文,建模型以及评价结果。试验在哪里跑,怎么跑,如何对外提供服务等等这种事你也期望有更专业的人帮你解决。更不用说暂停分布式的训练过程,修正一些超参数,存储每个Epoch结果等等这些问题。

如果你是DevOps,你可能不知道Deep Learning的框架,甚至连Deep Learning和Machine Learning 有啥区别都不知道。

这就产生了一个问题,Data Scientist在小环境做了一些实验,会需要借助Devops把它搞到大平台上去,而Devops Team可能根本就不知道你写的这个东西怎么跑在大平台上。如果是Spark ML/DL,这个情况会好很多,因为至少双方都有清楚的认识。但是如果是TF, Pytorch这些呢?我知道你想说TF 有 Distributed Mode,但是你可能也只是听说,至少大头在TFUG活动的时候几乎很少听到有Data Scientist去讨论用哪种Distributed Mode,当然可能有些人说Distribueted Mode不就是参数服务器嘛?大兄弟,PS是2012年的事了,世界早就变了。

猜猜上面哪个是Mirrored Strategy?

这就意味着,即便Data Scientist捣鼓出来的一些东西,需要Performance Boost的时候,Devops人员是大概率搞不定的。

Data Scientist,同样也大概率搞不定,比如扔到Yarn上或K8S这种大资源池去跑,她可能会问你Yarn是什么,有几层,能吃么之类的。

可能有同学会问,等一下,你提到了Yarn,我实在没看出来Deep Learning和Hadoop 有啥关系,你搞这个是不是为了蹭热点刷下存在感?

其实,Deep Learning和Hadoop这二者的关系非常的大!

01

Deep Learning 与 Hadoop Eco System 的关系

在云上的业务,一般海量数据都是放在S3上的,不过GCS, OSS和Azure可能会不同意。

在云下的业务,一般海量数据都是放在HDFS上的,这个应该没有人不同意。

同时,在Data Engineering这个层面,也是Hadoop类Workload 莫属,这正如TFX 对接了 Apache Beam 进而在调用Spark/Flink一样,为TF做前期的数据清洗加工等等。

这时,你才发现你真的需要一个能上通TF或者其他DL框架, 下通K8S或者Yarn的人和技术来帮你把这种看似两个世界的东西连在一起。解决这个问题的办法也不是没有,一种是你可以找到懂Devops的Data Scientist,或者Devops懂Data Science,比如参考数据库有DBA团队,数据科学可以有DSA团队。

这种人存在么?存在的,但是那种人比较贵。

那技术呢?存在的,就是比较贵的那种人写的。

大头贵么?土狗来着,所以只配写朋友圈吹水

02

DL/ML框架的复杂性和多样性

深度学习的框架不止Tensorflow, 还有很多其他的框架。但是火热程度来说,Tensorflow无疑是当下最火的。不过最近也有个现象,有很多学校更倾向Pytorch,也因此这些学校毕业出来的学生基本都是Pytorch流派的。不同的流派自然还有个鄙视链的存在,不过这个是题外话了。

为数众多的DL框架大部分或多或少带了分布式执行的方案,但是毕竟是DL项目,重点不在多租户,跨平台等等这些技术点上,也因此在异构任务,异构调度和资源共享等方面都做得不够好。这就是Submarine项目的意义。

03

Apache Submarine

为了使分布式深度学习/机器学习应用程序易于启动,管理和监控,Hadoop社区发起了Submarine项目以及其他改进,设计之初是为了对这类任务提供一流的GPU支持,Docker容器支持,容器DNS支持,调度优化等等功能。随着诉求的变化和越来越多的人的加入,现在Submarine从Workbench,Core Engine Support和Scheduler都在逐步的完善之中。进而形成一个成体系的独立项目。

(点击查看大图)

Submarine的Workbench层提供了对外的一个统一界面,DS可以通过它来开发Notebook,提交和管理任务,创建模型和访问数据等等。

Submarine的Service层提供了对各种开发环境的支持,以及一些可选的嵌入式的SDK开发包,以及向用户提供了提交及管理Yarn 或K8S平台应用的支持,使得这些业务系统可以在这两种环境中运行。

通过这样的一个形态,Submarine最终形成了一个统一的,泛用性的数据科学开发平台,以期望能够降低数据科学的整体开发周期和成本。

04

结束语

社区也有很多类似的衔接框架或者产品来优化这个方面,例如大的产品有Anaconda等,K8S生态的Kubeflow, Horovod和 Hadoop生态的TensorflowOnYarn, TonY ( TensorflowOnYarn 和 TonY 是两个不同的项目),TensorflowOnSpark,SparkDL 等等,各自的实现有极大的区别。可以看到的是,把DL负载尽可能简单的放在Yarn/K8S上去运行确实是一个需要解决的问题,但是具体的方向每一个技术都有自己的尝试。Apache Submarine也是这一领域里的一种尝试,让我们一起期待它有一个更好的未来。

当前 Submarine 项目地址:

https://hadoop.apache.org/submarine/

社区正在Spinoff 这个项目为Apache 顶级项目,网站上线后地址:

https://submarine.apache.org

Github 地址:

https://github.com/apache/hadoop-submarine

Spinoff后的Github地址:

https://github.com/apache/submarine

在此谨代表我个人致谢网易的数据科学团队对Submarine项目做出的重大核心贡献,同时也让我们期待未来会有更多的力量加入这个社区。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-11-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Hadoop实操 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档