CN115688917A - 神经网络模型的训练方法、装置、电子设备及存储介质 - Google Patents

神经网络模型的训练方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN115688917A
CN115688917A CN202211405578.6A CN202211405578A CN115688917A CN 115688917 A CN115688917 A CN 115688917A CN 202211405578 A CN202211405578 A CN 202211405578A CN 115688917 A CN115688917 A CN 115688917A
Authority
CN
China
Prior art keywords
tensor
sub
fusion
tensors
training
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.)
Pending
Application number
CN202211405578.6A
Other languages
English (en)
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 Baidu Netcom Science and Technology Co Ltd
Original Assignee
Beijing Baidu Netcom Science and Technology Co Ltd
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 Baidu Netcom Science and Technology Co Ltd filed Critical Beijing Baidu Netcom Science and Technology Co Ltd
Priority to CN202211405578.6A priority Critical patent/CN115688917A/zh
Publication of CN115688917A publication Critical patent/CN115688917A/zh
Pending legal-status Critical Current

Links

Images

Abstract

本公开提供了神经网络模型的训练方法、装置、电子设备及存储介质,涉及及机器学习领域,尤其涉及深度学习技术领域。具体实现方案为:基于行为一致的多个子张量,构建融合张量并将融合张量存储至预设显存中;构建融合张量与子张量间的映射关系;在需要使用目标子张量的情况下,基于映射关系从融合张量中提取目标子张量以训练神经网络模型;在需要使用融合张量的情况下,从预设显存中提取融合张量以训练神经网络模型。本公开将具有同一行为的子张量进行融合,以融合张量为单位进行处理,可减少计算量,节约计算资源。而且相比通信融合方式,能够减少占用的显存。并且,在需要的情况下,也可以对子张量进行单独处理,使得模型训练比较灵活。

Description

神经网络模型的训练方法、装置、电子设备及存储介质
技术领域
本公开涉及人工智能领域,尤其涉及深度学习技术领域。
背景技术
在深度学习领域中,模型训练是一个先初始化模型参数,然后根据训练数据集调整模型参数以获得损失最低的权重和偏差的迭代收敛过程。每轮迭代主要包括前向传播、反向传播、参数更新三个阶段;在分布式训练中,还需要在合适的位置插入相关的通信操作,以保障训练效率。
神经网络模型的训练需要对大量的数据进行处理,并且需要多种运算方法,如何有效利用计算资源提高训练效率是业内关注的问题。
发明内容
本公开提供了一种神经网络模型的训练方法、装置、电子设备及存储介质。
根据本公开的一方面,提供了一种神经网络模型的训练方法,包括:
基于行为一致的多个子张量,构建融合张量并将融合张量存储至预设显存中;
构建融合张量与子张量间的映射关系;
在需要使用目标子张量的情况下,基于映射关系,从融合张量中提取目标子张量,并基于目标子张量训练神经网络模型;
在需要使用融合张量的情况下,从预设显存中提取融合张量,并基于融合张量训练神经网络模型。
根据本公开的另一方面,提供了一种神经网络模型的训练装置,包括:
融合模块,用于基于行为一致的多个子张量,构建融合张量并将融合张量存储至预设显存中;
构建模块,用于构建融合张量与子张量间的映射关系;
第一训练模块,用于在需要使用目标子张量的情况下,基于映射关系,从融合张量中提取目标子张量,并基于目标子张量训练神经网络模型;
第二训练模块,用于在需要使用融合张量的情况下,从预设显存中提取融合张量,并基于融合张量训练神经网络模型。
根据本公开的另一方面,提供了一种电子设备,包括:
至少一个处理器;以及,
与该至少一个处理器通信连接的存储器;其中,
该存储器存储有可被该至少一个处理器执行的指令,该指令被该至少一个处理器执行,以使该至少一个处理器能够执行本公开中任一实施例的方法。
根据本公开的另一方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,其中,该计算机指令用于使该计算机执行根据本公开中任一实施例的方法。
根据本公开的另一方面,提供了一种计算机程序产品,包括计算机程序,该计算机程序在被处理器执行时实现根据本公开中任一实施例的方法。
本公开实施例中,本公开将具有同一行为的子张量进行融合,以融合张量为单位进行处理,可减少计算量,节约计算资源。而且相比通信融合方式,能够减少占用的显存。并且,在需要的情况下,也可以对子张量进行单独处理,使得模型训练比较灵活。
应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
附图用于更好地理解本方案,不构成对本公开的限定。其中:
图1是根据本公开一实施例的一种神经网络模型的训练方法的流程示意图;
图2(a)是根据本公开一实施例的多个子张量的排列顺序示意图;
图2(b)是根据本公开一实施例的张量组的结构示意图;
图3(a)-图3(f)是根据本公开一实施例的构建融合张量的示意图;
图4是根据本公开一实施例的一种神经网络模型的训练方法的场景示意图;
图5(a)是根据本公开另一实施例的一种神经网络模型的训练方法的场景示意图;
图5(b)是根据本公开另一实施例的具体时序图;
图5(c)是根据本公开另一实施例的参数更新阶段的场景示意图;
图6是根据本公开一实施例的一种神经网络模型的训练装置的结构示意图;
图7是根据本公开另一实施例的一种神经网络模型的训练装置结构示意图;
图8是用来实现本公开实施例的一种神经网络模型的训练方法的电子设备的框图。
具体实施方式
以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
传统的张量融合方法主要分为两种:层张量融合(Layer&Tensor fusion)和通信融合(Fused AllReduce)。其中:
1)针对层张量融合而言,层张量融合是基于对层间的横向或纵向合并使得层数量大大减少,以实现高效轻便的部署推理能力。其中,横向合并多指将卷积、偏置和激活层合并成一个CBR(convolution bias ReLU,融合)结构,纵向合并是指把结构相同但权值不同的层合并成一个CBR层;合并后的CBR层只需要启动一次内核来完成计算。
神经网络模型在训练之后,需要推理部署,即将一个预先训练好的神经网络模型部署到实际业务场景中,如图像分类、物体检测、在线翻译等。由于层张量融合仅适用于推理部署阶段,且需要针对不同的组网结构定制融合方案,因此层张量融合不具备通用性。
2)针对通信融合而言,通信融合是在分布式训练过程中插入通信操作,可实现在多机间完成梯度同步以保障训练效率。为了充分打满网络通信带宽、缩短通信时间,通信融合方案实现了在通信前将多个子张量融合成一个张量,完成通信后再将该张量还原成互相独立的多个子张量。
通信融合虽然可以提升分布式训练的通信性能,但是会在每轮迭代中引入多余的融合(concat)/还原(split)操作,会影响整体的训练效率。另外,临时构建的张量融合操作会在原有张量的基础上额外申请一份显存,即使通信结束后及时释放该显存,也会增加训练的峰值显存。
有鉴于此,本着提高训练效率的目的,本公开实施例中提供了一种神经网络模型的训练方法。该方法提出了一种特殊的张量融合的结构和流程,在具备通用性的同时提高了模型训练的效率。下面结合图1对本公开实施例提供的一种神经网络模型的训练方法进行说明。
如图1所示,为本公开一实施例提供的一种神经网络模型的训练方法的流程示意图,包括以下内容:
S101,基于行为一致的多个子张量,构建融合张量并将融合张量存储至预设显存中。
其中,子张量的类型可以为模型参数(param)、梯度(grad)、动量(momentum)、模型状态(modelstates)等。例如,一个卷积层的模型参数可以为一个子张量。每个模型参数对应的梯度也可以分别作为一个子张量。
S102,构建融合张量与子张量间的映射关系。
也即,可对融合张量进一步封装构建张量组,张量组中需要包含子张量映射到融合张量中的映射关系,该映射关系可定义为子张量在融合张量中的位置编码。
S103,在需要使用目标子张量的情况下,基于映射关系,从融合张量中提取目标子张量,并基于目标子张量训练神经网络模型。
S104,在需要使用融合张量的情况下,从预设显存中提取融合张量,并基于融合张量训练神经网络模型。
由此,本公开实施例中,将具有同一行为的子张量进行融合,可以在需要使用融合张量的情况下,以融合张量为单位进行处理,从而相对于每个子张量单独处理,能够减少对核的调用次数,减少计算量,节约计算资源,从而提高训练效率。此外,本公开实施例中张量组中维护了子张量在融合张量中的映射关系,对于每个子张量,可沿用之前的方式单独处理,不会影响模型训练的流程。相比于层次融合的方案,无需关心具体的组网结构,因此具有更好的扩展性和通用性。相比于通信融合的方案,本公开实施例中,无需在每次需要使用融合张量时,都临时生成融合张量,从而进一步减少计算量,节约计算资源。而且,无需占用额外的显存临时缓存融合张量,能够提高显存的利用率。
为便于理解,下面对本公开实施例涉及的一些方面分别进行说明。
针对S101中基于行为一致的多个子张量,构建融合张量。在一些实施例中,可基于以下方式确定行为一致的多个子张量,包括:
在多个子张量的运算行为一致的情况下,确定多个子张量的行为一致;和/或,
在多个子张量的通信行为一致的情况下,确定多个子张量的行为一致。
本公开实施例中,将运算行为一致的子张量构建为一个融合张量,将通信行为一致的子张量构建为另一个融合张量,在执行这些运算行为或通信行为的时候,只需要多个子张量调用一次内核,即可完成操作。无需每个子张量单独调用一次内核,进而能够提高神经网络的训练效率。
举例来说,在神经网络模型训练过程中存在参数更新操作,而该更新操作与具体的参数无关,也即各种模型参数的更新方式基本一致,因此可以将用于参数更新操作的{参数A,参数B,…,参数N}确定为运算行为一致,并将{参数A,参数B,…,参数N}进行融合处理,获取用于参数更新的融合张量。
除了前述的参数更新行为外,优化器中还存在一些其他的运算行为一致的情况。例如,还可以包括:梯度同步行为(例如分布式训练中需要算梯度均值)、梯度爆炸检查行为、梯度消失检查行为等。
其中,前述的梯度爆炸和梯度消失是导致优化器不稳定的两种现象。其中,在神经网络模型训练过程中,优化器使用梯度得到神经网络参数更新的方向和幅度,进而在正确的方向上以合适的幅度更新模型参数。在深层网络或递归神经网络中,更新过程可能会累积得到一个非常大的梯度,过大的梯度会大幅度更新模型参数,进而导致模型参数难以收敛,神经网络模型不稳定。从深层角度来讲,不同层的学习速度差异很大,梯度爆炸表现为网络中靠近输出的层学习情况很好,而靠近输入的层学习得很慢,存在训练时间很久的情况,前几层的权值和刚开始随机初始化的值基本一致。在极端情况下,其模型参数权重的值变得特别大,以至于结果会显示NaN值,其中,NaN表示无穷值与非数值。
而梯度消失的表现为:离输出层越近的参数,梯度越大,变成了主要在学习的参数;而远离输出层的参数只能在接近0的梯度以一个非常小的速率进行学习。这种情况相当于一个恶性循环。因为靠近输出层节点的值都是由学习速率慢的层执行前向运算得到的,而前向层因为学习速率慢,所以参数未必学到特征,所以后面层的输入随机性会比较强。这样相当于在一个有随机性的数据上进行学习,即使学习速率再快,最后也未必能真的学到有用的特征。这一过程又会让前面层的参数更难学到有效的值。
因此,无论梯度爆炸还是梯度消失都需要进行检查。检查的方式可实施为调用梯度爆炸\消失检查算子(check_inf_and_scaleop)所对应的内核,基于本公开实施例提供的张量融合方式,可避免对每个梯度分别调用梯度爆炸\消失检查所对应的并行处理函数(其对应至少一个Kernel)。具体地,采用本公开实施例中的融合张量,能够实现将梯度进行汇总,获取梯度组,再基于梯度组调用其对应的Kernel,进而获取到检查结果。
本公开实施例中,梯度爆炸检查和梯度消失检查与具体的模型参数无关,故此整个神经网络模型的参数均可融合为一个融合张量,从而可以有效地提高检查效率,也即在梯度爆炸或梯度消失检查时,仅需要调用一次内核,而无需每个模型参数分别调用一次内核,其他的梯度同步、参数更新情况类似。因此将具有上述运算行为的子张量进行融合,能够降低内核的调用次数,提高模型的训练效率,降低资源消耗。
在一些实施例中,行为一致也可以理解为不同设备间的中央处理器(centralprocessing unit,简称CPU)拷贝操作。以图像内容自动编码器(Context Auto Encoder,CAE)前向传播中的指数移动平均(exponential moving average,EMA)组件为例,将需要EMA的子张量融合为一个融合张量,则可以避免每个子张量单独执行EMA操作,从而节约资源,提高模型的训练效率。
在另一些实施例中,经大量调研发现,运算行为一致或通信行为一致的子张量具有类型和设备一致的特点。由此可以获取各子张量对应的类型和设备;将类型和设备相同的多个子张量,确定为行为一致的多个子张量。
其中各子张量对应的类型可以分为两大类型:浮点型和整型。其中浮点型按照精度不同,又分为16位、32位以及64位;整型则根据有无符号位以及精度,又分为8位无符号整型、8位有符号整型、16位有符号整型、32位有符号整型以及64位有符号整型。每个类型又可以基于存储张量的设备分为CPU以及图形处理器(graphics processing unit,GPU)。
为了提高神经网络模型训练过程中运算的准确性,每个步骤所需的张量类型应该相同,所以可以将类型和设备相同的子张量确定为行为一致。其中基于张量的类型和设备确定行为一致可以由计算机自主确定,也可以由用户依据需求指定,本公开实施例对此不进行限定。
本公开实施例中,将类型和设备相同的子张量确定为行为一致,而且行为一致和模型的具体组网结构无关,针对任意的组网结构而言,本公开实施例更多的是考虑子张量的行为是否一致,即可完成对相同行为的子张量的融合,由此达到节约计算资源,并有效提高神经网络模型的训练效率的目的。由于无需考虑组网结构,本公开实施例更具有扩展性和通用性。
针对S102,其中的映射关系可以为多个子张量在融合张量中的排列顺序,如图2(a)所示,子张量可以为单个的张量形式,单个张量如图2(a)中的子张量1所示。子张量也可以为数组的形式,数组的形式如图2(a)中的子张量2所示。构建出的张量组不仅可以包含子张量在融合张量中的排列位置(即映射关系),也可以包含各子张量具备的属性。举例来说,子张量的属性可包括子张量是否可训练,是否可切分等,有了这些属性,可便于在模型训练的过程中基于这些属性进行训练。
其张量组的结构如图2(b)所示,张量列表中存在多个子张量,与GPU中的融合张量的对应关系,其双向箭头表示子张量与融合张量间的映射关系。张量组中包括子张量映射到融合张量的映射关系、子张量的设备、类型、属性等信息,在神经网络的融合张量需要重构的情况下,可以基于该记录进行重构。
为了缩短模型训练阶段的耗时,本公开实施例中,预设显存为GPU显存,在模型训练的初始化阶段完成融合张量的构建,可包括以下操作:基于需要融合的多个子张量中各子张量的数据量,确定融合张量所需的显存容量;释放多个子张量中各子张量占用的显存容量,并将融合张量储存至预设显存中。
以模型参数为例,在模型训练之前的初始化阶段,先构建出参数列表如图3(a)所示,该参数列表可以由用户根据需求指定,也可以由计算机按照一定的规则自动生成。其中一定的规则可以是自动识别类型和设备相同的子张量为行为一致的子张量,并基于这些行为一致的子张量,构建参数列表。需要注意的是,同一神经网络模型采用的参数列表可以为一个也可以为多个,可根据实际需求确定参数列表的数量,本公开实施例对此不进行限定。针对每个参数列表而言,对参数列表中的子张量进行计算,计算其子张量的大小,并记录子张量的排列顺序。基于记录的排列顺序和子张量的大小,在GPU内部申请能够容纳融合参数(即融合张量)的显存,同时在CPU中完成对融合参数的初始化,即在CPU中定义好该参数列表的融合参数的唯一标识,申请该融合参数所需的存储空间。完成初始化后,如图3(b)中箭头方向所示,基于排列顺序,将参数列表中各个子张量按在参数列表的排列顺序拷贝到CPU中,完成融合参数的构建;之后为了节约GPU的显存,对GPU中的显存进行释放。释放GPU显存的过程如图3(c)所示,在CPU中构建完融合参数后,对GPU中子张量占用的显存进行释放,虚线部分表示清空GPU中子张量占用的显存;为了便于模型训练,如图3(d)所示,将融合参数储存至GPU中存储。拷贝完成后,对CPU中的显存进行释放,即如图3(e)所示将CPU中的融合参数所占用的显存进行释放。完成上述操作后,构建出的参数组(即张量组)以便于得到映射关系。如图3(f)所示,其中双向箭头表示子张量与GPU中融合参数的映射关系。其中,GPU的个数可以为多个,也可以为一个,在GPU的个数为多个的情况下,则需要将融合参数在多个GPU间进行同步。
本公开实施例中,将对张量进行融合的步骤放在模型训练的初始化阶段,并在后续训练过程中对融合张量进行保留,无需多次融合以及释放融合张量,保证整个模型训练能够基于融合张量提高训练效率,还能够基于映射关系合理训练模型。
此外,上述融合张量的构建操作除了可以应用在模型初始化阶段,也可以应用于模型训练最开始的时候。
针对S103中关于目标子张量,在需要使用目标子张量的情况下,基于映射关系,从融合张量中提取目标子张量,并基于目标子张量训练神经网络模型,可实施为:在融合张量中的部分子张量执行目标行为的情况下,基于映射关系,从融合张量中提取出部分子张量;调用目标行为对应的内核处理目标子张量,得到处理结果;基于处理结果对神经网络模型进行训练。
其中,目标子张量可以为一个子张量,也可以为多个子张量,实施时,可依据训练需求确定。
提取目标子张量的示例,例如神经网络结构如图4所示,其神经网络结构中存在多个层,有输入层、全连接层、激活层、偏置层、输出层等,其中卷积层还分为多种卷积核。可以将图4中各层分别作为子张量融合为一个融合张量。在需要使用目标子张量的情况下,可从中提取该目标子张量进行模型训练。举例来说,当对3×3卷积层进行卷积运算的情况下,则可以基于张量组中的映射关系对3×3卷积层所对应的子张量实现调用,以完成神经网络模型的训练过程。
本公开实施例中,对基于映射关系构建出的张量组,可以实现对子张量进行单独调用,使本公开更加具备通用性。
针对S104中的融合张量,在融合张量中的各子张量执行同一行为的情况下,确定该同一行为对应的内核;调用该内核执行该同一行为,得到执行结果;基于执行结果对神经网络模型进行训练。
继续沿用图4的神经网络模型结构,以分布式训练为例进行说明。将训练样本数据平均分为多个批次,如图5(a)所示,将每个批次划分为多个子批次,每个GPU负责其中一个子批次的训练。由于每个GPU负责一个子批次的数据,其获取的子梯度可能存在差异,所以需要梯度同步。
梯度同步阶段主要进行了两步操作,分别是求梯度均值和AllReduce通信。基于梯度同步的方式,进而对模型参数进行反向更新。由于梯度均值与具体的模型参数无关,因此可以使用梯度融合的方式将图4中所有神经网络层的子梯度都融合为一个融合张量(即图5(a)中的梯度组)。可启动一个Kernel求梯度均值,避免了对多个梯度实现多次调用Kernel,减少了启动Kernel的次数,提高了训练效率。
减少内核调用次数的对比图如图5(b)所示,在未使用融合张量的情况下,每个子梯度都会调用一次内核,而在使用融合张量的情况下,仅需调用一次内核,由此加速模型训练速度,节约了训练时间。
在一些可能的实施方式中,可在神经网络模型初始化阶段,基于本公开实施例提供的方式构建出参数组、梯度组、动量组、主参数组。如图5(c)展现了本公开实施例提出的张量融合策略下参数更新计算阶段的group(张量组),包括训练参数group、梯度group、动量group和master参数group。在选定的优化器下,不同的参数有相同的更新公式,即行为是一致的,因此直接使用fused_tensor(融合张量)进行计算,可以在计算量保持不变的情况下,将优化器计算op(融合算子)的调用次数从O(N)降至O(1)。
在优化器计算节点,除了前述的梯度爆炸/消失检查、参数更新之外,其他具有相同行为的运算方式也适用,例如梯度裁剪。
举例来讲,梯度nan/inf(爆炸/消失)检查是需要拿到所有参数梯度的nan/inf信息,若每个参数分别调用check_inf_and_scaleop并在最后将检查结果汇总到一起,直接用fused_param(融合张量)调用一次相关op即可达到一样的效果。
相同的,梯度裁剪是基于某个范数将所有的参数梯度限制在某个范围之内;其中范数计算和梯度压缩涉及到的pow/elementwise_add/scale等op,直接用fusedparam完成计算会降低性能损耗。具体时序图类似于图5(b),这里不再赘述。
综上,基于本公开实施例可实现在不同子张量实行同一行为的情况下,可以实现对内核的单次调用,用于完成对神经网络模型进行分布式训练。实现了将对内核的启动的次数由N次降至1次,有效节省了不必要的张量读写耗时和启动内核耗时。
需要说明的是,本公开方案适用于多种领域的模型预训练阶段,举例来说,适用于自然语言处理(Natural Language Processing,NLP)、计算机视觉(compute vision,CV)、蛋白质结构预测等模型预训练阶段。
在自然语言处理领域中,本公开可适用于NLP中的生成式预训练模型(GenerativePre-Training,GPT)、知识增强的语义表示模型(Enhanced Language Representationwith Informative Entities,ERNIE)、专家混合网络(Mixture of Experts networks,MOE)等模型。
无论采用何种语言模型,本公开实施例中,可以在采用多张GPU卡并行训练语言模型的阶段,针对每个模型参数,由每张GPU卡产生的子梯度分别作为子张量,得到梯度组,即关于梯度的融合张量。由此,可以在反向传播,计算梯度均值的时候,采用梯度组调用一次内核计算梯度均值。
类似的,在进行梯度爆炸/消失检查的时候,可以调用一次相关的内核对梯度值进行检查。
针对该模型参数,在参数更新的时候,由于采用同一梯度均值,因此可调用一次内核完成参数更新,然后同步给各个GPU卡即可,由此可减少计算量,降低性能损耗。
同理,在计算机视觉领域中,本公开适用于CV中的计算机辅助工程(ComputerAided Engineering,CAE),飞桨大规模分类(PaddlePaddle Large ScaleClassification,PLSC)等模型。
无论采用何种视觉模型,本公开实施例中,可以在采用多张GPU卡并行训练语言模型的阶段,针对每个模型参数,由每张GPU卡产生的子梯度分别作为子张量,得到梯度组,即关于梯度的融合张量。由此,可以在反向传播,计算梯度均值的时候,采用梯度组调用一次内核计算梯度均值。
类似的,在进行梯度爆炸/消失检查的时候,可以调用一次相关的内核对梯度值进行检查。
针对该模型参数,在参数更新的时候,由于采用同一梯度均值,因此可调用一次内核完成参数更新,然后同步给各个GPU卡即可,由此可减少计算量,降低性能损耗。
在蛋白质预测领域,本公开可适用于阿尔法折叠(AlphaFlod2)等模型。该模型基于序列对蛋白结构预测。
无论采用何种蛋白质预测模型,本公开实施例中,可以在采用多张GPU卡并行训练语言模型的阶段,针对每个模型参数,由每张GPU卡产生的子梯度分别作为子张量,得到梯度组,即关于梯度的融合张量。由此,可以在反向传播,计算梯度均值的时候,采用梯度组调用一次内核计算梯度均值。
类似的,在进行梯度爆炸/消失检查的时候,可以调用一次相关的内核对梯度值进行检查。
针对该模型参数,在参数更新的时候,由于采用同一梯度均值,因此可调用一次内核完成参数更新,然后同步给各个GPU卡即可,由此可减少计算量,降低性能损耗。
基于相同的技术构思,本公开实施例还提供了一种神经网络模型的训练装置,如图6所示,包括:
融合模块601,用于基于行为一致的多个子张量,构建融合张量并将融合张量存储至预设显存中;
构建模块602,用于构建融合张量与子张量间的映射关系;
第一训练模块603,用于在需要使用目标子张量的情况下,基于映射关系,从融合张量中提取目标子张量,并基于目标子张量训练神经网络模型;
第二训练模块604,用于在需要使用融合张量的情况下,从预设显存中提取融合张量,并基于融合张量训练神经网络模型。
在一些实施例中,在图6的基础上,如图7所示,还包括:
第一张量集合确定模块701,用于基于以下方式确定行为一致的多个子张量:
在多个子张量的运算行为一致的情况下,确定多个子张量的行为一致;和/或,
在多个子张量的通信行为一致的情况下,确定多个子张量的行为一致。
在一些实施例中,在图6的基础上,如图7所示,还包括:
第二张量集合确定模块702,用于基于以下方式确定行为一致的多个子张量:
获取各子张量对应的类型和设备;
将类型和设备相同的多个子张量,确定为行为一致的多个子张量。
在一些实施例中,第二训练模块604,用于:
在融合张量中的各子张量执行同一行为的情况下,确定同一行为对应的内核;
调用内核执行同一行为,得到执行结果;
基于执行结果训练神经网络模型。
在一些实施例中,第一训练模块603,用于:
在融合张量中的目标子张量执行目标行为的情况下,基于映射关系,从融合张量中提取出目标子张量;
调用目标行为对应的内核处理目标子张量,得到处理结果;
基于处理结果训练神经网络模型。
在一些实施例中,预设显存为GPU显存,融合模块601在模型训练的初始化阶段执行以下操作,包括:
基于多个子张量中各子张量的数据量,确定融合张量所需的显存容量;
释放多个子张量中各子张量占用的显存容量,并将融合张量储存至预设显存中。
在一些实施例中,多个子张量的运算行为,包括:梯度同步行为、梯度爆炸检查行为、梯度消失检查行为、参数更新行为。
本公开实施例的装置的各模块、子模块的具体功能和示例的描述,可以参见上述方法实施例中对应步骤的相关描述,在此不再赘述。
根据本公开的实施例,本公开还提供了一种电子设备、一种可读存储介质和一种计算机程序产品。
本公开的技术方案中,所涉及的用户个人信息的获取,存储和应用等,均符合相关法律法规的规定,且不违背公序良俗。
图8示出了可以用来实施本公开的实施例的示例电子设备800的示意性框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字助理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
如图8所示,设备800包括计算单元801,其可以根据存储在只读存储器(ROM)802中的计算机程序或者从存储单元808加载到随机访问存储器(RAM)803中的计算机程序,来执行各种适当的动作和处理。在RAM803中,还可存储设备800操作所需的各种程序和数据。计算单元801、ROM802以及RAM803通过总线804彼此相连。输入/输出(I/O)接口805也连接至总线804。
设备800中的多个部件连接至I/O接口805,包括:输入单元806,例如键盘、鼠标等;输出单元807,例如各种类型的显示器、扬声器等;存储单元808,例如磁盘、光盘等;以及通信单元809,例如网卡、调制解调器、无线通信收发机等。通信单元809允许设备800通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
计算单元801可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元801的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。计算单元801执行上文所描述的各个方法和处理,例如神经网络模型的训练方法。例如,在一些实施例中,神经网络模型的训练方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元808。在一些实施例中,计算机程序的部分或者全部可以经由ROM802和/或通信单元809而被载入和/或安装到设备800上。当计算机程序加载到RAM803并由计算单元801执行时,可以执行上文描述的神经网络模型的训练方法的一个或多个步骤。备选地,在其他实施例中,计算单元801可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行神经网络模型的训练方法。
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、负载可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入、或者触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,也可以为分布式系统的服务器,或者是结合了区块链的服务器。本公开实施例可采用服务器执行神经网络模型的训练方法。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。

Claims (17)

1.一种神经网络模型的训练方法,包括:
基于行为一致的多个子张量,构建融合张量并将所述融合张量存储至预设显存中;
构建所述融合张量与所述子张量间的映射关系;
在需要使用目标子张量的情况下,基于所述映射关系,从所述融合张量中提取所述目标子张量,并基于所述目标子张量训练神经网络模型;
在需要使用所述融合张量的情况下,从所述预设显存中提取所述融合张量,并基于所述融合张量训练所述神经网络模型。
2.根据权利要求1所述的方法,还包括:基于以下方式确定所述行为一致的多个子张量:
在所述多个子张量的运算行为一致的情况下,确定所述多个子张量的行为一致;和/或,
在所述多个子张量的通信行为一致的情况下,确定所述多个子张量的行为一致。
3.根据权利要求1所述的方法,还包括:基于以下方式确定所述行为一致的多个子张量:
获取各子张量对应的类型和设备;
将类型和设备相同的多个子张量,确定为所述行为一致的多个子张量。
4.根据权利要求1-3中任一项所述的方法,其中,基于所述融合张量训练所述神经网络模型,包括:
在所述融合张量中的各子张量执行同一行为的情况下,确定所述同一行为对应的内核;
调用所述内核执行所述同一行为,得到执行结果;
基于所述执行结果训练神经网络模型。
5.根据权利要求1-4中任一项所述的方法,其中,在需要使用目标子张量的情况下,基于所述映射关系,从所述张量组中提取所述目标子张量,并基于所述目标子张量训练神经网络模型,包括:
在所述融合张量中的目标子张量执行目标行为的情况下,基于所述映射关系,从所述融合张量中提取出所述目标子张量;
调用所述目标行为对应的内核处理所述目标子张量,得到处理结果;
基于所述处理结果训练所述神经网络模型。
6.根据权利要求1-5中任一项所述的方法,所述预设显存为GPU显存,在模型训练的初始化阶段执行以下操作,包括:
基于所述多个子张量中各子张量的数据量,确定所述融合张量所需的显存容量;
释放所述多个子张量中各子张量占用的显存容量,并将所述融合张量储存至所述预设显存中。
7.根据权利要求2所述的方法,所述多个子张量的运算行为,包括:
梯度同步行为、梯度爆炸检查行为、梯度消失检查行为、参数更新行为。
8.一种神经网络模型的训练装置,包括:
融合模块,用于基于行为一致的多个子张量,构建融合张量并将所述融合张量存储至预设显存中;
构建模块,用于构建所述融合张量与所述子张量间的映射关系;
第一训练模块,用于在需要使用目标子张量的情况下,基于所述映射关系,从所述融合张量中提取所述目标子张量,并基于所述目标子张量训练神经网络模型;
第二训练模块,用于在需要使用所述融合张量的情况下,从所述预设显存中提取所述融合张量,并基于所述融合张量训练所述神经网络模型。
9.根据权利要求8所述的装置,还包括:
第一张量集合确定模块,用于基于以下方式确定所述行为一致的多个子张量:
在所述多个子张量的运算行为一致的情况下,确定所述多个子张量的行为一致;和/或,
在所述多个子张量的通信行为一致的情况下,确定所述多个子张量的行为一致。
10.根据权利要求8所述的装置,还包括:
第二张量集合确定模块,用于基于以下方式确定所述行为一致的多个子张量:
获取各子张量对应的类型和设备;
将类型和设备相同的多个子张量,确定为所述行为一致的多个子张量。
11.根据权利要求8-10中任一项所述的装置,其中,所述第二训练模块,用于:
在所述融合张量中的各子张量执行同一行为的情况下,确定所述同一行为对应的内核;
调用所述内核执行所述同一行为,得到执行结果;
基于所述执行结果训练神经网络模型。
12.根据权利要求8-11中任一项所述的装置,其中,所述第一训练模块,用于:
在所述融合张量中的目标子张量执行目标行为的情况下,基于所述映射关系,从所述融合张量中提取出所述目标子张量;
调用所述目标行为对应的内核处理所述目标子张量,得到处理结果;
基于所述处理结果训练所述神经网络模型。
13.根据权利要求8-12中任一项所述的装置,所述预设显存为GPU显存,所述融合模块在模型训练的初始化阶段执行以下操作,包括:
基于所述多个子张量中各子张量的数据量,确定所述融合张量所需的显存容量;
释放所述多个子张量中各子张量占用的显存容量,并将所述融合张量储存至所述预设显存中。
14.根据权利要求9所述的装置,所述多个子张量的运算行为,包括:
梯度同步行为、梯度爆炸检查行为、梯度消失检查行为、参数更新行为。
15.一种电子设备,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-7中任一项所述的方法。
16.一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行根据权利要求1-7中任一项所述的方法。
17.一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现根据权利要求1-7中任一项所述的方法。
CN202211405578.6A 2022-11-10 2022-11-10 神经网络模型的训练方法、装置、电子设备及存储介质 Pending CN115688917A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211405578.6A CN115688917A (zh) 2022-11-10 2022-11-10 神经网络模型的训练方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211405578.6A CN115688917A (zh) 2022-11-10 2022-11-10 神经网络模型的训练方法、装置、电子设备及存储介质

Publications (1)

Publication Number Publication Date
CN115688917A true CN115688917A (zh) 2023-02-03

Family

ID=85051913

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211405578.6A Pending CN115688917A (zh) 2022-11-10 2022-11-10 神经网络模型的训练方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN115688917A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115936095A (zh) * 2023-02-20 2023-04-07 浪潮电子信息产业股份有限公司 一种参数梯度同步方法、装置、设备及存储介质

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115936095A (zh) * 2023-02-20 2023-04-07 浪潮电子信息产业股份有限公司 一种参数梯度同步方法、装置、设备及存储介质

Similar Documents

Publication Publication Date Title
US20220391771A1 (en) Method, apparatus, and computer device and storage medium for distributed training of machine learning model
WO2019111118A1 (en) Robust gradient weight compression schemes for deep learning applications
JP7454529B2 (ja) 分散型モデルトレーニング装置および方法、電子機器、記憶媒体、ならびに、コンピュータプログラム
EP4350572A1 (en) Method, apparatus and system for generating neural network model, devices, medium and program product
US11900263B2 (en) Augmenting neural networks
CN113570033B (zh) 神经网络处理单元、神经网络的处理方法及其装置
US20210150351A1 (en) Isa-based compression in distributed training of neural networks
EP4287074A1 (en) Mixture-of-experts model implementation method and system, electronic device, and storage medium
CN111966361A (zh) 用于确定待部署模型的方法、装置、设备及其存储介质
CN112215243A (zh) 图像特征提取方法、装置、设备及存储介质
CN115688917A (zh) 神经网络模型的训练方法、装置、电子设备及存储介质
CN114266937A (zh) 模型训练、图像处理方法,装置,设备以及存储介质
CN115186738B (zh) 模型训练方法、装置和存储介质
CN115412401B (zh) 训练虚拟网络嵌入模型及虚拟网络嵌入的方法和装置
CN116030235A (zh) 目标检测模型训练方法、目标检测方法、装置和电子设备
CN113570067B (zh) 分布式系统的同步方法、装置
CN112784967B (zh) 信息处理方法、装置以及电子设备
CN115292044A (zh) 数据处理方法、装置、电子设备及存储介质
CN114792097A (zh) 预训练模型提示向量的确定方法、装置及电子设备
CN114358198A (zh) 实例分割方法、装置及电子设备
CN113361574A (zh) 数据处理模型的训练方法、装置、电子设备及存储介质
CN115034198B (zh) 语言模型中嵌入模块计算优化的方法
US11689608B1 (en) Method, electronic device, and computer program product for data sharing
CN114495236B (zh) 图像分割方法、装置、设备、介质及程序产品
CN115860121B (zh) 文本推理方法、装置、设备以及存储介质

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