是一个新项目,旨在开发更快的实时处理框架,可用于支持用Python编写的机器学习应用程序。加州大学伯克利分校实时智能安全执行实验室(RISELab)的研究人员开发了一种新的分布式框架,旨在实现基于Python的机器学习和深度学习工作负载的实时执行,具有与消息传递接口类似的性能和细粒度(初级产业部)。这个名为Ray的框架看起来有望取代Spark,业界认为Spark对于某些现实世界的AI应用程序来说太慢了;在不到一年的时间里,Ray应该可以投入生产使用。Ray是RISELab出现的首批技术之一,RISELab是加州大学伯克利分校的研究机构,取代了曾经成功的AMPLab,后者开发了一系列影响高性能和企业计算的迷人分布式技术,包括Spark、Mesos、Tachyon和其他技术.计算机科学教授MichaelJordan是AMPLab(前身为AMPLab)和RISAab的顾问之一,最近在加利福尼亚州圣何塞举行的Strata+Hadoop世界会议上讨论了Ray的核心原则和驱动因素。“开发Spark是因为我的学生抱怨Hadoop不够好,”乔丹在3月16日的主题演讲中说。延迟。”乔丹继续说道:“实验室的一名学生MateiZaharia听到他们抱怨说,‘我要帮你解决这个问题。我将构建某种缓存系统,这意味着您不必一直使用磁盘。这就是Spark的由来。”他的学生注意到Zaharia在开发Spark、Databricks后突然变得“重要和著名”,并成为加州大学伯克利分校的对手:斯坦福大学的助理教授。“所以现在是时候看看下一代技术,”乔丹说。“他们说,‘我们永远不会把项目交给系统人员。我们要自己做。’所以下一个项目是由机器学习学生完成的,在开发之初,它的目标是取代Spark。“Ray是由RISELab的两位博士开发的:PhilippMoritz和RobertNishihara。研究人员努力创建了一个框架,可以结合运行机器学习或基于深度学习的应用程序需要许多不同的元素。据乔丹说,研究人员将应用程序分解成其组成部分,以了解如何实际构建允许实时决策机制的端到端系统。乔丹说:“你需要灵活。性别。您不仅需要构建神经网络之类的东西,还需要规划、搜索和模拟。这会产生各种复杂的任务依赖关系。简单的写一个MapReduce类型的paradigm(范式,可以翻译成模式)不是很容易。可以编写此范例,但如果您有截然不同的异构工作负载和任务,它就不会非常有效地执行。它需要适应算法的性能,因为系统在不断学习。“显然,Jordan指派Spark来进行MapReduce风格的编程。虽然Spark比MapReduce快得多,但它仍然是MapReduce面向批处理的工作流范式的一些核心要素。他说,Ray避免了Spark使用“块同步”(blocksynchronous)范式已经切换到更快的范式。按照Jordan的说法,Ray非常快,在处理单个任务时延迟只有几微秒。它还可以处理异构硬件,一些应用工作负载在CPU上执行,还有一些其他工作负载在GPU上运行。Ray有许多调度程序可以编排这些。它还借鉴了MPI的任务相关属性,它是一种低级分布式编程环境。高性能计算(HPC)领域的人使用MPI构建模型,模拟工作负载运行速度非常快。Jordan说:“我们实际上想要达到那种性能水平。我们并不是要取代MPI。但我们希望能够获得与MPI一样好的性能,但更简单、更强大,并且对分布式平台的依赖更少。在Strata的演讲中,Jordan展示了Ray如何帮助数字机器人学习跑步。Jordan将使集群中的各个节点保持计算状态,但状态尽可能少,这将最大限度地提高稳定性。他补充说:“但是,请注意可以在任务之间共享的有状态计算。然后,我们显然想要容错,我们还将实现序列化,以便我们可以轻松共享数据。》Ray框架目前正在开发中,但还不是一个完整的项目,有兴趣的朋友可以看看Github上项目的初始内测代码(https://github.com/ray-project/ray).Ray将有助于开发一系列需要使用真实世界数据进行快速决策的应用程序,例如自动驾驶或一些新兴形式的人工智能辅助医学所需的应用程序。由于他在这一领域的重大贡献,乔丹已经被称为“机器学习界的迈克尔·乔丹”,他认为雷***的影响力会体现在强化学习(reinforcementlearning)领域,而不是监督学习系统。因为它是用来解决计算机问题的视觉和分类问题的深度学习和神经网络开始流行,监督学习系统开始流行。“当你开始接近实际决策时,不仅仅是试图模仿人类,而是试图找到最好的决定,”他说。.这就是强化学习范式。强化学习实际上缺乏良好的系统级支持。“Ray是用C++编写的,基本上是为了加速用Python开发的机器学习算法的执行而设计的。Python脚本提交和执行作业(jobs),Ray使用Python的句法特性来表达对象和作业是如何运行的。如果你在一个函数中添加@ray.remote,这表明该函数可以跨集群异步执行。当函数运行时,它会立即返回一个对象ID,稍后可以查询该对象以获取该函数产生的任何最终结果Results.Ray的文档展示了如何结合Python的列表理解(listcomprehension)来运行一系列函数并自动返回结果。虽然Ray处于早期beta状态,但它显然是为支持机器学习的主要任务而开发的。文档中给出的主要示例包括:超参数优化(这是机器学习框架的常见工作负载)和训练人工智能网络以打乒乓球。它还详细介绍了如何将Ray与TensorFlow结合使用,包括有关如何在深度学习系统的帮助下充分利用Ray的远程对象模型的几个技巧。乔丹表示,虽然Ray仍处于早期阶段,尚未准备好投入生产,但应该会在一年内准备就绪。他说:“我们真的要让这个框架尽可能健壮和稳定,但要努力遵循学术界在令人兴奋的机器学习中努力实现的目标。”
