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

分布式训练系统、方法、装置、设备及可读存储介质与流程

2022-11-09 23:11:37 来源:中国专利 TAG:


1.本技术涉及计算机技术领域,特别是涉及一种分布式训练系统、方法、装置、设备及可读存储介质。


背景技术:

2.当今,随着深度学习技术在计算机视觉、自然语言处理等领域的广泛应用,深度学习模型的参数规模呈现空前的扩张趋势,在提高了深度学习模型对数据的拟合能力的同时,涉及到的参数量达到千亿甚至万亿,训练数据也增至tb级别。对如此巨量模型与数据进行训练,在硬件层面单纯依靠中央处理器(central processing unit,cpu)已经远不能满足需求,大量的专用计算设备,如图形处理器(graphics processing unit,gpu)、专用集成电路(application specific integrated circuit,asic)等被运用到模型训练过程中。
3.而在模型训练过程中,大量的数据需要在计算设备(device)与主机(host)之间进行交互。制约计算设备之间数据交互的主要因素为数据传输延迟与传输速率。以高速串行计算机扩展总线标准(peripheral component interconnect express,pcie)设备向图形处理器发送数据为例,数据需要发送给使用pcie接口的图形处理器处理,可能还需要经过pcie总线附加的非易失性存储器介质nvme(或nvmem)或其他存储设置。故涉及到的传输路径包括pcie通道——图形处理器——图形处理器存储(gpu-memory)——图形处理器的数据高速缓冲存储器(cache),图形处理器的计算单元从数据高速缓冲存储器中获取数据,分配给不同的线程去处理。
4.可以看到,这种分布式的硬件训练系统存在数据传输路径较长的问题,而数据传输带宽也会受到传输速率最慢的路径制约,进而导致难以接受的数据传输延迟,是限制分布式训练系统发展的瓶颈之一。


技术实现要素:

5.本技术的目的是提供一种分布式训练系统、方法、装置、设备及可读存储介质,用于解决分布式的硬件训练系统中数据传输路径较长的问题,提高分布式训练系统的数据处理效率。
6.为解决上述技术问题,本技术提供一种分布式训练系统,包括:主机,多个异构计算设备;其中,所述主机与所述异构计算设备之间,以及所述异构计算设备之间,均基于计算机快速链接协议建立了计算机快速链接;所述主机用于将模型训练任务划分为子任务,基于计算机快速链接将所述子任务的训练数据分配至各所述异构计算设备;所述异构计算设备用于执行被分配的所述子任务,并输出计算结果以更新所述模型训练任务的目标模型的模型参数。
7.可选的,所述主机将模型训练任务划分为子任务,基于计算机快速链接将所述子
任务的训练数据分配至各所述异构计算设备,具体为:所述主机根据各所述异构计算设备的类型将所述模型训练任务划分为所述子任务,并按照所述异构计算设备的类型分配所述子任务。
8.可选的,所述主机根据各所述异构计算设备的类型将所述模型训练任务划分为所述子任务,并按照所述异构计算设备的类型分配所述子任务,具体为:将所述目标模型的全连接层对应的所述子任务分配至图形处理器,将所述目标模型的卷积层对应的所述子任务分配至现场可编程逻辑门阵列设备,将所述目标模型的激活层对应的所述子任务分配至专用集成电路设备和/或处理器分散处理单元设备。
9.可选的,所述异构计算设备执行被分配的所述子任务,并输出计算结果以更新所述模型训练任务的目标模型的模型参数,具体为:所述异构计算设备执行被分配的所述子任务,并将得到的计算结果进行cholesky分解得到的矩阵发送至另一所述异构计算设备或所述主机以更新模型参数。
10.可选的,所述主机将模型训练任务划分为子任务,基于计算机快速链接将所述子任务的训练数据分配至各所述异构计算设备,具体包括:所述主机将所述目标模型的初始模型加载至各所述异构计算设备;所述主机将所述目标模型的训练数据集拆分为多组小批量数据;所述主机将所述小批量数据分发至各所述异构计算设备;所述异构计算设备执行被分配的所述子任务,并输出计算结果以更新所述模型训练任务的目标模型的模型参数,具体为:所述异构计算设备执行所述子任务后输出当前迭代次数对应的训练参数,并将所述训练参数在各所述异构计算设备之间执行全规约操作以合并训练参数,以利用合并后的训练参数更新所述目标模型。
11.可选的,所述异构计算设备执行所述子任务后输出当前迭代次数对应的训练参数,并将所述训练参数在各所述异构计算设备之间执行全规约操作以合并训练参数,以利用合并后的训练参数更新所述目标模型,具体为:所述异构计算设备执行所述子任务后并得到当前迭代次数对应的训练参数后,当接收到所述主机在检测到各所述异构计算设备均完成当前迭代次数的计算后发出的全规约命令后,在各所述异构计算设备之间执行全规约操作以合并训练参数,以利用合并后的训练参数更新所述目标模型。
12.可选的,所述异构计算设备执行所述子任务后输出当前迭代次数对应的训练参数,并将所述训练参数在各所述异构计算设备之间执行全规约操作以合并训练参数,以利用合并后的训练参数更新所述目标模型,具体包括:在第t次迭代计算中,所述异构计算设备将接收到的小批量数据输入模型,根据模型输出值与数据标签建立所述目标模型的损失函数并进行反向传播,计算得到小批量数据的梯度;所述异构计算设备根据等式计算得到梯度
的第一历史滑动平均值;所述异构计算设备根据等式计算得到梯度与第一历史滑动平均值的差值的第二历史滑动平均值;所述异构计算设备根据等式计算得到第一历史滑动平均值的偏置校正值;在各所述异构计算设备之间对偏置校正值执行全规约操作,得到合并后的偏置校正值;所述异构计算设备在第二历史滑动平均值和在第t-1次迭代计算中求得的较大值中选择较大值;在各所述异构计算设备之间对较大值执行全规约操作,得到合并后的第二历史滑动平均值;根据等式更新所述目标模型的结果参数;其中,为数据,、为衰减系数,为的次方,为的次方,为迭代前进步长,为第t-1次迭代计算中求得的第一历史滑动平均值,为第t-1次迭代计算中求得的结果参数。
13.为解决上述技术问题,本技术还提供一种分布式训练方法,包括:预先基于计算机快速链接协议搭建主机与异构计算设备之间的计算机快速链接以及各所述异构计算设备之间的计算机快速链接;将模型训练任务划分为子任务,基于计算机快速链接将所述子任务的训练数据分配至各所述异构计算设备,以使所述异构计算设备执行被分配的所述子任务并输出计算结果以更新所述模型训练任务的目标模型的模型参数。
14.可选的,所述将模型训练任务划分为子任务,基于计算机快速链接将所述子任务的训练数据分配至各所述异构计算设备,具体为:根据各所述异构计算设备的类型将所述模型训练任务划分为所述子任务,并按照所述异构计算设备的类型分配所述子任务。
15.可选的,所述根据各所述异构计算设备的类型将所述模型训练任务划分为所述子任务,并按照所述异构计算设备的类型分配所述子任务,具体为:
将所述目标模型的全连接层对应的所述子任务分配至图形处理器,将所述目标模型的卷积层对应的所述子任务分配至现场可编程逻辑门阵列设备,将所述目标模型的激活层对应的所述子任务分配至专用集成电路设备和/或处理器分散处理单元设备。
16.可选的,所述异构计算设备执行被分配的所述子任务并输出计算结果以更新所述模型训练任务的目标模型的模型参数,具体为:所述异构计算设备执行被分配的所述子任务,并将得到的计算结果进行cholesky分解得到的矩阵发送至另一所述异构计算设备或所述主机以更新模型参数。
17.可选的,所述将模型训练任务划分为子任务,基于计算机快速链接将所述子任务的训练数据分配至各所述异构计算设备,具体包括:将所述目标模型的初始模型加载至各所述异构计算设备;将所述目标模型的训练数据集拆分为多组小批量数据;将所述小批量数据分发至各所述异构计算设备;所述异构计算设备执行被分配的所述子任务并输出计算结果以更新所述模型训练任务的目标模型的模型参数,具体为:所述异构计算设备执行所述子任务后输出当前迭代次数对应的训练参数,并将所述训练参数在各所述异构计算设备之间执行全规约操作以合并训练参数,以利用合并后的训练参数更新所述目标模型。
18.可选的,所述异构计算设备执行所述子任务后输出当前迭代次数对应的训练参数,并将所述训练参数在各所述异构计算设备之间执行全规约操作以合并训练参数,以利用合并后的训练参数更新所述目标模型,具体为:所述异构计算设备执行所述子任务后并得到当前迭代次数对应的训练参数后,当接收到所述主机在检测到各所述异构计算设备均完成当前迭代次数的计算后发出的全规约命令后,在各所述异构计算设备之间执行全规约操作以合并训练参数,以利用合并后的训练参数更新所述目标模型。
19.可选的,所述异构计算设备执行所述子任务后输出当前迭代次数对应的训练参数,并将所述训练参数在各所述异构计算设备之间执行全规约操作以合并训练参数,以利用合并后的训练参数更新所述目标模型,具体包括:在第t次迭代计算中,所述异构计算设备将接收到的小批量数据输入模型,根据模型输出值与数据标签建立所述目标模型的损失函数并进行反向传播,计算得到小批量数据的梯度;所述异构计算设备根据等式计算得到梯度的第一历史滑动平均值;所述异构计算设备根据等式计算得到梯度与第一历史滑动平均值的差值的第二历史滑动平均值;
所述异构计算设备根据等式计算得到第一历史滑动平均值的偏置校正值;在各所述异构计算设备之间对偏置校正值执行全规约操作,得到合并后的偏置校正值;所述异构计算设备在第二历史滑动平均值和在第t-1次迭代计算中求得的较大值中选择较大值;在各所述异构计算设备之间对较大值执行全规约操作,得到合并后的第二历史滑动平均值;根据等式更新所述目标模型的结果参数;其中,为数据,、为衰减系数,为的次方,为的次方,为迭代前进步长,为第t-1次迭代计算中求得的第一历史滑动平均值,为第t-1次迭代计算中求得的结果参数。
20.为解决上述技术问题,本技术还提供一种分布式训练装置,包括:部署单元,用于预先基于计算机快速链接协议搭建主机与异构计算设备之间的计算机快速链接以及各所述异构计算设备之间的计算机快速链接;控制单元,用于将模型训练任务划分为子任务,基于计算机快速链接将所述子任务的训练数据分配至各所述异构计算设备,以使所述异构计算设备执行被分配的所述子任务并输出计算结果以更新所述模型训练任务的目标模型的模型参数。
21.为解决上述技术问题,本技术还提供一种分布式训练设备,包括:存储器,用于存储计算机程序;处理器,用于执行所述计算机程序,所述计算机程序被所述处理器执行时实现如上述任意一项所述分布式训练方法的步骤。
22.为解决上述技术问题,本技术还提供一种可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如上述任意一项所述分布式训练方法的步骤。
23.本技术所提供的分布式训练系统,包括主机和多个异构计算设备;其中,主机与异构计算设备之间,以及异构计算设备之间,均基于计算机快速链接协议建立了计算机快速链接;由主机将模型训练任务划分为子任务,基于计算机快速链接将子任务的训练数据分配至各异构计算设备;由异构计算设备执行被分配的子任务,并输出计算结果以更新模型
训练任务的目标模型的模型参数。本技术提供的分布式训练系统基于计算机快速链接打通了异构计算设备之间的通信延迟屏障,实现了多个异构计算设备之间的内存一致性,异构计算设备之间的数据传输可以不经过中央处理器进行,而可以直接进行内存读取,从而显著缩短了数据传输路径,增加了数据传输带宽,降低了异构计算设备之间的数据交互延迟,同时能够基于不同异构计算设备的特性对训练任务进行针对性处理,对于大规模深度学习模型的训练提供了坚实的硬件基础。
24.本技术还提供了一种分布式训练方法、装置、设备及可读存储介质,具有上述有益效果,在此不再赘述。
附图说明
25.为了更清楚的说明本技术实施例或现有技术的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
26.图1为本技术实施例提供的一种分布式训练系统的结构示意图;图2为本技术实施例体提供的一种分布式训练系统的内存架构图;图3为本技术实施例提供的一种全规约过程的流程图;图4为本技术实施例提供的一种分布式训练方法的流程图;图5为本技术实施例提供的一种分布式训练装置的结构示意图;图6为本技术实施例提供的一种分布式训练设备的结构示意图。
具体实施方式
27.本技术的核心是提供一种分布式训练系统、方法、装置、设备及可读存储介质,用于解决分布式的硬件训练系统中数据传输路径较长的问题,提高分布式训练系统的数据处理效率。
28.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
29.实施例一图1为本技术实施例提供的一种分布式训练系统的结构示意图;图2为本技术实施例体提供的一种分布式训练系统的内存架构图。
30.如图1所示,本技术实施例提供的分布式训练系统包括:主机101,多个异构计算设备;其中,主机101与异构计算设备之间,以及异构计算设备之间,均基于计算机快速链接协议建立了计算机快速链接;主机101用于将模型训练任务划分为子任务,基于计算机快速链接将子任务的训练数据分配至各异构计算设备;异构计算设备用于执行被分配的子任务,并输出计算结果以更新模型训练任务的
目标模型的模型参数。
31.在具体实施中,本技术实施例中的主机101可以指英特尔的中央处理器(intel cpu),如图1所示,本地的分布式训练系统由主机101与多个异构计算设备组成,基于计算机快速链接(compute express link,cxl)协议,实现了主机101与异构计算设备、以及异构计算设备与异构计算设备之间的cxl互连。
32.支持计算机快速链接协议的cxl设备通过交换机(switch)设备(如图2所示的cxl互连)与主机(host)101相连,通过交换机设备,cxl设备可以在不同的主机101之间进行共享。cxl设备与主机101之间的互连使用计算机快速链接输入输出协议(cxl.io)、计算机快速链接缓存协议(cxl.cache)和计算机快速链接内存协议(cxl.mem)三种互连协议,实现 cxl设备访问主机101内存时,像是在访问设备内存一样,反过来主机101访问设备侧的内存资源也是同样的。
33.则如图1和图2所示的,主机101(的中央处理器cpu)与各异构计算设备两两之间均能共享计算机快速链接内存(cxl memory),从而打通了主机101与异构计算设备、异构计算设备与异构计算设备之间的通信延迟屏障,实现了多个异构计算设备之间的内存一致性,异构计算设备之间的数据传输可以不经过主机101的中央处理器进行,而可以直接进行内存读取,从而显著缩短了数据传输路径,增加了数据传输带宽,降低了异构计算设备之间的数据交互延迟。
34.需要说明的是,在本技术实施例提供的分布式训练系统中,异构计算设备的类型可以包括但不限于图1和图2中列举的图形处理器1021(graphics processing unit,下文简称gpu)、现场可编程逻辑门阵列设备1022(field programmable gate array,下文简称fpga)、专用集成电路设备1023(application specific integrated circuit,下文简称asic)和处理器分散处理单元设备1024(data processing unit,下文简称dpu),也可以包括其他类型的异构计算设备,且每种异构计算设备的数量也不限于一个,可以为多个,共同点是所有异构计算设备均为支持计算机快速链接协议的设备。
35.在此基础上,本地资源池的主机101还通过快速通道互联(quick path interconnect)协议或超级通道互联(ultra path interconnect,upi)协议与另一资源池中的主机101建立快速通道互联/超级通道互联,作为多路服务器cpu之间的高速总线,实现主机101之间的高通信效率、高传输速率及更低的功耗。
36.此外,本地资源池的异构计算设备与另一资源池的异构计算设备之间还通过交换机(switch)实现通信。
37.在执行分布式训练任务时,针对人工智能(ai)模型,由主机101控制整个分布式训练任务的执行,将模型训练任务分划分为子任务,基于计算机快速链接将子任务的训练数据分配至各异构计算设备,而各异构计算设备采用迭代优化算法(如adam优化算法)完成被分配的子任务后,输出计算结果即得到的梯度参数,以更新目标模型的模型参数,如此进行迭代计算,直至达到训练结束条件。
38.因此,本技术实施例提供的分布式训练系统为大规模深度学习模型的训练提供了坚实的硬件基础。
39.而基于不同类型的异构计算设备构成异构计算资源池,可以对不同类型的训练任务进行针对性处理,则在本技术实施例提供的分布式训练系统中,主机101将模型训练任务
划分为子任务,基于计算机快速链接将子任务的训练数据分配至各异构计算设备,具体为:主机101根据各异构计算设备的类型将模型训练任务划分为子任务,并按照异构计算设备的类型分配子任务。
40.可选的,主机101根据各异构计算设备的类型将模型训练任务划分为子任务,并按照异构计算设备的类型分配子任务,具体为:将目标模型的全连接层对应的子任务分配至图形处理器1021,将目标模型的卷积层对应的子任务分配至现场可编程逻辑门阵列设备1021,将目标模型的激活层对应的子任务分配至专用集成电路设备1023和/或处理器分散处理单元设备1024。
41.根据不同类型的异构计算设备适用于不同的网络模型计算的性质,划分模型拆分策略。将目标模型的全连接层对应的子任务分配至gpu,是因为gpu较适合进行矩阵运算。将目标模型的卷积层对应的子任务分配至fpga,是因为fpga中计算电路可以进行设计以适用于目标模型中的卷积层运算,尤其是针对多核卷积,可以设计合适的fpga电路,使其并行进行运算,大大提高运算效率。而针对目标模型中激活层等需要进行复杂的函数运算的网络层,则可以放置到asic或dpu等异构计算设备上,asic计算设备在设计时,充分考虑复杂函数的运算规则,使其以更快的计算速度计算需要进行复杂函数运算的网络层。
42.通过根据异构计算设备的性质针对性的下发计算任务,能够进一步提高对各计算任务的处理效率乃至处理质量,能够在现有分布式训练系统的基础上,进一步提高分布式训练的效率。
43.实施例二图3为本技术实施例提供的一种全规约过程的流程图。
44.在上述实施例的基础上,本技术实施例进一步对分布式训练系统执行分布式训练任务的过程进行举例说明。
45.在本技术实施例提供的分布式训练系统中,主机101将模型训练任务划分为子任务,基于计算机快速链接将子任务的训练数据分配至各异构计算设备,具体包括:主机101将目标模型的初始模型加载至各异构计算设备;主机101将目标模型的训练数据集拆分为多组小批量数据;主机101将小批量数据分发至各异构计算设备。
46.异构计算设备执行被分配的子任务,并输出计算结果以更新模型训练任务的目标模型的模型参数,具体为:异构计算设备执行子任务后输出当前迭代次数对应的训练参数,并将训练参数在各异构计算设备之间执行全规约操作以合并训练参数,以利用合并后的训练参数更新目标模型。
47.在具体实施中,以目标模型采用图像识别领域中常用的resnet-50网络模型训练为例,训练数据使用图像网(imagenet)数据集。
48.主机101采用数据并行分布式训练策略,通过指令将resnet-50网络模型加载到各个异构计算设备上,即将存放在硬盘设备上的resnet-50网络模型的数据加载到内存;同时,主机101将imagenet数据集拆分成多个mini-batch小批量数据。
49.在模型训练过程中,每个异构计算设备都会接收到一个mini-batch数据集,将该数据输送到resnet-50网络中进行前向传播与后向传播,此过程中,执行迭代优化算法,得
到对应mini-batch数据集的部分梯度参数。
50.仅仅是单个异构计算设备上的mini-batch数据集的部分梯度参数无法对resnet-50网络参数进行更新,需要汇集所有异构计算设备上的部分梯度参数,得到整个目标模型的全部梯度参数,才能对目标模型的参数进行一次参数更新。汇集异构计算设备上的部分梯度参数,得到整个目标模型的全部梯度参数的过程即全规约(allreduce)操作。汇集过程为将每个异构计算设备输出的小矩阵求和得到一个大矩阵,其中包含目标模型的全部梯度参数。
51.经过全规约操作后,每个异构计算设备上都含有了所有的部分梯度参数(即整个目标模型的全部梯度参数),就可以对resnet-50网络模型进行参数更新,如此循环进行,直到输出训练好的resnet-50网络模型。
52.在本技术实施例提供的分布式训练系统中,如无特殊设置,则异构计算设备之间均为两两互连的平级结构。而在进行软件层面的管理时,各异构计算设备之间的数据结构则进行重新设计,如可以设计为树型结构。
53.在执行全规约操作时,需要汇集各异构计算设备上的部分梯度参数,则可以采用各异构计算设备之间构成回环结构进行数据的循环传送与汇合。则异构计算设备执行子任务后输出当前迭代次数对应的训练参数,并将训练参数在各异构计算设备之间执行全规约操作以合并训练参数,以利用合并后的训练参数更新目标模型,具体为:异构计算设备执行子任务后并得到当前迭代次数对应的训练参数后,当接收到主机101在检测到各异构计算设备均完成当前迭代次数的计算后发出的全规约命令后,在各异构计算设备之间执行全规约操作以合并训练参数,以利用合并后的训练参数更新目标模型。
54.即是说,各异构计算设备之间以回环的方式向另一异构计算设备传送部分梯度参数,并对接收到的部分梯度参数与已有的部分梯度参数做求和运算,直至完成对所有异构计算设备上的部分梯度参数的汇合。
55.如图3所示,以在a、b、c、d四个异构计算设备之间执行异步全规约操作为例进行说明,在异构计算设备a上执行当前子任务得到部分梯度参数a0、a1、a2、a3,在异构计算设备b上执行当前子任务得到部分梯度参数b0、b1、b2、b3,在异构计算设备c上执行当前子任务得到部分梯度参数c0、c1、c2、c3,在异构计算设备d上执行当前子任务得到部分梯度参数d0、d1、d2、d3,请参见图3中白色箭头所指向的状态变化,各异构计算设备以a
→b→c→d→
a的顺序执行全规约操作,最终每个异构计算设备上均包含a0 b0 c0 d0、a1 b1 c1 d1、a2 b2 c2 d2、a3 b3 c3 d3,即目标模型的全部梯度参数,以此对本地目标模型进行参数更新,而后等待主机101下发下一次分布式训练的子任务的数据或结束训练的命令。
56.基于这种回环结构,可以实现对各异构计算设备上的部分梯度参数进行快速汇合得到全部梯度参数并对各异构计算设备上的目标模型进行参数更新。
57.除此以外,各异构计算设备之间也可以采用其他数据结构进行部分梯度参数的汇合,如各异构计算设备向主机101上传当前迭代次数的子任务的计算得到的部分梯度参数,由主机101进行汇合得到全部梯度参数后再下发到各异构计算设备上,利用全部梯度参数在各异构计算设备上完成对目标模型的参数更新。
58.除了数据结构外,全规约操作可以采用同步方式触发,也可以采用异步方式触发。如采用同步方式触发,则当主机101检测到各异构计算设备完成当前迭代次数的子任务的
计算后,向各异构计算设备下发全规约命令,各异构计算设备之间采用预设的数据结构执行全规约操作。如采用异步方式触发,则异构计算设备在完成当前迭代次数的子任务得到部分梯度参数后即触发全规约操作,该异构计算设备执行按照数据结构输出部分梯度参数,直至完成所有部分梯度参数的汇合。
59.在实际应用中,为保证分布式训练任务的稳定进行,优选地采用同步方式触发全规约操作。
60.实施例三结合本技术上述实施例提供的分布式训练系统,可以看出,在进行分布式训练中,主机101与异构计算设备之间以及异构计算设备与异构计算设备之间,通信数据量是巨大的。对此,在上述实施例的基础上,在本技术实施例提供的分布式训练系统中,异构计算设备执行被分配的子任务,并输出计算结果以更新模型训练任务的目标模型的模型参数,具体为:异构计算设备执行被分配的子任务,并将得到的计算结果进行cholesky分解得到的矩阵发送至另一异构计算设备或主机101以更新模型参数。
61.在具体实施中,在执行分布式训练的过程中,尤其是执行全规约操作的过程中,异构计算设备先将需要传输的数据进行cholesky分解再输出。
62.假设异构计算设备得到的计算结果为矩阵d,通过cholesky分解后可以得到:;其中,与互为转置矩阵。
63.在通信过程中,异构计算设备只需将矩阵发送至其他计算节点,为下三角矩阵,通信量相较于原始通信量减少一半。其他计算节点在接收到矩阵后,只需将其进行转置,即可得到,还原得到原始的矩阵d。
64.通过在执行分布式训练的过程中,异构计算设备将计算结果进行cholesky分解后将分解得到的矩阵发送到另一异构计算设备或主机101,显著减少了通信数据量,降低了分布式训练系统的通信负载,并在上述实施例提供的分布式训练系统的基础上进一步提升了分布式训练的效率。
65.实施例四基于上述实施例提供的分布式训练系统实现的多种异构计算设备的内存一致性,构建深度学习模型训练硬件结构拓扑。深度学习模型训练架构包括上层深度学习框架、优化算子、其他功能算子。其中,优化算法可以采用oneapi编程模型实现,具体可以使用data parallel c 语言,该编程模型可以运行在 cpu、gpu、fpga、专用加速器等多种异构计算设备之上。将优化算法定义为一个oneapi kernel,可供上层深度学习框架进行调用。
66.则分布式训练过程,具体包括:使用data parallel c 语言定义并初始化相关参数,包括:迭代前进步长、衰减系数、目标优化函数、模型梯度的滑动平均值(记为第一历史滑动平均值)、模型梯度与模型梯度的滑动平均值值之差的历史滑动平均值(记为第二历史滑动平均值)、时间步长、滑动平均参数等;编程实现oneapi kernel算子,输入模型训练迭代前进步长、衰减系数和目标优化
模型,初始化上述相关参数。其中,第一历史滑动平均值初始化为0,该参数决定模型训练过程中梯度下降方向;第二历史滑动平均值初始化为0,该参数与迭代前进步长共同决定模型训练过程中梯度下降步长;时间步长初始化为0;在各异构计算设备上执行子任务,得到的部分梯度参数进行汇合得到全部梯度参数,更新目标优化模型的参数,直至迭代得到的结果参数达到收敛条件。
67.优化算法包括固定学习率优化算法和自适应学习率优化算法。固定学习率优化算法主要有随机梯度下降法、mini-batch随机梯度下降法以及当前应用最为广泛的加动量momentum的mini-batch随机梯度下降法。这些算法主要的缺点在于需要手动调整学习率,经过多次手动调整学习率才能达到所需的训练效果。自适应学习率优化算法可以改良需要手动调整学习率的问题,这类算法包含adagrad、rmsprop、adam等。其中应用最为广泛的为adam优化算法,已经被嵌入到各类主流深度学习框架中。
68.下面以adam优化算法为例对本技术实施例提供的分布式训练系统的训练过程进行说明。
69.采用adam优化算法,首先设置迭代前进步长(stepsize),衰减系数(exponential decay rates for the moment estimatas,矩阵估计的指数衰减率)、、,,目标优化函数,初始参数向量(initial parameter vector),将第一历史滑动平均值初始化为0(initialize 1st moment vector),将第二历史滑动平均值初始化为0(initial 2nd moment vector),将时间步长初始化为0(initialize timestep)。
70.若结果参数(resulting parameters)未达到收敛条件(while
ꢀꢀ
not converged do),则执行下述操作:;;[该计算为将小批量(mini-batch)数据(其中,为数据,为数据对应的数据标签)输入到模型,根据模型输出与数据标签建立模型loss函数,并进行反向传播,计算模型参数的梯度];(按照动量形式更新);[按照rmsprop(root mean square propagation,一种自适应学习率方法)方式更新];(对进行修正)
;(对进行修正);其中,为迭代次数,为第次迭代计算得到的梯度参数,为第次迭代计算得到的第一历史滑动平均值,为第次迭代计算得到的第一历史滑动平均值,为第次迭代计算得到的第二历史滑动平均值,为第次迭代计算得到的第二历史滑动平均值,为第次迭代计算得到的第一历史滑动平均值的偏置校正值,为的次方,为的次方,为第次迭代计算得到的第二历史滑动平均值的偏置校正值,为第次迭代计算得到的结果参数。
[0071]
需要说明的是,在分布式训练过程中,各异构计算设备得到主机101分配的小批量数据进行优化运算得到的部分梯度参数,汇总后得到上述优化算法中当前迭代次数中的梯度参数、第一历史滑动平均值、第二历史滑动平均值以及结果参数。
[0072]
本技术实施例提供的分布式训练系统,在建立了主机101与异构计算设备、以及异构计算设备与异构计算设备之间的cxl互连的基础上,提供了一种采用采用oneapi编程模型实现模型优化算法,结合adam优化算法进行模型迭代优化的方案,可以实现对分布式训练任务的高效训练,能够满足大规模深度学习模型的训练要求,还可以结合本技术实施例三提供的异构计算设备间的通信方法进一步提高训练效率。
[0073]
实施例五在上述实施例的基础上,由于adam优化算法存在有时会错过全局最优解以及不收敛等问题,可以采用针对adam优化算法进行改进的adabelief优化算法进行训练。adabelief优化算法主要解决adam算法在学习率调整过程中,步长调整存在缺陷问题。然而,由于adabelief优化算法在迭代过程中包含了假设条件:在第t 1次迭代计算中,令且始终是正定的,其中,为迭代前进步长,为第次迭代计算得到的第二历史滑动平均值,为第t 1次迭代计算得到的第二历史滑动平均值。但adabelief优化算法并不能保证这一假设条件始终成立,即不能保证始终是正定的,这会导致算法收敛速率变慢或不能收敛的问题。
[0074]
为了克服adabelief优化算法的缺点,在上述实施例的基础上,本技术实施例进一步提供一种改进的adabelief优化算法——max-adabelief优化算法,改进原理在于在迭代过程中,始终选择第二历史滑动平均值的较大值(将第二历史滑动平均值和在第t-1
次迭代计算中求得的较大值中的较大值定义为),从而保证始终是正定的。
[0075]
则在本技术实施例提供的分布式训练系统中,首先输入迭代前进步长、衰减系数和,目标优化模型,初始化相关参数:第一历史滑动平均值,第二历史滑动平均值,模型训练时间步长。
[0076]
异构计算设备执行子任务后输出当前迭代次数对应的训练参数,并将训练参数在各异构计算设备之间执行全规约操作以合并训练参数,以利用合并后的训练参数更新目标模型,具体包括:在第t次迭代计算中,异构计算设备将接收到的小批量数据输入模型,根据模型输出值与数据标签建立目标模型的损失函数并进行反向传播,计算得到小批量数据的梯度;异构计算设备根据等式计算得到梯度的第一历史滑动平均值;异构计算设备根据等式计算得到梯度与第一历史滑动平均值的差值的第二历史滑动平均值;异构计算设备根据等式计算得到第一历史滑动平均值的偏置校正值;在各异构计算设备之间对偏置校正值执行全规约操作,得到合并后的偏置校正值;异构计算设备在第二历史滑动平均值和在第t-1次迭代计算中求得的较大值中选择较大值;在各异构计算设备之间对较大值执行全规约操作,得到合并后的第二历史滑动平均值;根据等式更新目标模型的结果参数;
其中,为数据,、为衰减系数,为的次方,为的次方,为迭代前进步长,为第t-1次迭代计算中求得的第一历史滑动平均值,为第t-1次迭代计算中求得的结果参数。
[0077]
执行上述循环,直至结果参数收敛。
[0078]
本技术实施例针对当前分布式训练系统存在主机101内存与计算设备内存的割裂问题、数据交互延迟大等问题,构建基于计算机快速链接协议的硬件互连平台来实现上述max-adabelief优化算法,通过在每次迭代运算中均在当前迭代次数得到的第二历史滑动平均值和上一次迭代得到的第二历史滑动平均值中选择较大值,保证adabelief优化算法执行过程中始终满足正定条件,以保证能够达到收敛且能快速达到收敛,从而既能解决异构计算设备之间的缓存一致性问题,有效地解决异构计算设备之间的数据交互过程中存在的延迟以及带宽问题,又能保证分布式训练任务快速达到收敛,更能满足大规模深度学习模型的训练要求,结合本技术实施例三提供的异构计算设备间的通信方法可以进一步提高训练效率。
[0079]
上文详述了分布式训练系统方法对应的各个实施例,在此基础上,本技术还公开了与上述分布式训练系统方法对应的分布式训练方法、分布式训练装置、设备及可读存储介质。
[0080]
实施例六图4为本技术实施例提供的一种分布式训练方法的流程图。
[0081]
如图4所示,本技术实施例提供的分布式训练方法包括:s401:预先基于计算机快速链接协议搭建主机与异构计算设备之间的计算机快速链接以及各异构计算设备之间的计算机快速链接。
[0082]
s402:将模型训练任务划分为子任务,基于计算机快速链接将子任务的训练数据分配至各异构计算设备,以使异构计算设备执行被分配的子任务并输出计算结果以更新模型训练任务的目标模型的模型参数。
[0083]
可选的,在本技术实施例提供的分布式训练方法中,s402中将模型训练任务划分为子任务,基于计算机快速链接将子任务的训练数据分配至各异构计算设备,具体为:根据各异构计算设备的类型将模型训练任务划分为子任务,并按照异构计算设备的类型分配子任务。
[0084]
可选的,在本技术实施例提供的分布式训练方法中,根据各异构计算设备的类型将模型训练任务划分为子任务,并按照异构计算设备的类型分配子任务,具体为:将目标模型的全连接层对应的子任务分配至图形处理器,将目标模型的卷积层对应的子任务分配至现场可编程逻辑门阵列设备,将目标模型的激活层对应的子任务分配至专用集成电路设备和/或处理器分散处理单元设备。
[0085]
进一步的,在本技术实施例提供的分布式训练方法中,s402中异构计算设备执行被分配的子任务并输出计算结果以更新模型训练任务的目标模型的模型参数,具体为:异构计算设备执行被分配的子任务,并将得到的计算结果进行cholesky分解得到的矩阵发送至另一异构计算设备或主机以更新模型参数。
[0086]
进一步的,在本技术实施例提供的分布式训练方法中,s402中将模型训练任务划分为子任务,基于计算机快速链接将子任务的训练数据分配至各异构计算设备,具体包括:将目标模型的初始模型加载至各异构计算设备;将目标模型的训练数据集拆分为多组小批量数据;将小批量数据分发至各异构计算设备;s402中异构计算设备执行被分配的子任务并输出计算结果以更新模型训练任务的目标模型的模型参数,具体为:异构计算设备执行子任务后输出当前迭代次数对应的训练参数,并将训练参数在各异构计算设备之间执行全规约操作以合并训练参数,以利用合并后的训练参数更新目标模型。
[0087]
进一步的,在本技术实施例提供的分布式训练方法中,异构计算设备执行子任务后输出当前迭代次数对应的训练参数,并将训练参数在各异构计算设备之间执行全规约操作以合并训练参数,以利用合并后的训练参数更新目标模型,具体为:异构计算设备执行子任务后并得到当前迭代次数对应的训练参数后,当接收到主机在检测到各异构计算设备均完成当前迭代次数的计算后发出的全规约命令后,在各异构计算设备之间执行全规约操作以合并训练参数,以利用合并后的训练参数更新目标模型。
[0088]
进一步的,在本技术实施例提供的分布式训练方法中,异构计算设备执行子任务后输出当前迭代次数对应的训练参数,并将训练参数在各异构计算设备之间执行全规约操作以合并训练参数,以利用合并后的训练参数更新目标模型,具体包括:在第t次迭代计算中,异构计算设备将接收到的小批量数据输入模型,根据模型输出值与数据标签建立目标模型的损失函数并进行反向传播,计算得到小批量数据的梯度;异构计算设备根据等式计算得到梯度的第一历史滑动平均值;异构计算设备根据等式计算得到梯度与第一历史滑动平均值的差值的第二历史滑动平均值;异构计算设备根据等式计算得到第一历史滑动平均值的偏置校正值;在各异构计算设备之间对偏置校正值执行全规约操作,得到合并后的偏置校正值;异构计算设备在第二历史滑动平均值和在第t-1次迭代计算中求得的较大值
中选择较大值;在各异构计算设备之间对较大值执行全规约操作,得到合并后的第二历史滑动平均值;根据等式更新目标模型的结果参数;其中,为数据,、为衰减系数,为的次方,为的次方,为迭代前进步长,为第t-1次迭代计算中求得的第一历史滑动平均值,为第t-1次迭代计算中求得的结果参数。
[0089]
由于分布式训练方法部分的实施例与分布式训练系统部分的实施例相互对应,因此分布式训练方法部分的实施例请参见分布式训练系统部分的实施例的描述,这里暂不赘述。
[0090]
实施例七图5为本技术实施例提供的一种分布式训练装置的结构示意图。
[0091]
如图5所示,本技术实施例提供的分布式训练装置包括:部署单元501,用于预先基于计算机快速链接协议搭建主机与异构计算设备之间的计算机快速链接以及各异构计算设备之间的计算机快速链接;控制单元502,用于将模型训练任务划分为子任务,基于计算机快速链接将子任务的训练数据分配至各异构计算设备,以使异构计算设备执行被分配的子任务并输出计算结果以更新模型训练任务的目标模型的模型参数。
[0092]
由于分布式训练装置部分的实施例与分布式训练系统部分的实施例相互对应,因此分布式训练装置部分的实施例请参见分布式训练系统部分的实施例的描述,这里暂不赘述。
[0093]
实施例八图6为本技术实施例提供的一种分布式训练设备的结构示意图。
[0094]
如图6所示,本技术实施例提供的分布式训练设备包括:存储器610,用于存储计算机程序611;处理器620,用于执行计算机程序611,该计算机程序611被处理器620执行时实现如上述任意一项实施例所述分布式训练方法的步骤。
[0095]
其中,处理器620可以包括一个或多个处理核心,比如3核心处理器、8核心处理器等。处理器620可以采用数字信号处理dsp(digital signal processing)、现场可编程门阵列fpga(field-programmable gate array)、可编程逻辑阵列pla(programmable logic array)中的至少一种硬件形式来实现。处理器620也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称中央处理器cpu(central processing unit);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在
一些实施例中,处理器620可以集成有图像处理器gpu(graphics processing unit),gpu用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器620还可以包括人工智能ai(artificial intelligence)处理器,该ai处理器用于处理有关机器学习的计算操作。
[0096]
存储器610可以包括一个或多个可读存储介质,该可读存储介质可以是非暂态的。存储器610还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。本实施例中,存储器610至少用于存储以下计算机程序611,其中,该计算机程序611被处理器620加载并执行之后,能够实现前述任一实施例公开的分布式训练方法中的相关步骤。另外,存储器610所存储的资源还可以包括操作系统612和数据613等,存储方式可以是短暂存储或者永久存储。其中,操作系统612可以为windows。数据613可以包括但不限于上述方法所涉及到的数据。
[0097]
在一些实施例中,分布式训练设备还可包括有显示屏630、电源640、通信接口650、输入输出接口660、传感器670以及通信总线680。
[0098]
本领域技术人员可以理解,图6中示出的结构并不构成对分布式训练设备的限定,可以包括比图示更多或更少的组件。
[0099]
本技术实施例提供的分布式训练设备,包括存储器和处理器,处理器在执行存储器存储的程序时,能够实现如上所述的分布式训练方法,效果同上。
[0100]
实施例九需要说明的是,以上所描述的装置、设备实施例仅仅是示意性的,例如,模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
[0101]
另外,在本技术各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
[0102]
集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个可读存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,执行本技术各个实施例所述方法的全部或部分步骤。
[0103]
为此,本技术实施例还提供一种可读存储介质,该可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如分布式训练方法的步骤。
[0104]
该可读存储介质可以包括:u盘、移动硬盘、只读存储器rom(read-only memory)、随机存取存储器ram(random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0105]
本实施例中提供的可读存储介质所包含的计算机程序能够在被处理器执行时实现如上所述的分布式训练方法的步骤,效果同上。
[0106]
以上对本技术所提供的一种分布式训练系统、方法、装置、设备及可读存储介质进行了详细介绍。说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的分布式训练方法、分布式训练装置、分布式训练设备及可读存储介质而言,由于其与实施例公开的分布式训练系统相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本技术原理的前提下,还可以对本技术进行若干改进和修饰,这些改进和修饰也落入本技术权利要求的保护范围内。
[0107]
还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

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

相关文献