蚂蚁金服开源ElasticDL:Kubernetes原生的分布式深度学习系统

9月11日,蚂蚁金服在2019谷歌开发者大会上海站上,宣布开源 ElasticDL,一个基于 TensorFlow 2.0 的 Kubernetes 原生的分布式深度学习系统。这也是业界首个基于TensorFlow 的支持弹性调度的深度学习系统。

ElasticDL 的主要特性是容错性是弹性调度,这是通过研发一个 Kubernetes-native 的框架来调用 TensorFlow 2.0 从而实现的。Kubernetes-native 指的是一个分布式程序调用Kubernetes API 来起止进程;给予了分布式系统更多的调度灵活度。与之对应的做法是为每个分布式框架写一个 Kubernetes operator 来启动分布式作业,比如,Google Cloud 为 TensorFlow 开发了 Kubernetes operator Kubeflow,但Kubeflow不支持弹性调度。

TensorFlow 2.0 的 eager execution API 是 ElasticDL 的另一大助力,使得 ElasticDL 不必像 Uber Horovod 这类为 TensorFlow 1.x 设计的系统一样需要“盗取”作为计算图执行的中间结果的 gradients。

在多人共用计算集群的情况下,支持弹性调度意味着极大提升团队效率和集群的总体利用率。举个比较极端的例子:假设一个集群有N个GPU,而一个任务只使用其中一个,当没有弹性调度时,一个要求所有N个GPU的任务需要等待前一个任务结束才能开始,这个等待时间可能高达数天甚至数周,在等待期间,集群的效用是1/N;而拥有弹性调度能力之后,新的任务可以在N-1个GPU上立刻运行,并且Kubernetes可以在第一个任务完成后将占用的GPU赋予这个任务,在这个案例里,集群整体效用是100%. 因此,在部分案例中,ElasticDL能极大的提升集群利用率。

除此之外,ElasticDL还拥有高效和易用的特性。今年5月份,蚂蚁金服开源了SQLFlow,ElasticDL通过与SQLFlow的联动,实现让AI变得像使用SQL一样简单,SQLFlow把SQL程序翻译成一个ElasticDL程序,让工程师可以用SQL语言描述模型训练和预测过程。

ElasticDL项目负责人王益表示:“ElasticDL 处于研发初期,我们希望尽早开源ElasticDL和尽早分享其设计意图,汇聚来自不同公司和社区的力量,一起探索GoogleTensorFlow2.0和Kubernetes的分布式训练生态,早日实现便捷的端到端的人工智能开发套件。”

蚂蚁金服一直积极参与开源社区共建。自从2011年宣布第一波开源项目以来,开源项目数量每年都有增长。目前蚂蚁金服已经有400多个开源项目,其中,AntDesign项目已获四万多 GitHub 星标,有800多人参与项目建设,SQLFlow、EggJS和SOFA系列也成为社区热门。

图片14.png