模型训练请求的调度方法及装置与流程

文档序号:30342406发布日期:2022-06-08 08:19阅读:97来源:国知局
模型训练请求的调度方法及装置与流程

1.本技术涉及深度学习技术领域,尤其涉及一种模型训练请求的调度方法及装置。


背景技术:

2.在深度学习领域,如计算机视觉、自然语言处理、个性化推荐等领域,为了提高模型的质量或效果,在模型训练时通常采用更大规模的模型参数或更大规模的训练数据,如拥有万亿级参数规模的点击率预估模型、千亿级别参数规模的语言模型等。分布式训练已成为超大规模的模型高效训练的必要手段。
3.常用的分布式训练架构为ps-worker架构,该架构将节点分为ps(parameter server,参数服务器)和worker(工作服务器或计算服务器)两种角色,在异步模式下,每个worker独立地向多个ps发起pull或push请求,基于多个ps的反馈的模型参数进行梯度计算,以基于梯度进行ps中存储的模型参数的更新。
4.在相关技术中,ps往往基于接收到的请求的时间顺序,依次响应各个请求。由于不同的worker之间是异步的,导致请求到达ps的时间是随机的,按照时间顺序处理各个请求的方式,请求响应效率低下,从而降低了异步训练的速度。


技术实现要素:

5.本技术提供一种模型训练请求的调度方法及装置,通过基于请求中的节点标识对请求进行排序,实现了以计算节点为单位,控制参数节点有序响应各个计算节点的请求,缩短了参数节点针对每个计算节点的响应时间,提高了整体的训练速度。
6.第一方面,本技术提供一种模型训练请求的调度方法,所述方法应用于模型训练系统,所述模型训练系统用于基于训练集对模型进行训练,所述模型训练系统包括多个参数节点和多个计算节点,所述参数节点用于基于梯度更新模型的参数,所述计算节点用于基于模型的参数计算梯度;所述方法包括:
7.获取多个计算节点发送的待处理请求;根据待处理请求中的节点标识,对各个待处理请求进行排序;根据排序结果,依次将各个待处理请求发送至参数节点,以得到各个待处理请求的处理结果;其中,节点标识用于标识待处理请求对应的计算节点。
8.第二方面,本技术提供一种模型训练请求的调度装置,应用于模型训练系统,所述模型训练系统用于基于训练集对模型进行训练,所述模型训练系统包括多个参数节点和多个计算节点,所述参数节点用于基于梯度更新模型的参数,所述计算节点用于基于模型的参数计算梯度;所述模型训练请求的调度装置包括网络收发模块和调度模块;其中,所述网络收发模块,用于接收各个计算节点发送的待处理请求;所述调度模块,用于根据待处理请求中的节点标识,对接收到的各个待处理请求进行排序,得到排序结果,并根据所述排序结果,依次将各个待处理请求发送至参数节点,以得到各个待处理请求对应的处理结果,其中,节点标识用于标识待处理请求对应的计算节点。
9.第三方面,本技术提供一种电子设备,包括:
10.处理器,以及与所述处理器通信连接的存储器;
11.所述存储器存储计算机执行指令;
12.所述处理器执行所述存储器存储的计算机执行指令,以实现本技术第一方面提供的模型训练请求的调度方法。
13.第四方面,本技术提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现本技术第一方面提供的模型训练请求的调度方法。
14.第五方面,本技术提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现本技术第一方面提供的模型训练请求的调度方法。
15.本技术提供的模型训练请求的调度方法及装置,针对采用模型训练系统进行模型训练的场景,该模型训练系统采用ps-worker架构,由多个参数节点和多个计算节点组成,针对参数节点,在接收到多个计算节点发送的待处理请求之后,基于待处理请求中的节点标识,即用于识别计算节点的标识,对所接收的来自多个计算节点的待处理请求进行排序,基于排序结果依次发送各个待处理请求至参数节点,从而使得参数节点按照排序结果依次响应各个待处理请求,得到其处理结果,实现了以计算节点为粒度的请求排序,使得多个参数节点中响应请求的顺序保持一致,从而使得同一计算节点的多个待处理请求得以同时被响应,缩短了计算节点面的请求响应时间,提高了模型训练的效率。
附图说明
16.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本技术的实施例,并与说明书一起用于解释本技术的原理。
17.图1a为本技术一个实施例提供的模型训练系统的示意图;
18.图1b为本技术一个实施例提供的同步模式下计算节点训练过程的示意图;
19.图1c为本技术一个实施例提供的异步模式下计算节点训练过程的示意图;
20.图2为本技术实施例提供的一种模型训练请求的调度方法的流程示意图;
21.图3为本技术图2所示实施例中步骤s202一种可能实现方式的流程示意图;
22.图4为本技术图2所示实施例中步骤s202另一种可能实现方式的流程示意图;
23.图5为本技术图2所示实施例中步骤s202另一种可能实现方式的流程示意图;
24.图6为本技术另一个实施例提供的模型训练请求的调度方法的流程示意图;
25.图7为本技术实施例提供的一种模型训练请求的调度装置的结构示意图;
26.图8为本技术另一个实施例提供的模型训练请求的调度装置的结构示意图;
27.图9为本技术实施例提供的一种电子设备的结构示意图。
28.通过上述附图,已示出本技术明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本技术构思的范围,而是通过参考特定实施例为本领域技术人员说明本技术的概念。
具体实施方式
29.这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例
中所描述的实施方式并不代表与本技术相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本技术的一些方面相一致的装置和方法的例子。
30.首先,对本技术所涉及的名词进行解释:
31.参数节点:在深度学习训练过程中,用于存储、分发、汇总和更新模型的参数的节点,每个参数节点负责模型的部分参数。
32.计算节点:在深度学习训练过程中,用于执行训练相关作业的节点,包括推理计算和梯度计算,不同的计算节点之间没有通信。
33.pull:计算节点根据模型的拓扑结构,从对应的参数节点中拉取最新的模型参数。
34.push:计算节点将计算得到的梯度上传给对应的参数节点,以进行模型参数的更新。
35.图1a为本技术一个实施例提供的模型训练系统的示意图,如图1a所示,该模型训练系统采用ps-worker架构,用于基于训练集对模型进行训练。该模型训练系统包括多个参数节点和多个计算节点。其中,计算节点和参数节点中的每个节点均由一个gpu(graphics processing unit,图像处理器)构成。
36.基于ps-worker架构的模型训练的主要过程可以分为参数获取(pull)、前向计算、后向计算和梯度更新(push)四个过程,其中,pull和push过程为计算节点和参数节点交互的过程。在每轮训练中,上述四个过程依次执行,即计算节点在参数获取成功之后,进行前向计算和后向计算,得到梯度,基于梯度进行模型参数的更新。
37.在参数获取过程中,计算节点向存储有模型参数的多个参数节点发送pull请求或参数获取请求,参数节点将其上存储的模型参数反馈至该计算节点,进而在得到模型的所有参数之后,计算节点基于模型的参数进行前向计算和后向计算,得到梯度;在梯度更新过程,计算节点将梯度发送至对应的多个参数节点,即向该多个参数节点发送push请求或梯度更新请求,该多个参数节点基于计算节点计算的梯度,进行其上存储的模型参数的更新,从而完成一轮模型训练。
38.图1b为本技术一个实施例提供的同步模式下计算节点训练过程的示意图,如图1b所示,在同步模式下,只有在上一轮训练(如第n轮)的push过程执行完毕之后,计算节点才会发起下一轮训练(如n+1轮)的pull请求,即进入下一轮训练的pull过程。
39.图1c为本技术一个实施例提供的异步模式下计算节点训练过程的示意图,如图1c所示,在稀疏训练场景下,由于对梯度的时效要求相对较低,可以将push过程异步化。在异步模式下,下一轮训练无需等待上一轮训练的push过程执行完毕,而是在上一轮的后向计算结束之后便可进入下一轮训练的pull过程,即发起下一轮训练的pull请求。
40.本技术针对异步模式下模型训练的场景,即模型训练系统在异步模式下,基于训练集对模型进行训练。在模型训练中的每一轮训练时,每个计算节点独立地向多个参数节点发起pull请求,等待该多个参数节点反馈存储的模型最新的参数,基于该参数进行梯度的计算,并基于所计算的梯度,生成push请求,以便于参数节点基于梯度进行所存储的模型参数的更新。
41.计算节点之间无需进行同步,每一轮训练计算节点会向多个参数节点发起请求,这些请求共同构成了该计算节点的一个事务,待所有请求的处理结果均返回之后,计算节点才可以进行后续的计算。从而使得计算节点的请求存在木桶效应,响应最慢的请求决定
计算节点发起的请求对应的事务的处理时间。
42.在相关技术中,针对参数节点侧所接收到的请求,往往采取顺序执行或乱序执行,顺序执行即按照请求到达参数节点的时间顺序,依次执行各个计算的请求;乱序执行即按照随机顺序的方式,依次执行各个计算节点的请求。采用上述两种方式,均无法确保同一计算节点的请求在不同的参数节点中同时被处理,导致计算节点的请求处理出现长尾现象,从而导致请求响应时间较长,降低了模型训练的整体速度。
43.为了提高计算节点视角下的请求处理效率以及模型训练的整体效率,本技术提供了一种模型训练请求的调度方法,应用于多个参数节点,通过基于节点标识对参数节点接收到的请求进行排序,控制参数节点基于排序结果依次进行请求响应,且多个参数节点中均采用相同的排序方式,从而使得同一计算节点的请求在同一时间被参数节点响应,缩短了计算节点面的请求响应时间,进而提高了模型训练的整体效率。
44.下面以具体地实施例对本技术的技术方案以及本技术的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本技术的实施例进行描述。
45.图2为本技术实施例提供的一种模型训练请求的调度方法的流程示意图,该模型训练请求的调度方法应用于模型训练系统,该模型训练系统由多个参数节点和多个计算节点组成,具体可以由模型训练系统中任意具备数据处理功能的设备执行,其形式可以为计算机、服务器等,如模型训练请求的调度装置、上述参数节点,或者与参数节点连接的其他设备,该模型训练请求的调度装置可以设置在各个参数节点中,也可以独立设置。
46.在一个实施例中,模型训练系统可以为用于进行点击率预估模型训练的系统。
47.在一个实施例中,模型训练系统采用异步模式进行模型训练。
48.在一个实施例中,每个参数节点中均设置有执行本技术提供的模型训练请求的调度方法的装置或设备,从而使得各个参数节点中响应请求的顺序均相同。
49.如图2所示,该模型训练请求的调度方法包括以下步骤:
50.步骤s201,获取多个计算节点发送的待处理请求。
51.其中,待处理请求为模型训练过程中计算节点发送至参数节点的请求,该请求为模型参数相关的请求,可以为用于获取模型参数的请求,如pull请求,还可以为用于进行模型参数更新的请求,如push请求。待处理请求中可以包括其对应的计算节点的节点标识,如worker_id,节点标识用于标识待处理请求对应的计算节点,还可以包括其对应的计算节点当前的训练轮数,如local_step_id。
52.具体的,在模型训练的过程中,计算节点或worker节点,根据模型的拓扑结构,向存储有对应的模型参数的多个参数节点发送pull请求,以从该多个参数节点中拉取最新的模型参数。在计算节点基于当前批的训练数据以及模型参数计算梯度之后,计算节点需要将所计算的梯度上传至对应的多个参数节点,即向对应的多个参数节点发送push请求。
53.在一个实施例中,不同的参数节点中所存储的模型的参数互不相同,即每个参数节点中存储有模型的部分参数。
54.在一个实施例中,计算节点在每轮训练时,需要获取模型所有的参数,即将pull请求发送至存储有模型参数的所有的参数节点。
55.示例性的,以模型包括1000个参数为例,参数节点的数量为10个,每个参数节点存
储100个模型的参数。每个计算节点在每轮训练时,可以向该10个参数节点发起pull请求,当计算节点获取到模型的所有参数之后,基于当前批的训练数据对模型进行前向计算,得到模型输出的误差,通过误差的反向传播,得到梯度;在梯度计算完毕之后再向该10个参数节点发起push请求,从而更新该10个参数节点中存储的模型参数。
56.在一个实施例中,计算节点在每轮训练时,可以仅获取模型的部分参数,从而计算节点仅需将pull请求发送至对应的多个参数节点即可,计算节点对应的参数节点即为存储有该计算节点所需的模型参数的参数节点。
57.示例性的,以模型训练系统由1000个参数节点组成,当前场景下仅涉及其中9个参数节点中存储的模型参数,则在每轮训练中,计算节点可以仅向该9个参数节点发起待处理请求。
58.具体的,可以将所接收的来自计算节点的待处理请求,存储于请求池或任务队列中。当将待处理请求发送至对应的参数节点的线程时,从该请求池或任务队列中删除该待处理请求。
59.在一个实施例中,为了任务分配的均衡性,各个参数节点中存储的模型参数的数量可以尽可能相同。
60.步骤s202,根据待处理请求中的节点标识,对各个待处理请求进行排序。
61.为了使得同一计算节点发往不同参数节点的请求均被同时处理,可以控制各个参数节点采用相同的排序方式对请求池中的待处理请求进行排序,即均根据待处理请求中的节点标识,对请求池中的各个待处理请求进行排序。
62.具体的,可以提取请求池中各个待处理请求中的节点标识,从而基于节点标识,对各个待处理请求进行排序。
63.具体的,计算节点的节点标识可以为编号,该编号一旦设置便始终保持不变,且不同计算节点的编号不同。
64.示例性的,可以基于计算节点启动模型训练任务的顺序,依次为计算节点设置编号,如采用自增方式设置编号。
65.具体的,可以基于待处理请求中的节点标识,对任务队列或请求池中的各个待处理请求进行排序,可以按照节点标识对应的数值由大到小或由小到大,或者采用指定顺序,对各个待处理请求进行排序。
66.示例性的,以10个计算节点为例,节点标识为w_01至w_10,则可以指定按照如下顺序对待处理请求进行排序:w_05、w_06、w_01、w_03、w_04、w_08、w_02、w_07、w_10和w_09。
67.进一步地,在得到排序结果之后,若参数节点的请求池中同一计算节点的待处理请求为多个,如一个pull请求和一个push请求,则针对该计算节点的多个待处理请求,可以基于待处理请求的类型,对该计算节点的多个待处理请求进行局部排序,以更新排序结果。可以设置pull请求的顺序先于push请求。
68.步骤s203,根据排序结果,依次将各个待处理请求发送至参数节点,以得到各个待处理请求的处理结果。
69.在得到待处理请求的排序结果之后,基于该排序结果,依次将各个待处理请求从任务队列或请求池中取出,发送至参数节点的线程中,以由参数节点的线程响应待处理请求,得到待处理请求的处理结果。
70.在一个实施例中,参数节点可以包括两个线程池,每个线程池包括多个线程,不同的线程池用于处理不同类型的待处理请求。如pull任务线程池和push任务线程池,其中,pull任务线程池中的线程用于处理pull请求,push任务线程池中的线程则用于处理push请求。则在对待处理请求排序时,则可以基于待处理请求中的节点标识,分别对请求池或任务队列中的pull请求和push请求进行排序,从而得到pull请求的排序结果,如排序后的pull请求队列,和push请求的排序结果,如排序后的push请求队列。基于pull请求的排序结果,依次将各个pull请求发送至参数节点的pull任务线程池,以及基于push请求的排序结果,依次将各个push请求发送至参数节点的push任务线程池。
71.当其中一个请求队列中的请求发送完毕,而另一个请求队列中仍有多个待处理请求时,则可以将另一个请求队列中的待处理请求发送至其中一个请求对应的线程池中,以加快请求处理速度。即,当排序后的pull请求队列为空时,排序后的push请求队列中的push请求可以发送至pull任务线程池进行处理,同样的,当排序后的push请求队列为空时,排序后的pull请求队列中的pull请求可以发送至push任务线程池进行处理。
72.由于训练的过程中,计算节点会同时向多个参数节点发送待处理请求,从而使得各个参数节点的请求池或任务队列中的待处理请求对应的参数节点的集合相同,并且各个参数节点中均采用相同的模型训练请求的调度方法,从而使得同一计算节点的待处理请求在其对应的各个参数节点中的处理顺序相同,大大减少了计算节点发送的多个待处理请求的整体响应时间。
73.本实施例提供的模型训练请求的调度方法,针对采用模型训练系统进行模型训练的场景,该模型训练系统采用ps-worker架构,由多个参数节点和多个计算节点组成,针对参数节点,在接收到多个计算节点发送的待处理请求之后,基于待处理请求中的节点标识,即用于识别计算节点的标识,对所接收的来自多个计算节点的待处理请求进行排序,基于排序结果依次发送各个待处理请求至参数节点,从而使得参数节点按照排序结果依次响应各个待处理请求,得到其处理结果,实现了以计算节点为粒度的请求排序,使得多个参数节点中响应请求的顺序保持一致,从而使得同一计算节点的多个待处理请求得以同时被响应,缩短了计算节点面的请求响应时间,提高了模型训练的效率。
74.在异步模式下,由于下一轮训练的pull请求在上一轮训练的后向计算完成之后便发出,参数节点的请求池或任务队列中会存在同一计算节点的上一轮训练的push请求以及下一轮训练的pull请求的情况。
75.为了进一步提高待处理请求的效率,上述步骤s202可以替换为:根据待处理请求中的节点标识,以及待处理请求的类型和待处理请求中的训练轮数中的至少一项,对各个待处理请求进行排序。
76.其中,训练轮数用于表征待处理请求对应的计算节点所进行的模型训练的轮数。待处理请求的类型可以包括参数获取类型和梯度更新类型,参数获取类型的待处理请求即为上述pull请求或参数获取请求,梯度更新类型的待处理请求即为上述push请求或梯度更新请求。
77.具体的,在接收到各个待处理请求之后,可以对待处理请求进行解析,从而提取待处理请求中的节点标识、训练轮数和待处理请求的类型。
78.具体的,可以先基于节点标识,对各个待处理请求进行排序,进而基于待处理请求
的类型和/或训练轮数,对排序结果中节点标识相同或顺序相同的待处理请求进行再次排序,得到排序结果。
79.在一个实施例中,在该排序结果中,同一计算节点对应的待处理请求,训练轮数越小,则在排序结果中的顺序越靠前。
80.在一个实施例中,在该排序结果中,同一计算节点对应的待处理请求,pull类型的待处理请求在排序结果中的顺序先于push类型的待处理请求。
81.在一个实施例中,可以按照待处理请求的类型、节点标识和训练轮数的顺序,或者按照训练轮数、节点标识和处理请求的类型的顺序,或者按照上述三种参数的其他顺序,依次对参数节点的各个待处理请求进行排序,得到排序结果。
82.可选的,图3为本技术图2所示实施例中步骤s202一种可能实现方式的流程示意图,如图3所示,步骤s202可以包括以下步骤:
83.步骤s301,根据待处理请求的类型,对各个待处理请求进行排序,得到第一排序结果。
84.具体的,可以预设各种类型的待处理请求的响应或处理顺序,从而基于请求池或任务队列中各个待处理请求的类型以及该预设的顺序,对各个待处理请求进行排序,得到第一排序结果。
85.具体的,在第一排序结果中,参数获取请求的顺序先于梯度更新请求。即pull请求的顺序先于push请求,即优先响应pull请求,从而减少计算节点训练过程中的阻塞,提高每轮训练的整体效率。
86.具体的,可以遍历参数节点的请求池中各个待处理请求,若该待处理请求的类型为梯度更新类型或push类型,则将该待处理请求的放置请求池对应的队列的末尾,依次类推,从而使得pull类型的待处理请求在队列中的顺序均位于push类型的待处理请求之前。
87.具体的,可以先判断参数节点的请求池中待处理请求的类型是否均相同,若是,则可以省略步骤s301,直接将请求池中待处理请求对应的队列,确定为第一排序结果;若否,则根据待处理请求的类型,确定待处理请求在第一排序结果中的顺序,基于待处理请求在第一排序结果中的顺序对参数节点的请求池中待处理请求所在的队列进行排序,从而得到第一排序结果。
88.示例性的,可以将push类型的待处理请求的顺序设置为2,将pull类型的待处理请求的顺序设置为1。
89.表1第n个参数节点的请求池中待处理请求列表
90.请求序号请求的类型节点标识训练轮数待处理请求1pullworker36待处理请求2pushworker 35待处理请求3pullworker 47待处理请求4pullworker 56待处理请求5pullworker 66
91.示例性的,表1为本技术一个实施例提供的第n个参数节点的请求池中待处理请求列表,在表1中,第n个参数节点的请求池当前接收到的或当前存储的待处理请求包括5个待处理请求为例,即待处理请求1至待处理请求2,其中,待处理请求2的请求的类型为push类
型,其余各待处理请求的类型均为pull类型。则第一排序结果中各待处理请求的顺序为:待处理请求1、待处理请求3、待处理请求4、待处理请求5和待处理请求2。
92.步骤s302,根据待处理请求中的节点标识,对所述第一排序结果中顺序相同的各个待处理请求进行排序,得到第二排序结果,以基于所述第二排序结果依次将各个待处理请求发送至参数节点的线程。
93.其中,在第一排序结果中顺序相同的各个待处理请求即为类型相同的各个待处理请求,如表1中的待处理请求1、待处理请求3、待处理请求4和待处理请求5。
94.在得到第一排序结果之后,为了使得在不同参数节点中同一计算节点对应的同类型的待处理请求被同时处理,可以对第一排序结果进行再次排序,具体为:若第一排序结果中存在顺序相同的多个待处理请求,则提取该多个待处理请求中每个待处理请求中的节点标识,基于节点标识,对该多个待处理请求进行二次排序,得到第二排序结果,如可以为按照节点标识降序排序,如表1对应的实施例中第二排序结果中各待处理请求的顺序可以为:待处理请求5、待处理请求4、待处理请求3、待处理请求1和待处理请求2。
95.通过先基于请求类型对请求池中的待处理请求进行初次排序,进而基于节点标识,对同类型的待处理请求进行二次排序,使得pull类型的请求得以优先被处理,从而减少训练过程中的阻塞,同时确保了同一计算节点发往多个参数节点的请求得以在同一时间被处理,大大降低了计算节点发起的事务的响应时间,提高了模型训练的效率。
96.可选的,图4为本技术图2所示实施例中步骤s202另一种可能实现方式的流程示意图,如图4所示,步骤s202可以包括以下步骤:
97.步骤s401,根据待处理请求中的训练轮数,对各个待处理请求进行排序,得到第三排序结果。
98.具体的,在第三排序结果中,待处理请求对应的训练轮数越高,则待处理请求的顺序越靠后。
99.可选的,根据待处理请求中的训练轮数,对各个待处理请求进行排序,得到第三排序结果,包括:
100.按照待处理请求中的训练轮数,对各个待处理请求进行升序排序,得到第三排序结果。
101.具体的,可以提取参数节点的请求池中各个待处理请求中的训练轮数,基于训练轮数,对各个待处理请求进行排序,如升序配许,从而优先处理训练轮数较小的待处理请求,以避免不同的计算节点之间执行的训练轮数差异较大,从而降低模型训练的并行度。
102.具体的,可以统计参数节点的请求池中需要调度的各个待处理请求中的训练轮数,基于所统计的训练轮数,设置各个待处理请求在第三排序结果中的顺序。如表1对应的第三排序结果各个待处理请求的顺序可以为:待处理请求2、待处理请求1、待处理请求4、待处理请求5和待处理请求3,其中,待处理请求1、待处理请求4和待处理请求5的顺序相同。
103.进一步地,可以先判断所统计的训练轮数中是否存在目标训练轮数,其中,目标训练轮数为与对应的最大轮数的差值小于预设差值的训练轮数;若存在,则针对对应的训练轮数为目标轮数的各个待处理请求,按照训练轮数降序的方式,即训练轮数越大,顺序越靠前的方式,对各个待处理请求进行排序,对剩余的各个待处理请求,则按照训练轮数升序的方式,即训练轮数越大,顺序越靠后的方式,对各个待处理请求进行排序,得到第三排序结
果,且在该第三排序结果中训练轮数为目标训练轮数的待处理请求的顺序先于其他待处理请求的顺序;若不存在,则按照待处理请求中的训练轮数升序的方式,对各个待处理请求进行排序,得到第三排序结果。
104.其中,预设差值可以为10、5、3或者其他值,不同的计算节点对应的训练轮数的最大值,即最大轮数,可以不同。
105.这样设置的好处在于,可以优先处理即将结束训练的计算节点的请求,从而使得计算节点可以较快地进行下一模型的训练。
106.步骤s402,根据待处理请求中的节点标识,对所述第三排序结果中顺序相同的各个待处理请求进行排序,得到第四排序结果,以基于所述第四排序结果依次将各个待处理请求发送至参数节点的线程。
107.其中,在第三排序结果中顺序相同的各个待处理请求即为训练轮数相同的各个待处理请求,如表1中的待处理请求1、待处理请求4和待处理请求5。
108.在得到第三排序结果之后,为了使得在不同参数节点中同一计算节点对应的同训练轮数的待处理请求被同时处理,可以对第三排序结果进行再次排序,具体为:若第三排序结果中存在顺序相同的多个待处理请求,则提取该多个待处理请求中每个待处理请求中的节点标识,基于节点标识,对该多个待处理请求进行二次排序,得到第四排序结果,如可以为按照节点标识升序排序(节点标识对应的编号越大,则顺序越靠后),如表1对应的实施例中第四排序结果中各待处理请求的顺序可以为:待处理请求2、待处理请求1、待处理请求4、待处理请求5和待处理请求3。
109.通过先基于训练轮数对请求池中的待处理请求进行初次排序,进而基于节点标识,对同类型的待处理请求进行二次排序,使得训练轮数较少的请求得以优先被处理,从而缩短模型训练的整体所需的时间,同时确保了同一计算节点发往多个参数节点的请求得以在同一时间被处理,大大降低了计算节点发起的事务的响应时间,提高了模型训练的效率。
110.可选的,图5为本技术图2所示实施例中步骤s202另一种可能实现方式的流程示意图,如图5所示,步骤s202可以包括以下步骤:
111.步骤s501,根据待处理请求中的训练轮数和待处理请求的类型,确定待处理请求的排序得分。
112.具体的,可以基于预先建立的预设对应关系式,以及待处理请求中的训练轮数和待处理请求的类型,确定待处理请求的排序得分。其中,该预设对应关系用于描述排序得分与训练轮数和待处理请求的类型的对应关系。
113.具体的,可以将待处理请求的类型数值化,且pull类型对应的数值高于push类型对应的数值,以优先响应pull类型的待处理请求。并为训练轮数和待处理请求的类型设置权重,进而基于待处理请求的训练轮数和待处理请求的类型的加权平均值,确定待处理请求的排序得分。
114.示例性的,pull类型的待处理请求的类型对应的数值可以为1,push类型的待处理请求的类型对应的数值可以为0。
115.具体的,可以设置训练轮数越低的待处理请求的排序得分越高。
116.示例性的,排序得分的表达式可以为:
117.si=wi×
ni+w2×
ti118.其中,si表示请求池中第i个待处理请求的排序得分;ni表示第i个待处理请求中的训练轮数;ti表示第i个待处理请求的类型;w1和w2分别为权重系数。
119.步骤s502,根据待处理请求的排序得分以及待处理请求中的节点标识,对各个待处理请求进行排序,得到排序结果。
120.具体的,可以先基于排序得分进行排序,进而针对排序结果中同一排序得分的多个待处理请求,基于该多个待处理请求中的节点标识,对该多个待处理请求进行再次排序,得到排序结果。
121.具体的,可以先基于待处理请求中的节点标识,对各个待处理请求进行排序,如按照节点标识升序、降序或乱序排序,进而针对同一计算节点发送的多个待处理请求,基于排序得分进行再次排序,得到排序结果。
122.通过综合考虑待处理请求的节点标识、类型和训练轮数,对待处理请求进行排序,从而控制参数节点按照排序结果,依次响应各个待处理请求,缩短了计算节点发起的事务的响应时间,同时避免了计算节点长期获取不到处理结果的现象,提高了模型训练的并行度。
123.图6为本技术另一个实施例提供的模型训练请求的调度方法的流程示意图,本实施例是在图2所示实施例中的基础上,对步骤s202和步骤s203进行进一步细化,在步骤s201之前增加确定各种类型对应的线程数量的步骤,以及在步骤s203之后增加处理结果发送的步骤,如图6所示,本实施例提供的模型训练请求的调度方法可以包括以下步骤:
124.步骤s601,根据所训练的模型的结构,确定参数节点中各种类型的待处理请求对应的线程的数量。
125.其中,各种类型的待处理请求对应的线程包括pull请求对应的线程,即pull任务线程,以及push请求对应的线程,即push任务线程。
126.具体的,可以根据所训练的模型的参数的数量,确定参数节点中各种类型的待处理请求对应的线程的数量。
127.具体的,可以预先建立各种常用模型对应的线程比例,进而基于当前训练的模型的结果,从多个常用模型中确定与该模型匹配的常用模型,基于该匹配的常用模型的线程比例以及参数节点的总线程数,确定该参数节点中各种类型对应的线程的数量。
128.步骤s602,获取多个计算节点发送的待处理请求。
129.步骤s603,针对每种类型的待处理请求,根据所述类型的待处理请求中的节点标识,对所述类型的各个待处理请求进行排序,得到所述类型对应的排序结果。
130.具体的,可以按照待处理请求的类型,对每种类型的待处理请求进行单独排序。即针对参数节点的请求池中每种类型的待处理请求,根据该类型的待处理请求中的节点标识,对该类型的各个待处理请求进行排序,具体的排序方式可以参考上述任意实施例提供的排序方式,如步骤s202,或者图3至图5提供的任意一个实施例提供的排序方式,仅将排序的对象有请求池中所有的待处理请求,替换为该请求池中某一类型的待处理请求即可。
131.示例性的,针对每种类型的待处理请求,可以基于该类型的待处理请求中的节点标识和训练轮数,对该类型的各个待处理请求进行排序。
132.步骤s604,针对每种类型,根据所述类型对应的排序结果,依次将所述类型的各个待处理请求发送至参数节点所述类型对应的线程。
133.具体的,按照类型单独对请求池中的待处理请求进行排序,得到各种类型对应的排序结果,如pull请求对应的排序结果(或称为pull任务队列)以及push请求对应的排序结果(或称为push任务队列),并依次从pull任务队列和push任务队列中取出任务(待处理请求),分别发送至pull任务线程池和push任务线程池中的线程,以并行处理不同类型的待处理任务。
134.具体的,当pull任务队列为空时,push任务队列中的任务也可交由pull线程池中的线程执行,同理当push任务队列为空时,pull任务队列中的任务也可交由push线程池中的线程执行,以提高待处理请求的响应速度。
135.步骤s605,将各个待处理请求的处理结果发送至对应的计算节点。
136.参数节点的线程在处理完对应的待处理请求之后,将处理结果反馈至模型训练请求的调度装置,模型训练请求的调度装置则将处理结果发送至对应的计算节点,从而完成该待处理请求的响应。
137.在本实施例中,基于待处理请求的类型,对每种类型的请求基于节点标识进行单独排序,并在参数节点中为每种类型设置对应的线程池,从而由线程池按照排序结果进行对应类型的请求的响应,实现了基于类型和节点标识的请求有序响应,使得模型训练系统中的参数节点尽可能同步地处理同一计算节点的请求,大大缩短了计算节点发起的请求对应的事务的响应时间;通过线程池的动态调度,提高了参数节点线程池的利用率,进一步提高了待处理请求的响应速度,从而提高了模型训练的效率。
138.图7为本技术实施例提供的一种模型训练请求的调度装置的结构示意图,该装置应用于模型训练系统,所述模型训练系统用于基于训练集对模型进行训练,所述模型训练系统包括多个参数节点和多个计算节点,所述参数节点用于基于梯度更新模型的参数,所述计算节点用于基于模型的参数计算梯度。
139.如图7所示,该装置包括:网络收发模块710和调度模块720。
140.其中,网络收发模块710,用于接收各个计算节点发送的待处理请求;调度模块720,用于根据待处理请求中的节点标识,对接收到的各个待处理请求进行排序,得到排序结果,并根据所述排序结果,依次将各个待处理请求发送至参数节点,以得到各个待处理请求对应的处理结果,其中,节点标识用于标识待处理请求对应的计算节点。
141.可选的,调度模块720,包括:
142.排序单元,用于根据待处理请求中的节点标识,对接收到的各个待处理请求进行排序,得到排序结果;请求发送单元,用于根据所述排序结果,依次将各个待处理请求发送至参数节点的线程,以得到各个待处理请求对应的处理结果。
143.可选的,排序单元,具体用于:
144.根据待处理请求中的节点标识,以及待处理请求的类型和待处理请求中的训练轮数中的至少一项,对各个待处理请求进行排序;其中,训练轮数用于表征待处理请求对应的计算节点所进行的模型训练的轮数。
145.可选的,排序单元,包括:
146.第一排序子单元,用于根据待处理请求的类型,对各个待处理请求进行排序,得到第一排序结果;第二排序子单元,用于根据待处理请求中的节点标识,对所述第一排序结果中顺序相同的各个待处理请求进行排序,得到第二排序结果,以基于所述第二排序结果依
次将各个待处理请求发送至参数节点的线程。
147.可选的,待处理请求包括参数获取请求和梯度更新请求两种类型,在所述第一排序结果中,参数获取请求的顺序先于梯度更新请求。
148.可选的,排序单元,包括:
149.第三排序子单元,用于根据待处理请求中的训练轮数,对各个待处理请求进行排序,得到第三排序结果;第四排序子单元,用于根据待处理请求中的节点标识,对所述第三排序结果中顺序相同的各个待处理请求进行排序,得到第四排序结果,以基于所述第四排序结果依次将各个待处理请求发送至参数节点的线程。
150.可选的,第三排序子单元,具体用于:
151.按照待处理请求中的训练轮数,对各个待处理请求进行升序排序,得到第三排序结果。
152.可选的,排序单元,具体用于:
153.根据待处理请求中的训练轮数和待处理请求的类型,确定待处理请求的排序得分;根据待处理请求的排序得分以及待处理请求中的节点标识,对各个待处理请求进行排序。
154.可选的,排序单元,具体用于:
155.针对每种类型的待处理请求,根据所述类型的待处理请求中的节点标识和训练轮数,对所述类型的各个待处理请求进行排序,得到所述类型对应的排序结果。
156.相应的,请求发送单元,具体用于:
157.针对每种类型,根据所述类型对应的排序结果,依次将所述类型的各个待处理请求发送至参数节点所述类型对应的线程。
158.可选的,所述装置还包括:
159.线程划分模块,用于根据所训练的模型的结构,确定参数节点中各种类型的待处理请求对应的线程的数量。
160.本技术实施例提供的模型训练请求的调度装置,可用于执行上述图2至图6对应的任意实施例提供的技术方案,其实现原理和技术效果类似,本实施例此处不再赘述。
161.可选的,图8为本技术另一个实施例提供的模型训练请求的调度装置的结构示意图,结合图7和图8可知,本实施例提供的模型训练请求的调度装置还包括:任务队列模块730和线程池模块740。
162.其中,任务队列模块730,用于在接收各个计算节点发送的待处理请求之后,将各个待处理请求存储于任务队列中。调度模块720则用于基于待处理请求中的节点标识,对任务队列中的各个待处理请求进行排序,得到排序后的任务队列;并依次将排序后的任务队列中的各个待处理请求发送至参数节点的线程,以得到各个待处理请求的处理结果。线程池模块740,由多个线程组成,用于响应各个待处理请求。
163.可选的,任务队列包括pull任务队列和push任务队列,pull任务队列用于存储pull请求,push任务队列用于存放push请求。
164.可选的,线程池模块740包括pull任务线程池和push任务线程池,pull任务线程池中的线程用于处理或响应计算节点发送的pull请求,push任务线程池中的线程用于处理或响应计算节点发送的push请求。
165.可选的,网络收发模块710还用于将处理结果发送至对应的计算节点。
166.图9为本技术实施例提供的一种电子设备的结构示意图,如图9所示,本实施例的提供的电子设备包括:
167.至少一个处理器910;以及与所述至少一个处理器通信连接的存储器920;其中,所述存储器920存储有计算机执行指令;所述至少一个处理器910执行所述存储器存储的计算机执行指令,以使所述电子设备执行如前述任一实施例提供的方法。
168.可选地,存储器920既可以是独立的,也可以跟处理器910集成在一起。
169.本实施例提供的电子设备的实现原理和技术效果可以参见前述各实施例,此处不再赘述。
170.本技术实施例还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当所述计算机执行指令被处理器执行时,可以实现前述任一实施例提供的方法。
171.本技术实施例还提供一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现前述任一实施例提供的方法。
172.在本技术所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。例如,以上所描述的设备实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。
173.上述以软件功能模块的形式实现的集成的模块,可以存储在一个计算机可读取存储介质中。上述软件功能模块存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器执行本技术各个实施例所述方法的部分步骤。
174.应理解,上述处理器可以是中央处理单元(central processing unit,简称cpu),还可以是其它通用处理器、数字信号处理器(digital signal processor,简称dsp)、专用集成电路(application specific integrated circuit,简称asic)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合申请所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。存储器可能包含高速ram存储器,也可能还包括非易失性存储nvm,例如至少一个磁盘存储器,还可以为u盘、移动硬盘、只读存储器、磁盘或光盘等。
175.上述存储介质可以是由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(sram),电可擦除可编程只读存储器(eeprom),可擦除可编程只读存储器(eprom),可编程只读存储器(prom),只读存储器(rom),磁存储器,快闪存储器,磁盘或光盘。存储介质可以是通用或专用计算机能够存取的任何可用介质。
176.一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于专用集成电路(application specific integrated circuits,简称asic)中。当然,处理器和存储介质也可以作为分立组件存在于电子设备或主控设备中。
177.需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而
且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
178.上述本技术实施例序号仅仅为了描述,不代表实施例的优劣。
179.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本技术各个实施例提供的方法。
180.本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本技术的其它实施方案。本技术旨在涵盖本技术的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本技术的一般性原理并包括本技术未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本技术的真正范围和精神由下面的权利要求书指出。
181.应当理解的是,本技术并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本技术的范围仅由所附的权利要求书来限制。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1