CN110489223B - 一种异构集群中任务调度方法、装置及电子设备 - Google Patents

一种异构集群中任务调度方法、装置及电子设备 Download PDF

Info

Publication number
CN110489223B
CN110489223B CN201910790373.6A CN201910790373A CN110489223B CN 110489223 B CN110489223 B CN 110489223B CN 201910790373 A CN201910790373 A CN 201910790373A CN 110489223 B CN110489223 B CN 110489223B
Authority
CN
China
Prior art keywords
subtask
gpu
task
node
queue
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201910790373.6A
Other languages
English (en)
Other versions
CN110489223A (zh
Inventor
张海涛
耿欣
马华东
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing University of Posts and Telecommunications
Original Assignee
Beijing University of Posts and Telecommunications
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing University of Posts and Telecommunications filed Critical Beijing University of Posts and Telecommunications
Priority to CN201910790373.6A priority Critical patent/CN110489223B/zh
Publication of CN110489223A publication Critical patent/CN110489223A/zh
Application granted granted Critical
Publication of CN110489223B publication Critical patent/CN110489223B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/548Queue

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • General Factory Administration (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明实施例提供了一种异构集群中任务调度方法、装置及电子设备,其中,方法可以包括:针对各个计算节点,确定调度至该计算节点的各个任务;将各个子任务分别划分为多个子任务;当子任务对应的父子任务执行完成时,将子任务添加到就绪子任务队列中;针对就绪子任务队列中的各个第一子任务,当该第一子任务在图形处理器GPU计算单元的执行速率大于该第一子任务在中央处理器CPU计算单元的执行速率,则将该第一子任务添加至GPU子任务队列;根据GPU子任务队列中各个第二子任务与GPU正在执行的子任务的干扰关系,将各个第二子任务调度至第二子任务对应的目标GPU。如此,能够提高资源利用率,提高异构集群的系统吞吐量。

Description

一种异构集群中任务调度方法、装置及电子设备
技术领域
本发明涉及信息处理技术领域,特别是涉及一种异构集群中任务调度方法、装置及电子设备。
背景技术
近年来,CPU-GPU异构计算被广泛应用于数据挖掘、视频处理、机器学习等领域,异构集群将多个由中央处理器(Central Processing Unit,CPU)+GPU(Graphics ProcessingUnit,图形处理器)计算单元组成的计算节点连接起来形成高速网络,充分利用混合CPU-GPU计算节点的计算特点,为计算密集型应用提供了强大、高效的计算能力。不同的任务调度策略会导致异构集群的不同性能,
如何调度多个任务以实现最佳的系统吞吐量并且提高异构集群的资源利用率成为当前亟待解决的问题。
发明内容
本发明实施例的目的在于提供一种异构集群中任务调度方法、装置及电子设备,以提高资源利用率,提高异构集群的系统吞吐量。具体技术方案如下:
第一方面,本发明实施例提供了一种异构集群中任务调度方法,包括:
针对各个计算节点,确定调度至该计算节点的各个任务;其中,各个计算节点分别包括中央处理器CPU和图形处理器GPU;
将各个子任务分别划分为多个子任务;
当所述子任务对应的父子任务执行完成时,将所述子任务添加到就绪子任务队列中;其中,父子任务是所述子任务执行时所依赖的子任务;
针对所述就绪子任务队列中的各个第一子任务,当该第一子任务在GPU计算单元的执行速率大于该第一子任务在CPU计算单元的执行速率,则将该第一子任务添加至GPU子任务队列;
根据所述GPU子任务队列中各个第二子任务与GPU正在执行的子任务的干扰关系,将各个第二子任务调度至第二子任务对应的目标GPU,针对各个第二子任务,该第二子任务对应的目标GPU是与该第二子任务干扰最小的,正在执行的子任务所在的GPU。
可选的,在所述将各个子任务分别划分为多个子任务之后,所述方法还包括:
获取所述子任务的部分特征值,所述部分特征值包括以下几项中的部分项:CPU使用率、主机内存使用率、GPU计算单元使用率、GPU一级高速缓存使用率、GPU二级高速缓存使用率、GPU纹理缓存使用率、GPU内存使用率、全局加载吞吐量和全局存储吞吐量;
通过预先训练的神经协同过滤NCF模型,预测所述子任务的除所述部分特征值之外的其他特征值;其中,所述NCF模型是基于多个样本任务的多个特征类型对应的特征值训练得到的。
可选的,所述通过预先训练的神经协同过滤NCF模型,预测所述子任务的除所述部分特征值之外的其他特征值,包括:
根据所述部分特征值对子任务描述矩阵STDM进行初始化,得到初始化STDM;
对所述初始化STDM进行矩阵分解,得到子任务隐因子矩阵和度量隐因子矩阵;
确定描述所述子任务的子任务类型对应的子任务特征向量和描述待预测特征的特征类型对应的度量特征向量;
将所述子任务特征向量与所述子任务隐因子矩阵相乘得到子任务隐向量,并将所述度量特征向量与所述度量隐因子矩阵相乘得到度量隐向量;
将所述子任务隐向量和所述度量隐向量输入所述NCF模型中的多层感知机MLP,输出所述待预测特征的预测特征值。
可选的,所述其他特征值包括加速比,所述加速比用于表示所述子任务在GPU运行相对于在CPU上运行的性能增益;
所述针对所述就绪子任务队列中的各个第一子任务,当该第一子任务在GPU计算单元的执行速率大于该第一子任务在CPU计算单元的执行速率,则将该第一子任务添加至GPU子任务队列,包括:
根据各个第一子任务的所述加速比的大小,将加速比最大的第一子任务添加至所述GPU子任务队列。
可选的,所述根据所述GPU子任务队列中各个第二子任务与GPU正在执行的子任务的干扰关系,将各个第二子任务调度至第二子任务对应的目标GPU,包括:
针对各个第二子任务,计算该第二子任务与所述GPU正在执行的子任务的相似性;
将与所述GPU正在执行的子任务的相似性最低的第二子任务调度至所述GPU。
可选的,所述针对各个第二子任务,计算该第二子任务与所述GPU正在执行的子任务的相似性,包括:
针对各个第二子任务,确定该第二子任务的特征向量;
确定所述GPU正在执行的各个子任务的特征向量;
计算该第二子任务的特征向量,分别与所述GPU正在执行的各个子任务的特征向量之间的各个余弦相似度;
计算各个余弦相似度的平均值,并将所述平均值的倒数作为该第二子任务对应的优先级;
所述将与所述GPU正在执行的子任务的相似性最低的第二子任务调度至所述GPU,包括:
将优先级最高的第二子任务调度至所述GPU。
可选的,所述针对各个第二子任务,确定该第二子任务的特征向量,包括:
针对各个第二子任务,通过该第二子任务的所述部分特征值和所述其他特征值组成该第二子任务的特征向量。
可选的,在所述针对各个计算节点,确定调度至该计算节点的各个任务之前,所述方法还包括:
获取集群层任务队列中各个任务的任务特征信息以及异构集群中各个计算节点的节点特征信息,其中,针对各个任务,该任务的任务特征信息包括该任务的任务类型和该任务的任务量,针对各个计算节点,该计算节点的节点特征信息包括该节点的CPU利用率、GPU利用率、节点内存使用率、GPU显存使用率、节点上行带宽以及节点下行带宽;
将各个任务的所述任务特征信息和各个计算节点的所述节点特征信息输入预先训练的深度Q网络DQN,分别确定出各个任务对应的计算节点;其中,所述DQN是根据多个样本任务的任务特征信息训练得到的,任一样本任务的任务特征信息包括:该任务的任务类型和该任务的任务量;
针对每个任务,将该任务调度至该任务对应的计算节点,以使该计算节点对该任务包括的多个子任务进行并行化处理。
第二方面,本发明实施例提供了一种异构集群中任务调度装置,包括:
第一确定模块,用于针对各个计算节点,确定调度至该计算节点的各个任务;其中,各个计算节点分别包括中央处理器CPU和图形处理器GPU;
划分模块,用于将各个子任务分别划分为多个子任务;
第一添加模块,用于当所述子任务对应的父子任务执行完成时,将所述子任务添加到就绪子任务队列中;其中,父子任务是所述子任务执行时所依赖的子任务;
第二添加模块,用于针对所述就绪子任务队列中的各个第一子任务,当该第一子任务在GPU计算单元的执行速率大于该第一子任务在CPU计算单元的执行速率,则将该第一子任务添加至GPU子任务队列;
第一调度模块,用于根据所述GPU子任务队列中各个第二子任务与GPU正在执行的子任务的干扰关系,将各个第二子任务调度至第二子任务对应的目标GPU,针对各个第二子任务,该第二子任务对应的目标GPU是与该第二子任务干扰最小的,正在执行的子任务所在的GPU。
第三方面,本发明实施例提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,所述处理器,所述通信接口,所述存储器通过所述通信总线完成相互间的通信;
所述存储器,用于存放计算机程序;
所述处理器,用于执行所述存储器上所存放的程序时,实现第一方面所述的方法步骤。
第四方面,本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现第一方面所述的方法步骤。
本发明实施例提供的异构集群中任务调度方法、装置及电子设备,可以针对各个计算节点,确定调度至该计算节点的各个任务;其中,各个计算节点分别包括中央处理器CPU和图形处理器GPU;将各个子任务分别划分为多个子任务;当子任务对应的父子任务执行完成时,将子任务添加到就绪子任务队列中;其中,父子任务是子任务执行时所依赖的子任务;针对就绪子任务队列中的各个第一子任务,当该第一子任务在GPU计算单元的执行速率大于该第一子任务在CPU计算单元的执行速率,则将该第一子任务添加至GPU子任务队列;根据GPU子任务队列中各个第二子任务与GPU正在执行的子任务的干扰关系,将各个第二子任务调度至第二子任务对应的目标GPU,针对各个第二子任务,该第二子任务对应的目标GPU是与该第二子任务干扰最小的,正在执行的子任务所在的GPU。本发明实施例中,可以将调度至计算节点的任务划分为多个子任务,并根据子任务在GPU计算单元的执行速率于在CPU计算单元的执行速率,将子任务调度至合适的计算单元,并在将子任务调度至GPU时,考虑子任务与GPU正在执行的子任务之间的干扰,实现节点层面的任务并行化,提高资源利用率,提高异构集群的系统吞吐量。且能够避免子任务之间的干扰对任务执行效率的影响,提高任务执行效率。当然,实施本发明的任一产品或方法必不一定需要同时达到以上所述的所有优点。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的异构集群中任务调度方法的一种流程图;
图2为本发明实施例提供的异构集群中任务调度方法的另一种流程图;
图3为本发明实施例提供的异构集群中任务调度装置的一种结构示意图;
图4为本发明实施例提供的异构集群中任务调度装置的另一种结构示意图;
图5为本发明实施例提供的电子设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
CPU-GPU异构计算被广泛应用于数据挖掘、视频处理、机器学习等领域,异构集群将多个由CPU+GPU计算单元组成的计算节点连接起来形成高速网络,充分利用混合CPU-GPU计算节点的计算特点,为计算密集型应用提供了强大、高效的计算能力。不同的任务调度策略会导致异构集群的不同性能。如何调度多个任务以实现最佳的系统吞吐量并且提高异构集群的资源利用率成为当前亟待解决的问题。现代GPU支持多任务共同执行,而多任务共同执行会因其对GPU上资源的需求和竞争而产生干扰,影响任务的执行效率,这使得在异构集群中的任务并行化问题变得更具有挑战性。
异构集群的不确定性以及GPU上多个任务共同执行竞争资源所产生的干扰也可能会导致计算资源的不均衡使用,从而进一步导致任务在处理过程中执行时间过长,影响任务的执行效率,同时导致计算平台性能下降。
另一方面,不合理的任务调度策略会导致各个节点间以及节点上计算资源间的工作负载不均衡。同时,不考虑任务特性以及任务对资源的需求进行任务调度,会导致无法充分利用集群中节点的异构资源高效地处理任务,进而导致整个集群吞吐量降低,影响集群中资源的利用率。
因此,对于异构集群中的工作负载,即需处理的任务,如何根据系统的运行时状态和工作负载的特征进行任务并行化调度,实现对集群中节点以及节点上异构计算资源的合理利用,对于提高GPU资源的利用率,提升整个计算作业的处理性能,以及提高系统中任务的吞吐量至关重要。
本发明实施例中利用异构集群,CPU-GPU集群处理大规模任务,当任务到达集群时,首先,集群调度器根据集群环境的运行时资源状态和每个任务的特点,具体地,根据各个任务的任务特征信息以及异构集群中各个计算节点的节点特征信息为相互独立的任务选择适当的计算节点,将任务调度到负载较低的计算节点上进行处理。然后,节点调度器根据子任务的特性以及子任务间的依赖关系,将子任务分配给计算节点上适合的计算单元。被调度到GPU计算单元上的子任务首先被加入到一个队列中,然后考虑子任务和GPU上正在执行子任务之间的干扰,将干扰最小的子任务调度到GPU上执行。本发明实施例中利用深度强化学习和深度协同过滤实现两阶段任务并行化调度,提高资源的利用率和系统吞吐量,并且提高任务的执行效率。
下面结合附图对本发明实施例提供的异构集群中任务调度方法进行详细说明。本发明实施例提供的任务调度方法可以应用于异构集群,该异构计算包括多个计算节点,各个计算节点包括CPU和GPU。
如图1所示,本发明实施例提供了一种异构集群中任务调度方法,可以包括:
S101,针对各个计算节点,确定调度至该计算节点的各个任务;其中,各个计算节点分别包括中央处理器CPU和图形处理器GPU;
S102,将各个子任务分别划分为多个子任务;
S103,当子任务对应的父子任务执行完成时,将子任务添加到就绪子任务队列中;其中,父子任务是子任务执行时所依赖的子任务;
S104,针对就绪子任务队列中的各个第一子任务,当该第一子任务在GPU计算单元的执行速率大于该第一子任务在CPU计算单元的执行速率,则将该第一子任务添加至GPU子任务队列;
S105,根据GPU子任务队列中各个第二子任务与GPU正在执行的子任务的干扰关系,将各个第二子任务调度至第二子任务对应的目标GPU,针对各个第二子任务,该第二子任务对应的目标GPU是与该第二子任务干扰最小的,正在执行的子任务所在的GPU。
本发明实施例中,将调度至计算节点的任务划分为多个子任务,并根据子任务在GPU计算单元的执行速率于在CPU计算单元的执行速率,将子任务调度至合适的计算单元,并在将子任务调度至GPU时,考虑子任务与GPU正在执行的子任务之间的干扰,实现节点层面的任务并行化,提高资源利用率,提高异构集群的系统吞吐量。且能够避免子任务之间的干扰对任务执行效率的影响,提高任务执行效率。
上述步骤S101至S105实现的是将调度至计算节点上的任务划分为多个子任务,并对子任务的调度,可以通过异构集群中计算节点的节点调度器来执行,具体地,节点调度器可以包括计算节点中的一个CPU。本发明一种可选的实施例中,可以包括将任务调度至计算节点的过程,为了更清楚地描述方案,先介绍将任务调度至计算节点的过程。而将调度至计算节点上的任务划分为多个子任务,并对子任务的调度的过程下面会进行详细介绍,这里先不赘述。
本发明实施例中,可以通过异构集群中的集群调度器执行将任务调度至计算节点的过程,集群调度器可以是异构集群中的任一计算节点。一种可实现方式中,作为集群调度器的计算节点的资源允许时,如该计算节点存在空闲资源,也可以处理任务,即集群调度器可以将任务调度至自身。
本发明一种可选的实施例中,可以包括将任务调度至计算节点的过程,具体地,在针对各个计算节点,确定调度至该计算节点的各个任务之前,如图2所示,还可以包括:
S201,获取集群层任务队列中各个任务的任务特征信息以及异构集群中各个计算节点的节点特征信息。
其中,针对各个任务,该任务的任务特征信息可以包括该任务的任务类型和该任务的任务量,针对各个计算节点,该计算节点的节点特征信息包括该节点的CPU利用率、GPU利用率、节点内存使用率、GPU显存使用率、节点上行带宽以及节点下行带宽。
本发明实施例中,应用系统将需要处理的任务提交至异构集群,异构集群中集群管理器首先对该任务进行分析,并将该任务添加到集群层任务队列中。
本发明实施例中通过Ti表示需要处理的任务,任务的执行效率主要受到任务特征和输入数据大小的影响。输入数据的大小即对应的任务的任务量。
为了优化任务调度,可以将任务描述为Ti=(TIDi,TSizei),其中,TIDi和TSizei分别为任务类型和输入数据大小。每个任务之间是相互独立的,因此可以将任务表示为工作流程图Ti=G(Ni,Ei),其中,Ni表示G的顶点集合,Ei表示G的边集合。Ni可以描述为
Figure BDA0002179367490000091
其中,ni表示任务Ti的子任务的数量。每个有向边
Figure BDA0002179367490000092
表示子任务STij和子任务STik的依赖关系,每个子任务STij(STij∈Ni)可以被描述为STij=(STIDi,TSizei),其中,STIDi表示子任务类型,TSizei表示子任务的输入数据大小。
S202,将各个任务的任务特征信息和各个计算节点的节点特征信息输入预先训练的深度Q网络DQN,分别确定出各个任务对应的计算节点。
S203,针对每个任务,将该任务调度至该任务对应的计算节点,以使该计算节点对该任务包括的多个子任务进行并行化处理。
其中,DQN是根据多个样本任务的任务特征信息训练得到的,任一样本任务的任务特征信息包括:该任务的任务类型和该任务的任务量。
集群调度器(Cluster Scheduler,CS)收集工作节点资源和任务执行状态,即确定各个任务的任务特征信息以及各个计算节点的节点特征信息,将集群层任务队列中的任务调动到合适的计算节点上。
假设集群含有M个计算节点{S1,...,SM},通过特征向量Si(t)来描述t时间步长的每个计算节点,即计算节点的节点特征信息为特征向量Si(t),
Figure BDA0002179367490000093
其中,
Figure BDA0002179367490000094
Figure BDA0002179367490000095
Figure BDA0002179367490000096
分别表示计算节点的CPU利用率、GPU利用率、节点内存使用率、GPU显存使用率、节点上行带宽以及节点下行带宽。
DQN(Deep Q-Network)模型中的动作为从计算节点集{S1,...,SM}中选择一个计算节点Sj,该动作的范围为Acs={S1,...,SM}。CS在t时间步长的调度动作at是基于当前节点状态的观测值进行选择的,该值包含任务特征Ti,即任务特征信息和节点资源的状态特征,即节点的节点特征信息Si(t)。
在DQN模型中,在状态st下执行动作at,会到达一个新的状态st+1,并从环境中获得奖励值rt,定义奖励值rt为执行动作at后系统吞吐量的改变值,即当前吞吐量减去执行动作at前的系统吞吐量。接下来,通过DQN模型结合深度学习和强化学习来根据Ti和节点特征信息Si(·)选择最佳的调度策略将任务调度到合适的计算节点上,实现集群层面的工作负载并行化。
DQN模型,与普通Q-learning相同,DQN模型包含三个主要概念,分别是环境状态、行为和奖励。该模型与环境进行顺序交互,在每个时间步长t,DQN模型观察输入的环境状态序列st并选择一个动作at,执行动作at后,环境状态被转移到st+1,模型获得一个奖励值rt。在Q-learning中定义一个函数Q*(s,a)表示在状态s中执行动作a时预期的累积奖励,强化学习的目标是最大化Q*(s,a)的值。Q-learning的更新公式遵循Bellman方程:
Q*(s,a)=E[r+γmaxa′Q*(s′,a′)] (1)
其中,γ∈[0,1]表示折扣因子,用来权衡立即回报和将来长期回报之间的关系,Q*(s,a)表示在状态s中执行动作a时预期的累积奖励,E[]表示期望值,r为奖励值,Q*(s′,a′)表示在状态s′中执行动作a′时预期的累积奖励。
对于状态和动作空间都是高维连续的任务来说,使用上述公式(1)来更新是不现实的,DQN是把更新问题变成一个函数拟合问题,如下述公式(2),通过更新参数θ的值使得Q函数逼近最优Q值:
Q(s,a;θ)≈Q*(s,a) (2)
DQN模型定义了两个神经网络,使用权值θ初始化动作-价值函数Q=(s,a;θ)构建Q神经网络(Q-Network),使用权值θ-初始化目标动作函数Q′=(s,a;θ-)构建目标神经网络(Target Network)。接下来,训练Q神经网络模型,将由任务特征和节点资源特征以及执行动作组成的状态序列st=x1,a1,x2,a2,...,at-1,xt作为输入值传递给Q神经网络,Q神经网络通过计算产生动作at,将集群层任务队列中的任务调度到合适的计算节点上,执行动作at后,将当前吞吐量减去执行动作at前的系统吞吐量所得到的值作为奖励值rt,使用奖励值rt来更新Q神经网络,基于Q-learning的Q神经网络的损失函数可以表示为:
Figure BDA0002179367490000111
其中,Lii)表示损失函数,Q(s,a;θi)表示当前Q神经网络的输出,用来评估当前的动作价值对,θi表示权值。当Q神经网络的训练达到一定次数后,就需要更新目标神经网络的参数,DQN引入了目标神经网络来产生TargetQ值,其公式为:
Figure BDA0002179367490000112
其中,TargetQ表示目标Q神经网络(Target Network)的输出,
Figure BDA0002179367490000113
表示权重。
则公式(3)也可以表示为:
Lii)=f[(TargetQ-Q(s,a;θi))2] (5)
通过公式(3)计算TargetQ的值,通过损失方程(5)更新Q神经网络的参数,每经过μ轮迭代,就将Q神经网络的参数复制给目标神经网络,通过不断地迭代,使当前的Q值逼近TargetQ值。
由于任务处理过程中可能会产生具有连续性的样本,如果每次得到样本就更新Q值,受样本分布影响,效果会不好。DQN模型使用经验池(experience replay)来解决这一问题,每个时间步长t,将模型与环境交互得到的转移样本et=(st,at,rt,st+1)存储到回放内存(replay memory)Dt中,Dt={e1,...,et},训练时从回放内存中随机采样,最后使用随机梯度下降算法来更新参数θ的值。通过不断地训练,得到一个最优的θ值,Q神经网络以该θ值作为参数后续任务进行调度,以实现异构集群中的任务并行化。
为了使Q神经网络的学习更有效,可以使用预训练。具体地,首先通过随机初始化参数训练多层感知机(Multi-Layer Perception,MLP)直到收敛。然后使用预训练得到的参数作为DQN模型的初始化参数,并通过随机梯度下降(stochastic gradient descent,SGD)对初始化参数进行优化,使训练更有效。
在集群层面,异构集群配置的改变可能导致DQN的特征空间的改变,因此需要重建集群调度器的网络模型以用于正常使用。然而,重新学习DQN的代价是昂贵的,并且可能会花费更多时间来实现良好的在线调度结果。为了解决这个问题,可以使用迁移学习将先前构建的DQN模型的参数转移到新的DQN模型中,从而提高DQN重新学习的性能。当异构集群的特征空间发生变化时,可以保留原始DQN模型的隐藏层参数以学习新的DQN模型,并根据异构集群的当前状态修改新模型的输入和输出。
具体地,训练DQN的过程可以通过如下步骤实现:
(1)初始化回放内存(replay memory);
(2)用随机权值θ初始化动作-价值函数Q;
(3)用随机权值θ-=θ初始化目标动作函数Q′;
(4)for episode=1,E do初始化状态序列s1={x1};
(5)for t=1,T doε的概率随机选择一个动作at;否则选择动作at=arg maxaQ(st,a;θ);其中,agent(主体)根据某个策略执行一系列action(动作)到结束就是一个episode(回合),E表示有E次episode,T表示经过T次迭代后更新目标网络的值;
(6)执行动作at,得到下一个观测值xt+1和奖励rt
(7)将转移样本(sj+1,aj,rj,sj)存放到replay memory中;
(8)从replay memory中随机采样一些转移样本(sj+1,aj,rj,sj);
(9)if第j+1次迭代后循环结束;更新目标神经网络的值targetj=rj;elsetargetj=rj+γmaxa′Q′(sj+1,a′;θ-);end if使用随机梯度下降计算使损失函数(tar getj-Q(sj,aj;θ))2值最小的权值θ;其中,j表示迭代次数,tar getj表示指第j次迭代结束后目标神经网络输出;
(10)经过μ轮迭代,将Q的参数复制给Q′。
本发明实施例中,通过在集群层面和节点层面的两阶段学习驱动干扰感知工作负载调度实现了异构集群中大规模任务处理的并行化,可以提高异构集群中的系统吞吐量,提高异构集群中的资源利用率。且可以利用DQN实现集群层面调度模型的在线学习,根据集群环境的运行时状态和任务的特征执行当前的最优调度动作。
参照图1,对本发明实施例提供的异构集群中的任务调度方法进行详细说明。具体地,针对调度至计算节点的任务进行调度的过程进行详细说明。针对调度至计算节点的任务进行调度的过程,也可以理解为各个计算节点对调度至计算节点的任务包括的多个子任务进行并行化处理。
S101,针对各个计算节点,确定调度至该计算节点的各个任务。
其中,各个计算节点分别包括中央处理器CPU和图形处理器GPU。
根据上述实施例,可以通过集群调度器将各个任务调度至对应的计算节点。如此,针对各个计算节点,对应的节点调度器可以确定调度至该计算节点的各个任务。
S102,将各个子任务分别划分为多个子任务。
调度到计算节点上的任务首先被分为多个细粒度的子任务,这些子任务之间可能具有依赖关系,简单理解,对于任一子任务,该子任务的执行时有可能依赖其他子任务。
S103,当子任务对应的父子任务执行完成时,将子任务添加到就绪子任务队列中。
其中,父子任务是子任务执行时所依赖的子任务。
可以根据各个子任务之间的依赖关系,根据子任务对应的父子任务的执行状态,确定将子任务添加至不同的队列中。具体地,当子任务对应的父子任务执行完成时,将子任务添加到就绪子任务队列中;当子任务对应的父子任务未执行完成时,将子任务添加到挂起队列中。
S104,针对就绪子任务队列中的各个第一子任务,当该第一子任务在GPU计算单元的执行速率大于该第一子任务在CPU计算单元的执行速率,则将该第一子任务添加至GPU子任务队列。
第一子任务可以理解为就绪子任务队列中的子任务。
节点调度器(Node Scheduler,NS)依据子任务在GPU上执行相比在CPU上执行的执行效率,将就绪子任务队列中的子任务调度到对应的计算单元。
一种可选的实施例中,可以根据加速比对就绪子任务队列中的子任务进行调度。其中,加速比用于表示子任务在GPU运行相对于在CPU上运行的性能增益。具体地,将加速比最小的第一子任务调度至GPU计算单元,根据各个第一子任务的加速比的大小,将加速比最大的第一子任务添加至GPU子任务队列。
如果CPU内核是空闲的,则可以将加速比最小的子任务分配给CPU内核。NS可以创建一个固定长度的GPU子任务队列来管理调度至GPU的子任务。如果GPU子任务队列未满,则将具有最大加速比的子任务依次添加到GPU子任务队列中。
S105,根据GPU子任务队列中各个第二子任务与GPU正在执行的子任务的干扰关系,将各个第二子任务调度至第二子任务对应的目标GPU,针对各个第二子任务,该第二子任务对应的目标GPU是与该第二子任务干扰最小的,正在执行的子任务所在的GPU。
第二子任务可以理解为GPU子任务队列中的子任务。
待调度到GPU计算单元上的子任务首先被添加到GPU子任务队列中,然后,考虑GPU子任务队列中第二子任务与GPU正在执行的子任务的之间的干扰,将第二子任务调度到对应的GPU计算单元上。
一种可选的实施例中,可以包括:
B1,针对各个第二子任务,计算该第二子任务与GPU正在执行的子任务的相似性。
具体地,可以包括:
B11,针对各个第二子任务,确定该第二子任务的特征向量。
该第二子任务的特征向量可以包括该第二子任务对应的CPU使用率、主机内存使用率、GPU计算单元((Streaming Multiprocessor,SM)使用率、GPU L1(Level 1)GPU一级高速缓存使用率、GPU L2(Level 2)GPU二级高速缓存使用率、GPU纹理缓存使用率、GPU内存使用率、全局加载吞吐量和全局存储吞吐量的特征值。
B12,确定GPU正在执行的各个子任务的特征向量。
GPU正在执行的各个子任务的特征向量可以包括GPU正在执行的各个子任务对应的CPU使用率、主机内存使用率、GPU计算单元使用率、GPU L1高速缓存使用率、GPU L2高速缓存使用率、GPU纹理缓存使用率、GPU内存使用率、全局加载吞吐量和全局存储吞吐量的特征值。
B13,计算该第二子任务的特征向量,分别与GPU正在执行的各个子任务的特征向量之间的各个余弦相似度。
可以将第二子任务的特征向量,以及GPU正在执行的各个子任务的特征向量简化为
Figure BDA0002179367490000161
可以通过子任务的特征向量之间的余弦值表示两个子任务之间的相似性。
Figure BDA0002179367490000162
其中,θ表示两个特征向量的夹角度数,cos(θ)∈[-1,1]表示两个特征向量的余弦相似度。
cos(θ)越大表示两个特征向量之间的角度越小,表示两个特征向量越相似;cos(θ)越小表示两个特征向量之间的角度越大,表示两个特征表向量越不相似。
B14,计算各个余弦相似度的平均值,并将平均值的倒数作为该第二子任务对应的优先级。
使用所有计算的cos(θ)值的平均值的倒数作为优先级队列中的子任务的优先级。
B2,将与GPU正在执行的子任务的相似性最低的第二子任务调度至GPU。
将优先级最高的第二子任务调度至GPU。
可以在GPU和设备内存的利用率低于预设阈值是,NS将优先级最高的第二子任务分配给该GPU。
本发明实施例中,将调度至计算节点的任务划分为多个子任务,并根据子任务在GPU计算单元的执行速率于在CPU计算单元的执行速率,将子任务调度至合适的计算单元,并在将子任务调度至GPU时,考虑子任务与GPU正在执行的子任务之间的干扰,实现节点层面的任务并行化,提高资源利用率,提高异构集群的系统吞吐量。且能够避免子任务之间的干扰对任务执行效率的影响,提高任务执行效率。
本发明一种可选的实施例中,可以通过神经协同过滤(Neural CollaborativeFiltering,NCF)确定GPU子任务队列中各个第二子任务与GPU正在执行的子任务的之间的干扰。具体地,在步骤S102将各个子任务分别划分为多个子任务之后,还可以包括:
A1,获取子任务的部分特征值。
部分特征值包括以下几项中的部分项:CPU使用率、主机内存使用率、GPU计算单元使用率、GPU L1高速缓存使用率、GPU L2高速缓存使用率、GPU纹理缓存使用率、GPU内存使用率、全局加载吞吐量和全局存储吞吐量。
本发明实施例中,可以通过性能特征度量对子任务STij进行更细粒度化的描述,具体地可以为:
Figure BDA0002179367490000171
其中,
Figure BDA0002179367490000172
Figure BDA0002179367490000173
分别表示CPU使用率、主机内存使用率、GPU SM使用率、GPU L1高速缓存使用率、GPUL2高速缓存使用率、GPU纹理缓存使用率、GPU内存使用率、全局加载吞吐量和全局存储吞吐量。
本发明实施例中可以使用性能分析工具NVIDIA Profiler对子任务进行分析,从特征向量STij中任意选择两项获得对应的特征值,得到的这两个特征值即可以理解为部分特征值。
A2,通过预先训练的神经协同过滤NCF模型,预测子任务的除部分特征值之外的其他特征值。
其中,NCF模型是基于多个样本任务的多个特征类型对应的特征值训练得到的。
本发明实施例中通过维护一个子任务描述矩阵(SubTask Description Matrix,STMD)来表征子任务,其中,STMD矩阵中每一行表示一个子任务,每一列表示一个性能特征的度量,每个单元表示该子任务对应特征类型的特征值,也即对应度量的特征值。
具体地,A2可以包括:
A21,根据部分特征值对子任务描述矩阵STDM进行初始化,得到初始化STDM;
A22,对初始化STDM进行矩阵分解,得到子任务隐因子矩阵和度量隐因子矩阵;
A23,确定描述子任务的子任务类型对应的子任务特征向量和描述待预测特征的特征类型对应的度量特征向量;
A24,将子任务特征向量与子任务隐因子矩阵相乘得到子任务隐向量,并将度量特征向量与度量隐因子矩阵相乘得到度量隐向量;
A25,将子任务隐向量和度量隐向量输入NCF模型中的多层感知机MLP,输出待预测特征的预测特征值。
本发明实施例中,NCF模型的训练可以通过如下过程来实现:
NCF模型的输入是子任务的子任务类型对应的子任务特征向量和描述待预测特征的特征类型对应的度量特征向量,子任务特征向量可以通过xs表示,度量特征向量可以通过xm表示;使用独热编码(one-hot编码)将xs和xm转换为二值化稀疏向量。输入层后连接嵌入层,嵌入层将输入层的稀疏向量映射到密集向量。由于输入层的子任务类型以及特征类型,即度量的标识(ID)采用one-hot编码,所获得的嵌入层向量,可以被看作隐因子模型的子任务隐向量和度量隐向量。
可以将UTxs表示为子任务隐向量us,可以将VTxm表示为度量隐向量vm,其中,
Figure BDA0002179367490000191
Figure BDA0002179367490000192
分别表示子任务隐因子矩阵和度量隐因子矩阵。将子任务隐向量和度量隐向量输入到MPL以学习子任务和度量之间的相互作用,同时将隐向量映射到预测值。NCF模型的输出即预测的缺失值
Figure BDA0002179367490000193
即待预测特征的预测特征值。具体地,
Figure BDA0002179367490000194
其中,φ1、φ2、φX以及φout分别表示神经网络的第一层、第二层、第x层和输出层。
NCF模型被定义为:
Figure BDA0002179367490000195
其中,Wx、bx、gx和h分别表示x层的权重矩阵、偏置向量、激活函数和输出层的权重,
Figure BDA0002179367490000196
表示神经网络输出的预测值,aL-1表示第L-1层的输出值,σ表示输出层的激活函数。每层的激活函数都是Relu函数,该函数适合处理稀疏数据并且不容易产生过拟合。通过最小化
Figure BDA0002179367490000197
和其目标值ysm之间的均方损失来执行训练,并且使用正则化来防止NCF模型的过拟合。离线运行多个样本任务以获得这些样本任务的完整特征,然后将完整特征标准化并填入STDM中的相应行,可以通过该填入完整特征的STDM中查找不同样本任务、不同度量对应的目标值ysm
损失函数如下式所示:
Figure BDA0002179367490000201
其中,λ表示正则化的权重,wsm表示训练实例的权重,M表示任务总数,J表示第J个任务,m表示第m个度量。
调整NCF模型的待测参数,在该损失函数收敛时完成训练。待测参数可以包括MLP中各层的权重矩阵、偏置向量、激活函数和/或权重等。
一种可实现方式中可以使用随机梯度下降法(SGD)优化NCF模型。
一种可实现方式中,B11:针对各个第二子任务,确定该第二子任务的特征向量。可以包括,针对各个第二子任务,通过该第二子任务的部分特征值和其他特征值组成该第二子任务的特征向量。
B12,确定GPU正在执行的各个子任务的特征向量。可以包括:针对GPU正在执行的各个子任务,通过该子任务的部分特征值和其他特征值组成该子任务的特征向量。
一种可选的实施例中,加速比可以通过上述实施例中通过子任务的部分特征值预测得到,即上述实施例中预测得到的其他特征值中包括加速比。
为了得到每个子任务的加速比,并根据子任务之间的相似性检测子任务之间的干扰,构造STDM来表征子任务,STDM中的每个子任务都可以用STij表示。为了在检测GPU上子任务的相似性之前为子任务选择合适的计算单元,可以在STDM中添加一列表示加速比。如此,STDM中的每个子任务可以使用向量ST′ij=STij∪spd来表示,其中,spd表示估计的加速比。
本发明实施例中,使用NCF模型来预测稀疏矩阵中缺失的特征值,即通过部分特征值预测其他特征值,以得到用于表示子任务的特征向量。使用NCF模型得到初始化STDM中所有的缺失值之后,利用GPU子任务队列中的子任务和节点上正在执行子任务的特征向量的相似度来判断子任务之间的干扰。将子任务调度到干扰最小的GPU计算单元上,实现节点层面的工作负载并行化。
NCF模型可以解决传统基于矩阵分解的协同过滤存在的冷启动和稀疏问题,NCF模型结合矩阵分解的线性优势和MLP的非线性优势来为子任务和度量的潜在特征进行建模。
本发明实施例中,为了使神经网络的学习更有效,可以在NS中使用预训练。首先通过随机初始化参数训练MLP直到收敛。然后,使用从预训练中获得的参数作为NCF模型的初始化参数。为了从零开始训练MLP,可以使用自适应矩估计(Adam)算法,该算法可以计算不同参数的自适应学习速率,并获得比正常SGD更快的收敛速度。在将预训练参数输入NCF模型后,可以使用SGD而不是Adam优化NCF模型,因为,Adam需要保存动量信息以正确更新参数。
对于节点层任务并行化,一种可实现方式中,还可以使用迁移学习调整先前的NCF模型。当新的计算节点添加到异构集群时,如果原有的计算节点和新添加的计算节点的配置或GPU数量相同,则可以将当前获知的NCF模型直接用于新添加的计算节点。如果计算节点的GPU数量不同,可以使用原有的NCF模型中GPU的性能度量参数填充新NCF模型中的性能度量参数。例如,如果原有的计算节点具有1个GPU并且新添加的计算节点具有2个GPU,则可以将原有的NCF模型中GPU的性能度量参数的两个副本作为新NCF模型中的性能度量参数。可以假设计算节点中的GPU数量为1或者是2的整数倍。在这种情况下,新添加的计算节点中使用的迁移的NCF模型需要一段时间才能保持稳定。
本发明实施例中,可以对异构集群的动态环境作出反应,避免了计算节点或计算节点中异构计算单元上任务分配不均衡,可以实现工作负载的高度并行化,保证各个计算节点资源的充分利用,可以最大化集群任务吞吐量,有效降低任务的执行时间,提高任务执行效率。
对应于上述实施例提供的异构集群中任务调度方法,本发明实施例提供了一种异构集群中任务调度装置,如图3所示,可以包括:
第一确定模块301,用于针对各个计算节点,确定调度至该计算节点的各个任务;其中,各个计算节点分别包括中央处理器CPU和图形处理器GPU;
划分模块302,用于将各个子任务分别划分为多个子任务;
第一添加模块303,用于当子任务对应的父子任务执行完成时,将子任务添加到就绪子任务队列中;其中,父子任务是子任务执行时所依赖的子任务;
第二添加模块304,用于针对就绪子任务队列中的各个第一子任务,当该第一子任务在GPU计算单元的执行速率大于该第一子任务在CPU计算单元的执行速率,则将该第一子任务添加至GPU子任务队列;
第一调度模块305,用于根据GPU子任务队列中各个第二子任务与GPU正在执行的子任务的干扰关系,将各个第二子任务调度至第二子任务对应的目标GPU,针对各个第二子任务,该第二子任务对应的目标GPU是与该第二子任务干扰最小的,正在执行的子任务所在的GPU。
本发明实施例中,将调度至计算节点的任务划分为多个子任务,并根据子任务在GPU计算单元的执行速率于在CPU计算单元的执行速率,将子任务调度至合适的计算单元,并在将子任务调度至GPU时,考虑子任务与GPU正在执行的子任务之间的干扰,实现节点层面的任务并行化,提高资源利用率,提高异构集群的系统吞吐量。且能够避免子任务之间的干扰对任务执行效率的影响,提高任务执行效率。
可选的,该装置还包括:
第一获取模块,用于获取子任务的部分特征值,部分特征值包括以下几项中的部分项:CPU使用率、主机内存使用率、GPU计算单元使用率、GPU一级高速缓存使用率、GPU二级高速缓存使用率、GPU纹理缓存使用率、GPU内存使用率、全局加载吞吐量和全局存储吞吐量;
预测模块,用于通过预先训练的神经协同过滤NCF模型,预测子任务的除部分特征值之外的其他特征值;其中,NCF模型是基于多个样本任务的多个特征类型对应的特征值训练得到的。
可选的,预测模块,具体用于根据部分特征值对子任务描述矩阵STDM进行初始化,得到初始化STDM;对初始化STDM进行矩阵分解,得到子任务隐因子矩阵和度量隐因子矩阵;确定描述子任务的子任务类型对应的子任务特征向量和描述待预测特征的特征类型对应的度量特征向量;将子任务特征向量与子任务隐因子矩阵相乘得到子任务隐向量,并将度量特征向量与度量隐因子矩阵相乘得到度量隐向量;将子任务隐向量和度量隐向量输入NCF模型中的多层感知机MLP,输出待预测特征的预测特征值。
可选的,其他特征值包括加速比,加速比用于表示子任务在GPU运行相对于在CPU上运行的性能增益;
第二添加模块304,具体用于根据各个第一子任务的加速比的大小,将加速比最大的第一子任务添加至GPU子任务队列。
可选的,调度模块305,具体用于针对各个第二子任务,计算该第二子任务与GPU正在执行的子任务的相似性;将与GPU正在执行的子任务的相似性最低的第二子任务调度至GPU。
可选的,调度模块305,具体用于针对各个第二子任务,确定该第二子任务的特征向量;确定GPU正在执行的各个子任务的特征向量;计算该第二子任务的特征向量,分别与GPU正在执行的各个子任务的特征向量之间的各个余弦相似度;计算各个余弦相似度的平均值,并将平均值的倒数作为该第二子任务对应的优先级;将优先级最高的第二子任务调度至GPU。
可选的,调度模块305,具体用于针对各个第二子任务,通过该第二子任务的部分特征值和其他特征值组成该第二子任务的特征向量。
可选的,如图4所示,该装置还可以包括:
第二获取模块401,用于获取集群层任务队列中各个任务的任务特征信息以及异构集群中各个计算节点的节点特征信息,其中,针对各个任务,该任务的任务特征信息包括该任务的任务类型和该任务的任务量,针对各个计算节点,该计算节点的节点特征信息包括该节点的CPU利用率、GPU利用率、节点内存使用率、GPU显存使用率、节点上行带宽以及节点下行带宽;
第二确定模块402,用于将各个任务的任务特征信息和各个计算节点的节点特征信息输入预先训练的深度Q网络DQN,分别确定出各个任务对应的计算节点;其中,DQN是根据多个样本任务的任务特征信息训练得到的,任一样本任务的任务特征信息包括:该任务的任务类型和该任务的任务量;
第二调度模块403,用于针对每个任务,将该任务调度至该任务对应的计算节点,以使该计算节点对该任务包括的多个子任务进行并行化处理。
本发明实施例提供的异构集群中任务调度装置是应用上述异构集群中任务调度方法的装置,则上述异构集群中任务调度方法的所有实施例均适用于该装置,且均能达到相同或相似的有益效果。
对应于上述实施例提供的异构集群中任务调度方法,本发明实施例还提供了一种电子设备,如图5所示,包括处理器501、通信接口502、存储器503和通信总线504,其中,处理器501,通信接口502,存储器503通过通信总线504完成相互间的通信。
存储器503,用于存放计算机程序;
处理器501,用于执行存储器503上所存放的程序时,实现上述异构集群中任务调度方法的方法步骤。
本发明实施例中,将调度至计算节点的任务划分为多个子任务,并根据子任务在GPU计算单元的执行速率于在CPU计算单元的执行速率,将子任务调度至合适的计算单元,并在将子任务调度至GPU时,考虑子任务与GPU正在执行的子任务之间的干扰,实现节点层面的任务并行化,提高资源利用率,提高异构集群的系统吞吐量。且能够避免子任务之间的干扰对任务执行效率的影响,提高任务执行效率。
上述电子设备提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述电子设备与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,RAM),也可以包括非易失性存储器(Non-Volatile Memory,NVM),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital SignalProcessing,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
对应于上述实施例提供的异构集群中任务调度方法,本发明实施例提供了一种计算机可读存储介质,计算机可读存储介质内存储有计算机程序,计算机程序被处理器执行时实现上述异构集群中任务调度方法的方法步骤。
本发明实施例中,将调度至计算节点的任务划分为多个子任务,并根据子任务在GPU计算单元的执行速率于在CPU计算单元的执行速率,将子任务调度至合适的计算单元,并在将子任务调度至GPU时,考虑子任务与GPU正在执行的子任务之间的干扰,实现节点层面的任务并行化,提高资源利用率,提高异构集群的系统吞吐量。且能够避免子任务之间的干扰对任务执行效率的影响,提高任务执行效率。
对应于上述实施例提供的异构集群中任务调度方法,在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述异构集群中任务调度方法的方法步骤。
本发明实施例中,将调度至计算节点的任务划分为多个子任务,并根据子任务在GPU计算单元的执行速率于在CPU计算单元的执行速率,将子任务调度至合适的计算单元,并在将子任务调度至GPU时,考虑子任务与GPU正在执行的子任务之间的干扰,实现节点层面的任务并行化,提高资源利用率,提高异构集群的系统吞吐量。且能够避免子任务之间的干扰对任务执行效率的影响,提高任务执行效率。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个......”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、电子设备、存储介质实施例以及计算机程序产品实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

Claims (7)

1.一种异构集群中任务调度方法,其特征在于,包括:
针对各个计算节点,确定调度至该计算节点的各个任务;其中,各个计算节点分别包括中央处理器CPU和图形处理器GPU;
将各个子任务分别划分为多个子任务;
当所述子任务对应的父子任务执行完成时,将所述子任务添加到就绪子任务队列中;其中,父子任务是所述子任务执行时所依赖的子任务;
针对所述就绪子任务队列中的各个第一子任务,当该第一子任务在GPU计算单元的执行速率大于该第一子任务在CPU计算单元的执行速率,则将该第一子任务添加至GPU子任务队列;
根据所述GPU子任务队列中各个第二子任务与GPU正在执行的子任务的干扰关系,将各个第二子任务调度至第二子任务对应的目标GPU,针对各个第二子任务,该第二子任务对应的目标GPU是与该第二子任务干扰最小的,正在执行的子任务所在的GPU;
在所述将各个子任务分别划分为多个子任务之后,所述方法还包括:
获取所述子任务的部分特征值,所述部分特征值包括以下几项中的部分项:CPU使用率、主机内存使用率、GPU计算单元使用率、GPU一级高速缓存使用率、GPU二级高速缓存使用率、GPU纹理缓存使用率、GPU内存使用率、全局加载吞吐量和全局存储吞吐量;
通过预先训练的神经协同过滤NCF模型,预测所述子任务的除所述部分特征值之外的其他特征值;其中,所述NCF模型是基于多个样本任务的多个特征类型对应的特征值训练得到的;
所述其他特征值包括加速比,所述加速比用于表示所述子任务在GPU运行相对于在CPU上运行的性能增益;
所述针对所述就绪子任务队列中的各个第一子任务,当该第一子任务在GPU计算单元的执行速率大于该第一子任务在CPU计算单元的执行速率,则将该第一子任务添加至GPU子任务队列,包括:
根据各个第一子任务的所述加速比的大小,将加速比最大的第一子任务添加至所述GPU子任务队列;
所述通过预先训练的神经协同过滤NCF模型,预测所述子任务的除所述部分特征值之外的其他特征值,包括:
根据所述部分特征值对子任务描述矩阵STDM进行初始化,得到初始化STDM;
对所述初始化STDM进行矩阵分解,得到子任务隐因子矩阵和度量隐因子矩阵;
确定描述所述子任务的子任务类型对应的子任务特征向量和描述待预测特征的特征类型对应的度量特征向量;
将所述子任务特征向量与所述子任务隐因子矩阵相乘得到子任务隐向量,并将所述度量特征向量与所述度量隐因子矩阵相乘得到度量隐向量;
将所述子任务隐向量和所述度量隐向量输入所述NCF模型中的多层感知机MLP,输出所述待预测特征的预测特征值。
2.根据权利要求1所述的方法,其特征在于,所述根据所述GPU子任务队列中各个第二子任务与GPU正在执行的子任务的干扰关系,将各个第二子任务调度至第二子任务对应的目标GPU,包括:
针对各个第二子任务,计算该第二子任务与所述GPU正在执行的子任务的相似性;
将与所述GPU正在执行的子任务的相似性最低的第二子任务调度至所述GPU。
3.根据权利要求2所述的方法,其特征在于,所述针对各个第二子任务,计算该第二子任务与所述GPU正在执行的子任务的相似性,包括:
针对各个第二子任务,确定该第二子任务的特征向量;
确定所述GPU正在执行的各个子任务的特征向量;
计算该第二子任务的特征向量,分别与所述GPU正在执行的各个子任务的特征向量之间的各个余弦相似度;
计算各个余弦相似度的平均值,并将所述平均值的倒数作为该第二子任务对应的优先级;
所述将与所述GPU正在执行的子任务的相似性最低的第二子任务调度至所述GPU,包括:
将优先级最高的第二子任务调度至所述GPU。
4.根据权利要求3所述的方法,其特征在于,所述针对各个第二子任务,确定该第二子任务的特征向量,包括:
针对各个第二子任务,通过该第二子任务的所述部分特征值和所述其他特征值组成该第二子任务的特征向量。
5.根据权利要求1至4任一项所述的方法,其特征在于,在所述针对各个计算节点,确定调度至该计算节点的各个任务之前,所述方法还包括:
获取集群层任务队列中各个任务的任务特征信息以及异构集群中各个计算节点的节点特征信息,其中,针对各个任务,该任务的任务特征信息包括该任务的任务类型和该任务的任务量,针对各个计算节点,该计算节点的节点特征信息包括该节点的CPU利用率、GPU利用率、节点内存使用率、GPU显存使用率、节点上行带宽以及节点下行带宽;
将各个任务的所述任务特征信息和各个计算节点的所述节点特征信息输入预先训练的深度Q网络DQN,分别确定出各个任务对应的计算节点;其中,所述DQN是根据多个样本任务的任务特征信息训练得到的,任一样本任务的任务特征信息包括:该任务的任务类型和该任务的任务量;
针对每个任务,将该任务调度至该任务对应的计算节点,以使该计算节点对该任务包括的多个子任务进行并行化处理。
6.一种异构集群中任务调度装置,其特征在于,包括:
第一确定模块,用于针对各个计算节点,确定调度至该计算节点的各个任务;其中,各个计算节点分别包括中央处理器CPU和图形处理器GPU;
划分模块,用于将各个子任务分别划分为多个子任务;
第一添加模块,用于当所述子任务对应的父子任务执行完成时,将所述子任务添加到就绪子任务队列中;其中,父子任务是所述子任务执行时所依赖的子任务;
第二添加模块,用于针对所述就绪子任务队列中的各个第一子任务,当该第一子任务在GPU计算单元的执行速率大于该第一子任务在CPU计算单元的执行速率,则将该第一子任务添加至GPU子任务队列;
第一调度模块,用于根据所述GPU子任务队列中各个第二子任务与GPU正在执行的子任务的干扰关系,将各个第二子任务调度至第二子任务对应的目标GPU,针对各个第二子任务,该第二子任务对应的目标GPU是与该第二子任务干扰最小的,正在执行的子任务所在的GPU;
第一获取模块,用于获取所述子任务的部分特征值,所述部分特征值包括以下几项中的部分项:CPU使用率、主机内存使用率、GPU计算单元使用率、GPU一级高速缓存使用率、GPU二级高速缓存使用率、GPU纹理缓存使用率、GPU内存使用率、全局加载吞吐量和全局存储吞吐量;
预测模块,用于通过预先训练的神经协同过滤NCF模型,预测所述子任务的除所述部分特征值之外的其他特征值;其中,所述NCF模型是基于多个样本任务的多个特征类型对应的特征值训练得到的;
所述其他特征值包括加速比,所述加速比用于表示所述子任务在GPU运行相对于在CPU上运行的性能增益;
所述第二添加模块,具体用于根据所述各个第一子任务的所述加速比的大小,将加速比最大的第一子任务添加至所述GPU子任务队列;
所述预测模块,具体用于根据所述部分特征值对子任务描述矩阵STDM进行初始化,得到初始化STDM;对所述初始化STDM进行矩阵分解,得到子任务隐因子矩阵和度量隐因子矩阵;确定描述所述子任务的子任务类型对应的子任务特征向量和描述待预测特征的特征类型对应的度量特征向量;将所述子任务特征向量与所述子任务隐因子矩阵相乘得到子任务隐向量,并将所述度量特征向量与所述度量隐因子矩阵相乘得到度量隐向量;将所述子任务隐向量和所述度量隐向量输入所述NCF模型中的多层感知机MLP,输出所述待预测特征的预测特征值。
7.一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,所述处理器,所述通信接口,所述存储器通过所述通信总线完成相互间的通信;
所述存储器,用于存放计算机程序;
所述处理器,用于执行所述存储器上所存放的程序时,实现权利要求1-5任一所述的方法步骤。
CN201910790373.6A 2019-08-26 2019-08-26 一种异构集群中任务调度方法、装置及电子设备 Active CN110489223B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910790373.6A CN110489223B (zh) 2019-08-26 2019-08-26 一种异构集群中任务调度方法、装置及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910790373.6A CN110489223B (zh) 2019-08-26 2019-08-26 一种异构集群中任务调度方法、装置及电子设备

Publications (2)

Publication Number Publication Date
CN110489223A CN110489223A (zh) 2019-11-22
CN110489223B true CN110489223B (zh) 2022-03-29

Family

ID=68554223

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910790373.6A Active CN110489223B (zh) 2019-08-26 2019-08-26 一种异构集群中任务调度方法、装置及电子设备

Country Status (1)

Country Link
CN (1) CN110489223B (zh)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021126272A1 (en) * 2019-12-20 2021-06-24 Hewlett-Packard Development Company, L.P. Machine learning workload orchestration in heterogeneous clusters
KR102300118B1 (ko) * 2019-12-30 2021-09-07 숙명여자대학교산학협력단 Gpu 응용을 위한 기계 학습 기반 작업 배치 방법
CN111240844A (zh) * 2020-01-13 2020-06-05 星环信息科技(上海)有限公司 一种资源调度方法、设备及存储介质
CN111240820B (zh) * 2020-01-13 2020-11-24 星环信息科技(上海)有限公司 一种并发量提升倍速确定方法、设备及介质
CN111258735A (zh) * 2020-01-16 2020-06-09 中国人民解放军国防科技大学 一种支持用户QoS感知的深度学习任务调度方法
CN111277665B (zh) * 2020-02-14 2022-04-08 平行云科技(北京)有限公司 基于干扰性度量的3d应用调度方法、装置、终端和存储介质
CN111309479B (zh) * 2020-02-14 2023-06-06 北京百度网讯科技有限公司 一种任务并行处理的实现方法、装置、设备和介质
CN112437690A (zh) * 2020-04-02 2021-03-02 支付宝(杭州)信息技术有限公司 确定执行设备的动作选择方针
CN112533681A (zh) 2020-04-02 2021-03-19 支付宝(杭州)信息技术有限公司 确定执行设备的动作选择方针
CN113760472A (zh) * 2020-06-03 2021-12-07 北京沃东天骏信息技术有限公司 推数任务调度的方法和装置
CN111866187B (zh) * 2020-06-30 2022-10-04 中科院计算所西部高等技术研究院 分布式深度学习推理云平台任务调度方法
CN111913799B (zh) * 2020-07-14 2024-04-19 北京华夏启信科技有限公司 一种视频流在线分析任务调度方法和计算机设备
CN111813554A (zh) * 2020-07-17 2020-10-23 济南浪潮数据技术有限公司 一种任务调度处理方法、装置及电子设备和存储介质
CN111897639B (zh) * 2020-07-29 2022-12-27 平安科技(深圳)有限公司 图像增广方法、装置、计算机设备及存储介质
CN111967590B (zh) * 2020-10-23 2021-02-02 之江实验室 面向推荐系统矩阵分解方法的异构多xpu机器学习系统
CN113256128A (zh) * 2021-05-31 2021-08-13 国网江苏省电力有限公司信息通信分公司 电力物联网中使用强化学习均衡资源使用的任务调度方法
CN113190341A (zh) * 2021-05-31 2021-07-30 内蒙古豆蔻网络科技有限公司 一种服务器资源调度方法及系统
CN113553031B (zh) * 2021-06-04 2023-02-24 中国人民解放军战略支援部队信息工程大学 软件定义变结构计算架构及利用其实现的左右脑一体化资源联合分配方法
CN113419830B (zh) * 2021-06-23 2023-02-03 鹤壁国立光电科技股份有限公司 一种基于神经网络的多维度调度方法及系统
CN115248728B (zh) * 2022-09-21 2023-02-03 之江实验室 面向智能计算的分布式训练任务调度方法、系统和装置
CN115658325B (zh) * 2022-11-18 2024-01-23 北京市大数据中心 数据处理方法、装置、多核处理器、电子设备以及介质
CN116594745A (zh) * 2023-05-11 2023-08-15 阿里巴巴达摩院(杭州)科技有限公司 任务执行方法、系统、芯片及电子设备
CN116578403A (zh) * 2023-07-10 2023-08-11 安徽思高智能科技有限公司 一种基于深度强化学习的rpa流程调度方法及系统
CN116680063B (zh) * 2023-08-03 2023-11-03 苏州浪潮智能科技有限公司 任务调度方法、装置、计算系统、电子设备和存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103713949A (zh) * 2012-10-09 2014-04-09 鸿富锦精密工业(深圳)有限公司 动态任务分配系统及方法
CN104615488A (zh) * 2015-01-16 2015-05-13 华为技术有限公司 异构多核可重构计算平台上任务调度的方法和装置
CN106228314A (zh) * 2016-08-11 2016-12-14 电子科技大学 基于深度增强学习的工作流调度方法
CN109101339A (zh) * 2018-08-15 2018-12-28 北京邮电大学 异构集群中视频任务并行化方法、装置及异构集群系统
CN109785062A (zh) * 2019-01-10 2019-05-21 电子科技大学 一种基于协同过滤模型的混合神经网络推荐系统

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102306336A (zh) * 2011-06-10 2012-01-04 浙江大学 基于协同过滤和QoS感知的服务选择框架
US10262390B1 (en) * 2017-04-14 2019-04-16 EMC IP Holding Company LLC Managing access to a resource pool of graphics processing units under fine grain control
CN107943948A (zh) * 2017-11-24 2018-04-20 中国科学院电子学研究所苏州研究院 一种改进的混合协同过滤推荐方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103713949A (zh) * 2012-10-09 2014-04-09 鸿富锦精密工业(深圳)有限公司 动态任务分配系统及方法
CN104615488A (zh) * 2015-01-16 2015-05-13 华为技术有限公司 异构多核可重构计算平台上任务调度的方法和装置
CN106228314A (zh) * 2016-08-11 2016-12-14 电子科技大学 基于深度增强学习的工作流调度方法
CN109101339A (zh) * 2018-08-15 2018-12-28 北京邮电大学 异构集群中视频任务并行化方法、装置及异构集群系统
CN109785062A (zh) * 2019-01-10 2019-05-21 电子科技大学 一种基于协同过滤模型的混合神经网络推荐系统

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
Mystic: Predictive Scheduling for GPU based Cloud Servers using Machine Learning;Yash Ukidave等;《2016 IEEE International Parallel and Distributed Processing Symposium》;20160721;第353-362页 *
Topology-Aware GPU Scheduling for LearningWorkloads in Cloud Environments;Marcelo Amaral等;《Proceedings of SC17》;20171112;第1-12页 *
基于图卷积与神经协同过滤的融合信息推荐模型;江原;《中国优秀硕士学位论文全文数据库 信息科技辑》;20190115;I138-4753 *

Also Published As

Publication number Publication date
CN110489223A (zh) 2019-11-22

Similar Documents

Publication Publication Date Title
CN110489223B (zh) 一种异构集群中任务调度方法、装置及电子设备
JP6898496B2 (ja) 計算グラフの処理
CN110737529B (zh) 一种面向短时多变大数据作业集群调度自适应性配置方法
Assran et al. Advances in asynchronous parallel and distributed optimization
US10783436B2 (en) Deep learning application distribution
Chen et al. Deep learning research and development platform: Characterizing and scheduling with qos guarantees on gpu clusters
Tong et al. DDQN-TS: A novel bi-objective intelligent scheduling algorithm in the cloud environment
US20210133555A1 (en) Distributed learning of composite machine learning models
Chakravarthi et al. TOPSIS inspired budget and deadline aware multi-workflow scheduling for cloud computing
Muhuri et al. On arrival scheduling of real-time precedence constrained tasks on multi-processor systems using genetic algorithm
Zhang et al. Learning-driven interference-aware workload parallelization for streaming applications in heterogeneous cluster
CN114895773A (zh) 异构多核处理器的能耗优化方法、系统、装置及存储介质
Yang et al. A fully hybrid algorithm for deadline constrained workflow scheduling in clouds
CN114936708A (zh) 基于边云协同任务卸载的故障诊断优化方法及电子设备
Grinsztajn et al. Geometric deep reinforcement learning for dynamic DAG scheduling
Jeon et al. Intelligent resource scaling for container based digital twin simulation of consumer electronics
CN112948115B (zh) 一种基于极限学习机的云工作流调度器压力预测方法
US11231961B2 (en) Scheduling operations
de Freitas Cunha et al. An SMDP approach for Reinforcement Learning in HPC cluster schedulers
Elsayed et al. Deep reinforcement learning based actor-critic framework for decision-making actions in production scheduling
Kumaran et al. Deep Reinforcement Learning algorithms for Low Latency Edge Computing Systems
He et al. A reinforcement learning method for scheduling service function chains with multi-resource constraints
KR102559658B1 (ko) 스케줄링 방법 및 장치
CN109298921B (zh) 一种基于贝叶斯网络的分布式计算任务调度算法
Deng et al. A Learning Approach to Multi-robot Task Allocation with Priority Constraints and Uncertainty

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant