@sambodhi
2018-08-20T11:34:22.000000Z
字数 3331
阅读 2046
作者 | Reynold Xin
译者 | Sambodhi
编辑 | Natalie
AI前线导读: 以往数据集的准备以及模型的训练工作是分开的,这两部分工作相当于存在两套系统中。这种方式对于开发、测试都极其麻烦。是否存在于一套方案,同时解决这两类问题呢?Apache Spark无法做到。原因是模型的训练在Spark的DAGScheduler中支持的并不好。后来Spark提出了Hydrogen项目,从而使得Spark能够更好地整合深度学习框架。它的核心模块Gang Scheduling,用来解决Spark和机器学习框架之间兼容性的问题。下面我们来看看Reynold Xin的六大问答,涵盖了从Hydrogen项目如何帮助开发者在Spark实现机器学习和人工智能框架,到该项目与其他开源项目的区别。
Hydrogen项目的目标是:通过大幅提高Spark上的分布式深度学习和机器学习框架的性能和容错能力,为Apache Spark上所有分布式机器学习提供一流的支持。
大多数机器学习和人工智能的开源项目都专注在算法和分布式训练框架。
而Hydrogen项目是一个新型SPIP(Spark Project Improvement Proposal,Spark项目改进方案),引入了自项目启动(最初有600行代码)以来Spark调度中最大的变化之一。
大数据和人工智能紧密相连:最好的人工智能应用需要大量不断更新的训练数据来构建最先进的模型。人工智能一直是大数据和Apache Spark最令人激动的应用。在深度学习的推动下,越来越多的Spark用户希望能够将Spark与为最先进的训练而构建的分布式机器学习框架集成起来。
问题是,像Spark这样的大数据框架和分布式深度学习框架并不能很好地整合在一起,因为就作业执行方式来讲,大数据与深度学习是不一样的。比如,在Spark上,每个作业被划分成许多彼此独立的单独任务,这种方式被称为“高度并行”(embarrassingly parallel),这是一种可大规模扩展的数据处理方式,可扩展到PB级的数据。
AI前线注:高度并行(embarrassingly parallel),可参阅https://en.wikipedia.org/wiki/Embarrassingly_parallel,大意是指依赖性较少的任务通常被描述为“高度并行”,即很容易将它们分成多个并行任务。
但是,深度学习框架使用不同的执行方案。它们假设任务之间可以协调和依赖,这意味着这种模式是为持续的通信而优化的,而不是为了进行大规模的数据处理以扩展到PB级的数据。
寻找这一难题可能的解决方案,就是Hydrogen项目的定位。
Hydrogen项目为Spark-Gang Scheduling引入了一个新的调度基元(scheduling primitive)。
在这种模式下,任务调度“要么全部完成,要么什么都不做”(All or nothing)。这意味着要么一次性安排所有的任务,要么根本不安排任何任务。这实际上就调和了Spark的工作方式与分布式机器学习框架需求不兼容的问题。
现在用户可以使用一个简单的API来引入障碍函数(barrier function)。障碍函数指示Spark在机器学习管道中每个阶段应该用高度并行还是Gang Scheduler模式。
AI前线注:障碍函数(barrier function)亦称内惩罚函数、围墙函数、闸函数或碰壁函数,是一类制约函数。用来界定区域边界性状的一种函数。处理优化问题时,在极值点的搜索过程中,为保证搜索始终在可行域内,对企图从可行域内部穿越边界的点,在目标函数中加入障碍项,表示障碍项的函数即为障碍函数。距边界越近,障碍越大,当趋于边界时,障碍趋于无穷大,从而保证最优解不会超出可行域。
例如,新的Gang Scheduler模式可用于分布式训练框架的模型训练,而高度并行可用于数据准备,以及模型训练完成之后的模型推断。
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.)
AI前线注:William Gibson,(1948.3.17-)美国科幻作家,是科幻文学的创派宗师与代表人物。居住在加拿大,被称作赛博朋克运动之父(赛博朋克是科幻小说的一个子类)。他的第一部也是最有影响的一部小说《神经漫游者》自1984年出版以来已在全球卖出了6500万本。赛博空间一词即来自于此书。
鲜少有企业在全公司范围内大规模应用人工智能的成功案例。这就是我们所说的1%问题。大多数公司——99%——由于拥有完全不同的系统和技术,以及数据工程和数据科学家之间的组织分歧而陷入了挣扎。要实现人工智能,组织需要统一的数据和人工智能。
Apache Spark是迈向统一数据和人工智能的第一步,但仅凭这一点还远远不够:组织仍然需要管理大量的基础架构。为了清除应用人工智能的障碍,公司必须利用统一分析(Unified Analytics)。统一分析将数据处理和人工智能技术整合在一起,使得人工智能对于企业组织来说更容易实现,并使它们能够加速人工智能计划。统一分析能够使企业更轻松地跨各种孤立的数据存储系统构建数据管道,并为模型构建准备标记数据集,允许组织对其现有数据上执行人工智能应用,并在海量数据集上迭代执行人工智能应用。
一个统一的分析平台能够为数据科学家和数据工程师提供协作能力,以便在整个开发到生产生命周期中开展有效的工作。那些成功地将它们的领域数据实现大规模统一并使用最好的人工智能技术来统一数据的组织,将会是成功地应用人工智能的组织。
最后附上译者搬运的演讲视频,读者可以观看:
原文链接: Project Hydrogen, new initiative based on Apache Spark to support AI and Data Science
https://www.kdnuggets.com/2018/08/databricks-project-hydrogen-apache-spark.html