传统上,针对特定的工作负载优化调度算法几乎是不可能的。据麻省理工学院(MIT)官网称,MIT研究人员开发的一个新系统自动“学习”如何在数千台服务器上调度数据处理操作,帮助数据中心更高效地运行。
MIT的研究人员利用“强化学习”(RL:一种反复试验的机器学习技术)来根据特定服务器集群中的特定工作负载调整调度决策的系统。他们构建了新的RL技术,可以在复杂的工作负载下进行培训。在培训中,系统尝试了许多可能的方法来跨服务器分配传入的工作负载,最终在利用计算资源和快速处理速度方面找到了最佳折衷。不需要人工干预,只需要简单的指导。
与最优秀的手写调度算法相比,该系统完成任务的速度快20%到30%,在高流量的时候快近一倍。该系统可以使数据中心以更快的速度处理相同的工作负载,使用更少的资源。
RL的调度
通常,数据处理作业进入以“节点”和“边”图表示的数据中心。每个节点代表一些需要完成的计算任务,其中节点越大,所需的计算能力就越大。连接节点的边将连接的任务链接在一起。调度算法根据不同的策略为服务器分配节点。
但是传统的RL系统不习惯处理这样的动态图。为了构建基于RL的调度程序,研究人员必须开发一个模型,该模型可以处理图形结构作业,并可扩展到大量作业和服务器。
他们系统的“代理”是一种调度算法,它利用图神经网络,通常用于处理图结构数据。为了提出一个适合于调度的图神经网络,他们实现了一个自定义组件,该组件聚合图中不同路径上的信息——比如快速估计完成图中给定部分所需的计算量。这对于作业调度非常重要,因为“子”(下)节点在其“父”(上)节点完成之前不能开始执行,因此预测图中不同路径上的未来工作是做出良好调度决策的关键。
为了训练RL系统,研究人员模拟了许多不同的图序列,这些图序列模拟进入数据中心的工作负载。然后“代理”决定如何沿着图将每个节点分配给每个服务器。对于每一个决策,组件都根据它在特定任务上的表现来计算奖励——比如最小化处理单个任务的平均时间。代理人会不断改进自己的决定,直到获得尽可能高的回报。
建立基准工作负载
然而,有一个问题是,一些工作负载序列比其他工作负载序列更难处理,因为它们有更大的任务或更复杂的结构。这些过程总是需要更长的时间来处理,因此,奖励信号总是比简单的信号要低。但这并不一定意味着系统性能很差:它可以很好地处理具有挑战性的工作负载,但仍然比简单的工作负载慢。困难的可变性使得模型很难决定哪些行为是好的,哪些是不好的。
为了解决这个问题,研究人员采用了一种叫做“基线化”的技术。该技术采用具有大量变量的场景的平均值,并将这些平均值用作比较未来结果的基线。在训练期间,他们为每个输入序列计算基线。然后,他们让调度程序针对每个工作负载序列进行多次培训。接下来,系统对针对相同输入工作负载做出的所有决策进行平均性能评估。这个平均值是基线,然后模型可以将其未来的决策与之进行比较,以确定其决策是好是坏。他们将这种新技术称为“依赖于输入的基线化”。
研究人员说,这种创新适用于许多不同的计算机系统。他说:“这是在输入过程影响环境的环境中进行强化学习的一般方法,希望每个培训活动都考虑输入过程的一个样本。”“几乎所有的计算机系统都要处理不断变化的环境。”
目前,他们的模型是通过模拟来训练的,这些模拟试图实时重现传入的在线流量。接下来,研究人员希望通过实时通信训练该模型,这可能会导致服务器崩溃。因此,他们目前正在开发一种“安全网”,当系统即将崩溃时,它将停止工作。