伯克利论文提出实时机器学习:可解决实时性和灵活性等七大要求
近日,加州大学伯克利分校电气工程与计算机系和统计学系教授、知名的计算机科学和统计学学者 Michael I. Jordan 所在的一个研究团队发布了一篇题为《Real-Time Machine Learning: The Missing Pieces》的论文,该论文给出了实时机器学习应用应该满足的七大要求,同时还提出了一种能够满足这些要求的解决方案。机器之心对该论文进行摘要编译介绍。
摘要
机器学习正得到越来越多的应用——不只是使用静态模型来提供预测,而且也被用作涉及动态的实时决策的反馈回路的紧密组成部分。这些应用有一些新要求,其中每一项单独实现起来的难度都不大,但这些要求的组合却给已有的分布式执行框架(distributed execution frameworks)带来了很大的挑战,这些要求包括:毫秒延迟的高吞吐量的计算、任意任务图的自适应构造和异构核(heterogeneous kernel)在不同资源集上的执行。我们断言这种机器学习应用需要一种新的分布式执行框架,并且使用一种概念验证的架构提出了一种候选方法,其在当前代表性应用所使用的最先进的执行架构上实现了 63 倍的性能提升。
1 引言
机器学习(ML)应用的整体面貌正在发生着巨大的变化。尽管机器学习主要侧重于在静态的模型(图 1a)上进行训练和提供预测,但现在也有强大的推动力在推动机器学习模型在反馈回路中的紧密整合。实际上,机器学习应用已经在监督学习范式(其中静态模型是在离线的数据上进行训练的)上实现了扩展,并出现了更广泛的范式,比如强化学习(其中应用可能在真实环境中执行,可以融合来自多个输入流的传感数据并做出反应,并执行连续的微模拟,最后通过采取能影响被感知环境的动作来完成这个回路)(图 1b)。
图 1:(a)传统的机器学习流程(离线训练)。(b)强化学习流程示例:该系统通过与环境进行连续交互来学习策略,即在观察和动作之间的映射。
因为通过与真实世界进行交互来学习可能很不安全、不实用或会受到带宽的限制,所以许多强化学习系统严重依赖于模拟物理环境或虚拟环境。在训练(比如,学习一个神经网络策略)和部署过程中都可能会用到模拟。在后者的案例中,随着我们与真实世界的交互,我们可能会持续地更新该模拟环境,并执行许多模拟来找到下一个动作(比如,使用蒙特卡洛树搜索这样的在线规划算法)。这要求能比实时更快地执行模拟。
这样的新兴应用要求新水平的编程灵活性和性能。要在不丢失现代分布式执行框架的优点(比如,应用层面的容错)的同时满足这些需求是一个显著的难题。我们自己在 Spark、MPI 和 TensorFlow 中实现机器学习和强化学习的经历也凸显了其中一些难题,并给出了支持这些应用的三组要求。尽管这些要求对机器学习和强化学习来说至关重要,但我们相信它们在更广泛的层面也是有用的。
性能要求。新兴的机器学习应用有严格的延迟要求的吞吐量要求。
R1:低延迟。新兴机器学习应用的实时、反应性和交互性本质要求毫秒级的端到端延迟的细粒度任务执行[8]。
R2:高吞吐量。在训练[16]和部署中的推理[19]过程所需的微模拟的量必需每秒数百万任务量级的高吞吐量任务执行支持。
执行模型要求。尽管许多已有的并行执行系统[9,21]已经在识别和优化常见计算模式上取得了很大的进步,但新兴的机器学习应用还需要远远更大的灵活性。
R3:动态任务创建。像蒙特卡洛树搜索这样的强化学习原语可能会在执行过程中基于结果或其它任务的执行过程而生成新任务。
R4:异构任务。深度学习原语和强化学习模拟可以产生非常不同执行时间和资源要求的任务。为任务和资源的异构性提供的特定的系统支持是强化学习应用的关键。
R5:任意数据流依赖(dataflow dependencies)。类似地,深度学习原语和强化学习模拟可以会产生任意的而且往往是细粒度的任务依赖(不限于整体同步并行)。
实用性要求
R6:透明的容错。容错一直都是许多部署场景的一个关键要求,而要在满足高吞吐量和非决定性任务要求的同时满足这个要求是很有挑战性的。
R7:调试和分析。调试和性能分析是开发任何分布式应用中最耗时的部分。对于机器学习和强化学习应用而言尤其如此,这些应用往往是计算密集型的。
现有的框架往往难以满足其中的一个或多个要求(第 5 节)。我们提出了一种灵活的分布式编程模型(第 3.1 节),可以满足 R3-R5。此外,我们还提出了一种支持这种编程模型的系统架构,其满足我们的性能要求(R1-R2)且无需放弃关键的实用性要求(R6-R7)。我们提出的系统架构(第 3.2 节)构建于两个主要的组件之上:一个逻辑中心化的控制平面(logically-centralized control plane)和一个混合调度器(hybrid scheduler)。前者支持无状态分布式组件和沿袭重放(lineage replay)。后者能以一种自底向上的方式分配资源,在节点层面和集群层面上将本地产生的工作分开。其结果是在微基准上的毫秒级的性能以及在代表性的整体同步并行(BSP)上的强化学习应用上的 63 倍的端到端的加速。
2 激励示例
为了激励需求 R1-R7,请假想一个物理机器人试图在一个不熟悉的真实世界环境中实现一个目标的应用。多种传感器可能会融合视频和 LIDAR 输入来构建该机器人的环境的多个候选模型(图 2a)。然后使用一个循环神经网络(RNN)策略(图 2c)和蒙特卡洛树搜索(MCTS)和其它规划算法(图 2b),可以得到动作(action),以实现对该机器人的实时控制。通过在最近的环境模型中使用一个物理模拟器,MCTS 会并行尝试数百万个动作序列,并自适应地探索其中最有前途的。
图 2:一个实时机器学习应用的组件示例。(a) 对流传感数据的在线处理,用于建模环境,(b) 蒙特卡洛树搜索的动态图构建(这里的任务中模拟探索动作序列),(c)在循环神经网络中的异构任务。不同的阴影程度表示不同类型的任务,而其任务长度则代表了它们的持续时间。
3 提出的解决方案
在这一节,我们概述了一种用于分布式执行框架和一种满足要求 R1-R7 的编程模型的提案,可用于实时机器学习应用。
图 3:提出的架构,带有一个混合调度(3.2.2 节)和中心化的控制平面(3.2.1节)