这一期的实践研究的特色是丹·克兰肖和乔伊·冈萨雷斯策划的选择,他们提供了机器学习服务系统的概述。当我们希望将机器学习模型实际部署到生产中时会发生什么?我们如何提供高精度和高计算效率的预测?Dan和Joey的选择提供了一个深思熟虑的尖端技术的选择,涵盖数据库级集成、视频处理和预测中间件。鉴于人们对机器学习的兴趣激增,以及它对几乎所有垂直应用程序的影响越来越大,这样的系统可能会变得像今天的关系数据库一样普遍。祝你阅读愉快!
彼得百利
机器学习是一种使能技术,它通过提取归纳为新数据的模式,将数据转换为解决方案。很多机器学习可以简化为学习一个模型函数,该函数将输入(例如照片)映射到预测(例如照片中的对象)。一旦经过训练,这些模型就可以用来预测新的输入(例如,新照片),并作为更复杂决策的一部分(例如,是否推广一张照片)。尽管每年都有成千上万篇关于如何设计和训练模型的论文发表,但令人惊讶的是,在训练后如何管理和部署这些模型的研究却很少。本文讨论的正是这个稍后的、经常被忽视的主题。
在研究最近关于如何管理和部署机器学习模型的工作之前,让我们首先简要回顾一下机器学习应用程序开发的三个阶段:模型开发、训练和推断。
模型开发通常从收集和准备训练数据开始。然后,这些数据被用于设计新的特征转换,并从广泛的模型设计(例如,逻辑回归、随机森林或卷积神经网络)及其相应的训练算法中进行选择。即使在选择了模型和训练算法之后,通常还会有额外的超参数(例如,平滑参数),必须通过反复训练和评估模型来进行调优。
模型开发的结果通常是一个可以大规模运行的培训管道。训练阶段在新数据到达时重复执行训练管道,以生成新的训练过的模型,这些模型可用于作为某些应用程序或服务的一部分进行预测。
呈现预测的最后阶段通常称为预测服务、模型评分或推断。预测服务需要将机器学习软件与其他系统集成,包括面向用户的应用程序代码、实时数据库和大容量数据流。因此,它有自己的一系列挑战和权衡,是新兴的预测服务系统的领域。
虽然预测服务在广告定位和内容推荐等领域得到了广泛研究,但由于领域特定的需求,这些系统开发了高度专业化的解决方案,而没有解决开发高价值机器学习应用程序所面临的全套系统挑战。在这里,我们选择了四篇互补的论文,每一篇都为开发机器学习应用程序提供了实际的经验教训,无论您是在开发自己的预测服务系统还是使用现成的软件。
A. Deshpande和S. Madden
支持数据库系统中基于模型的用户视图SIGMOD '06会议记录;https://dl.acm.org/citation.cfm?id=1142483.
MauveDB是一项雄心勃勃的努力,它将机器学习模型合并到传统关系数据库中,同时保留基于sql的查询语言的声明性。MauveDB (米odel-b一个sed用户查看,向著名的呆伯特(Dilbert)卡通片致敬;http://dilbert.com/strip/1995-11-17)首先观察到建模过程从根本上植根于数据,然而传统的数据库管理系统为那些寻求创建和管理模型的人提供了很少的价值。在撰写本文时,数据库对模型的支持程度是能够将经过训练的模型用作UDF(用户定义函数)。这允许用户将模型引入到数据中,但对于将模型集成到查询优化器或使数据库能够自动维护模型来说,这是不够的。
MauveDB注意到,模型只是一种针对底层训练数据指定复杂物化视图的方法。SQL视图机制被扩展为支持声明式地将模型指定为数据库引擎可以理解和优化的视图。因此,随着底层数据的发展,数据库可以随着时间的推移自动训练和维护模型。此外,通过将模型集成为视图而不是用户定义的函数,查询优化器可以使用现有的基于成本的优化技术来选择查询每个训练过的模型的最有效方法。
然而,这种将模型深度集成到数据库中的方法有一些显著的局限性。特别是,MauveDB专注于对传感器数据建模,因此只考虑两种类型的模型——回归和插值,这两种模型在该上下文中被广泛使用。即使对于这两个相对简单的模型,视图定义也会变得复杂,以解释所有可用的建模选择。
声明式地指定模型还限制用户只能使用现有的数据库功能。任何自定义预处理操作或模型专门化都必须编写为udf,这违背了模型和数据库之间紧密集成的目的。最后,必须针对每种训练算法分别研究和开发供优化器选择的各种访问方法和物化策略。因此,新类型的基于模型的视图的添加需要开发新的访问方法和增量维护策略,以及修改数据库引擎本身的任务,这些任务通常是普通用户不愿意也不能够在不付出大量努力的情况下完成的。
本文的关键见解是,通过找到模型的语义并将其暴露给嵌入模型的应用程序,可以使端到端机器学习应用程序更快、更容易维护。但是这种紧密的集成是以牺牲通用性和可扩展性为代价的,因为它使得更改建模过程或将这些技术应用到新领域变得更加困难。
阿加瓦尔,龙B.,特劳普曼,辛D.,张磊
一个可扩展的在线广告响应预测平台。在WSDM '14的议事录;https://dl.acm.org/citation.cfm?id=2556195.2556252
LinkedIn开发的LASER系统探索了一种全面的方法,为培训和服务机器学习模型建立一个通用平台。LASER的设计初衷是为公司基于社交网络的广告系统提供动力,但在公司内部得到了广泛应用。LASER团队故意限制了它支持的具有逻辑回归的广义线性模型的范围,但采用了端到端方法来构建一个系统,在整个机器学习生命周期中支持这些模型。因此,在开发新的机器学习应用程序时,本文有许多见解可以广泛应用。通过限制所支持的模型的类,作者能够将他们讨论的所有技术直接构建到平台本身中。但是,这些相同的思想(例如,关于缓存或延迟计算的思想)也可以应用于每个应用程序之上的更通用的服务系统。本文描述了提高培训速度、服务性能和可用性的想法。
为了提供实时推理,LASER使用了各种各样的技术来进行智能缓存和物化(这些类似于在MauveDB论文的§3.3.2中讨论的视图维护策略)。LASER中描述的模型预测了向特定用户显示特定广告的得分。因此,该模型包括只依赖于广告或用户的线性项,以及同时依赖于用户和广告的二次项。LASER利用这种模型结构,以最大化缓存重用和最小化浪费的计算和存储的方式部分预物化和缓存结果。二次项的实时计算成本很高,但预计算用户与广告匹配的完全交叉产品(文献中描述为完全预物化的技术)将是浪费和昂贵的,特别是在用户偏好可能迅速变化、广告活动频繁启动和停止的在线广告等环境中。
相反,本文描述了LASER如何利用其广义线性模型的特定结构来预物化部分叉乘,以加速推理,而不会产生预计算整个乘积的浪费。LASER还为每个用户和广告活动维护部分结果缓存。这种分解缓存设计特别适合在每个用户身上运行许多广告活动的广告设置。缓存特定于用户的术语可以摊平许多广告预测的计算成本,从而以最小的存储开销提高推断的总体速度。在LASER中部署的部分预物化和缓存策略可以应用于更广泛的一类模型(例如,神经特征或单词嵌入)。
LASER还使用了两种技术来权衡短期预测的准确性和长期效益。首先,LASER使用汤普森抽样进行在线探索,以探索由于样本量小,期望值方差大的广告。汤普森抽样是探索技术家族中的一种,它可以系统地权衡利用当前知识(例如,服务于一个已知的好广告)和探索决策空间的未知部分(服务于一个高方差的广告),以最大化长期效用。
LASER团队故意限制了它支持的具有逻辑回归的广义线性模型的范围,但采用了端到端方法来构建一个系统,在整个机器学习生命周期中支持这些模型。
其次,LASER团队采用了一种他们称之为哲学的方法“错了总比迟到好。”如果模型中的某项计算时间过长(例如,因为它从远程数据存储中获取数据),则模型将简单地填充该值的无偏估计,并返回精度降低的预测,而不是阻塞,直到计算出该项。在面向用户的应用程序的情况下,稍精确的预测所带来的任何收益都可能被网页加载时间过长所导致的沉浸性损失所抵消。
LASER论文有两个关键要点:首先,经过训练的模型通常执行计算,其结构可以被分析和利用,以提高推理性能或降低成本;其次,在如何使用预测的背景下评估机器学习模型的部署决策是至关重要的,而不是盲目地试图最大化验证数据集的性能。
D.康,J.埃蒙斯,F.阿布扎伊德,P.贝利斯。还有扎哈里亚先生
NoScope:大规模优化视频上的神经网络查询。在VLDB捐赠基金的议事日程, 11 (2017);https://dl.acm.org/citation.cfm?id=3137664.
斯坦福大学的Kang等人的这篇论文提出了一套显著降低成本用于视频流目标检测的预测。这项工作的动机来自于当前的硬件趋势,特别是,随着摄像机变得更便宜,视频数据采集的成本正在下降,而最先进的计算机视觉模型需要昂贵的硬件加速器,如gpu,才能对单个视频流进行实时计算预测。
为了支持统一的预测接口,Clipper采用了模块化、分层的架构,在单独的Docker容器中运行每个模型,并在模型和查询应用程序之间插入中间层。
为了减少这种成本失衡,作者开发了一种名为NoScope (https://github.com/stanford-futuredata/noscope)通过改进模型推理性能来降低视频处理的金钱成本。作者开发了一套技术,以减少在查询视频流时必须对代价高昂的深度学习模型进行评估的帧数,然后开发了一个基于成本的查询优化器,该查询器可以在每个查询的基础上选择使用哪种技术。(注意,在NoScope工作中,术语的使用查询引用流查询,以确定特定对象在视频中可见的时间段。)因此,虽然NoScope仅限于固定位置摄像机上的二进制分类领域,但它可以为该领域中的许多模型和应用程序自动选择成本最优的查询计划。
本文提出了两种结合使用的技术,以减少需要最先进的模型进行精确分类的帧数。首先,作者使用历史视频数据特定摄像头馈电通过查询来训练一个更小的、专门的查询模型。虽然这个模型放弃了更昂贵的模型的通用性,但它通常能准确地对帧进行分类,且置信度高。只有当专门的模型返回的预测低于特定的置信阈值时,作者才使用更昂贵的模型。此方法与先前在模型级联方面的工作相似,最先由Viola和Jones (https://bit.ly/2KteogS).这与Hinton、Vinyals和Dean (https://arxiv.org/abs/1503.02531),虽然在蒸馏的情况下,目标是训练一个更便宜的模型取代比较贵的那个,而不是补充的那个。
NoScope将这些专用模型与一种称为不同的探测器,它利用固定角度视频流中的时间局部性来跳过所有帧。如果差异检测器发现当前帧与已经标记的现有帧足够相似,NoScope就会完全跳过推断,只使用先前分类的帧中的标签。NoScope使用基于成本的优化器,从一组可能的专用模型体系结构和差异检测器中为特定的视频流、查询和模型选择最佳部署。
NoScope的关键见解是识别特定于领域的结构,可以利用该结构在该领域的一系列设置中加速推断。虽然NoScope利用的特定结构仅限于固定位置的对象检测,但识别时间和空间冗余以减少昂贵的最先进模型的负载,有潜力在许多不同的预测服务设置中加以利用。
克兰肖,王旭人,周国强,富兰克林,冈萨雷斯,斯托伊卡
Clipper:一个低延迟的在线预测服务系统。在NSDI'17会议记录:https://dl.acm.org/citation.cfm?id=3154630.3154681.
本文的最后一篇论文描述了Clipper (http://clipper.ai/)预测服务系统。Clipper的设计目标是在交互延迟时轻松地为任何训练过的模型提供服务,而不是像前面的论文那样对可以提供服务的模型类型做出任何假设或限制。从这个起点出发,本文探索了优化推理性能和准确性的技术,同时将模型封装在一个统一的黑箱预测接口中。
为了支持统一的预测接口,Clipper采用了模块化、分层的架构,在单独的Docker容器中运行每个模型,并在模型和查询应用程序之间插入中间层。这种分布式体系结构使系统能够同时为软件和硬件需求相冲突的模型提供服务(例如,为运行在混合cpu和gpu上的不同编程语言编写的模型提供服务)。此外,该体系结构提供了不同模型之间的流程隔离,并确保单个模型故障不会影响系统其余部分的可用性。最后,这种分离的设计提供了一种方便的机制,可以通过复制水平和独立地扩展每个模型,以提高吞吐量。
Clipper还介绍了latency-aware配料利用硬件加速推理。批处理预测请求可以显著提高性能。批处理有助于分摊系统开销的成本(例如,远程过程调用和特性方法调用),并通过允许模型利用内部并行性来提高吞吐量。例如,许多机器学习框架都为面向批处理的模型训练进行了优化,因此能够使用SIMD(单指令、多数据)指令和GPU加速器来改进大输入批处理的计算。虽然批处理增加了吞吐量,但是它也增加了推理延迟,因为在返回单个预测之前必须完成整个批处理。Clipper采用了一种延迟感知的批处理机制,该机制在每个模型的基础上自动设置最佳批处理大小,以最大化吞吐量,同时仍然以用户指定的服务级别目标的形式满足延迟约束。
为了提高预测精度,Clipper引入了一套选择政策这使得预测服务系统能够适应反馈,并在黑盒模型之上执行在线学习。选择策略使用奖励反馈在多个候选模型之间进行选择,甚至对给定的预测请求进行组合。通过在每个查询的基础上选择使用的最佳模型或模型集,Clipper使机器学习应用程序对动态环境更加健壮,并允许应用程序对降级或失败的模型实时做出反应。选择策略接口旨在支持集成方法(https://bit.ly/2a7aB8N),并探索/开发可以表达这类方法的广泛范围的技术,包括多臂盗匪技术和激光使用的汤普森采样算法。
本文有两个关键要点:第一个是引入了模块化预测服务体系结构,该体系结构能够为在任何机器学习框架中训练的模型提供服务,并提供独立扩展每个模型的能力;二是利用计算结构推理(与前面几篇论文利用的数学结构相反)来提高性能。Clipper通过批处理利用了这种结构,但也有可能利用其他类型的结构,特别是在采用更多灰盒或白盒方法进行建模服务的方法中,从而拥有更细粒度的性能信息。
一般来说,机器学习,特别是预测服务,是令人兴奋和快速发展的领域。随着本文描述的研究,商业系统正在积极开发低延迟预测服务。TensorFlow服务(https://www.tensorflow.org/serving/)是由谷歌开发的预测服务系统,用于为在TensorFlow中训练的模型提供服务。微软自定义决策服务(https://bit.ly/2JHp1v2),并附上文件(https://arxiv.org/abs/1606.03966),提供基于云的服务,使用多臂强盗算法和强化学习优化决策,与LASER中使用的Thompson抽样或Clipper的选择策略相同类型的探索/利用算法。最后,英伟达的TensorRT (https://developer.nvidia.com/tensorrt)是一个深度学习优化器和运行时,用于加速在Nvidia gpu上的深度学习推理。
虽然本文的重点是预测服务系统,但关于机器学习的新硬件也有令人兴奋的发展。谷歌现在已经创建了两个版本的TPU(张量处理单元)自定义ASIC。2016年发布的第一个版本专门用于提高速度和降低深度学习推理工作负载的功耗。TPUv2于2017年宣布,支持训练和推理工作负载,是谷歌云产品的一部分。脑波计划(https://bit.ly/2iotXMQ)正在探索使用fpga(现场可编程门阵列)来执行基于硬件的预测服务,并已经取得了一些令人兴奋的结果,在各种模型架构上演示了同时高通量和低延迟的深度学习推理。最后,英特尔的Nervana芯片和英伟达的Volta gpu都是新的、以机器学习为重点的架构,用于在训练和推理时提高机器学习工作负载的性能和效率。
随着机器学习从一个学术学科成熟为广泛应用的工程学科,我们预计重点将从模型开发转移到预测服务。因此,我们迫切希望看到下一代机器学习系统如何在这些论文中开创的思想基础上进一步推动预测服务系统的发展。
数字图书馆是由计算机协会出版的。版权所有©2018 ACM, Inc.
没有找到条目