多引擎计算系统的任务调度方法、装置及存储介质与流程

未命名 10-08 阅读:78 评论:0


1.本技术实施例涉及计算机领域,具体而言,涉及一种多引擎计算系统的任务调度方法、装置及存储介质。


背景技术:

2.基于分布式混合内存池的多引擎异构计算系统可以同时处理多个计算任务,每一个计算任务又可被划分为多个独立的子图。在接收到对基于混合内存池的多引擎计算系统的任务调度请求时,可以做出任务调度决策,将任务调度请求所请求调度的任务调度给多引擎异构计算系统中对应的计算节点。
3.然而,相关技术中的多引擎计算系统的任务调度方法,可以通过不断学习已有的任务调度决策对新的任务调度请求做出任务调度决策,以提高任务调度决策的合理性。然而,任务调度请求具有一定的随机性,会导致任务调度决策的学习中断或延迟。
4.由此可见,相关技术中的多引擎计算系统的任务调度方法存在任务调度决策的学习易发生中断或者延迟的技术问题。


技术实现要素:

5.本技术实施例提供了一种多引擎计算系统的任务调度方法、装置及存储介质,以至少解决相关技术中的多引擎计算系统的任务调度方法存在任务调度决策的学习易发生中断或者延迟的技术问题。
6.根据本技术的一个实施例,提供了一种多引擎计算系统的任务调度方法,包括:并行执行网络训练线程和任务决策线程,以通过所述网络训练线程和所述任务决策线程并行执行以下的操作:通过所述任务决策线程基于推理网络对基于混合内存池的所述多引擎计算系统的任务调度请求做出任务调度决策,其中,所述任务决策线程用于基于所述推理网络预测的、在所述多引擎计算系统的环境状态下,执行预设行动集合中的至少部分预设行动所获取的奖励值,从所述至少部分预设行动中选取出与所述任务调度请求对应的预设行动,所述多引擎计算系统包括一组计算节点,所述预设行动集合中的每个预设行动是指由所述一组计算节点中的至少一个计算节点执行所述任务调度请求所请求的任务,所述任务调度决策为执行从所述至少部分预设行动中选取出的预设行动的决策;通过所述网络训练线程使用训练数据对训练网络进行训练,得到更新后的所述训练网络的权重,其中,所述训练网络和所述推理网络的网络结构相同,更新后的所述训练网络的权重被复制给所述推理网络;其中,所述多引擎计算系统包含一组处理器引擎,所述一组计算节点中的每个计算节点包含所述一组处理器引擎中的一个处理器引擎或多个处理器引擎的组合,所述每个计算节点与所述混合内存池中的一种内存组合关联。
7.根据本技术的又一个实施例,提供了一种多引擎计算系统的任务调度装置,包括:执行单元,用于并行执行网络训练线程和任务决策线程,以通过所述网络训练线程和所述任务决策线程并行执行以下的操作:通过所述任务决策线程基于推理网络对基于混合内存
池的所述多引擎计算系统的任务调度请求做出任务调度决策,其中,所述任务决策线程用于基于所述推理网络预测的、在所述多引擎计算系统的环境状态下,执行预设行动集合中的至少部分预设行动所获取的奖励值,从所述至少部分预设行动中选取出与所述任务调度请求对应的预设行动,所述多引擎计算系统包括一组计算节点,所述预设行动集合中的每个预设行动是指由所述一组计算节点中的至少一个计算节点执行所述任务调度请求所请求的任务,所述任务调度决策为执行从所述至少部分预设行动中选取出的预设行动的决策;通过所述网络训练线程使用训练数据对训练网络进行训练,得到更新后的所述训练网络的权重,其中,所述训练网络和所述推理网络的网络结构相同,更新后的所述训练网络的权重被复制给所述推理网络;其中,所述多引擎计算系统包含一组处理器引擎,所述一组计算节点中的每个计算节点包含所述一组处理器引擎中的一个处理器引擎或多个处理器引擎的组合,所述每个计算节点与所述混合内存池中的一种内存组合关联。
8.根据本技术的又一个实施例,还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
9.根据本技术的又一个实施例,还提供了一种电子设备,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行上述任一项方法实施例中的步骤。
10.通过本技术实施例,采用并行执行网络训练线程和任务决策线程的方式,以通过网络训练线程和任务决策线程并行执行以下的操作:通过任务决策线程基于推理网络对基于混合内存池的多引擎计算系统的任务调度请求做出任务调度决策,其中,任务决策线程用于基于推理网络预测的、在多引擎计算系统的环境状态下,执行预设行动集合中的至少部分预设行动所获取的奖励值,从至少部分预设行动中选取出与任务调度请求对应的预设行动,多引擎计算系统包括一组计算节点,预设行动集合中的每个预设行动是指由一组计算节点中的至少一个计算节点执行任务调度请求所请求的任务,任务调度决策为执行从至少部分预设行动中选取出的预设行动的决策;通过网络训练线程使用训练数据对训练网络进行训练,得到更新后的训练网络的权重,其中,训练网络和推理网络的网络结构相同,更新后的训练网络的权重被复制给推理网络;其中,多引擎计算系统包含一组处理器引擎,一组计算节点中的每个计算节点包含一组处理器引擎中的一个处理器引擎或多个处理器引擎的组合,每个计算节点与混合内存池中的一种内存组合关联,由于通过并行执行的两个线程分别进行网络训练和任务决策,网络训练过程不会对任务调度造成影响,避免了任务调度决策的学习中断或延迟;同时,网络训练所更新的网络权重会被赋值给推理网络,从而保证推理网络的网络权重可以及时更新,保证任务调度决策的合理性,可以达到提高任务调度的效率的技术效果,进而解决了相关技术中的多引擎计算系统的任务调度方法存在任务调度决策的学习易发生中断或者延迟的技术问题。
附图说明
11.图1是根据本技术实施例的一种多引擎计算系统的任务调度方法的硬件环境示意图;
12.图2是根据本技术实施例的一种多引擎计算系统的任务调度方法的流程图;
13.图3是根据本技术实施例的一种强化学习方法的示意图;
14.图4是根据本技术实施例的一种多引擎计算系统的任务调度方法的示意图;
15.图5是根据本技术实施例的另一种多引擎计算系统的任务调度方法的示意图;
16.图6是根据本技术实施例的又一种多引擎计算系统的任务调度方法的示意图;
17.图7是根据本技术实施例的另一种多引擎计算系统的任务调度方法的流程图;
18.图8是根据本技术实施例的一种多引擎计算系统的任务调度装置的结构框图。
具体实施方式
19.下文中将参考附图并结合实施例来详细说明本技术的实施例。
20.需要说明的是,本技术实施例的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
21.本技术实施例中所提供的方法实施例可以在服务器、移动终端、计算机终端或者类似的运算装置中执行。以运行在计算机终端上为例,图1是根据本技术实施例的一种多引擎计算系统的任务调度方法的硬件环境示意图。如图1所示,计算机终端可以包括一个或多个(图1中仅示出一个)处理器102(处理器102可以包括但不限于微处理器mcu或可编程逻辑器件fpga等的处理装置)和用于存储数据的存储器104,其中,上述计算机终端还可以包括用于通信功能的传输设备106以及输入输出设备108。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述计算机终端的结构造成限定。例如,计算机终端还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
22.存储器104可用于存储计算机程序,例如,应用软件的软件程序以及模块,如本技术实施例中的多引擎计算系统的任务调度方法对应的计算机程序,处理器102通过运行存储在存储器104内的计算机程序,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至移动终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
23.传输设备106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括计算机终端的通信供应商提供的无线网络。在一个实例中,传输设备106包括一个网络适配器(network interface controller,简称为nic),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输设备106可以为射频(radio frequency,简称为rf)模块,其用于通过无线方式与互联网进行通讯。
24.根据本技术实施例的一个方面,提供了一种多引擎计算系统的任务调度方法,以由服务器来执行本实施例中的多引擎计算系统的任务调度方法为例,图2是根据本技术实施例的一种多引擎计算系统的任务调度方法的流程图,如图2所示,该流程包括如下步骤:
25.步骤s202,并行执行网络训练线程和任务决策线程,以通过网络训练线程和任务决策线程并行执行以下的操作:
26.通过任务决策线程基于推理网络对基于混合内存池的多引擎计算系统的任务调度请求做出任务调度决策;
27.通过网络训练线程使用训练数据对训练网络进行训练,得到更新后的训练网络的
权重。
28.本实施例中的多引擎计算系统的任务调度方法可以应用到多引擎计算系统下的任务调度的场景,即,当任务到来时,选择任务调度到多引擎计算系统下的哪个计算节点进行处理。其中,多引擎计算系统是一种使用多个计算引擎进行分布式计算任务的系统,可以通过将计算任务分配给不同的计算引擎,并在计算完成后将结果进行整合,以实现更快速、更高效的计算过程。多个计算引擎可以是配置在同一个物理机上的,也可以是配置在多个物理机上的,多引擎计算系统使用的多个计算引擎可以是异构或者同构的。多个计算引擎(例如,异构计算引擎)可以以不同的组合方式构成物理上的计算节点,也称计算服务器节点或物理计算节点。这里,多引擎计算系统的计算节点是指系统中负责执行分布式计算任务的节点,计算节点是分布式计算系统中的一部分,用于处理计算任务的分发和执行。计算节点可以是物理服务器(处理器)及其组合、虚拟机或容器及其组合等。计算节点通常具有计算能力(例如,基于处理器及其组合)和存储能力(例如,基于计算节点关联的内存),可以根据任务需求进行资源分配和管理,同时与其他计算节点进行通信和协调,以完成分布式计算任务。计算节点的数量和配置可以根据系统的需求进行扩展和调整,以提高系统的计算性能和可伸缩性。
29.例如,多引擎计算系统可以是多引擎异构计算系统,该多引擎计算系统可以包含总记n个cpu(central processing unit,中央处理器)、gpu(graphics processing unit,图形处理器)、fpga(field programmable gate array,现场可编程门阵列)、xpu(extensible processing unit,可扩展处理单元)等异构处理器引擎,其中,n为大于或者等于2的正整数,这些异构计算引擎以不同的组合方式构成物理上的物理计算节点。
30.随着金融交易、人工智能、生命科学等数据密集型应用的处理数据量的激增,计算引擎对大内存的需求急剧增长,然而内存容量的增长速度远落后于处理器性能的增长。同时,处理器核的增长低于内存容量的增长,即,单个节点内的每个处理器核对应的内存容量逐渐减少,则进一步加剧了应用对于存算比(内存资源和计算资源的比例)增长的扩展需求。因此,一个研究方向是突破单节点内存容量,提供内存弹性扩展性能,提供跨节点间us(微秒)级的数据访问,并且为应用提供本地和远端一致的全局内存系统,即,采用分布式内存池化技术,以提升数据密集型应用场景的效率和性能。
31.获得一个最优的任务调度来最大化硬件资源的使用率具有极大的挑战性。一方面,任务调度的可能性随着任务/子任务的数量呈现指数级增长,使得详尽地评估所有可能的任务调度基本是不可实现的。另一方面,一个最佳的任务调度也取决于计算系统的硬件配置。高端的计算核心计算能力更强大,可以有效地执行一个由许多子任务并行执行的任务调度,而低端计算核心因计算能力的差距,使用相同的任务调度可能会遭受资源竞争。因此,鉴于计算任务、硬件配置的多样性,很难提供一种通用有效的任务调度策略。
32.多引擎计算系统可以是基于分布式混合内存池的多引擎异构计算系统,其可以采用以数据为中心的多计算引擎架构,多计算引擎架构即融合了不同层级的多样存储设备,例如,dram(dynamic random access memory,动态随机存取存储器)、scm(storage class memory,内存级存储器)、nvm(non-volatile memory,非易失性内存)等,又接入不同的异构计算终端(例如,cpu、gpu和xpu等)。不同异构存算设备在性能、容量层面的差异导致高通量
应用数据处理模型的任务调度面临资源分配复杂性高、数据亲和性不足等问题,对此,可以通过进行细粒度的任务调度与数据放置的协同管理,来提升计算系统的资源利用率。
33.例如,多引擎计算系统中的每个计算节点包含dram、scm、nvm等不同介质类型内存的组合。每一个处理器从本地、机架内、远端的不同介质内存中读取数据的延迟是确定性的而且已知的。
34.基于分布式混合内存池的多引擎异构计算系统可以同时处理众多计算任务,每一个计算任务又可以被划分为许多独立的子图。目前常用的任务调度方法是采用启发的调度方法或者基于机器学习的调度方法,其中,启发的调度方法将任务调度这个nphard(non-deterministic polynomial,非确定性多项式)问题通过启发式算法,转换为可以通过近似算法进行求解的问题。在任务到来时,通过统计所有节点的资源情况,然后根据节点资源的利用率或者均衡情况得到调度结果。基于机器学习的调度方法主要考虑一个简单的全连接模型,简单的将任务和节点的状态输入全连接网络,然后得到输出的数值,并以此作为调度的依据,判断任务该调度到哪个节点。为了提高任务调度决策的合理性,可以通过不断学习已有的任务调度决策对新的任务调度请求做出任务调度决策。
35.然而,这些方法存在系统资源利用率较低、任务调度的开销较大、任务的平均等待时间较长、任务的平均响应时间较长等问题,例如,由于任务调度请求具有一定的随机性,任务调度请求的接收会导致任务调度决策的学习中断或者延迟。
36.这里,任务调度的目标是最大化资源利用率,而评价一个多节点计算系统的任务调度有多种评价标准,不同的评价标准满足不同的用户使用期望,并因此导致不同的任务调度策略,没有一个单一的指标是被认为是黄金标准,目前广泛使用的评价标准有以下三种:
37.最小化平均等待时间(wait),是指从任务提交作业到开始作业之间的平均时间间隔();
38.最小化平均响应时间(resp),是指从任务提交时间和工作完成时间之间的平均时间间隔;这个时间是等待时间()加上作业执行时间();
39.最大化资源利用率(util),即,最大化计算系统每种资源类型(例如算力、内存等)的平均利用率(avg util),如公式(1)所示,用于表示所有机器在一段时间对某个资源的使用与系统资源总量的使用比值。
[0040][0041]
其中,是机器在时间在维度的资源使用情况,是系统的d维度资源总量。
[0042]
为了至少部分解决上述问题,在本实施例中,提供了一种内存池化多引擎计算系统的任务调度方案,其核心是一种基于强化学习的任务调度方法,将多引擎计算系统的多任务调度问题模拟为rl(reinforcement learning,强化学习)问题,例如,mdp(markov decision processes,马尔科夫决策过程)问题,通过双线程rl方法对任务调度问题进行求解,提高系统任务调度的效率,提高系统硬件的利用率,提高任务系统的整体性能。多引擎计算系统可以是基于分布式混合内存池的多引擎异构计算系统。除了多任务调度以外,本
实施例中所提供的任务调度方法还可以应用到其他任务调度、序列决策等场景中。
[0043]
可选地,上述双线程包括:网络训练线程(例如,rl训练线程)和任务决策线程(例如,rl决策线程),网络训练线程是用于对训练网络进行训练的线程,而任务决策线程是使用推理网络进行任务调度决策的线程,其中,训练网络和推理网络使用相同的神经网络结构,两者可以是基于强化学习的神经网络。这里,通过网络训练线程和任务决策线程(例如,rl决策线程和rl训练线程)的双线程设计,可以避免任务调度决策的学习中断或延迟,实现两个线程的并行执行,提高了任务调度的效率(即,任务调度系统的执行效率)。
[0044]
需要说明的是,rl是一类ml(machine learning,机器学习)算法,它涉及一个智能体(agent)通过与环境互动来学习实现一个目标,如图3所示,智能体从其环境的初始状态开始,其中,是所有可能状态(state)的集合。然后,在一个时间戳t中,智能体在状态下执行了一个行动,其中,a代表可能的行动(action)集合,并移动到下一个状态。智能体收到奖励,该奖励在时间上可能是即时的或延迟的,因为行动将环境状态从变为。从初始状态到最终状态的状态和行动的序列被称为一个序列(episode)。智能体做出决定并获得相应的奖励,同时努力使累积奖励最大化,而不是只使每个行动的奖励最大化。通过这种方式,智能体可以对其决策的长期影响进行优化。
[0045]
这里,智能体是指具有一定智能水平和能力的实体,可以感知环境、处理信息、做出决策并采取行动,其可以通过传感器感知外部环境的信息,并通过算法和模型进行学习和推理,从而实现自主决策和行为。智能体可以是物理实体,如机器人,也可以是虚拟实体,如人工智能系统。
[0046]
策略π制约着智能体在某个状态下的行动。智能体的目标是找到最佳策略(policy),使得随着时间的推移从环境中收集到的累积奖励最大化。智能体通过计算最佳行动价值函数决定目标行动,行动价值函数也称为状态-行动对的q值,其中,代表在给定状态s下采取行动a的预期累积奖励。这里,policy通过函数的形式表示,其根据观测到的state进行决策,控制agent运行,表示在当前状态s下,做出行动a的概率密度。强化学习的价值函数是用来衡量在特定状态下采取特定动作的价值,它表示在当前状态下,采取特定动作所带来的长期回报或效用。强化学习的目标是通过学习最优的价值函数,使智能体能够在不同状态下选择最优的动作,从而最大化累积回报。行动价值函数(q-value function):表示在特定状态下采取特定动作所能获得的累积回报的期望值,它衡量了智能体在当前状态下采取不同动作的优劣程度,并指导智能体在该状态下选择最优的动作。通过学习和更新价值函数,强化学习算法可以逐步提升智能体的决策能力,使其在复杂的环境中能够做出更优的决策。
[0047]
传统的强化学习方法通常使用表格方法,使用查找表存储与每个状态-动作对相关的q值。对于具有大量状态和动作的环境,这些方法可能导致高存储和计算开销。为了克服这个问题,可以采用价值函数近似法,价值函数近似法用监督学习模型重新放置查找表,可以提供以低存储和计算开销概括大量的状态-动作对的能力。
[0048]
在本实施例中,两个线程可以并行执行(即,训练和决策允许并行执行),以并行执行执行以下的操作:
[0049]
操作一:通过任务决策线程基于推理网络对基于混合内存池的多引擎计算系统的
任务调度请求做出任务调度决策;
[0050]
操作二:通过网络训练线程使用训练数据对训练网络进行训练,得到更新后的训练网络的权重。
[0051]
对于操作一,任务决策线程用于基于推理网络预测的、在多引擎计算系统的环境状态下,执行预设行动集合中的至少部分预设行动所获取的奖励值,从至少部分预设行动中选取出与任务调度请求对应的预设行动,多引擎计算系统包括一组计算节点,预设行动集合中的每个预设行动是指由一组计算节点中的至少一个计算节点执行任务调度请求所请求的任务,任务调度决策为执行从至少部分预设行动中选取出的预设行动的决策。
[0052]
对于操作二,通过网络训练线程使用训练数据对训练网络进行训练,得到更新后的训练网络的权重,其中,训练网络和推理网络的网络结构相同,更新后的训练网络的权重被复制给推理网络。
[0053]
前述预设行动集合可以是由整个计算系统的每个计算节点执行任务,至少部分预设行动可以是与由当前计算系统状态和任务调度请求对应的计算节点执行任务。从至少部分预设行动中选取出预设行动可以是选取对应奖励值最大的行动,也可以是随机从至少部分预设行动中选择一个除对应奖励值最大的行动之外的行动,本实施例中对此不做限定。
[0054]
多引擎计算系统可以包含一组处理器引擎,一组计算节点中的每个计算节点包含一组处理器引擎中的一个处理器引擎或多个处理器引擎的组合,每个计算节点与混合内存池中的一种内存组合关联,这里,对于一个计算节点,与本计算节点对应的内存可以是本地内存(即,快速内存),与其他计算节点对应的内存可以是远端内存(即,慢速内存),如图4所示,混合内存池还可以包括暂未分配计算节点的内存及其组合。
[0055]
需要说明的是,对于一个计算节点,与其对应的内存对于本计算节点而言是本地内存,而对于除了本计算节点以外的其他计算节点而言是远端内存,例如,参见图4,与计算节点1对应的内存是计算节点1的本地内存,是计算节点2以及计算节点3的远端内存。
[0056]
可选地,本实施例中的多引擎计算系统的任务调度方法可以是由服务器上的目标智能体执行的,该目标智能体可以是rl智能体,通过与多引擎计算系统(例如,混合内存池多引擎异构计算系统)交互,学习执行准确的、系统感知的任务调度决策。在多个任务调度请求中,通过观察每个工作负载和系统级别的特征,并以此作为做出任务调度决策的状态,每次行动后,可以收到一个考虑到任务调度决策和计算系统内存状态的服务请求的奖励,基于此,可以找到一个最佳的任务调度策略,使多引擎计算系统的硬件资源利用率最大化,同时使工作负载在多引擎计算系统执行中整体性能最大化。
[0057]
此外,为了达到性能目标,可以最大限度地使用本地的快速内存介质,即,尽量将任务调度请求所请求的任务分配给本地内存中存储有任务所需数据的计算节点执行,同时避免由于本地内存缺失任务数据而导致的驱逐惩罚,从而使运行中的工作负载的平均内存访问请求延迟(访存延迟)最小,这里,访存延迟可以是从接收到当前任务调度请求至为当前任务调度请求提供当前任务数据的访存服务的时间,当前任务数据可以是当前任务调度请求所需的数据。
[0058]
通过上述步骤,通过并行执行网络训练线程和任务决策线程,以通过网络训练线程和任务决策线程并行执行以下的操作:通过任务决策线程基于推理网络对基于混合内存池的多引擎计算系统的任务调度请求做出任务调度决策;通过网络训练线程使用训练数据
对训练网络进行训练,得到更新后的训练网络的权重,可以解决相关技术中的多引擎计算系统的任务调度方法存在任务调度决策的学习易发生中断或者延迟的技术问题,提高了任务调度的效率。
[0059]
在一个示范性实施例中,通过任务决策线程基于推理网络对基于混合内存池的多引擎计算系统的任务调度请求做出任务调度决策,包括:
[0060]
s11,响应于获取到的每个任务调度请求,将每个任务调度请求作为当前任务调度请求执行以下的任务调度操作,得到与当前任务调度请求对应的当前任务调度决策:
[0061]
通过任务决策线程收集与多引擎计算系统和任务调度请求对应的一组当前状态特征,其中,一组当前状态特征用于表示与多引擎计算系统执行任务调度请求对应的当前环境状态;
[0062]
通过任务决策线程将一组当前状态特征作为当前观测向量输入到推理网络,得到推理网络输出的当前推理结果,其中,当前推理结果用于指示预设行动集合中与当前观测向量匹配的一组候选行动中的每个候选行动所对应的奖励值;
[0063]
根据当前推理结果,从一组候选行动中选取出目标行动,得到当前任务调度决策,其中,目标行动是指由一组计算节点中的目标计算节点执行当前任务调度请求所请求的当前任务。
[0064]
在本实施例中,响应于接收到的每一个任务调度请求,可以由任务决策线程(如rl决策线程)将每一个任务调度请求作为当前任务调度请求执行任务调度操作,以做出与当前任务调度请求对应的当前任务调度决策,即,决定当前任务调度请求的任务执行的计算节点(即,决定执行该任务调度请求的执行的计算节点)。对于当前任务调度请求,任务决策线程可以收集与多引擎计算系统和任务调度请求对应的一组当前状态特征,这里,一组当前状态特征用于表示与多引擎计算系统执行任务调度请求对应的当前环境状态,其可以是包括与多引擎计算系统和任务调度请求对应的所有当前状态特征,也可以是仅包括与任务调度相关性较大的部分当前状态特征,本实施例中对于一组当前状态特征包含的特征类型和数量不作限定。可选地,一组当前状态特征可以至少包括以下至少之一:任务请求的属性和当前的系统状态(例如,系统资源利用率、任务请求对应的任务所需数据大小、快速内存的剩余容量等)。
[0065]
在得到一组当前状态特征之后,任务决策线程可以将一组当前状态特征作为当前观测向量输入到推理网络,得到推理网络输出的当前推理结果,这里,当前推理结果用于指示预设行动集合中与当前观测向量匹配的一组候选行动中的每个候选行动所对应的奖励值(即,q值)。
[0066]
根据当前推理结果,任务决策线程可以从一组候选行动中选取出目标行动,得到当前任务调度决策,这里,目标行动是指由一组计算节点中的目标计算节点执行当前任务调度请求所请求的当前任务,目标计算节点可以是至少一个计算节点,一组候选行动可以是由与当前环境状态对应的可以选择的计算节点执行当前任务调度请求所请求的当前任务,从一组候选行动中选取出目标行动可以是选取对应奖励值最大的行动,也可以是随机从一组候选行动中除奖励值最大的行动之外的行动中选择一个行动,本实施例中对此不做限定。可选地,在任务决策线程中,在做出任务调度决策的同时,可以将任务调度经验存储在一个经验缓冲区中,经验缓冲区中所存储的任务调度经验可以用于训练网络的训练。
[0067]
例如,rl决策线程可以从传入任务请求的属性和当前的系统状态中提取观测向量(也称观察向量),并使用推理网络来做出任务调度决策。
[0068]
通过本实施例,通过任务决策线程将与多引擎计算系统和任务调度请求对应的一组当前状态特征作为推理网络的当前观测向量,以由推理网络对于各个可能行动的奖励进行预测,可以提高任务调度决策的合理性,使多引擎异构计算系统的硬件资源利用率最大化,同时使工作负载在多引擎异构计算系统执行中整体性能最大化。
[0069]
在一个示范性实施例中,通过任务决策线程收集多引擎计算系统与任务调度请求对应的一组当前状态特征,包括:
[0070]
s21,通过任务决策线程收集多引擎计算系统与任务调度请求对应的以下至少之一的状态特征,得到一组当前状态特征:
[0071]
第一状态特征,其中,第一状态特征为多引擎计算系统的资源利用率;
[0072]
第二状态特征,其中,第二状态特征为与当前任务调度请求所请求的当前任务中的所有向量和标量的浮点数和整数对应的指定类型的运算的次数;
[0073]
第三状态特征,其中,第三状态特征为当前任务调度请求的数据大小;
[0074]
第四状态特征,其中,第四状态特征为当前任务调度请求所请求的数据的类型;
[0075]
第五状态特征,其中,第五状态特征为每个计算节点的本地内存的剩余容量;
[0076]
第六状态特征,其中,第六状态特征为当前任务调度请求与混合内存池的历史任务调度请求之间的相似度。
[0077]
对于当前任务调度请求,任务决策线程可以收集多引擎计算系统与任务调度请求对应的一组当前状态特征,收集的当前状态特征可以是与当前任务调度请求相关的状态特征,也可以是与当前任务调度请求无关的状态特征。这里,对于不同任务调度请求所收集的一组状态特征的特征类型和数量可以是固定不变的,也可以是随任务或者计算系统变化的。在本技术实施例中,以不同任务调度请求所收集的一组状态特征的特征类型和数量固定不变为例,在此情况下,在获取到任务调度请求之后,可以更新一组状态特征的特征值。
[0078]
可选地,在本实施例中,一组当前状态特征的特征类型可以是通过进行特征选择所确定的、在观测向量中包含的最佳状态特征。任务调度系统(可以是基于强化学习的任务调度系统)在每个时间戳(t),收到任务调度请求之后,一个与特定任务调度请求对应的状态特征被收集到一个观测向量中,即,在每个时间戳,仅更新目标观测向量包含的状态特征值。
[0079]
这里,一组当前状态特征所包含的特征数量是有限的,使用数量有限的特征可以基于两方面的考虑:首先,有限的特征集使可减少方法的实施开销,提高推理速度;其次,根据实践经验,本实施例中的rl智能体对奖励结构设计比对观测向量中的特征数量更加敏感。具体来说,使用访存延迟作为奖励,可间接反馈混合内存池系统的当前状态(例如,排队延迟、缓冲区依赖性、读/写延迟、写缓冲区状态和错误处理延迟),奖励策略是rl中寻找最佳决策策略的最关键部分。
[0080]
在本实施例中,所设计的观测向量至多为一个六元组,观测向量可以包括以下至少之一的状态特征:
[0081]
第一状态特征,可以记为,其表示当前系统的资源利用率(即,算力),由于任务调度决策系统的一个重要目标是最大化计算系统的资源利用率,因此,第一状态特征对
任务调度决策很重要。
[0082]
第二状态特征,可以记为,表示与当前任务调度请求所请求的当前任务中的所有向量和标量的浮点数(单精度)和整数(int32)对应的指定类型的运算的次数,这里,指定类型的运算可以包括基本类型算术运算,例如加减乘除等,本实施例中对此不作限定。例如,表示当前任务所有向量和标量的浮点数和整数的基本类型算术运算的次数,单位flops(floating-point operations per second,每秒浮点运算次数),其中,整形数算术运算的次数按照一定比例()换算成浮点数算术运算的次数。这个比例根据计算硬件体系结构对整型和浮点型算术运算的开销不同而有差异,可以查看芯片手册确认其整型和浮点型算术运算的峰值计算力而得到。同样可以通过测试用例获取其准确数值。例如,支持avx(advanced vector extensions,高级向量扩展)-512指令的cpu,单个cpu周期可以同时执行2条512bit(比特)的加法和2条512bit的乘法一次,可以近似认为。
[0083]
第三状态特征,可以记为,表示当前任务调度请求的的数据大小,即,与之相关的页数量,换句话说,第三状态特征表示的可以是当前任务调度请求本身的数据大小。
[0084]
第四状态特征,可以记为,表示当前任务调度请求的请求类型,区分了读和写请求,这对任务调度决策很重要,因为不同内存设备(本地、远端)有不对称的读写延迟。
[0085]
第五状态特征,可以记为,表示快速内存设备剩余容量,即,每个计算节点的本地内存的剩余容量,跟踪快速内存设备剩余容量是一个重要的功能,因为本实施例中的智能体的目标是最大限度地使用有限的快速内存,同时避免从快速内存设备驱除的惩罚。通过此状态特征,智能体可以学会避免驱除惩罚。
[0086]
第六状态特征,可以记为,表示请求任务的相似性度量,即,当前任务调度请求与基于混合内存池的多引擎计算系统的历史任务调度请求之间的相似度。由于每个任务调度决策都会影响未来请求的决策,因此通过此状态特征,可以指导智能体执行过往任务感知的决策。
[0087]
例如,观测向量为一个六元组,可以表示为公式(2)所示的形式:
[0088][0089]
其中,的含义与前述类似,分别表示:当前系统的资源利用率(算力),当前任务所有向量和标量的浮点数和整数基本类型算术运算的次数,当前任务请求的数据大小,当前任务请求的数据类型,跟踪快速内存设备剩余容量,当前任务的相似性度量。
[0090]
某些状态特征所包含的元素的个数可以是与计算节点相关的,其可以包括与计算系统的每个计算节点对应的元素,例如,以为例,其可以包括以每个计算节点作为当前计算节点确定的本地内存(快速内存)设备剩余容量,这里,当前计算节点的本地内存是指混合内存池中与当前计算节点关联的一组内存组合。
[0091]
通过本实施例,通过使用包含数量有限的状态特征的观测向量,可以减少对与任务调度无关或者相关性小状态特征的关注度,降低任务决策线程的运行成本,提高任务决策线程的推理速度。
[0092]
在一个示范性实施例中,通过任务决策线程收集多引擎计算系统与任务调度请求对应的以下至少之一的状态特征,得到一组当前状态特征,包括:
[0093]
s31,根据当前任务调度请求所请求的当前任务所需的当前任务数据与每个计算节点的本地内存中的本地数据之间的重合程度,确定第六状态特征。
[0094]
对于第六状态特征,可以根据当前任务调度请求所请求的当前任务所需的当前任务数据与每个计算节点的本地内存中的本地数据之间的重合程度,确定第六状态特征。这里,考虑不同任务使用数据集的相似性,根据任务所需数据的与节点的本地数据重合程度进行设置。
[0095]
通过本实施例,基于任务所需数据与计算节点的本地数据重合程度确定目标任务调度决策,可以最大限度地使用计算节点本地的快速内存介质,同时避免由于任务调度请求所请求的任务被分配到的计算节点的本地内存缺失任务数据而导致的驱逐惩罚。
[0096]
在一个示范性实施例中,通过任务决策线程将一组当前状态特征作为当前观测向量输入到推理网络,得到推理网络输出的当前推理结果,包括:
[0097]
s41,通过任务决策线程将一组当前状态特征作为当前观测向量输入到推理网络,以由推理网络执行以下的推理操作:
[0098]
从预设行动集合中选取与当前观测向量对应的候选行动,得到一组候选行动;
[0099]
根据当前观测向量预测与每个候选行动对应的奖励值,得到当前推理结果,其中,与每个候选行动对应的奖励值是执行每个候选行动所获取的累计奖励值。
[0100]
为了得到任务决策线程中的推理网络输出的当前推理结果,可以先从预设行动集合中选取与当前观测向量对应的候选行动,得到一组候选行动;与前述实施例类似的,预设行动集合可以是指由计算系统的所有计算节点执行当前任务调度请求对应的任务,候选行动可以是指由与当前观测向量对应可选择的计算节点执行当前任务调度请求对应的任务,即,候选行动是与当前环境状态关联的。
[0101]
通过任务决策线程将一组当前状态特征作为当前观测向量输入到推理网络,根据当前观测向量预测与每个候选行动对应的奖励值,可以得到当前推理结果,这里,与每个候选行动对应的奖励值是执行每个候选行动所获取的累计奖励值。
[0102]
例如,对于每一个对基于混合内存池的多引擎计算系统的新的任务调度请求,从传入任务请求的属性和当前的系统状态中提取观测向量,并使用推理网络来预测给定状态向量(即,观测向量)的每个可能的行动的q值。在做出任务调度决策时,可以平衡对环境的随机探索(即,找到更好的策略,而不会卡在次优策略上)和对其当前策略的利用(即,根据当前推理网络的权重最大化其奖励)。
[0103]
通过本实施例,基于任务决策线程的推理网络获取当前观测向量对应的环境状态下可用行动的预期累积奖励,可以辅助任务调度决策线程确定合适的任务调度决策,提高任务调度效率。
[0104]
在一个示范性实施例中,根据当前推理结果,从一组候选行动中选取出目标行动,得到当前任务调度决策,包括:
[0105]
s51,按照预设选取规则从一组候选行动中选取出目标行动,得到当前任务调度决策,其中,预设选取规则为以的概率选取一组候选行动中对应的奖励值最高的候选行动,以的概率从所述一组候选行动中除了对应的奖励值最高的候选行动以外的其他候选行动中随机选取一个候选行动,。
[0106]
对于每一个对基于混合内存池的多引擎计算系统的新的任务调度请求,可以使用
观测信息(即,观测向量)来做出任务调度决策。推理网络根据观测向量中的状态信息预测每个可用行动的q值。任务调度策略可以选择具有最大q值的行动,或以低概率选择一个除最大q值对应的行动之外的随机行动进行探索,并执行任务调度:任务决策线程可以按照预设选取规则从一组候选行动中选取出目标行动,得到当前任务调度决策,即,以的概率选取一组候选行动中对应的奖励值最高的候选行动作为目标行动、或者以的从一组候选行动中除了对应的奖励值最高的候选行动以外的其他候选行动中随机选取一个候选行动作为目标行动,从而得到当前任务调度决策,其中,。为了平衡任务调度系统的探索和开发,可选择。
[0107]
例如,一个rl智能体需要探索环境,以改善其策略,使其长期收益最大化,超越局部最大值。同时,rl智能体还需要利用已经历过的经验,以使其可以利用到目前为止的学习成果。为了平衡探索和利用,可以使用贪婪策略做出任务调度决策:根据智能体的经验,rl训练线程选择以的概率选择经验最优的行动(最大q值的行动),以的概率选择一个除最大q值的行动之外的随机行动进行探索,执行任务调度。这里,可以称为探索率,其可以为,为了平衡任务调度系统的探索和开发,其值可选择为0.05。
[0108]
这里,通过使用贪婪策略,可以使得探索允许体验根据已有的策略可能不会进入的状态,从而避免错过更高的长期奖励。为了进行探索,可以随机选择将任务随机调度到包含所需数据的快速(本地)或慢速(远端)内存计算节点上,这样就可以获得更多关于混合内存池多擎计算系统和工作负载的信息。根据收到的奖励,可以更新其训练网络,这样的探索有助于在长期内避免做出次优的任务调度决定。
[0109]
通过本实施例,在做出任务调度决策时,通过平衡对环境的随机探索(找到更好的策略,而不会卡在次优策略上)和对其当前策略的利用(根据当前推理网络的权重最大化其奖励),可以有助于在长期内做出最优的任务调度决策,提高任务调度决策的准确性。
[0110]
在一个示范性实施例中,在根据当前推理结果,从一组候选行动中选取出目标行动,得到当前任务调度决策之后,上述方法还包括:
[0111]
s61,获取与当前观测向量和目标行动对应的目标奖励值,其中,目标奖励值为在当前观测向量所表示的当前环境状态下执行目标行动所获取到的奖励值;
[0112]
s62,将当前经验数据存储到目标存储区域,其中,目标存储区域用于以经验数据的形式存储在多引擎计算系统的环境状态下选取的预设行动和执行选取的预设行动所获取的奖励值之间的对应关系,当前经验数据用于指示在当前环境状态下执行的目标行动和目标奖励值之间的对应关系,目标存储区域中所存储的经验数据用于作为训练数据对训练网络进行训练,以更新训练网络的权重。
[0113]
为了提高训练网络的训练数据获取的便捷性,可以在做出任务调度决策的同时将任务调度系统在与混合内存池多擎计算系统相互作用时收集的任务调度经验存储在一个经验缓冲区中。任务调度经验可以通过某一环境状态下执行的特定行动和所得到的奖励值之间的对应关系进行记录。对于当前任务调度请求,在做出当前任务调度决策之后,可以获取与当前观测向量和目标行动对应的目标奖励值,该目标奖励值为在当前观测向量所表示的当前环境状态下执行目标行动所获取到的奖励值,并将当前经验数据存储到目标存储区域。
[0114]
这里,目标存储区域用于以经验数据的形式存储在多引擎计算系统的环境状态下选取的预设行动和执行选取的预设行动所获取的奖励值之间的对应关系,即,目标存储区
域中存储有经验数据,经验数据用于表示在多引擎计算系统的环境状态下选取的预设行动和执行选取的预设行动所获取的奖励值之间的对应关系。当前经验数据用于指示在当前环境状态下执行的目标行动和目标奖励值之间的对应关系。目标存储区域中所存储的经验数据用于作为训练数据对训练网络进行训练,以更新训练网络的权重。
[0115]
考虑到深度神经网络需要很长时间进行训练和收敛,使得任务调度系统无法及时适应新的状态-动作对,通过并行执行网络训练线程和任务决策线程,训练和推理网络可以允许决策和训练线程的并行执行,并将更新后的训练网络的权重被复制给推理网络。通过网络训练线程可以使用从目标存储区域收集的一批经验数据来训练训练网络。
[0116]
可选地,网络训练线程可以使用从目标存储区域(即,经验缓冲区)收集的一批经验数据来训练训练网络。训练网络的更新权重在每一定数量的(例如,1024个)任务调度请求决策后被转移到推理网络中。
[0117]
例如,经验缓冲区的大小影响任务调度系统的调度性能,根据训练任务的batch(批)大小调整,batch为128,经验缓冲区设定为1024。经验缓冲区最初可以被分配为容纳ne(设置为1024)条目经验数据,训练和推理网络权重可以被初始化为随机值。当收到任务调度请求时,基于策略随机选择一个概率为的行动在任务队列中进行探索,或者根据存储在推理网络中的信息,选择使q值最大化的行动。在执行选定的行动后,将对应的奖励列出来,其价值取决于内存访存延迟以及是否需要从快速内存中进行数据驱逐。产生的经验数据被储存在经验缓冲区。在经验缓冲区有足够的(ne)条目的情况下,可以进行训练网络的训练。
[0118]
任务调度系统可以包括两个部分:rl决策线程和rl训练线程,两个部分作为独立的线程实现,且并行运行,rl决策线程的推理网络和rl训练线程的训练网络采用相同的网络模型结构,定期将训练网络的权重复制到推理网络。rl决策线程决定当前任务调度请求的任务执行的计算节点,同时在经验缓冲区中收集有关其决策信息(其决策及其影响的信息);rl训练线程使用收集的经验在线更新其决策策略,并不断从任务调度系统过去的决策和决策对计算系统的影响中学习。
[0119]
在训练网络的训练的过程中,rl训练线程从经验缓冲区收集的一批经验数据来训练训练网络,并使用随机梯度下降法(stochastic gradient descent,sgd)更新其权重。由于不对推理网络执行单独的训练步骤,而是将训练网络的权重复制到推理网络中,可以把推理网络的训练从决策的关键路径中移除。
[0120]
通过本实施例,基于经验缓冲区中存储的任务调度决策以及在当前观测向量对应的环境状态下执行任务调度决策对应的行动的奖励值,训练更新训练网络的权重,可以避免任务调度决策的学习中断或延迟,提高任务调度决策的连续性以及系统运行的稳定性。
[0121]
在一个示范性实施例中,获取与当前观测向量和目标行动对应的目标奖励值,包括:
[0122]
s71,根据当前访存延迟以及当前驱逐惩罚,确定目标奖励值,其中,目标奖励值与当前访存延迟负相关,目标奖励值与当前驱逐惩罚负相关。
[0123]
为了达到预期的性能目标,可以通过最大限度地使用本地的快速内存介质,同时避免由于缺失任务数据而导致的驱逐惩罚,从而使运行中的工作负载的平均内存访问请求延迟(访存延迟)最小。在本实施例中,与当前观测向量和目标行动对应的目标奖励值可以是根据与当前任务调度请求对应的当前访存延迟以及与当前任务调度请求对应的当前驱逐惩罚确定的,这里,当前访存延迟为从接收到当前任务调度请求至为当前任务调度请求
提供当前任务调度请求所需的当前任务数据的访存服务的时间,目标奖励值与当前访存延迟负相关。当前任务调度请求所请求的当前任务所需的任务数据为当前任务数据,当前驱逐惩罚是与当前驱逐数据对应的惩罚,当前驱逐数据是为将当前任务数据中存储在目标计算节点的远端内存中的任务数据读取到目标计算节点的本地内存而从目标计算节点的本地内存中驱逐到目标计算节点的远端内存中的数据,目标奖励值与当前驱逐惩罚负相关。
[0124]
在本实施例中,访存延迟(可以通过表示)是为来自操作系统的一个读或写i/o(input/output,输入/输出)请求提供服务所需的时间。访存延迟可以真实地描述混合内存池多引擎异构计算系统的状态,因为它可以根据请求类型、设备类型以及设备的内部状态和特性(例如,如读/写延迟、垃圾收集延迟、排队延迟和错误处理延迟)而显著变化。直观上来说,如果是低(高)的,则智能体为任务调度请求响应了所需数据在快(慢)速内存的计算节点执行服务,该智能体就会获得高(低)的奖励。
[0125]
当任务所需读取的数据不在快速内存(本地内存)中时,系统后台会从慢速内存(远端内存)读取数据,此时,如果快速内存介质的可用空间有限,系统后台会将部分数据有从快速内存(本地内存)驱逐到慢速内存(远端内存),如图5所示,驱逐表示将当前驱逐数据从目标计算节点关联的内存及其组合(目标计算节点的本地内存/快速内存)驱逐到计算系统中的其他计算节点关联的内存及其组合(目标计算节点的远端内存/慢速内存)。驱逐惩罚可以用于指导将任务最大限度(避免过度调度)调度到所需数据存储在快速内存中的计算节点上或者距离所需数据存储更近的计算节点。
[0126]
这里,与执行当前任务调度请求所请求的任务对应的计算节点可以是当前计算节点,与当前计算节点关联的内存及其组合可以是本地内存(快速内存),计算系统中除当前计算节点之外的其余计算节点关联的内存及其组合可以是远端内存(慢速内存)。
[0127]
通过本实施例,基于设计与访存延迟和驱逐惩罚负相关的奖励值,可以尽量使任务调度请求所请求的任务分配给关联了任务所需数据的计算节点执行,并尽量减少将分配给的计算节点关联的本地内存中的数据驱逐到其他计算节点的关联内存(即,远端内存)上,可以提高系统的资源利用率。
[0128]
在一个示范性实施例中,上述方法还包括:
[0129]
s81,将当前驱逐数据的数据大小和当前驱逐带宽之间的比值,确定为当前驱逐惩罚,其中,当前驱逐带宽为将当前驱逐数据从目标计算节点的本地内存驱逐到目标计算节点的远端内存的带宽。
[0130]
如果智能体过于积极地将所有任务调度请求放置到所需数据存储在快速内存中的计算节点上,会造成过多的任务调度到相同的计算节点,从而导致数据竞争,慢速内存数据频繁搬移到快速内存,造成系统数据搬移开销过大,降低系统整体性能。在本实施例中,为了防止智能体过于积极地将所有任务调度请求放置到所需数据存储在快速内存中的计算节点上,将当前驱逐数据的数据大小和当前驱逐带宽之间的比值,确定为当前驱逐惩罚,这里,当前驱逐带宽为将当前驱逐数据从目标计算节点的本地内存驱逐到目标计算节点的远端内存的带宽。
[0131]
例如,基于经验,可以选择驱逐惩罚等于驱逐数据的数据大小和驱逐带宽的比值,即,等于,其中,n是转移数据(驱逐数据)的大小,是将页面从快速内存中驱逐到慢速内存中的带宽。
[0132]
通过本实施例,通过驱逐数据的大小与驱逐带宽之间的比值确定驱逐惩罚,可以防止智能体过于积极地将所有任务调度请求放置到所需数据存储在快速内存中的计算节点上,提高系统整体性能。
[0133]
在一个示范性实施例中,根据当前访存延迟以及当前驱逐惩罚,确定目标奖励值,包括:
[0134]
s91,在当前驱逐惩罚为零的情况下,将多引擎计算系统的资源利用率和当前访存延迟的倒数的加权和,确定为目标奖励值;
[0135]
s92,在当前驱逐惩罚不为零的情况下,多引擎计算系统的资源利用率和驱逐关联值的加权和,确定为目标奖励值,其中,驱逐关联值为当前访存延迟的倒数乘以所得到的值和当前访存延迟的倒数减去当前驱逐惩罚所得到的值中的最大值,。
[0136]
对于当前任务调度请求,存在发生数据驱逐和未发生数据驱逐两种情况,分别对应于没有驱逐惩罚和有驱逐惩罚两种情况。如果当前驱逐惩罚为零,即,没有驱逐惩罚,可以将多引擎计算系统的资源利用率和当前访存延迟的倒数的加权和,确定为目标奖励值。而如果当前驱逐惩罚不为零,即,有驱逐惩罚,将多引擎计算系统的资源利用率和驱逐关联值的加权和确定为目标奖励值,驱逐关联值可以是惩罚项和当前访存延迟的倒数与驱逐惩罚的差值的最大值,这里,惩罚项可以用于避免对应奖励值出现太大偏差,尽量使得奖励函数收敛。
[0137]
例如,为了实现提高系统资源利用率的性能目标,可以设计如公式(3)所示的奖励函数r:
[0138][0139]
其中,分别代表最后数据访存服务访存延迟和驱逐惩罚,代表有驱逐惩罚时的访存延迟。通常远大于,因此,为了避免惩罚太大导致的抖动,我们引入了这个惩罚项。
[0140]
这里,代表系统的资源利用率,定义为并行任务数量与计算单元核心数量的比值(cpu、gpu通用)。由于任务调度时关注计算系统的算力利用率,因此,这一项对于任务调度目标至关重要,有助于任务调度系统更加直接关注计算系统的资源的利用率。表示在最大化资源利用率和最小化任务作业执行时间(快速内存使用最大化)平衡的一个超参数,可以平衡最大化资源利用率和最小化任务作业执行时间,基于经验,可以选择。
[0141]
如果出现驱逐,可以对智能体进行惩罚,以鼓励智能体最大限度将任务调度到所需数据在快速内存的计算节点上,这里,驱逐惩罚需要足够大,以阻止智能体的驱逐行为,同时驱逐惩罚也要足够小,以避免在导致更高的延迟的任务调度决策上偏离所学的策略太多。
[0142]
通过本实施例,设计取决于内存访存延迟以及是否需要从快速内存中进行驱逐的、与系统的资源利用率相关的奖励函数,并为了避免惩罚太大导致的抖动引入惩罚项,可以有助于在长期内避免做出次优的任务调度决策,使系统的长期累积奖励最大化,提高系统的资源利用率。
[0143]
在一个示范性实施例中,通过网络训练线程使用训练数据对训练网络进行训练,
得到更新后的训练网络的权重,包括:
[0144]
s101,从目标存储区域中随机抽取出第一数量的经验数据,得到训练经验数据组;
[0145]
s102,通过网络训练线程使用训练经验数据组对训练网络进行训练,得到更新后的训练网络的权重。
[0146]
在本实施例中,为了提高训练质量,可以进行批量训练,每批由随机抽样的经验数据组成,batch的大小可以根据系统任务量以及计算平台调整,其值可以为128。在进行网络训练时,网络训练线程可以使用从目标存储区域中收集的一批经验数据进行训练网络的训练:从目标存储区域中随机抽取出第一数量(例如,128)的经验数据,得到训练经验数据组;使用训练经验数据组对训练网络进行训练,得到更新后的训练网络的权重。在训练网络的训练期间,推理网络的权重可以是固定的,得到更新后的训练网络的权重之后,可以将更新后的训练网络的权重复制到推理网络中。
[0147]
这里,第一数量可以是小于或者等于目标存储区域的存储容量的任意整数值,训练经验数据组的组数可以是大于或者等于1的整数值,本实施例中对此不做限定。可选地,第一数量与训练经验数据组的组数的乘积应当小于或者等于目标存储区域的存储容量。与前述实施例类似的,经验数据可以至少包括任务调度决策以及在当前环境状态下执行当前任务调度决策对应的行动所获得的奖励值。
[0148]
例如,为了提高训练质量,可以进行批量训练,每批包括随机抽样的经验数据,batch的大小为128,可根据系统任务量以及计算平台调整。不同的经验缓冲区大小对系统性能是有影响的。根据经验,系统的性能可以在1024个条目时达到饱和,可以将此作为经验缓冲区的大小。对应地,在每1024个任务调度请求之后,训练网络的权重被复制到推理网络中。每个训练步骤由来自1024个经验缓冲区的8批经验组成,批大小为128。
[0149]
通过本实施例,通过网络训练线程基于经验数据对训练网络进行训练,以得到更新后的训练网络的权重,并将更新后的训练网络的权重复制到推理网络中,可以避免任务调度决策学习的中断和延迟,提高系统运行效率。
[0150]
在一个示范性实施例中,从目标存储区域中随机抽取出第一数量的经验数据,得到训练经验数据组,包括:
[0151]
s111,在目标存储区域中所存储的经验数据的数量大于或者等于预设数量阈值的情况下,分多个批次从目标存储区域中随机抽取出第一数量的经验数据,得到多个训练经验数据组。
[0152]
为了提高模型的训练精度,可以在目标存储区域中所存储的经验数据的数量大于或者等于预设数量阈值的情况下,分多个批次从目标存储区域中随机抽取出第一数量的经验数据,从而得到多个训练经验数据组,使用多个训练经验数据组对训练网络分组进行多次训练。这里,预设数量阈值可以是指目标存储区域的存储容量,也可以是指一次模型训练所能容纳的最大条目数,本实施例中对此不做限定,例如,预设数量阈值可以为1024。
[0153]
例如,当经验缓冲区有足够的条目数据时,开始训练网络的训练过程。在训练过程中,训练网络从经验缓冲区随机采样一批数据,并使用随机梯度下降法更新其权重。
[0154]
通过本实施例,在存储的经验数据的数量达到预期时,分批次随机抽取经验数据对训练网络进行多次训练,可以提高模型训练的准确性。
[0155]
在一个示范性实施例中,上述方法还包括:
[0156]
s121,在每次从目标存储区域中随机抽取出第一数量的经验数据之后,将选取出的第一数量的经验数据从目标存储区域中删除,得到目标存储区域中更新后的经验数据。
[0157]
考虑到目标存储区域的容量有限,在每次从目标存储区域中随机抽取出第一数量的经验数据之后,可以将选取出的第一数量的经验数据从目标存储区域中删除,得到目标存储区域中更新后的经验数据,从而可以方便的选取下一批次的经验数据,避免不同批次所选的经验数据重复。
[0158]
通过本实施例,将使用过的经验数据从存储区域中删除,以使每次训练使用的经验数据均不相同,可以提高模型训练数据的多样性以及存储区域的使用效率。
[0159]
在一个示范性实施例中,在从目标存储区域中随机抽取出第一数量的经验数据,得到训练经验数据组之前,上述方法还包括:
[0160]
s131,删除目标存储区域中重复的经验数据,得到目标存储区域中更新后的经验数据。
[0161]
为了使训练网络的训练数据尽可能地包括更多不同的内容,在从目标存储区域中随机抽取出第一数量的经验数据之前,可以先将目标存储区域中重复的经验数据删除,得到目标存储区域中更新后的经验数据。例如,为了尽量减少任务调度系统开销,可以在存储的经验中删除重复数据。
[0162]
这里,在每次得到待存储经验数据之后,可以确定目标存储区域中存储的经验数据是否有与待存储经验数据相同的经验数据,如果有,则忽略待存储经验数据,否则,将待存储经验数据存入到目标存储区域。或者,也可以在目标存储区域中存储的经验数据的数量达到预设数量阈值之前或者之后,确定目标存储区域中重复的经验数据,并保留重复的经验数据中的一条经验数据,以更新目标存储区域中存储的经验数据。
[0163]
通过本实施例,将重复的经验数据删除,可以节约设计成本,减少任务调度系统开销,拓宽每批训练数据的广度。
[0164]
在一个示范性实施例中,通过网络训练线程使用训练数据对训练网络进行训练,得到更新后的训练网络的权重,包括:
[0165]
s141,通过网络训练线程基于预设损失函数使用训练数据对训练网络进行训练,得到更新后的训练网络的权重。
[0166]
在本实施例中,在对训练网络进行训练时,使用预设损失函数(loss function)来度量模型的预测值f(x)与真实值y的差异程度的运算函数,预设损失函数是一个非负实值函数,通常使用l(y, f(x))来表示,损失函数越小,模型的鲁棒性就越好。损失函数使用主要是在模型的训练阶段,每个批次的训练数据送入模型后,通过前向传播输出预测值,然后损失函数会计算出预测值和真实值之间的差异值,也就是损失值。得到损失值之后,模型通过反向传播去更新各个参数,来降低真实值与预测值之间的损失,使得模型生成的预测值往真实值方向靠拢,从而达到学习的目的。可选地,对于损失函数,可以使用相对误差的绝对值。
[0167]
可选地,网络模型的损失函数可以使用均方误差(mean-square error, mse)函数,以评估相对误差绝对值。考虑到当真实值y和预测值f(x)的差值大于1时,会放大误差,而当差值小于1时,则会缩小误差,即,mse对于较大的误差(》1)给予较大的惩罚,较小的误差(《1)给予较小的惩罚。也就是说,对离群点比较敏感,受其影响较大。如果样本中存在离
群点,mse会给离群点更高的权重,这就会牺牲其他正常点数据的预测效果,最终降低整体的模型性能,因此,可以在损失函数l中引入关键度因子分量,即,关键度因子c,如公式(4)所示,
[0168][0169]
其中,p是模型的预测输出,m是经过多次运行后的实际平均测量值,关键度因子c,定义为最佳调度运行时间与当前调度运行时间的比率,这里,最佳运行时间为一个任务在最佳的任务调度决策下的运行时间,最佳的任务调度决策可以是与前述实施例类似的,例如,可以是对应奖励值最高的任务调度决策,当前调度运行时间为一个任务在实际的任务调度策略下的运行时间。
[0170]
只要网络模型把调度结果较为优秀的调度排在调度结果较差的调度之前,就能达到预期的目的。这是因为一般来说最优的任务调度结果并不唯一,特别是在计算系统数据放置配置具有多个副本的情况下。c能够放松对任务调度结果较差情况的准确性要求,转而专注于调度效果最优或者较为优秀的任务调度。可选地,关键度因子c可以设置为。
[0171]
通过本实施例,基于增加关键度因子的损失函数使用随机梯度下降法更新训练网络的权重,可以提高模型训练速度及准确率。
[0172]
在一个示范性实施例中,在通过网络训练线程使用训练数据对训练网络进行训练,得到更新后的训练网络的权重之前,上述方法还包括:
[0173]
s151,将基于高斯分布生成的随机值赋值给训练网络的权重,得到训练网络的权重的初始值。
[0174]
在本实施例中,训练网络和推理网络的权重被初始化为随机值。可选地,可以利用高斯分布(gaussian distribution)(或者其他分布)将训练网络和推理网络的权重初始化为随机值,与前述实施例类似的,训练网络和推理网络的采用相同的网络模型结构。
[0175]
通过本实施例,在系统初始化时,将网络模型的权重初始化为随机值,可以使模型收敛速度提高,使模型准确率提高。
[0176]
在一个示范性实施例中,上述方法还包括:
[0177]
s161,将待调度任务切分为一组子任务;
[0178]
s162,根据一组子任务中的不同子任务之间的关联关系,生成与一组子任务对应的任务有向图,其中,任务有向图中的一个任务节点与一组子任务中的一个子任务对应;
[0179]
s163,从任务有向图的起始任务节点开始遍历任务有向图中的每个任务节点,以对与每个任务节点的子任务进行调度,直到一组子任务中的所有子任务均被调度。
[0180]
在本实施例中,可以对输入任务合理切分子任务,以便于任务调度的处理过程,上述切分过程可以是在预处理阶段执行的。在预处理阶段,可以对待调度任务执行切分操作,得到一组子任务。而根据一组子任务中的不同子任务之间的关联关系,可以生成与一组子任务对应的任务有向图,任务有向图中的一个任务节点与一组子任务中的一个子任务对应。可选地,任务有向图可以是dag(directed acyclic graph,有向无环图)。这里,dag可以是指任意一条边有方向,且不存在环路的图。
[0181]
对于得到的任务有向图,可以从任务有向图的起始任务节点开始遍历任务有向图中的每个任务节点,以对与每个任务节点对应的子任务进行调度,直到一组子任务中的所有子任务均被调度,每隔子任务的调度逻辑与前述实施例中类似,在此不做赘述。
[0182]
例如,可以从任务dag图的起始节点开始遍历,探索可能的任务调度策略,直到任务dga的最后节点完成所有任务节点的任务调度。
[0183]
通过本实施例,以有向无环图的形式基于关联关系将任务调度请求所请求的任务切分为多个子任务,可以提高系统运行效率。
[0184]
在一个示范性实施例中,训练网络包括堆叠的两个编码器、两个编码器的输出经过一个线性层之后连接至输出层,输出层包含一组神经元,一组神经元中的每个神经元与预设行动集合中的一个预设行动对应。
[0185]
与前述实施例类似的,预设行动可以是指由计算节点执行任务调度请求所请求的任务,训练网络输出的一组神经元的每个神经元可以与预设行动集合中的每个预设行动对应。如图6所示,对于训练网络,该网络可将观察向量作为其输入,并产生q值的概率分布(probability of action)作为其输出。训练网络的网络结构(推理网络的网络结构是相同的)可以含有二个堆叠的标准transformer(变换器)编码器后连接一个线性层(linear),网络模型的输入(观测向量)具有8个维度,编码器有512个隐藏的特征维度和4个自注意力头(self-attention head)。经过线性层后,有一个128个神经元的输出层,每个神经元对应一个任务调度动作,这里,观测向量的维度、特征维度、自注意力头的个数以及神经元的数量可以根据需要进行设置。本实施例的任务调度系统选择q值(长期累积奖励值)最大的动作。其他模型参数如退出dropout=0.25,剩余模型参数均为默认设置。多头自注意力机制在理解计算系统中的多维相关性方面是有效的,特别是在调度需要多计算节点的复杂大任务的情况下,在实践中提供了稳定收敛的最佳性能。
[0186]
这里,transformer编码器中的normalize(标准化)用于对每个batch对应的数据进行规范化处理,add(添加)&normalize(标准化)(an)是一种常用的正则化技术,用于在模型训练过程中提高模型的泛化能力和稳定性,an正则化包括两个步骤:add和normalize。其中,add是在每个训练样本的输入数据上添加一个随机噪声。这个噪声可以是服从正态分布或均匀分布的随机数,通过将噪声添加到输入数据中,可以使模型对输入数据的微小变化更加鲁棒,从而增强模型的泛化能力。normalize是对经过添加噪声的输入数进行标准化处理,使得数的均值为0,方差为1。标准化可以使得输入数据在不同特之间具有相同的尺度,有助于加速模型的收敛速度,并且可以减少梯度消失或梯度爆炸的问题。
[0187]
通过本实施例,通过an正则化,可以有效地约束模型的复杂性,避免过拟合,并提高模型的泛化能力。
[0188]
下面结合可选示例对本实施例中的多引擎计算系统的任务调度方法进行解释说明。本可选示例提出了一种内存池化多引擎计算系统的任务调度方案,其核心是一种基于强化学习的任务调度方法,将分布式混合内存池多引擎异构计算系统的多任务调度问题模拟为rl问题,通过rl决策线程和rl训练线程的双线程设计,避免了任务调度决策的学习中断或延迟,实现两个线程的并行执行,提高了计算系统的资源利用率,提高了任务调度的效率,任务调度效果更优。
[0189]
如图7所示,本实施例中的任务调度方法可以包含两个部分,每个部分都作为独立
的线程实现,且并行运行,双线程实现避免了学习(即训练)中断或延迟对传入请求的任务调度决策,其中,
[0190]
(1)rl决策线程,决定当前任务调度请求的任务执行的计算节点,同时在经验缓冲区中收集有关其决策及其影响的信息。
[0191]
(2)rl训练线程,使用收集的经验数据来在线更新其决策策略,从而不断地从过去的决策及其影响中学习。
[0192]
为了实现两个线程的并行执行,可以复制用于做出任务调度决策的神经网络,当一个网络(称为推理网络)被部署(即做出决策)时,第二个网络(称为训练网络)在后台被训练。推理网络只用于推理,而训练网络只用于训练。因此,不对推理网络执行单独的训练步骤,而是定期将训练网络的权重复制到推理网络。
[0193]
这里,对于每个任务调度请求,任务调度策略可以选择导致最高长期奖励的行动,并使用深度q网络来更新。深度q网络的目标是学习q值的分布。这种分布有助于从环境中获取更多的信息,以做出更好的任务调度决策。本可选示例中涉及的超参数主要有:折扣因子,决定了即时奖励和未来奖励之间的平衡,考虑到更注重长期奖励,可以选择折扣因子为0.9;学习率,决定了神经网络权重更新的速率,选择学习率为;探索率(),为了平衡任务调度系统的探索和开发,选择探索率为0.05。
[0194]
此外,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本技术并不受所描述的动作顺序的限制,因为依据本技术,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本技术所必须的。
[0195]
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本技术实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本技术各个实施例的方法。
[0196]
根据本技术实施例的又一方面,还提供了一种多引擎计算系统的任务调度装置,该装置用于实现上述实施例中所提供的多引擎计算系统的任务调度方法,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
[0197]
图8是根据本技术实施例的一种多引擎计算系统的任务调度装置的结构框图,如图8所示,该装置包括:
[0198]
执行单元802,用于并行执行网络训练线程和任务决策线程,以通过网络训练线程和任务决策线程并行执行以下的操作:
[0199]
通过任务决策线程基于推理网络对基于混合内存池的多引擎计算系统的任务调度请求做出任务调度决策,其中,任务决策线程用于基于推理网络预测的、在多引擎计算系统的环境状态下,执行预设行动集合中的至少部分预设行动所获取的奖励值,从至少部分预设行动中选取出与任务调度请求对应的预设行动,多引擎计算系统包括一组计算节点,
预设行动集合中的每个预设行动是指由一组计算节点中的至少一个计算节点执行任务调度请求所请求的任务,任务调度决策为执行从至少部分预设行动中选取出的预设行动的决策;
[0200]
通过网络训练线程使用训练数据对训练网络进行训练,得到更新后的训练网络的权重,其中,训练网络和推理网络的网络结构相同,更新后的训练网络的权重被复制给推理网络;
[0201]
其中,多引擎计算系统包含一组处理器引擎,一组计算节点中的每个计算节点包含一组处理器引擎中的一个处理器引擎或多个处理器引擎的组合,每个计算节点与混合内存池中的一种内存组合关联。
[0202]
通过上述步骤,通过并行执行网络训练线程和任务决策线程,以通过网络训练线程和任务决策线程并行执行以下的操作:通过任务决策线程基于推理网络对基于混合内存池的多引擎计算系统的任务调度请求做出任务调度决策,其中,任务决策线程用于基于推理网络预测的、在多引擎计算系统的环境状态下,执行预设行动集合中的至少部分预设行动所获取的奖励值,从至少部分预设行动中选取出与任务调度请求对应的预设行动,多引擎计算系统包括一组计算节点,预设行动集合中的每个预设行动是指由一组计算节点中的至少一个计算节点执行任务调度请求所请求的任务,任务调度决策为执行从至少部分预设行动中选取出的预设行动的决策;通过网络训练线程使用训练数据对训练网络进行训练,得到更新后的训练网络的权重,其中,训练网络和推理网络的网络结构相同,更新后的训练网络的权重被复制给推理网络;其中,多引擎计算系统包含一组处理器引擎,一组计算节点中的每个计算节点包含一组处理器引擎中的一个处理器引擎或多个处理器引擎的组合,每个计算节点与混合内存池中的一种内存组合关联,可以解决相关技术中的操作系统升级方法由于两个操作系统之间存在大量和频繁的数据交换导致的系统性能降低的问题,提高了系统性能。
[0203]
可选地,执行单元包括:
[0204]
执行模块,用于响应于获取到的每个任务调度请求,将每个任务调度请求作为当前任务调度请求执行以下的任务调度操作,得到与当前任务调度请求对应的当前任务调度决策:
[0205]
通过任务决策线程收集与多引擎计算系统和任务调度请求对应的一组当前状态特征,其中,一组当前状态特征用于表示与多引擎计算系统执行任务调度请求对应的当前环境状态;
[0206]
通过任务决策线程将一组当前状态特征作为当前观测向量输入到推理网络,得到推理网络输出的当前推理结果,其中,当前推理结果用于指示预设行动集合中与当前观测向量匹配的一组候选行动中的每个候选行动所对应的奖励值;
[0207]
根据当前推理结果,从一组候选行动中选取出目标行动,得到当前任务调度决策,其中,目标行动是指由一组计算节点中的目标计算节点执行当前任务调度请求所请求的当前任务。
[0208]
可选地,执行模块包括:
[0209]
收集子模块,用于通过任务决策线程收集多引擎计算系统与任务调度请求对应的以下至少之一的状态特征,得到一组当前状态特征:
[0210]
第一状态特征,其中,第一状态特征为多引擎计算系统的资源利用率;
[0211]
第二状态特征,其中,第二状态特征为与当前任务调度请求所请求的当前任务中的所有向量和标量的浮点数和整数对应的指定类型的运算的次数;
[0212]
第三状态特征,其中,第三状态特征为当前任务调度请求的数据大小;
[0213]
第四状态特征,其中,第四状态特征为当前任务调度请求所请求的数据的类型;
[0214]
第五状态特征,其中,第五状态特征为每个计算节点的本地内存的剩余容量;
[0215]
第六状态特征,其中,第六状态特征为当前任务调度请求与基于混合内存池的多引擎计算系统的历史任务调度请求之间的相似度。
[0216]
可选地,收集子模块包括:
[0217]
确定子单元,用于确定根据当前任务调度请求所请求的当前任务所需的当前任务数据与每个计算节点的本地内存中的本地数据之间的重合程度,确定第六状态特征。
[0218]
可选地,执行模块包括:
[0219]
执行子模块,用于通过任务决策线程将一组当前状态特征作为当前观测向量输入到推理网络,以由推理网络执行以下的推理操作:
[0220]
从预设行动集合中选取与当前观测向量对应的候选行动,得到一组候选行动;
[0221]
根据当前观测向量预测与每个候选行动对应的奖励值,得到当前推理结果,其中,与每个候选行动对应的奖励值是执行每个候选行动所获取的累计奖励值。
[0222]
可选地,执行模块包括:
[0223]
选取子模块,用于按照预设选取规则从一组候选行动中选取出目标行动,得到当前任务调度决策,其中,预设选取规则为以的概率选取一组候选行动中对应的奖励值最高的候选行动,以的概率从一组候选行动中除了对应的奖励值最高的候选行动以外的其他候选行动中随机选取一个候选行动,。
[0224]
可选地,上述装置还包括:
[0225]
获取单元,用于在根据当前推理结果,从一组候选行动中选取出目标行动,得到当前任务调度决策之后,获取与当前观测向量和目标行动对应的目标奖励值,其中,目标奖励值为在当前观测向量所表示的当前环境状态下执行目标行动所获取到的奖励值;
[0226]
存储单元,用于将当前经验数据存储到目标存储区域,其中,目标存储区域用于以经验数据的形式存储在多引擎计算系统的环境状态下选取的预设行动和执行选取的预设行动所获取的奖励值之间的对应关系,当前经验数据用于指示在当前环境状态下执行的目标行动和目标奖励值之间的对应关系,目标存储区域中所存储的经验数据用于作为训练数据对训练网络进行训练,以更新训练网络的权重。
[0227]
可选地,获取单元包括:
[0228]
确定模块,用于根据当前访存延迟以及当前驱逐惩罚,确定目标奖励值,其中,目标奖励值与当前访存延迟负相关,目标奖励值与当前驱逐惩罚负相关;
[0229]
其中,当前访存延迟为从接收到当前任务调度请求至为当前任务调度请求提供当前任务调度请求所需的当前任务数据的访存服务的时间,当前驱逐惩罚是与当前驱逐数据对应的惩罚,当前驱逐数据是为将当前任务数据中存储在目标计算节点的远端内存中的任务数据读取到目标计算节点的本地内存而从目标计算节点的本地内存中驱逐到目标计算节点的远端内存中的数据。
[0230]
可选地,上述装置还包括:
[0231]
确定单元,用于将当前驱逐数据的数据大小和当前驱逐带宽之间的比值,确定为当前驱逐惩罚,其中,当前驱逐带宽为将当前驱逐数据从目标计算节点的本地内存驱逐到目标计算节点的远端内存的带宽。
[0232]
可选地,确定模块包括:
[0233]
第一确定子模块,用于在当前驱逐惩罚为零的情况下,将多引擎计算系统的资源利用率和当前访存延迟的倒数的加权和,确定为目标奖励值;
[0234]
第二确定子模块,用于在当前驱逐惩罚不为零的情况下,多引擎计算系统的资源利用率和驱逐关联值的加权和,确定为目标奖励值,其中,驱逐关联值为当前访存延迟的倒数乘以所得到的值和当前访存延迟的倒数减去当前驱逐惩罚所得到的值中的最大值,。
[0235]
可选地,执行单元包括:
[0236]
抽取模块,用于从目标存储区域中随机抽取出第一数量的经验数据,得到训练经验数据组;
[0237]
第一训练模块,用于通过网络训练线程使用训练经验数据组对训练网络进行训练,得到更新后的训练网络的权重。
[0238]
可选地,抽取模块包括:
[0239]
抽取子模块,用于在目标存储区域中所存储的经验数据的数量大于或者等于预设数量阈值的情况下,分多个批次从目标存储区域中随机抽取出第一数量的经验数据,得到多个训练经验数据组,其中,多个训练经验数据组均用于对训练网络进行训练。
[0240]
可选地,上述装置还包括:
[0241]
第一删除单元,用于在每次从目标存储区域中随机抽取出第一数量的经验数据之后,将选取出的第一数量的经验数据从目标存储区域中删除,得到目标存储区域中更新后的经验数据。
[0242]
可选地,上述装置还包括:
[0243]
第二删除单元,用于在从目标存储区域中随机抽取出第一数量的经验数据,得到训练经验数据组之前,删除目标存储区域中重复的经验数据,得到目标存储区域中更新后的经验数据。
[0244]
可选地,执行单元包括:
[0245]
第二训练模块,用于通过网络训练线程基于预设损失函数使用训练数据对训练网络进行训练,得到更新后的训练网络的权重;
[0246]
其中,训练网络的预测误差p,训练网络的实际输出为h,预设损失函数是由|p-h|与关键度因子的乘积所确定的损失函数,关键度因子用于表示一个任务的最佳调度运行时间与一个任务的当前调度运行时间的比率,最佳调度运行时间为一个任务在最佳的任务调度决策下的运行时间,当前调度运行时间为一个任务在实际的任务调度策略下的运行时间。
[0247]
可选地,关键度因子为。
[0248]
可选地,上述装置还包括:
[0249]
赋值单元,用于在通过网络训练线程使用训练数据对训练网络进行训练,得到更新后的训练网络的权重之前,将基于高斯分布生成的随机值赋值给训练网络的权重,得到训练网络的权重的初始值。
[0250]
可选地,上述装置还包括:
[0251]
切分单元,用于将待调度任务切分为一组子任务;
[0252]
生成单元,用于根据一组子任务中的不同子任务之间的关联关系,生成与一组子任务对应的任务有向图,其中,任务有向图中的一个任务节点与一组子任务中的一个子任务对应;
[0253]
遍历单元,用于从任务有向图的起始任务节点开始遍历任务有向图中的每个任务节点,以对与每个任务节点的子任务进行调度,直到一组子任务中的所有子任务均被调度。
[0254]
可选地,训练网络包括堆叠的两个编码器、两个编码器的输出经过一个线性层之后连接至输出层,输出层包含一组神经元,一组神经元中的每个神经元与预设行动集合中的一个预设行动对应。
[0255]
需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述各个模块以任意组合的形式分别位于不同的处理器中。
[0256]
根据本技术实施例的又一方面,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
[0257]
在一个示例性实施例中,上述计算机可读存储介质可以包括但不限于:u盘、只读存储器(read-only memory,简称为rom)、随机存取存储器(random access memory,简称为ram)、移动硬盘、磁碟或者光盘等各种可以存储计算机程序的介质。
[0258]
根据本技术实施例的又一方面,还提供了一种电子设备,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
[0259]
在一个示例性实施例中,上述电子设备还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
[0260]
本实施例中的具体示例可以参考上述实施例及示例性实施方式中所描述的示例,本实施例在此不再赘述。
[0261]
显然,本领域的技术人员应该明白,上述的本技术实施例的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本技术实施例不限制于任何特定的硬件和软件结合。
[0262]
以上所述仅为本技术的优选实施例而已,并不用于限制本技术实施例,对于本领域的技术人员来说,本技术实施例可以有各种更改和变化。凡在本技术实施例的原则之内,所作的任何修改、等同替换、改进等,均应包含在本技术实施例的保护范围之内。

技术特征:
1.一种多引擎计算系统的任务调度方法,其特征在于,包括:并行执行网络训练线程和任务决策线程,以通过所述网络训练线程和所述任务决策线程并行执行以下的操作:通过所述任务决策线程基于推理网络对基于混合内存池的所述多引擎计算系统的任务调度请求做出任务调度决策,其中,所述任务决策线程用于基于所述推理网络预测的、在所述多引擎计算系统的环境状态下,执行预设行动集合中的至少部分预设行动所获取的奖励值,从所述至少部分预设行动中选取出与所述任务调度请求对应的预设行动,所述多引擎计算系统包括一组计算节点,所述预设行动集合中的每个预设行动是指由所述一组计算节点中的至少一个计算节点执行所述任务调度请求所请求的任务,所述任务调度决策为执行从所述至少部分预设行动中选取出的预设行动的决策;通过所述网络训练线程使用训练数据对训练网络进行训练,得到更新后的所述训练网络的权重,其中,所述训练网络和所述推理网络的网络结构相同,更新后的所述训练网络的权重被复制给所述推理网络;其中,所述多引擎计算系统包含一组处理器引擎,所述一组计算节点中的每个计算节点包含所述一组处理器引擎中的一个处理器引擎或多个处理器引擎的组合,所述每个计算节点与所述混合内存池中的一种内存组合关联。2.根据权利要求1所述的方法,其特征在于,所述通过所述任务决策线程基于推理网络对基于混合内存池的所述多引擎计算系统的任务调度请求做出任务调度决策,包括:响应于获取到的每个所述任务调度请求,将每个所述任务调度请求作为当前任务调度请求执行以下的任务调度操作,得到与所述当前任务调度请求对应的当前任务调度决策:通过所述任务决策线程收集与所述多引擎计算系统和所述任务调度请求对应的一组当前状态特征,其中,所述一组当前状态特征用于表示与所述多引擎计算系统执行所述任务调度请求对应的当前环境状态;通过所述任务决策线程将所述一组当前状态特征作为当前观测向量输入到所述推理网络,得到所述推理网络输出的当前推理结果,其中,所述当前推理结果用于指示所述预设行动集合中与所述当前观测向量匹配的一组候选行动中的每个候选行动所对应的奖励值;根据所述当前推理结果,从所述一组候选行动中选取出目标行动,得到所述当前任务调度决策,其中,所述目标行动是指由所述一组计算节点中的目标计算节点执行所述当前任务调度请求所请求的当前任务。3.根据权利要求2所述的方法,其特征在于,所述通过所述任务决策线程收集所述多引擎计算系统与所述任务调度请求对应的一组当前状态特征,包括:通过所述任务决策线程收集所述多引擎计算系统与所述任务调度请求对应的以下至少之一的状态特征,得到所述一组当前状态特征:第一状态特征,其中,所述第一状态特征为所述多引擎计算系统的资源利用率;第二状态特征,其中,所述第二状态特征为与所述当前任务调度请求所请求的当前任务中的所有向量和标量的浮点数和整数对应的指定类型的运算的次数;第三状态特征,其中,所述第三状态特征为所述当前任务调度请求的数据大小;第四状态特征,其中,所述第四状态特征为所述当前任务调度请求所请求的数据的类型;
第五状态特征,其中,所述第五状态特征为所述每个计算节点的本地内存的剩余容量;第六状态特征,其中,所述第六状态特征为所述当前任务调度请求与所述混合内存池的历史任务调度请求之间的相似度。4.根据权利要求3所述的方法,其特征在于,所述通过所述任务决策线程收集所述多引擎计算系统与所述任务调度请求对应的以下至少之一的状态特征,得到所述一组当前状态特征,包括:根据所述当前任务调度请求所请求的当前任务所需的当前任务数据与所述每个计算节点的本地内存中的本地数据之间的重合程度,确定所述第六状态特征。5.根据权利要求2所述的方法,其特征在于,所述通过所述任务决策线程将所述一组当前状态特征作为当前观测向量输入到所述推理网络,得到所述推理网络输出的当前推理结果,包括:通过所述任务决策线程将所述一组当前状态特征作为当前观测向量输入到所述推理网络,以由所述推理网络执行以下的推理操作:从所述预设行动集合中选取与所述当前观测向量对应的候选行动,得到所述一组候选行动;根据所述当前观测向量预测与所述每个候选行动对应的奖励值,得到所述当前推理结果,其中,与所述每个候选行动对应的奖励值是执行所述每个候选行动所获取的累计奖励值。6.根据权利要求5所述的方法,其特征在于,所述根据所述当前推理结果,从所述一组候选行动中选取出目标行动,得到所述当前任务调度决策,包括:按照预设选取规则从所述一组候选行动中选取出所述目标行动,得到所述当前任务调度决策,其中,所述预设选取规则为以α的概率选取所述一组候选行动中对应的奖励值最高的候选行动,以1-α的概率从所述一组候选行动中除了对应的奖励值最高的候选行动以外的其他候选行动中随机选取一个候选行动,α>1-α。7.根据权利要求2所述的方法,其特征在于,在所述根据所述当前推理结果,从所述一组候选行动中选取出目标行动,得到所述当前任务调度决策之后,所述方法还包括:获取与所述当前观测向量和所述目标行动对应的目标奖励值,其中,所述目标奖励值为在所述当前观测向量所表示的所述当前环境状态下执行所述目标行动所获取到的奖励值;将当前经验数据存储到目标存储区域,其中,所述目标存储区域用于以经验数据的形式存储在所述多引擎计算系统的环境状态下选取的预设行动和执行选取的预设行动所获取的奖励值之间的对应关系,所述当前经验数据用于指示在所述当前环境状态下执行的所述目标行动和所述目标奖励值之间的对应关系,所述目标存储区域中所存储的经验数据用于作为训练数据对所述训练网络进行训练,以更新所述训练网络的权重。8.根据权利要求7所述的方法,其特征在于,所述获取与所述当前观测向量和所述目标行动对应的目标奖励值,包括:根据当前访存延迟以及当前驱逐惩罚,确定所述目标奖励值,其中,所述目标奖励值与所述当前访存延迟负相关,所述目标奖励值与所述当前驱逐惩罚负相关;其中,所述当前访存延迟为从接收到所述当前任务调度请求至为所述当前任务调度请
求提供所述当前任务调度请求所需的当前任务数据的访存服务的时间,所述当前驱逐惩罚是与当前驱逐数据对应的惩罚,所述当前驱逐数据是为将所述当前任务数据中存储在所述目标计算节点的远端内存中的任务数据读取到目标计算节点的本地内存而从所述目标计算节点的本地内存中驱逐到所述目标计算节点的远端内存中的数据。9.根据权利要求8所述的方法,其特征在于,所述方法还包括:将所述当前驱逐数据的数据大小和当前驱逐带宽之间的比值,确定为所述当前驱逐惩罚,其中,所述当前驱逐带宽为将所述当前驱逐数据从所述目标计算节点的本地内存驱逐到所述目标计算节点的远端内存的带宽。10.根据权利要求8所述的方法,其特征在于,所述根据当前访存延迟以及当前驱逐惩罚,确定所述目标奖励值,包括:在所述当前驱逐惩罚为零的情况下,将所述多引擎计算系统的资源利用率和所述当前访存延迟的倒数的加权和,确定为所述目标奖励值;在所述当前驱逐惩罚不为零的情况下,所述多引擎计算系统的资源利用率和驱逐关联值的加权和,确定为所述目标奖励值,其中,所述驱逐关联值为所述当前访存延迟的倒数乘以β所得到的值和所述当前访存延迟的倒数减去所述当前驱逐惩罚所得到的值中的最大值,-1≤β≤0。11.根据权利要求7所述的方法,其特征在于,所述通过所述网络训练线程使用训练数据对训练网络进行训练,得到更新后的所述训练网络的权重,包括:从所述目标存储区域中随机抽取出第一数量的经验数据,得到训练经验数据组;通过所述网络训练线程使用所述训练经验数据组对所述训练网络进行训练,得到更新后的所述训练网络的权重。12.根据权利要求11所述的方法,其特征在于,所述从所述目标存储区域中随机抽取出第一数量的经验数据,得到训练经验数据组,包括:在所述目标存储区域中所存储的经验数据的数量大于或者等于预设数量阈值的情况下,分多个批次从所述目标存储区域中随机抽取出所述第一数量的经验数据,得到多个所述训练经验数据组,其中,多个所述训练经验数据组均用于对所述训练网络进行训练。13.根据权利要求11所述的方法,其特征在于,在所述从所述目标存储区域中随机抽取出第一数量的经验数据,得到训练经验数据组之前,所述方法还包括:删除所述目标存储区域中重复的经验数据,得到所述目标存储区域中更新后的经验数据。14.根据权利要求1所述的方法,其特征在于,所述通过所述网络训练线程使用训练数据对训练网络进行训练,得到更新后的所述训练网络的权重,包括:通过所述网络训练线程基于预设损失函数使用训练数据对所述训练网络进行训练,得到更新后的所述训练网络的权重;其中,所述训练网络的预测输出为p,所述训练网络的实际输出为h,所述预设损失函数是由|p-h|与关键度因子的乘积所确定的损失函数,所述关键度因子用于表示一个任务的最佳调度运行时间与所述一个任务的当前调度运行时间的比率,所述最佳调度运行时间为所述一个任务在最佳的任务调度决策下的运行时间,所述当前调度运行时间为所述一个任务在实际的任务调度策略下的运行时间。
15.根据权利要求14所述的方法,其特征在于,所述关键度因子为log(1+e-|p-h|
)。16.根据权利要求1所述的方法,其特征在于,所述方法还包括:将待调度任务切分为一组子任务;根据所述一组子任务中的不同子任务之间的关联关系,生成与所述一组子任务对应的任务有向图,其中,所述任务有向图中的一个任务节点与所述一组子任务中的一个子任务对应;从所述任务有向图的起始任务节点开始遍历所述任务有向图中的每个任务节点,以对与所述每个任务节点的子任务进行调度,直到所述一组子任务中的所有子任务均被调度。17.根据权利要求1至16中任一项所述的方法,其特征在于,所述训练网络包括堆叠的两个编码器、所述两个编码器的输出经过一个线性层之后连接至输出层,所述输出层包含一组神经元,所述一组神经元中的每个神经元与所述预设行动集合中的一个预设行动对应。18.一种多引擎计算系统的任务调度装置,其特征在于,包括:执行单元,用于并行执行网络训练线程和任务决策线程,以通过所述网络训练线程和所述任务决策线程并行执行以下的操作:通过所述任务决策线程基于推理网络对基于混合内存池的所述多引擎计算系统的任务调度请求做出任务调度决策,其中,所述任务决策线程用于基于所述推理网络预测的、在所述多引擎计算系统的环境状态下,执行预设行动集合中的至少部分预设行动所获取的奖励值,从所述至少部分预设行动中选取出与所述任务调度请求对应的预设行动,所述多引擎计算系统包括一组计算节点,所述预设行动集合中的每个预设行动是指由所述一组计算节点中的至少一个计算节点执行所述任务调度请求所请求的任务,所述任务调度决策为执行从所述至少部分预设行动中选取出的预设行动的决策;通过所述网络训练线程使用训练数据对训练网络进行训练,得到更新后的所述训练网络的权重,其中,所述训练网络和所述推理网络的网络结构相同,更新后的所述训练网络的权重被复制给所述推理网络;其中,所述多引擎计算系统包含一组处理器引擎,所述一组计算节点中的每个计算节点包含所述一组处理器引擎中的一个处理器引擎或多个处理器引擎的组合,所述每个计算节点与所述混合内存池中的一种内存组合关联。19.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,其中,所述计算机程序被处理器执行时实现所述权利要求1至17任一项中所述的方法的步骤。20.一种电子设备,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现所述权利要求1至17任一项中所述的方法的步骤。

技术总结
本申请实施例提供了一种多引擎计算系统的任务调度方法、装置及存储介质,该方法包括:通过网络训练线程和任务决策线程并行执行以下操作:通过任务决策线程基于推理网络对基于混合内存池的多引擎计算系统的任务调度请求做出任务调度决策,任务决策线程用于基于推理网络预测的、在多引擎计算系统的环境状态下,执行预设行动集合中的至少部分预设行动所获取的奖励值,从至少部分预设行动中选取出与任务调度请求对应的预设行动,预设行动是指由至少一个计算节点执行任务调度请求所请求的任务;通过网络训练线程使用训练数据对训练网络进行训练,得到更新后的训练网络权重,训练网络和推理网络的网络结构相同,更新后的训练网络权重被复制给推理网络。络权重被复制给推理网络。络权重被复制给推理网络。


技术研发人员:史宏志 赵健 赵雅倩 崔星辰
受保护的技术使用者:苏州浪潮智能科技有限公司
技术研发日:2023.08.28
技术公布日:2023/10/5
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

飞机超市 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

相关推荐