麻省理工学院的研究人员开发了一个新系统,该系统可以自动"学习"如何在数千台服务器上调度数据处理操作——这项任务传统上是留给不精确的、人为设计的算法来完成的。这样做可以帮助今天急需能源的数据中心更有效地运行。 数据中心可以包含数以万计的服务器,这些服务器不断地运行来自开发人员和用户的数据处理任务。集群调度算法实时地跨服务器分配传入任务,以有效地利用所有可用的计算资源并快速完成任务。 然而,传统上,人类根据一些基本准则("策略")和各种权衡对这些调度算法进行微调。例如,他们可以编写算法来快速完成某些任务,或者在任务之间平均分配资源。但是工作负载——即组合任务的组——有各种大小。因此,对于人类来说,针对特定的工作负载优化调度算法实际上是不可能的,因此,它们常常达不到其真正的效率潜力。 麻省理工学院的研究人员把所有的手工编码工作都交给了机器。在SIGCOMM上发表的一篇论文中,他们描述了一个利用"强化学习"(RL)的系统,这是一种反复试验的机器学习技术,用于根据特定服务器集群中的特定工作负载调整调度决策。 为此,他们构建了新的RL技术,可以在复杂的工作负载下进行训练。在培训中,系统尝试了许多可能的方法来跨服务器分配传入的工作负载,最终在利用计算资源和快速处理速度方面找到最佳折衷。不需要人工干预,只需要简单的指导,比如"最小化完成工作的时间"。 与最优秀的手写调度算法相比,研究人员的系统完成任务的速度要快20%到30%,在高流量的时候要快一倍。然而,大多数情况下,系统学会了如何有效地压缩工作负载,以减少浪费。结果表明,该系统可以使数据中心以更快的速度处理相同的工作负载,使用更少的资源。 "如果你有一种使用机器进行试验和出错的方法,它们可以尝试不同的工作安排方式,并自动找出哪种策略更好,"电子工程与计算机科学系博士生毛宏梓(音译)说。这可以自动提高系统性能。利用率的任何微小改进,哪怕是1%,都可以为数据中心节省数百万美元和大量能源。" "在制定调度决策时,没有什么是放之皆宜的,"论文合著者Mohammad Alizadeh补充道,他是EECS教授,同时也是计算机科学与人工智能实验室(CSAIL)的研究员。"在现有的系统中,这些是硬编码的参数,您必须预先决定。相反,我们的系统学会了根据数据中心和工作负载调整调度策略特征。" 与Mao和Alizadeh一起发表论文的还有:博士后Malte Schwarzkopf和Shaileshh Bojja Venkatakrishnan,以及研究生研究助理Zili孟,所有这些人都来自CSAIL。 RL的调度 通常,数据处理作业进入以"节点"和"边"图表示的数据中心。每个节点表示一些需要完成的计算任务,其中节点越大,所需的计算能力就越大。连接节点的边将连接的任务链接在一起。调度算法根据不同的策略为服务器分配节点。 但是传统的RL系统不习惯处理这样的动态图。这些系统使用一个软件"代理"来做决定,并接收反馈信号作为奖励。从本质上讲,它试图最大化任何给定行为的回报,以学习特定情境下的理想行为。例如,它们可以帮助机器人通过与环境的互动来学习完成某项任务,比如捡起一个物体,但这需要通过一个更简单的像素网格来处理视频或图像。 为了建立基于rl的调度程序(称为Decima),研究人员必须开发一个模型,该模型可以处理图形结构的作业,并可扩展到大量作业和服务器。他们的系统的"代理"是一种调度算法,它利用了图形神经网络,通常用于处理图形结构的数据。为了得到一个适合于调度的图形神经网络,他们实现了一个自定义组件,该组件聚合了图形中不同路径的信息——比如快速估计完成图形的给定部分需要多少计算。这对于作业调度非常重要,因为"子"(下)节点在其"父"(上)节点完成之前无法开始执行,因此预测图中不同路径上的未来工作是做出良好调度决策的关键。 为了训练他们的RL系统,研究人员模拟了许多不同的图形序列来模拟进入数据中心的工作负载。然后,代理决定如何将图上的每个节点分配给每个服务器。对于每一个决策,组件都根据它在特定任务中的表现来计算奖励,例如最小化处理单个任务的平均时间。代理会不断改进自己的决策,直到获得尽可能高的回报。 建立基准工作负载 然而,有一个问题是,某些工作负载序列比其他序列更难处理,因为它们有更大的任务或更复杂的结构。这些总是需要更长的时间来处理,因此,奖励信号总是比简单的信号要低。但这并不一定意味着系统性能很差:它可以在具有挑战性的工作负载上运行得很好,但是仍然比简单的工作负载要慢。难度的可变性使得模型很难决定哪些行为是好的,哪些是不好的。 为了解决这个问题,研究人员采用了一种叫做"基线化"的技术。该技术对具有大量变量的场景取平均值,并将这些平均值用作比较未来结果的基准。在训练过程中,他们计算出每个输入序列的基线。然后,他们让调度器在每个工作负载序列上进行多次训练。接下来,系统对针对相同输入工作负载所做的所有决策的平均性能进行评估。这个平均值是一个基线,模型可以根据这个基线来比较它未来的决策,以确定它的决策是好是坏。他们将这种新技术称为"依赖输入的基线化"。 研究人员说,这种创新适用于许多不同的计算机系统。他说:"这是在有输入过程影响环境的环境中进行强化学习的一般方法,你希望每个训练事件都考虑输入过程的一个样本。""几乎所有的计算机系统都要处理不断变化的环境。" 威斯康辛大学麦迪逊分校(University of Wisconsin at Madison)的计算机科学教授阿迪亚·阿格拉(Aditya Akella)发现,麻省理工学院的这套系统可以帮助他们进一步改善自己的政策。阿克雷说:"Decima可以更进一步,找到机会进行[调度]优化,这些优化过于繁琐,很难通过手工设计/调优过程来实现。""我们设计的调度器在应用程序性能和集群效率方面比生产中使用的技术有了显著的改进,但仍与我们可能实现的理想改进存在差距。"Decima表明,基于rpc的方法可以发现有助于进一步缩小差距的[策略]。德西玛改进了我们的技术(大约)30%,这是一个巨大的惊喜。" 目前,他们的模型正在接受模拟训练,试图实时重现传入的在线流量。接下来,研究人员希望对模型进行实时通信训练,这可能会导致服务器崩溃。因此,他们目前正在开发一种"安全网",当系统即将导致崩溃时就会停止运行。"我们把它当做辅助轮,"Alizadeh说。"我们希望这套系统能够持续训练,但它有一定的辅助轮,如果它走得太远,我们可以确保它不会摔倒。"