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

本文由 【AI前线】原创,原文连接:http://t.cn/RTkgXrGgit


做者|Peter Bailis 等github

译者|Debra正则表达式

编辑|Emily算法

AI 前线导读:”这是个普及机器学习实践的项目,可是不须要使用者具备 AI 背景,他们取名为 DAWN,意思为“下一代数据分析”。背后的团队曾成功的研发出 Spark、Mesos、DeepDive、HogWild 等。能够想象这又会是一个成功的项目。”数据库


随着 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

关注后回复「AI」你懂的

相关文章
相关标签/搜索