查看原文
其他

开源DAWN,Spark和Mesos后Stanford的又一力作

2017-12-22 布道者 AI前线

作者|Peter Bailis 等
译者|Debra
编辑|Emily
AI 前线导读:这是个普及机器学习实践的项目,但是不需要使用者具有 AI 背景,他们取名为 DAWN,意思为“下一代数据分析”。背后的团队曾成功的研发出 Spark、Mesos、DeepDive、HogWild 等。可以想象这又会是一个成功的项目。

更多干货内容请关注微信公众号“AI 前线”,(ID:ai-front)

随着 ML 应用程序技术的发展,越来越多的组织开始将这种技术用于生产中以提高效率。然而,事实上,这种“高端”技术只有那些资金充足和有庞大技术团队的组织才能享用,为了大幅简化 AI 应用程序构建过程,普及 AI 技术,让非 ML 专家也能利用这项技术造福社会,斯坦福大学开启了一个为期五年的项目——DAWN( Data Analytics for What’s Next,下一代数据分析)。

DAWN 是斯坦福大学的一个工业分支机构计划,从 2007 年启动,由几家公司提供不受限制的资金支持,每年约有 50 万美元的赞助金,包括 Intel、Microsoft、Teradata、VMware 等,另外还得到 NSF(美国国家科学基金会,National Science Foundation)和 DARPA(美国国防高级研究计划局,Defense Advanced Research Projects Agency)等政府资助机构的额外支持。

据该团队声称,其过去的研究(Spark、Mesos、DeepDive、HogWild 等)已经开始服务硅谷和世界各地,在打击人口贩卖、协助癌症诊断和进行高通量基因组测序等方面,开发了大量人工智能和数据产品开发工具。而他们的下一步,是使这些工具更高效,更容易访问,从训练集创建和模型设计,到监控和高效运行等各方面。

简单来说,DAWN 要解决的问题是:

一个拥有专业知识,但是没有机器学习博士学位,不是系统专家,不了解最新的硬件的专家,如何建立自己的 ML 产品?

以下为该项目关于机器学习实践基础架构的一篇论文介绍:

背景介绍:

尽管最近机器学习有了令人难以置信的进展,但机器学习应用程序仍然令人望而却步,除了那些训练有素、资金充足的工程机构,它们对于普通公司莱来说耗时且成本昂贵。应用机器学习的成本高昂不是因为需要新的统计模型,而是缺乏从数据准备和标签,到生产和销售监控的系统和工具,用于支持端到端机器学习应用开发。

DAWN 项目成员

DAWN 项目简介和目标

我们正处于机器学习和 AI 发展的黄金时代。算法的不断进步,加上海量可用的数据集和快速的并行计算,让几年前只在科幻小说里的场景变成现实。在过去的五年里,语音个人助理已经普及,图像识别系统堪比人类,自动驾驶汽车也在迅速成为现实。毫无疑问,机器学习将会改变我们经济和社会的大部分领域。企业、政府、科学实验室则翘首以盼,机器学习能如何解决他们的实际问题。

然而,虽然新的机器学习(ML)应用取得了令人印象深刻的进步,但是构建起来却非常昂贵。每一个重大的 ML 产品,如苹果 Siri、亚马逊 Alexa 和特斯拉的自动驾驶汽车,背后都需要一个由领域专家、数据科学家、数据工程师和 DevOps 组成的庞大而昂贵的团队的支持。即使在成功应用 ML 的组织中,ML 仍然只是一小部分团队成员可以触及的稀有商品。此外,许多 ML 模型需要大量的训练数据,而获得这样的训练数据对许多应用领域来说是极具挑战性的。例如,虽然 ML 算法可以准确识别一只狗的图像(因为网上有数百万张可用的标记图像),但在识别医疗图像中的肿瘤方面,却不能达到同样的精确度,除非组织请人类专家花费数年时间为训练数据做标记。最后,一旦 ML 产品生成,就需要进行大量的部署、操作和监控工作,特别是其成为关键业务流程的中流砥柱之时。综上所述,ML 技术与早期的数字计算机处于类似的阶段,在这个阶段,一些穿白色大褂的技术人员在生产过程中维持着少量机器正常运转:ML 技术显然具有巨大的潜力,但目前来说,基于 ML 的应用程序对于大多数领域来说还是太昂贵了。

而 DAWN 的目标,不是为了改进 ML 算法,因为对于许多重要的应用程序来说,算法已经足够完善,而是使 ML 能够为小型团队所用,非 ML 专家也可以应用 ML 解决他们的问题,实现高质量的结果,并部署可以在特定应用中使用的生产系统。我们的问题是:如何能够让所有具备专业知识的人建立属于自己的高质量数据产品(而不需要一群不了解最新硬件系统的机器学习、大数据或分布式系统专业的博士)?总之,就是让 AI 普及。

DAWN 与 ML 实践系统调研

为了让我们这个项目目标所带来的机会最大化,并借鉴之前的 Apache Spark [27]、Apache Mesos [11]、Delite [5] 和 DeepDive [6] 等大型分析系统构建的经验,我们将用未来五年时间来研究和构建工具,以解决机器学习实践中的端到端问题。通过把从算法到系统硬件等领域相结合,以及从事数据密集型领域的合作伙伴密切合作,我们计划在 ML 生命周期分阶段来完成 DAWN 的目标。

我们在 DAWN 协议栈中的设计理念主要基于三个原则:

a)以端到端 ML 工作流程为目标。ML 应用程序开发不仅包括模型训练。因此,现在开发新的 ML 应用程序所面临的最大挑战并不在模型训练,而在于数据准备、特征选择 / 提取和生产(服务、监控、调试等)。因此,系统应该定位到整个 ML 端到端的整个工作流程。

b)赋能领域专家。最有影响力的 ML 应用将由领域专家开发,而不是 ML 专家。然而,可供领域专家编码,利用自动化和机器学习模式的系统太少。未来的系统应该赋能非 ML 专家的用户,为他们提供诸如标签、特征工程和数据增强等繁重任务的工具。

c)优化端到端。在模型训练中,ML 的执行速度非常重要,速度快可以更好地建模(例如,通过输入更多数据或更广泛的搜索参数);速度对于部署的生产服务同样重要。

图 1:用于机器学习实践的 DAWN 协议栈:在斯坦福 DAWN 项目中,我们构建了一个跨越 ML 生命周期每个阶段的软件和工具的研究堆栈,以及从新硬件到新接口的抽象,来强调 ML 实践构架的重要性。我们认为这个并行的端到端,接口到硬件的方法对于充分实现 ML 实践的潜力是必需的。

这些模型在实践中具有成本效益。但是,今天的 ML 工具性能通常低于硬件限制 10-100 倍,因此需要昂贵的软件工程来建立生产系统。我们早期的结果显示,通过构建工具优化 ML 端到端流程,并利用算法的统计特性,如对不严格执行的耐受性,可以在当前和新兴硬件上运行的 ML 应用程序将提速 10-100 倍。

总而言之,我们相信那些针对所有应用开发的非专业需求,以及全面优化系统软件和硬件,对于充分实现 ML 实践的潜力至关重要。

DAWN 的研究方向

为了体现这些原则,我们正在沿着几个方向进行研究。以下是我们的研究方向概述,和每个领域可引用的早期成果:

 ML 的新接口。

为了赋能非 ML 专家的领域专家,我们需要开发 ML 技术的新接口,以适配型号规格、模型监控等:

a)通过观测 ML(数据准备、特征工程)简化模型规范:我们是否可以通过观察领域专家提高学习质量,建立 ML 模型系统?例如,在标记数据时,领域专家通常使用一组启发式规则,来确定特定数据点的标签(例如,如果短语“烤箱预热”在文档集中反复出现,打的标签很可能是烹饪)通过为这些用户提供简单的界面,以确立用户对数据规则的认识(例如,正则表达式),我们可以将这些规则中的一小部分结合起来应用到海量数据集中。我们使用无监督 ML 来消除规则和学习其准确性,并训练监督式 ML 模型产生成概率标签,建立一个我们称之为数据编程的新范例 [18]。通过一个可以从低质量的规则中生成高质量模型,被称为 Snorkel 的新系统 [17],我们取得了不错的早期成果。我们也正在使用弱监督式 ML 制定新的研究路线,以提高模型的质量,而无需用户手动操作,如特征发现 [24,25] 和结构学习 [2]。

b)向人类解释结果(特征工程、生产):我们如何向人类解释一个特定 ML 模型的结果?随着 ML 模型在日益重要的关键业务型程序中得以应用,能够以人类可理解的方式解释分类决定所做的预测将变得至关重要。具有挑战性的是,那些庞大而复杂的模型提供了高度准确的结果,但这些结果解释的难度非常大。一个有效的方法是。ML 预测不在“真空”中进行:每个用户有几十到几百个可用于分割、关联和上下文化预测的属性(例如,运行 v47 版本软件的用户可能被异常标记为垃圾邮件)。而这对于基于基本相关性分析 [4] 的初试结果尤其有效,我们计划将这个功能扩展到其他领域,包括文本、视觉和时间序列数据 [21]。

c)调试和可观察性(特征工程、生产):ML 模型的“漂移”现象可能是灾难性的,ML 模型部署之后必须受到监控,并定期进行更新。我们对开发和部署监测 ML 模型预测质量的,廉价的、有用的监测工具非常感兴趣,尤其是当新模型是被潜在的异构用户和设备平台所使用时。此外,后续识别和纠正预期行为偏差的需求,也将促进界面和模型训练方面取得进展。

d)评估和提高数据质量(数据准备、特征工程):生成高质量的模型需要经过多样化、高质量的数据训练。随着越来越多的数据源数字化,集成结构化(例如数据仓库、CSV)和非结构化(例如文本、图像、时间序列)数据在模型构建中提取信号将变得越来越重要。问题来了:在多样化的数据来源中,哪些是可信任的?应该扩展和丰富哪些资源?是通过手动添加标签,还是扩展现有知识库?我们早期的结果 [20] 表明,如果明确每个建模数据源的质量,就可以自动识别最需要浓缩的数据源,从而降低数据清理和获取的成本。

 端到端 ML 系统。

我们相信,在许多重要领域,设计一个类似于搜索引擎或 SQL 数据库,包括整个 ML 工作流程,并对用户隐藏内部数据的端到端系统是可能的。我们正在研究这些领域:

a)大规模数据分类(数据准备、特征工程、生产):分类和排名是每个现代搜索引擎背后的核心技术。但是,除了静态文本和图像分类之外,我们怎样才能对传感器数据、时间序列和其他在每秒钟之内可能发生数千万次事件的数据流进行分类呢?我们对开发高质量,经过优化的运算器非常有兴趣,它可以对不同的数据进行分类和汇总、功能转换、分类和数据流聚合。MacroBase 引擎 [3] 的初步研究表明,包括制造业的传感器、移动分析和汽车等领域的少数运算器可以进行大规模重用。我们有兴趣将此功能扩展到视频处理等其他领域,在视频处理这个领域,0.50 美元的图像传感器目前需要 1200 美元的图形卡适配才能进行实时处理;另外,在统一的系统框架和“分类器”工具箱内使用传统的系统技术,如缓存、增量记忆、分枝限制修剪和自适应(例如训练一个场景特定的对象检测器),可以在不影响精度的情况下达到非常高的速度 [8,12]。

b)个性化推荐(特色工程、生产):个性化对于许多流行的 ML 应用程序非常关键,关于个性化推荐算法的文献也数不胜数。然而,推荐引擎除了简单的输入和输出,从业者仍需要将低级算法和工具结合在一起,从头开始构建引擎。我们计划建立一个通用的端到端推荐平台,包括一个简洁的输入界面(例如来自用户的点击或评级)、自动模型调整、自动服务、监控和模型再训练。早期的研究结果表明,分布逐渐完成这些任务并非不可能。输入数据后,创建一个“即插即用”的个性化推荐系统,用户可以简单地输入用户交互,并实时得到最新的推荐。

c)结合推理和决策(特征工程、数据准备、生产):当 ML 因为具备更深的见解和决策能力而变得功能强大时,我们应该如何实现自主决策过程呢?如今,除了少量的应用程序,如自动驾驶车辆之外,推理 / 预测(即预测会发生什么)和预测行动 / 决策(即基于预测采取行动)通常是两个系统分头来执行的(通常由一个自动推理引擎和一个人类“决策者”组成)。我们如何将决策置于 ML 工作流程的优先位置?幸运的是,随着自动化 API 的出现,决策变得前所未有的简单(例如,向自动控制中心发送一个 POST 请求); 而我们缺少的是整合 ML 和自动化 API,以及关于组合的推理逻辑所需的“胶水”,因此,我们正在开发从警报和通知,到对环境的物理操作等一系列决定推理的组合。

d)统一 SQL、图形和线性代数(生产):ML 产品流水线包含一组不同的集合操作,包括 SQL、图形计算和 ML 训练和评估。不幸的是,大部分执行引擎只针对这些计算模式之一进行优化。那么,我们如何建立一个可以优化所有计算模式的引擎呢?也许,这其中的许多模式可以作为传统关系连接的一个实例,例如,PI Re 最近开发了一个速度更快的连接运算 [14]。在实践中,我们发现,当与 SIMD 优化运算相结合时,这个优化的连接速度非常快,能够为每一个 SQL 和图形 [1] 进行匹配优化。那么 ML 呢?我们相信,将这些理论结果扩展到包括线性代数运算和系数矩阵运算在内的传统 ML 模式中,ML 同样可以做到这一点。通过在单个引擎中结合这些运算,我们可以优化端到端 SQL 的流程、图计算、线性代数等。

ML 的新基材。

快速、经济、高效地训练和部署 ML,需要开发从语言支持到分布式运行时,以及加速硬件等新的计算基材。

a)端到端编译器优化(特征工程、生产):目前,ML 应用程序包括 TensorFlow、Apache Spark、scikit-learn、Pandas 等多样化的库和系统。尽管每个库都有其优点,而在实际工作流程中往往需要需要结合多个库,所以大规模的生产通常需要一个软件工程团队,来重写整个应用程序的低级代码。我们正在开发一个新的运行时——Weld [15],它可以优化多个库的数据密集型代码,并自动生成 ML 训练。

通过优化运算器,Weld 已经可以实现 Apache Spark、Pandas、Apache、TensorFlow 等现代数据分析工具的运行速度提高 10 倍,跨库工作负载速度提高 30 倍,这一点可能让很多人感到惊讶。此外,Weld 的设计还能实现异构硬件移植。因此,我们也可以在 GPU、移动处理器和 FPGA 上运行这些库。除了 Weld,我们还为 ML Delite [5] 开发新的编译器技术,这是一种用于开发特定领域语言,以及隐私保护数据分析平台 Splinter[26] 的框架。

b)精度降低处理(生产):众所周知,ML 运算具有随机性和概率性,我们如何在运算过程中利用这个特性呢?早期的 HogWild![19] 是第一个证明运算中的异步实际上可以缩短收敛时间的项目,而 Google、Microsoft 和其他大型科技公司的日常生产中均使用基本的算法。不过,我们认为可以做到的还有很多,例如通过将随机性控制在 bit 级,以提高性能、降低能耗:我们可以设计专门用于 ML 的芯片,在低耗能的前提下,进行低精度运算,也可以产生高效的结果。我们最近的理论成果说明,以低精度运行,但不降低准确性 [7] 是有可能的,在实践中也取得了可喜的成果 [22]。

c)核心内核可重构硬件(特征工程、生产):计算机架构师通常认为 FPGA 发布之后的一年是真正的“FPGA 之年”。然而,目前用 FPGA 来编程仍然很困难,且成本高昂。尽管如此,ML 可能是一个转折点:2017 年,无论是在训练时间,还是在推理时间方面,计算都成为 ML 分析的一个急需破解的瓶颈。考虑到即将到来的 CPU 和 FPGA 之间的竞争,具有高级可编程功能的可重配置硬件将会越来越重要。另外,我们正在开发新的可重构基材,可以轻松地用于模块化和高效的计算内核 [16],这对于提高耗电比意义非凡,特别是在软件堆栈的上层不断发展的情况下。

d)分布式运行时(生产):随着模型的不断发展,可以进行大规模训练,以及训练的执行推理变得越来越重要。ML 与分布式系统的结合是一个真正让人头痛的问题:一个模型表现不佳究竟是因为其分配的服务器过多,还是因为匹配性差?最佳的异步数量是多少?最佳分布式训练框架是什么样的?我们的研究对利用设备内(例如 FPGA、GPU 矢量化)和设备间(例如集群计算)并行性资源消耗(即自动和动态分配到到群集内的不同硬件中)非常感兴趣。而且,我们最近的一些理论 [10] 证明,我们可以明确地为不同的硬件和计算网络自动调整匹配最优的基层学习算法。但还是有很多问题亟待解决:分布式异步计算对推理时间有何益处(即在模型服务中)?新的计算基材,如无服务器计算(亚马逊 Lambda)是否可以进一步扩大推理程序?什么是分布式计算的统一编程模型?我们打算建立新的工具,并结合现有的 TensorFlow 和 Spark 等框架来回答这些问题。

研究思路和成功指标

据 DAWN 所称,他们在项目内部将与目标研究合作伙伴合作,进行校园内外实践,以实现上述研究目标。而这个项目成功的主要指标,在于可用性,包括 i)应用 ML 应用程序的时间和成本(包括数据源和功能);ii)生产中执行应用程序的时间和成本(包括监测 ML 模型的硬件和人力资源);以及 iii)最终用户的收益。此外,DAWN 还计划将所有的研究开源,使所有行业都可以从 DAWN 项目中受益。

成果和旗舰项目

据说,DAWN 早期在生产中部署的包括 Snorkel、MacroBase 和 DeepDive 在内的系统,已经在硅谷和全世界各地得以应用,证实了 DAWN 项目的巨大潜力,以及从根本上改进现有技术的希望。

在该项目的官网上列出了 DAWN 项目的旗舰项目,其中包括:

Macrobase: 优先关注快速数据

https://github.com/stanford-futuredata/macrobase/releases

MacroBase 是一个新的分析监督引擎,旨在进行大型数据集和数据流优先处理。与传统的分析引擎不同,MacroBase 专门用于一项任务:查找和解释数据中不寻常或有趣的趋势。

Snorkel:训练集穿件系统

https://hazyresearch.github.io/snorkel/

Snorkel 是一种快速创建、建模和管理训练数据的系统,目前主要聚焦在加速开发结构化或“黑暗”数据提取的应用程序,该应用程序适用于大规模标注训练集不切实际或不容易获取的领域。

Spatial:用于 FPGA 的 DSL

https://github.com/stanford-ppl

Spatial 是一种新的领域特定语言,用于从参数化的高级抽象中对可重配置硬件进行编程。

Weld:加速数据分析

https://github.com/weld-project/weld

官网链接:

http://dawn.cs.stanford.edu/

原文链接:

https://arxiv.org/pdf/1705.07538.pdf

今日荐号
MacTalk

池老,卖桃公者,专栏作者也,少以编程称大佬,后以文章显神仙。 其音清而洪,如溪驰涧中,响绝山谷,每每语之开发,产品,其音可旋环,响贯办公室内,逡巡不散。人在八丈之外,声穿百里之遥。 其文恣肆汪洋,其言自然天成,旨空远而意深长,思缜密而语连贯。非标点符号、错字别字,不能改也。因职常视公写稿之态,久坐不移,一时万字,千钧之势,仅一人一桌一椅一电脑也。  


长按二维码关注MacTalk

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存