整合AI和数据科学新利器:基于Apache Spark的Hydro
作者:Reynold Xin 译者:Sambodhi
以往数据集的准备以及模型的训练工作是分开的,这两部分工作相当于存在两套系统中。这种方式对于开发、测试都极其麻烦。是否存在于一套方案,同时解决这两类问题呢?Apache Spark 无法做到。原因是模型的训练在 Spark 的 DAGScheduler 中支持的并不好。
后来 Spark 提出了 Hydrogen 项目,从而使得 Spark 能够更好地整合深度学习框架。它的核心模块 Gang Scheduling,用来解决 Spark 和机器学习框架之间兼容性的问题。
下面我们来看看 Reynold Xin 的六大问答,涵盖了从 Hydrogen 项目如何帮助开发者在 Spark 实现机器学习和人工智能框架,到该项目与其他开源项目的区别。
第一问:Hydrogen 项目是什么?
Hydrogen 项目的目标是:通过大幅提高 Spark 上的分布式深度学习和机器学习框架的性能和容错能力,为 Apache Spark 上所有分布式机器学习提供一流的支持。
第二问:同样用于机器学习和人工智能,Hydrogen 项目和其他开源项目有何不同?
大多数机器学习和人工智能的开源项目都专注在算法和分布式训练框架。
而 Hydrogen 项目是一个新型 SPIP(Spark Project Improvement Proposal,Spark 项目改进方案),引入了自项目启动(最初有 600 行代码)以来 Spark 调度中最大的变化之一。
大数据和人工智能紧密相连:最好的人工智能应用需要大量不断更新的训练数据来构建最先进的模型。人工智能一直是大数据和 Apache Spark 最令人激动的应用。在深度学习的推动下,越来越多的 Spark 用户希望能够将 Spark 与为最先进的训练而构建的分布式机器学习框架集成起来。
问题是,像 Spark 这样的大数据框架和分布式深度学习框架并不能很好地整合在一起,因为就作业执行方式来讲,大数据与深度学习是不一样的。比如,在 Spark 上,每个作业被划分成许多彼此独立的单独任务,这种方式被称为“高度并行”(embarrassingly parallel),这是一种可大规模扩展的数据处理方式,可扩展到 PB 级的数据。
注:高度并行(embarrassingly parallel),可参阅 https://en.wikipedia.org/wiki/Embarrassingly_parallel,大意是指依赖性较少的任务通常被描述为“高度并行”,即很容易将它们分成多个并行任务。
但是,深度学习框架使用不同的执行方案。它们假设任务之间可以协调和依赖,这意味着这种模式是为持续的通信而优化的,而不是为了进行大规模的数据处理以扩展到 PB 级的数据。
寻找这一难题可能的解决方案,就是 Hydrogen 项目的定位。
第三问:Hydrogen 项目将为贡献者和用户提供什么?
Hydrogen 项目为 Spark-Gang Scheduling 引入了一个新的调度基元(scheduling primitive)。
在这种模式下,任务调度“要么全部完成,要么什么都不做”(All or nothing)。这意味着要么一次性安排所有的任务,要么根本不安排任何任务。这实际上就调和了 Spark 的工作方式与分布式机器学习框架需求不兼容的问题。
现在用户可以使用一个简单的 API 来引入障碍函数(barrier function)。障碍函数指示 Spark 在机器学习管道中每个阶段应该用高度并行还是 Gang Scheduler 模式。
注:障碍函数 (barrier function) 亦称内惩罚函数、围墙函数、闸函数或碰壁函数,是一类制约函数。用来界定区域边界性状的一种函数。处理优化问题时,在极值点的搜索过程中,为保证搜索始终在可行域内,对企图从可行域内部穿越边界的点,在目标函数中加入障碍项,表示障碍项的函数即为障碍函数。距边界越近,障碍越大,当趋于边界时,障碍趋于无穷大,从而保证最优解不会超出可行域。
例如,新的 Gang Scheduler 模式可用于分布式训练框架的模型训练,而高度并行可用于数据准备,以及模型训练完成之后的模型推断。
第四问:你如何看待 Hydrogen 项目支持更广泛的分析和机器学习需求?
Hydrogen 项目的目标是将所有分布式机器学习框架成为 Spark 的“一等公民”,它真正统一了数据处理和机器学习、专门的 Spark 分布式训练。
我们希望,其他所有框架都像 MLlib 一样能够在 Spark 上直接运行,无论是 TensorFlow 还是 Horovod,或者未来流行的机器学习框架。它极大地扩展了机器学习框架的生态系统,可以在 Spark 上有效地用于深度学习应用。
新的 API 虽然还只是半成品,但预计很快就会被添加到核心 Apache Spark 项目中。
第五问:你认为开发人员将不同的数据集和开源项目汇集在一起的效果如何?我们是更接近统一的分析理论呢,还是我们仍然需要做很多工作才能使人工智能符合目标呢?
人工智能的颠覆性创新能够影响世界上大多数企业,其潜力巨大。因此,大多数企业都在努力通过人工智能取得成功。这是为什么呢?简单地说,这是因为人工智能和数据是分散在不同的系统和不同的组织中。
Apache Spark 是首个统一的分析引擎,它引爆了这场革命。因为它是唯一真正做到了将数据处理和机器学习整合起来的引擎。对于 Hydrogen 项目,我们正在扩展 Spark 的内置优化,使其优于 MLlib,这样开发者就可以在 Spark 上使用任何机器学习框架,从统一的数据处理和机器学习方法中收益。
当涉及到生产人工智能应用时,机器学习框架的倍增会导致其他下游影响,比如在生产中分享和跟踪实验,以及推动模型。这就是我们推出 MLflow 的原因。MLflow 是一种新型跨云开源框架,旨在简化端到端的机器学习生命周期。
第六问:你认为人工智能离成为“稀松平常”的事物还有多远?
正如 William Gibson 所言:“未来已经降临,只是分布尚未均匀。”(The future is already here — it's just not very evenly distributed.)
注:William Gibson,(1948.3.17-)美国科幻作家,是科幻文学的创派宗师与代表人物。居住在加拿大,被称作赛博朋克运动之父(赛博朋克是科幻小说的一个子类)。他的第一部也是最有影响的一部小说《神经漫游者》自 1984 年出版以来已在全球卖出了 6500 万本。赛博空间一词即来自于此书。
鲜少有企业在全公司范围内大规模应用人工智能的成功案例。这就是我们所说的 1% 问题。大多数公司——99%——由于拥有完全不同的系统和技术,以及数据工程和数据科学家之间的组织分歧而陷入了挣扎。要实现人工智能,组织需要统一的数据和人工智能。
Apache Spark 是迈向统一数据和人工智能的第一步,但仅凭这一点还远远不够:组织仍然需要管理大量的基础架构。为了清除应用人工智能的障碍,公司必须利用统一分析(Unified Analytics)。统一分析将数据处理和人工智能技术整合在一起,使得人工智能对于企业组织来说更容易实现,并使它们能够加速人工智能计划。统一分析能够使企业更轻松地跨各种孤立的数据存储系统构建数据管道,并为模型构建准备标记数据集,允许组织对其现有数据上执行人工智能应用,并在海量数据集上迭代执行人工智能应用。
一个统一的分析平台能够为数据科学家和数据工程师提供协作能力,以便在整个开发到生产生命周期中开展有效的工作。那些成功地将它们的领域数据实现大规模统一并使用最好的人工智能技术来统一数据的组织,将会是成功地应用人工智能的组织。
最后附上译者搬运的演讲视频,读者可以观看:
原文链接:
https://www.kdnuggets.com/2018/08/databricks-project-hydrogen-apache-spark.html
时间:2018-09-21 00:24 来源: 转发量:次
声明:本站部分作品是由网友自主投稿和发布、编辑整理上传,对此类作品本站仅提供交流平台,转载的目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,不为其版权负责。如果您发现网站上有侵犯您的知识产权的作品,请与我们取得联系,我们会及时修改或删除。
相关文章:
- [数据挖掘]全球最快AI超级计算机开动,每秒4百亿亿浮点运
- [数据挖掘]DataOps、MLOps 和 AIOps,你要的是哪个Ops?
- [数据挖掘]如何用Prometheus监控十万container的Kubernetes集群
- [数据挖掘]OpenAI 应改名 ClosedAI
- [数据挖掘]什么是边缘计算(Edge AI)?
- [数据挖掘]美国拟5年内向AI、量子计算等投资千亿美元,「
- [数据挖掘]数据科学异常值检测原理之经验法则
- [数据挖掘]Fast.ai两创始人联合发文,用数据科学解读新冠被
- [数据挖掘]在数据科学中使用 C 和 C++
- [数据挖掘]意料之外 情理之中:解读Gartner 2020年数据科学和
相关推荐:
网友评论: