一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

针对模型训练的调度方法、装置、电子设备和存储介质与流程

2022-08-17 22:54:36 来源:中国专利 TAG:


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.以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
19.在深度学习领域,增大模型规模被公认是一种提升模型效果的有效方法。增大模型规模会使得模型参数明显增加,但在硬件环境不变的情况下,增加模型参数会给训练模型时所需的存储空间带来极大挑战。为了在硬件环境不变的情况下,实现对超大模型的训练,可以使用gpu显存(即针对图形处理器的显示内存)、cpu内存(即针对处理器的内存)和使用带有nvme接口的固态硬盘(solid state disk,ssd)构成的三级缓存。
20.例如,在模型的优化更新阶段中,可以将模型的全量参数缓存在ssd中,即存储至硬盘存储空间。当需要进行参数更新时,将ssd中的参数同步至cpu中做参数更新。例如,设定模型包括三个部分的参数,该三个部分的参数分别对应模型的三个模型分区。则在模型的参数更新过程中,可以先将ssd中存储的第一部分的参数同步到cpu中以由cpu对该第一部分的参数进行更新。同时,可以从ssd中预取第二部分的参数。在完成对第一部分的参数的更新后,对预取的第二部分的参数进行更新。在对第二部分的参数进行更新时,可以从ssd中预取第三部分的参数。以此类推直至完成对模型中所有参数的更新。
21.上述流程中,参数的更新均由cpu来完成,并将ssd作为全量模型参数的存储容器。如此,可以减少模型状态的同步。但该流程中,三级缓存未充分利用,例如gpu处于空闲状态,这在一定程度上会降低模型的训练效率。再者,在上述流程中,需要不断地从ssd中读数据。但ssd具有一定读写次数限制,频繁读写会影响ssd的寿命,且频繁读写也会在一定程度上限制模型状态的转移速度,限制模型的训练效率。
22.以下将结合图1对本公开提供的针对模型训练的调度方法和装置的应用场景进行
描述。
23.图1是根据本公开实施例的针对模型训练的调度方法和装置的应用场景图。
24.如图1所示,该应用场景100包括电子设备,该电子设备可以为笔记本电脑、台式机或者服务器等。该电子设备中设置有处理器cpu 110、显卡(video card)、内存120和固态硬盘130。
25.其中,内存120指内存存储器,是cpu 110用来直接寻址和存储的空间。该内存可以暂时存放cpu中的运行数据,以及与硬盘等外部存储器交换的数据。只要计算机在运行中,cpu就会把需要运算的数据调到内存中进行运算,当运算完成后cpu再将结果传送出来。随机存储器,即可以从中读取数据,也可以写入数据。
26.显卡具有图像处理能力,可以协助cpu工作,提高整体的运行速度。显卡包括显示芯片(即gpu 140)、显存及其相关电路。显存即为显示内存150,即显卡的专用内存,作用是用来存储gpu 140处理过或者即将提取的渲染数据,如同内存120一样,显示内存150是用来存储要处理的图形信息的部件。
27.为了使得gpu可以用于处理除图形数据外的其他数据,通用并行计算架构(compute unified device architecture,cuda)应运而生。cuda是一种运算平台,包含cuda指令集架构以及gpu内部的并行计算引擎。
28.gpu 140无法直接读取内存120的数据,gpu只能从显示内存150里读取数据。cpu可以向gpu分配计算任务,gpu在执行计算任务时,在cpu 110的控制下,内存120与显示内存150之间可以进行数据交互,以将gpu执行计算任务时所需的数据从内存120拷贝到显示内存150,或者直接将内存120中的数据转移至显示内存150中。
29.在对基于深度学习技术构建的模型进行训练时,cpu 110例如可以将训练任务分配给gpu 140,并将模型从内存120中转移至显示内存150中。在一实施例中,可以将模型存储在ssd 130提供的硬盘存储空间中。建立由显示内存150提供的显示内存空间、内存120提供的内存空间和ssd 130提供的硬盘存储空间构成的三级缓存空间。如此,可以将模型存储在ssd 130中,在模型训练过程中,根据训练需要,从硬盘存储空间中读取数据并缓存至内存空间,并在向gpu 140分配训练任务时,将gpu 140当前训练阶段中涉及的模型分片由内存空间转移至显示内存空间,并将gpu 140处理后的数据从显示内存空间转移至内存空间,以避免显示内存空间不足的情形。
30.在一实施例中,cpu 110例如可以仅向gpu 140分配模型训练过程中的计算任务,由cpu 110执行模型训练过程中的参数更新任务,以此减少模型在三级缓存中的频繁转移。
31.在一实施例中,例如可以将模型分成多个模型分片,cpu 110例如还可以在执行针对多个模型分片中部分模型分片的参数更新任务的同时,向gpu 140分配针对其他模型分片的参数更新任务。以此提高训练效率。
32.在一实施例中,电子设备例如可以设置有多个显卡,该多个显卡可以并行地执行模型训练任务,以此提高模型的训练效率。
33.可以理解的是,本公开提供的针对模型训练的调度方法可以由电子设备执行,具体可以由cpu 110调用调度方法对应的程序代码来实现。相应地,本公开提供的针对模型训练的调度装置可以设置于电子设备中。
34.以下将结合图2~图5对本公开提供的针对模型训练的调度方法进行详细描述。
35.图2是根据本公开实施例的针对模型训练的调度方法的流程示意图。
36.如图2所示,针对模型训练的调度方法200可以包括操作s210~操作s230。该方法200例如可以由cpu执行。
37.在操作s210中,将待训练模型切分为依次连接的三个模型分区。
38.根据本公开的实施例,可以将待训练模型均等的切分为三个模型分区。多个模型分区包括的网络参数的个数相等或相近。需要说明的是,在切分待训练模型时,待训练模型中包括的各个处理层应属于同一个模型分区。三个模型分区的先后顺序应于模型分区包括的处理层在待训练模型中的先后顺序保持一致。
39.根据本公开的实施例,待训练模型例如可以为基于深度学习技术构建的图像处理模型、文本处理模型或音频处理模型等。例如,该待训练模型可以包括bert模型等,本公开对此不做限定。
40.在操作s220,将依次连接的三个模型分区分别缓存至构成三级缓存空间的三个空间。
41.根据本公开的实施例,三级缓存空间可以包括前述由显示内存提供的显示内存空间、内存提供的内存空间和ssd提供的硬盘存储空间。显示内存空间为gpu的数据处理功能提供缓存空间,内存空间为cpu的数据处理功能提供缓存空间。例如,该实施例可以将依次连接的三个模型分区一一对应的缓存至显示内存空间、内存空间和硬盘存储空间。
42.例如,可以将三个模型分区中位于最前位置的最前模型分区存储至显示内存空间,将三个模型分区中位于中间位置的中间模型分区存储至内存空间,将三个模型分区中位于最后位置的最后模型分区存储至硬盘存储空间。如此,在模型的训练过程中,由于首先使用模型的参数进行前向计算,且gpu具有数据的并行处理能力,cpu可以直接向gpu分配前向计算任务,如此,gpu可以直接根据显示内存空间内缓存的最前模型分区来执行前向计算任务。而无需从ssd中读取该最前模型分区,可以减少一次对ssd的i/o访问。
43.在操作s230,在待训练模型的训练过程中,动态调整三个空间各自缓存的模型分区,并调度使得针对三个模型分区的训练以具有交叠的方式执行。
44.根据本公开的实施例,待训练模型的训练过程中,涉及到针对每个模型分区的训练,针对每个模型分区的训练可以包括计算任务和参数更新任务。其中,计算任务包括前向任务和后向任务。其中,前向任务通常用来对数据进行预测,并根据预测的结果确定待训练模型的损失。后向任务通常用来根据损失来确定如何调整待训练模型的网络参数。参数更新任务则用来根据确定的网络参数的调整策略来调整网络参数,实现对网络参数的更新。
45.根据本公开的实施例,具有交叠的方式包括针对两个模型分区的训练所涉及的两个参数更新任务被并行执行。例如,可以在待训练模型的训练过程中,完成针对待训练模型的计算任务后,将三个模型分区中的两个模型分区分别缓存于内存空间和显示内存空间,以使得cpu和gpu并行地对该两个模型分区的网络参数进行更新。其中,两个模型分区中,缓存于显示内存空间的模型分区例如可以为缓存于内存空间的模型分区的在前模型分区,例如缓存于显示内存空间的模型分区为最前模型分区,缓存于内存空间的模型分区为中间模型分区,以为在完成对待训练模型的网络参数的更新任务后执行的前向任务提供基础,减少模型分区在三级缓存空间内的转移。这是由于,前向任务通常由gpu执行。
46.可以理解的是,在待训练模型的训练过程中,计算任务的实施流程中,可以将ssd
作为全量模型参数的存储容器,即在计算任务执行之前,硬盘存储空间中存储有三个模型分区。cpu向gpu分配计算任务,并在计算任务的执行过程中,根据计算任务的执行进度,逐步地将三个模型分区转移至显示内存空间,并将完成计算后的三个模型分区逐步地转移回硬盘存储空间。
47.本公开实施例的针对模型训练的调度方法,通过将模型切分为三个模型分区,并结合对三级缓存空间中存储的模型分区的调整,可以实现待训练模型中不同模型分区的参数地并行更新。如此可以提高模型的训练效率,并减少对ssd的i/o访问次数,利于提高ssd的使用寿命。
48.可以理解的是,在调整三个空间各自缓存的模型分区时,例如可以采用pytorch及其学习库中的.to(device)处理,将缓存于内存空间的模型分区转移至显示内存空间。
49.图3是根据本公开实施例的调度使得模型训练以具有交叠的方式执行的原理示意图。
50.根据本公开的实施例,如图3所示,在该实施例300中,可以在完成对三个模型分区中所有模型分区的后向任务时,三级缓存空间缓存的模型分区可以为第一状态。在该第一状态下,最前模型分区301缓存于显示内存空间中,以便于gpu基于cuda 311针对该最前模型分区301并行地执行任务;中间模型分区302缓存于内存空间中,以便于cpu 312针对该中间模型分区执行任务;最后模型分区303缓存于ssd 313提供的硬盘存储空间。通过将最后模型分区缓存于硬盘存储空间,可以减少对内存空间的占用,利于cpu执行除训练模型外的其他任务,且可以减小对显示内存空间的占用,避免因显示内存空间较小导致的任务执行效率低的问题。
51.根据本公开的实施例,可以在gpu执行针对三个模型分区中最前模型分区的训练所涉及的第一后向任务时,对三个空间中缓存的模型分区进行调整,如此,在执行完第一后向任务后,即可使得cpu和gpu并行地执行针对不同模型分区的训练所涉及的不同参数更新任务。例如,cpu可以在根据gpu执行第一后向任务后反馈的信息确定第一后向任务被执行完成后,向gpu分配针对最前模型分区301的第一参数更新任务,使得cuda 311执行该第一参数更新任务321,从而对该最前模型分区301的网络参数进行更新。同时,cpu可以执行针对中间模型分区的第二参数更新任务322,以对中间模型分区302的网路参数进行更新。
52.在执行第一参数更新任务和第二参数更新任务的同时,cpu例如还可以将硬盘存储空间存储的最后模型分区303转移至内存空间。如此,在cpu 312执行完第二参数更新任务后,内存空间中已经缓存了最后模型分区303,cpu 312可以执行第三参数更新任务323,以对最后模型分区303的网络参数进行更新。在完成第一参数更新任务321和第二参数更新任务322后,显示内存空间缓存的为参数更新后的最前模型分区304,内存空间中缓存的为参数更新后的中间模型分区305和待更新的最后模型分区303。
53.在完成第三参数更新任务323后,三级缓存空间缓存的模型分区为第二状态。在该第二状态下,显示内存空间中缓存有参数更新后的最前模型分区304,内存空间中缓存有参数更新后的中间模型分区305和参数更新后的最后模型分区306。设定当前训练轮次为第n轮,则可以对参数更新后的三个模型分区执行第n 1轮的训练。
54.该实施例通过如图3所示的缓存的模型分区的调整和如图3所示的训练任务调度流程,可以在整个模型的参数更新过程中,实现最前模型分区的网络参数和中间模型分区
的网络参数的并行更新,且在整个模型的网络参数的更新过程中,仅需对ssd进行一次i/o访问。
55.在三级缓存空间缓存的模型分区为第二状态后,可以针对模型执行下一轮的训练。例如,cpu可以向gpu分配第一前向任务,以使得gpu基于guda 311执行前向计算。同时,cpu还可以逐步地将内存空间缓存的模型分区转移至显示内存空间,并依次调度gpu根据参数更新后的中间模型分区执行第二前向任务,根据参数更新后的最后模型分区执行第三前向任务,以根据整个模型完成前向计算。在此过程中,cpu还可以将使用完的模型分区自显示内存空间转移至内存空间或硬盘存储空间,以此避免显示内存空间不足的情形。
56.根据本公开的实施例,由于gpu完成了针对最前模型分区的更新后,显存内存空间中缓存的为参数更新后的最前模型分区。cpu可以向gpu分配第一前向任务,以使得gpu根据该参数更新后的最前模型分区进行前向计算,开始下一轮的模型训练。由于中间模型分区和最后模型分区的参数更新不影响最前模型分区的前向计算,该实施例中cpu执行的参数更新任务可以与第一前向任务以在时间上交叠的方式并行地执行,可以进一步提高模型的训练效率。
57.图4是根据本公开实施例的调度使得模型训练以具有交叠的方式执行的原理示意图。
58.如图4所示,在实施例400中,在cpu 412确定gpu执行完第一参数更新任务后,可以向gpu发送第一前向任务422,以使得gpu基于cuda 411并行地根据参数更新后的最前模型分区进行前向计算。在某个时刻,如图4所示,gpu执行的第一前向任务422与cpu 412执行的参数更新任务(例如针对最后模型分区的训练所涉及的第三参数更新任务421)可以以在时间上交叠的方式执行。
59.相应地,上文描述的具有交叠的方式例如还可以包括针对在前模型分区的训练所涉及的前向任务与针对在后模型分区的训练所涉及的参数更新任务并行执行。
60.根据本公开的实施例,在cpu执行完第二参数更新任务后,例如还可以将参数更新后的中间模型分区402自内存空间转移至显示内存空间,以为gpu根据参数更新后的中间模型进行前向计算做准备。在训练过程中的某个时刻,该将参数更新后的中间模型分区402自内存空间转移至显示内存空间的操作与第一前向任务同步执行,如此,可以提高模型训练效率。
61.在cpu 412根据gpu返回的信息确定第一前向任务422被执行完成后,例如可以向gpu发送用于根据参数更新后的中间模型分区402进行前向计算的第二前向任务423。例如,在第三参数更新任务完成后,cpu 412还可以将参数更新后的最后模型分区403自内存空间转移至显示内存空间,以为gpu根据参数更新后的最后模型分区403进行前向计算做准备。如此,在训练过程中的某个时刻,该将参数更新后的最后模型分区403自内存空间转移至显示内存空间的操作与第二前向任务423同步执行,如此,可以提高模型训练效率。
62.在cpu 412根据gpu返回的信息确定第二前向任务423被执行完成后,例如可以向gpu发送用于根据参数更新后的最后模型分区403进行前向计算的第三前向任务424。在第三前向任务424执行完成后,即可完成对整个模型在下一轮训练中的前向计算。
63.通过以上实施例的缓存的模型分区的调整和训练任务调度流程,可以在根据整个模型进行前向计算的过程中,实现下一轮训练中的计算任务和当前轮训练中的参数更新任
务的并行执行,且在整个前向计算过程中,无需从硬盘存储空间中获取模型分区,可以减少对ssd的i/o访问。
64.在一实施例中,如图4所示,在cpu确定gpu基于cuda 411执行完第一前向任务后,例如可以逐步地将参数更新后的最前模型分区401自显示内存空间转移至ssd 413提供的硬盘存储空间。例如,cpu 412可以先将参数更新后的最前模型分区401自显示内存空间转移至内存空间,随后再从内存空间转移至硬盘存储空间。如此,在训练过程中的某个时刻,该将参数更新后的最前模型分区401自显示内存空间转移至内存空间的操作与第二前向任务423同步执行,且在另一时刻,将参数更新后的最前模型分区401自内存空间转移至硬盘存储空间的操作可能与第三前向任务同步执行。该实施例通过及时的从显示内存空间中转出参数更新后的最前模型分区401,可以减小显示内存的缓存压力,利于提高模型训练效率,也利于实现大规模模型的训练。
65.在一实施例中,如图4所示,在cpu确定gpu基于cuda 411执行完第二前向任务后,例如可以将参数更新后的中间模型分区402自显示内存空间转移至内存空间。如此,在训练过程中的某个时刻,该将参数更新后的中间模型分区402自显示内存空间转移至内存空间的操作与第三前向任务424同步执行。该实施例通过及时的从显示内存空间中转出参数更新后的中间模型分区402,可以减小显示内存的缓存压力,利于提高模型训练效率,也利于实现大规模模型的训练。如此,在gpu执行完第三前向任务后,三级缓存空间缓存的模型分区可以为如图4所示的第三状态。在该第三状态下,参数更新后的最前模型分区401缓存于硬盘存储空间中;参数更新后的中间模型分区402缓存于内存空间中;参数更新后的最后模型分区403缓存于显示内存空间中。
66.在一实施例中,cpu例如还可以在执行完第三参数更新任务获得参数更新后的最后模型分区后,确定参数更新后的最前模型分区是否转移至内存空间(即参数更新后的最前模型分区是否自显示内存空间转出)。在确定转出后,再将参数更新后的租后模型分区自内存空间转移至显示内存空间。以此,可以减小显示内存的缓存压力,也利于实现大规模模型的训练。
67.可以理解的是,在一实施例中,cpu还可以在gpu执行完第一前向任务的同时,将cpu执行第二参数更新任务后得到的参数更新后的中间模型分区自内存空间转移至显卡内存空间。并在gpu执行完第一前向任务后,向gpu分配根据参数更新后的中间模型分区进行前向计算的第二前向任务,以使得gpu执行该第二前向任务。在gpu执行该第二前向任务的同时,cpu可以执行更新最后模型分区的网络参数的第三参数更新任务。如此,可以实现第二前向任务和第三参数更新任务的并行执行。
68.可以理解的是,在一实施例中,cpu例如还可以将参数更新后的中间模型分区和参数更新后的最后模型分区均转移至硬盘存储空间。随后从硬盘存储空间中逐步地取出参数更新后的最后模型分区、参数更新后的中间模型分区和参数更新后的最前模型分区,以逐步地根据前一次迭代所得到的模型进行后向计算。
69.根据本公开的实施例,在三级缓存空间缓存的模型分区为如图4所示的第三状态时,cpu例如可以向gpu分配根据参数更新后的最后模型分区执行后向计算的第一后向任务。在分配该第一后向任务之前,无需向显示内存空间分配模型分区,可以在一定程度上提高模型的训练效率。
70.图5是根据本公开实施例的针对模型训练进行流式调度的原理流程示意图。
71.如图5所示,在实施例500中,在cpu 512确定gpu执行完第三前向任务后,可以向gpu发送第三后向任务521,以使得gpu基于cuda 511并行地根据参数更新后的最后模型分区进行后向计算。
72.在gpu执行第三后向任务521的同时,cpu 512还可以将参数更新后的中间模型分区502自内存空间转移至显示内存空间,以为gpu根据参数更新后的中间模型分区502进行后向计算做准备。如此,在训练过程中的某个时刻,该将参数更新后的中间模型分区502自内存空间转移至显示内存空间的操作与第三后向任务521同步执行,如此,可以提高模型训练效率。同时,cpu还可以从ssd 513提供的硬盘存储空间读取参数更新后的最前模型分区501,以便于逐步地将参数更新后的最前模型分区501转移至显示内存空间。如此,在训练过程中的另一时刻,该将参数更新后的最前模型分区501自硬盘存储空间转移至内存空间的操作与第三后向任务521同步执行。
73.在cpu 512根据gpu返回的信息确定第三后向任务521被执行完成后,例如可以向gpu发送用于根据参数更新后的中间模型分区502进行后向计算的第二后向任务522。在gpu执行第二后向任务522的同时,cpu 512还可以将参数更新后的最前模型分区501自内存空间转移至显示内存空间,以为gpu根据参数更新后的最前模型分区501进行后向计算做准备。
74.在cpu 512根据gpu返回的信息确定第二后向任务522被执行完成后,例如可以向gpu发送用于根据参数更新后的最前模型分区501进行后向计算的第一后向任务523。在gpu执行完第一后向任务523后,即可完成n 1轮训练中的计算任务。
75.通过以上实施例的缓存的模型分区的调整和训练任务调度流程,可以在根据整个模型进行后向计算的过程中,仅需对硬盘存储空间执行一次写操作和一次读操作,相较于相关技术,可以减少对ssd的i/o访问,利于提高ssd的使用寿命。
76.在一实施例中,如图5所示,在cpu确定gpu基于cuda 511执行完第三后向任务后,例如可以逐步地将参数更新后的最后模型分区503自显示内存空间转移至ssd 513提供的硬盘存储空间。例如,cpu 512可以先将参数更新后的最后模型分区503自显示内存空间转移至内存空间,随后再从内存空间转移至硬盘存储空间。如此,在训练过程中的某个时刻,该将参数更新后的最后模型分区503自显示内存空间转移至内存空间的操作与第二后向任务522同步执行,且在另一时刻,将参数更新后的最后模型分区503自内存空间转移至硬盘存储空间的操作可能与第一后向任务同步执行。该实施例通过及时的从显示内存空间中转出参数更新后的最后模型分区503,可以减小显示内存的缓存压力,利于提高模型训练效率,也利于实现大规模模型的训练。
77.在一实施例中,如图5所示,在cpu确定gpu基于cuda 511执行完第二后向任务后,例如可以将参数更新后的中间模型分区502自显示内存空间转移至内存空间。如此,在训练过程中的某个时刻,该将参数更新后的中间模型分区502自显示内存空间转移至内存空间的操作与第一后向任务523同步执行。该实施例通过及时的从显示内存空间中转出参数更新后的中间模型分区502,可以减小显示内存的缓存压力,利于提高模型训练效率,也利于实现大规模模型的训练。如此,在gpu执行完第三前向任务后,三级缓存空间缓存的模型分区可以为如图5所示的第一状态。该第一状态与实施例300中的第一状态类似,区别仅在于,
实施例300中第一状态所涉及的模型分区为第n-1轮迭代后得到的模型分区,该实施例500中第一状态所涉及的模型分区为第n轮迭代后的得到的模型分区。其中,n为大于1的自然数。
78.在如图5所示的第一状态下,cpu可以通过调度,来执行第n 1迭代中对模型分区的网络参数的更新。
79.基于实施例300、实施例400和实施例500的实施,本公开可以实现模型训练过程中各个任务的流水线式执行,可以有效提高模型的训练效率。同时,还可以有效减少对ssd的i/o访问。
80.可以理解的是,在对待训练模型进行训练时,例如可以采用多台电子设备,对待训练模型进行数据并行方式的并行训练,以进一步提高模型训练效率。例如,可以将训练样本划分为多份,并将多份样本分别分发给多台电子设备。每台电子设备中缓存有待训练模型的初始模型,并可以采用本公开提供的方法来对待训练模型的训练进行调度。
81.可以理解的是,上述实施例中的方法,实质上将显卡、处理器和ssd整体划分为了两部分,一部分为计算部分,另一部分为缓存部分。缓存部分可以构成上文描述的三级缓存空间。在调度过程中,将划分得到的三个模型分区在三级缓存空间中进行调度。计算部分包括gpu子部分和cpu子部分,从而构成两级计算结构。在调度过程中,将模型训练过程中涉及的计算任务和参数更新任务在该两级计算结构上进行调度。
82.根据本公开的实施例,可以根据三级缓存空间中三个空间彼此之间的可用空间的大小之比,来将待训练模型划分为三个模型分区。或者,可以根据三级缓存空间中可用空间最小的空间大小作为划分后模型分区所占缓存空间的上限,随机地将待训练模型划分为三个模型分区。可以理解的是,上述划分方式仅作为示例以利于理解本公开,本公开可以根据三个空间的空间大小,根据任意方式来将待训练模型划分为三个模型分布。
83.基于本公开提供的针对模型训练的调度方法,本公开还提供了一种针对模型训练的调度装置。以下将结合图6对该装置进行详细描述。
84.图6是根据本公开实施例的针对模型训练的调度装置的结构框图。
85.如图6所示,该实施例的针对模型训练的调度装置600可以包括模型切分模块610、模型缓存模块620和调度调整模块630。
86.模型切分模块610用于将待训练模型切分为依次连接的三个模型分区。在一实施例中,模型切分模块610可以用于执行上文描述的操作s210,在此不再赘述。
87.模型缓存模块620用于将依次连接的三个模型分区分别缓存至构成三级缓存空间的三个空间;其中,三个空间包括针对图形处理器的显示内存空间、针对处理器的内存空间和硬盘存储空间。在一实施例中,模型缓存模块620可以用于执行上文描述的操作s220,在此不再赘述。
88.调度调整模块630用于在待训练模型的训练过程中,动态调整三个空间各自缓存的模型分区,并调度使得针对三个模型分区的训练以具有交叠的方式执行。在一实施例中,调度调整模块630可以用于执行上文描述的操作s230,还可以用于执行本公开提供的实施例300~实施例500的原理中所涉及的各种操作,在此不再赘述。
89.根据本公开的实施例,针对三个模型分区中每个模型分区的训练涉及参数更新任务;具有交叠的方式包括:针对两个模型分区的训练所涉及的两个参数更新任务被并行执
行。
90.根据本公开的实施例,针对每个模型分区的训练还涉及计算任务;计算任务包括前向任务和后向任务;具有交叠的方式还包括:针对三个模型分区中在前模型分区的训练所涉及的前向任务与针对在后模型分区的训练所涉及的参数更新任务并行执行。
91.需要说明的是,本公开的技术方案中,所涉及的用户个人信息的收集、存储、使用、加工、传输、提供、公开和应用等处理,均符合相关法律法规的规定,采取了必要保密措施,且不违背公序良俗。在本公开的技术方案中,在获取或采集用户个人信息之前,均获取了用户的授权或同意。
92.根据本公开的实施例,本公开还提供了一种电子设备、一种可读存储介质和一种计算机程序产品。
93.图7示出了可以用来实施本公开实施例的针对模型训练的调度方法的示例电子设备700的示意性框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
94.如图7所示,设备700包括计算单元701,其可以根据存储在只读存储器(rom)702中的计算机程序或者从存储单元708加载到随机访问存储器(ram)703中的计算机程序,来执行各种适当的动作和处理。在ram 703中,还可存储设备700操作所需的各种程序和数据。计算单元701、rom 702以及ram 703通过总线704彼此相连。输入/输出(i/o)接口705也连接至总线704。
95.设备700中的多个部件连接至i/o接口705,包括:输入单元706,例如键盘、鼠标等;输出单元707,例如各种类型的显示器、扬声器等;存储单元708,例如磁盘、光盘等;以及通信单元709,例如网卡、调制解调器、无线通信收发机等。通信单元709允许设备700通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
96.计算单元701可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元701的一些示例包括但不限于中央处理单元(cpu)、图形处理单元(gpu)、各种专用的人工智能(ai)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(dsp)、以及任何适当的处理器、控制器、微控制器等。计算单元701执行上文所描述的各个方法和处理,例如针对模型训练的调度方法。例如,在一些实施例中,针对模型训练的调度方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元708。在一些实施例中,计算机程序的部分或者全部可以经由rom 702和/或通信单元709而被载入和/或安装到设备700上。当计算机程序加载到ram 703并由计算单元701执行时,可以执行上文描述的针对模型训练的调度方法的一个或多个步骤。备选地,在其他实施例中,计算单元701可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行针对模型训练的调度方法。
97.本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(fpga)、专用集成电路(asic)、专用标准产品(assp)、芯片上系统的系统(soc)、复杂可编程逻辑设备(cpld)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算
机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
98.用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
99.在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或快闪存储器)、光纤、便捷式紧凑盘只读存储器(cd-rom)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
100.为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,crt(阴极射线管)或者lcd(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
101.可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(lan)、广域网(wan)和互联网。
102.计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。其中,服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与vps服务(

virtual private server

,或简称

vps

)中,存在的管理难度大,业务扩展性弱的缺陷。服务器也可以为分布式系统的服务器,或者是结合了区块链的服务器。
103.应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。
104.上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献