CN114298329A - 一种模型训练方法、装置、设备及存储介质 - Google Patents
一种模型训练方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN114298329A CN114298329A CN202110896147.3A CN202110896147A CN114298329A CN 114298329 A CN114298329 A CN 114298329A CN 202110896147 A CN202110896147 A CN 202110896147A CN 114298329 A CN114298329 A CN 114298329A
- Authority
- CN
- China
- Prior art keywords
- model
- trained
- node
- state quantity
- parameter
- 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
Links
- 238000012549 training Methods 0.000 title claims abstract description 209
- 238000000034 method Methods 0.000 title claims abstract description 76
- 238000003860 storage Methods 0.000 title claims abstract description 16
- 238000012545 processing Methods 0.000 claims description 30
- 230000008569 process Effects 0.000 claims description 21
- 238000003058 natural language processing Methods 0.000 claims description 18
- 230000009467 reduction Effects 0.000 claims description 14
- 238000004590 computer program Methods 0.000 claims description 12
- 238000013473 artificial intelligence Methods 0.000 abstract description 12
- 238000010586 diagram Methods 0.000 description 17
- 238000005516 engineering process Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 9
- 238000004891 communication Methods 0.000 description 7
- 238000012986 modification Methods 0.000 description 6
- 230000004048 modification Effects 0.000 description 6
- 238000012937 correction Methods 0.000 description 5
- 238000012804 iterative process Methods 0.000 description 3
- 238000011160 research Methods 0.000 description 3
- 239000002699 waste material Substances 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- ORILYTVJVMAKLC-UHFFFAOYSA-N Adamantane Natural products C1C(C2)CC3CC1CC2C3 ORILYTVJVMAKLC-UHFFFAOYSA-N 0.000 description 1
- 241000282412 Homo Species 0.000 description 1
- 230000003044 adaptive effect Effects 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000003203 everyday effect Effects 0.000 description 1
- 238000013467 fragmentation Methods 0.000 description 1
- 238000006062 fragmentation reaction Methods 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000008447 perception Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Landscapes
- Image Analysis (AREA)
Abstract
本申请实施例提供了一种模型训练方法、装置、设备及存储介质,涉及人工智能技术领域,该方法应用于共同训练目标模型的M个节点,该方法包括:将待训练模型中的模型状态量划分为M个模型状态量集合,每个模型状态量集合与一个节点关联,故每个节点只需要基于训练样本集,确定关联的模型状态量集合中各个模型状态量的状态值,并基于获得的各个状态值对待训练模型中对应的各个待训练参数进行参数值更新。然后从其他M‑1个节点中获取更新后的其他待训练参数的参数值,而不需要每个节点基于整个模型的模型状态量对整个模型的待训练参数进行更新,从而降低每个节点上的显存占用,使得在有限显存资源的条件下也能完成较大模型的训练。
Description
技术领域
本发明实施例涉及人工智能技术领域,尤其涉及一种模型训练方法、装置、设备及存储介质。
背景技术
根据当前人工智能的趋势,越大的自然语言模型可以提供越好的准确性。而模型越大,需要训练的模型参数也就越多,在机器上训练模型花费的时间也就越长。相关技术为了提高模型训练的速度,提出采用分布式训练方法对模型进行训练,即通过多个训练机器共同完成训练任务。
然而,上述方法中每个训练机器上均包含整个模型的所有参数和状态量,需要耗费大量显存才能完成模型训练,对于较大的模型来说,更是难以完成训练。
发明内容
本申请实施例提供了一种模型训练方法、装置、设备及存储介质,用于降低模型训练对训练机器中的显存的占用。
一方面,本申请实施例提供了一种模型训练方法,应用于共同训练目标模型的M个节点,所述目标模型为自然语言处理模型,针对每个节点,所述方法包括:
第i节点获取第i训练样本集,所述第i训练样本集是对总训练样本集进行划分后得到的,每个节点对应一个训练样本集,其中,1≤i≤M;
所述第i节点采用所述第i训练样本集,对待训练模型进行迭代训练,获得相应的目标模型,所述待训练模型包含M个模型状态量集合,每个模型状态量集合与一个节点关联;
其中,在每次迭代过程中,执行以下操作:
所述第i节点基于所述第i训练样本集,确定关联的第i模型状态量集合中各个模型状态量的状态值,并基于获得的各个状态值,分别对所述待训练模型中对应的各个待训练参数进行参数值更新;
所述第i节点分别从其他M-1个节点中获取,由所述其他M-1个节点分别基于关联的模型状态量集合更新的各个其他待训练参数的参数值,并采用获取的各个参数值,分别对所述待训练模型中相应的其他待训练参数进行参数值更新。
一方面,本申请实施例提供了一种模型训练装置,应用于共同训练目标模型的M个节点,所述目标模型为自然语言处理模型,针对每个节点,所述模型训练装置包括:
获取模块,用于获取第i训练样本集,所述第i训练样本集是对总训练样本集进行划分后得到的,每个节点对应一个训练样本集,其中,1≤i≤M;
模型训练模块,用于采用所述第i训练样本集,对待训练模型进行迭代训练,获得相应的目标模型,所述待训练模型包含M个模型状态量集合,每个模型状态量集合与一个节点关联;
其中,在每次迭代过程中,执行以下操作:
基于所述第i训练样本集,确定关联的第i模型状态量集合中各个模型状态量的状态值,并基于获得的各个状态值,分别对所述待训练模型中对应的各个待训练参数进行参数值更新;
分别从其他M-1个节点中获取,由所述其他M-1个节点分别基于关联的模型状态量集合更新的各个其他待训练参数的参数值,并采用获取的各个参数值,分别对所述待训练模型中相应的其他待训练参数进行参数值更新。
可选地,所述模型训练模块包括第一更新模块,每个模型状态量包括梯度和优化器参数;
所述第一更新模块具体用于:
针对所述第i模型状态量集合中各个模型状态量,分别执行以下步骤:
基于所述第i训练样本集,确定一个模型状态量中的梯度的目标梯度值;
采用所述目标梯度值,对所述一个模型状态量中的优化器参数进行参数值更新,获得目标参数值。
可选地,所述第一更新模块具体用于:
基于所述第i训练样本集,对所述待训练模型进行正向传播训练,获得模型预测结果;
基于所述模型预测结果对所述待训练模型进行反向传播训练,获得所述一个模型状态量中的梯度的第一梯度值;
接收其他M-1节点分别发送的所述一个模型状态量中的梯度的第二梯度值;
基于所述第一梯度值和获得的M-1个第二梯度值,确定所述一个模型状态量中的梯度的目标梯度值。
可选地,所述第一更新模块具体用于:
对所述第一梯度值和所述M-1个第二梯度值进行规约操作,获得确定所述一个模型状态量中的梯度的目标梯度值。
可选地,所述模型训练模块还包括第二更新模块;
所述第二更新模块具体用于:
针对所述各个待训练参数,分别执行以下步骤:
针对所述一个模型状态量对应的一个待训练参数,采用所述一个模型状态量中的优化器参数的目标参数值,对所述一个待训练参数进行参数值更新。
可选地,所述第一更新模块具体用于:
通过图形处理器,基于所述第i训练样本集,确定所述一个模型状态量中的梯度的目标梯度值,并将获得的目标梯度值保存至所述第i节点的内存中。
可选地,所述第一更新模块具体用于:
通过中央处理器,从所述内存中获取所述一个模型状态量中的梯度的目标梯度值;
通过所述中央处理器,采用所述目标梯度值,对所述一个模型状态量中的优化器参数进行参数值更新,获得目标参数值。
可选地,所述第二更新模块具体用于:
通过所述中央处理器,基于获得的各个状态值,分别对所述待训练模型中对应的各个待训练参数进行参数值更新,并将更新后的参数值传输至所述图形处理器。
可选地,所述M个模型状态量集合是对所述待训练模型包含N个模型状态量平均划分后获得的。
一方面,本申请实施例提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述模型训练方法的步骤。
一方面,本申请实施例提供了一种计算机可读存储介质,其存储有可由计算机设备执行的计算机程序,当所述程序在计算机设备上运行时,使得所述计算机设备执行上述模型训练方法的步骤。
本申请实施例中,将待训练模型中的模型状态量划分为M个模型状态量集合,每个模型状态量集合与一个节点关联,故每个节点只需要基于训练样本集,确定关联的模型状态量集合中各个模型状态量的状态值,并基于获得的各个状态值,对待训练模型中对应的各个待训练参数进行参数值更新。然后从其他M-1个节点中获取更新后的其他待训练参数的参数值,而不需要每个节点基于整个模型的模型状态量对整个模型的待训练参数进行更新,从而大大降低每个节点上的显存占用,避免了显存浪费,同时提高了模型训练的效率。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种系统架构示意图;
图2为本申请实施例提供的一种模型训练方法的流程示意图;
图3为本申请实施例提供的一种模型状态量集合的示意图;
图4为本申请实施例提供的一种梯度规约方法的流程示意图;
图5为本申请实施例提供的一种更新待训练参数的方法的流程示意图;
图6为本申请实施例提供的一种数据并行和模型并行的示意图;
图7为本申请实施例提供的一种系统架构示意图;
图8为本申请实施例提供的一种模型训练方法的流程示意图;
图9为本申请实施例提供的一种模型训练装置的结构示意图;
图10为本申请实施例提供的一种计算机设备的结构示意图。
具体实施方式
为了使本发明的目的、技术方案及有益效果更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
为了方便理解,下面对本发明实施例中涉及的名词进行解释。
人工智能(Artificial Intelligence,AI)是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。换句话说,人工智能是计算机科学的一个综合技术,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器。人工智能也就是研究各种智能机器的设计原理与实现方法,使机器具有感知、推理与决策的功能。
人工智能技术是一门综合学科,涉及领域广泛,既有硬件层面的技术也有软件层面的技术。人工智能基础技术一般包括如传感器、专用人工智能芯片、云计算、分布式存储、大数据处理技术、操作/交互系统、机电一体化等技术。人工智能软件技术主要包括计算机视觉技术、语音处理技术、自然语言处理技术以及机器学习/深度学习等几大方向。本申请实施例中的数据增强方法可用于扩充人工智能技术中的模型训练所需的训练样本,从而提高模型开发的效率。
自然语言处理(Nature Language processing,NLP)是计算机科学领域与人工智能领域中的一个重要方向。它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法。自然语言处理是一门融语言学、计算机科学、数学于一体的科学。因此,这一领域的研究将涉及自然语言,即人们日常使用的语言,所以它与语言学的研究有着密切的联系。自然语言处理技术通常包括文本处理、语义理解、机器翻译、机器人问答、知识图谱等技术。比如,本申请实施例中的模型训练方法可应用于训练文本处理模型、语义理解模型、机器翻译模型、机器人问答模型等自然语言处理模型。
中央处理器(Central Processing Unit,简称CPU):计算机系统的运算和控制核心,是信息处理、程序运行的最终执行单元。在为CPU编写程序时,程序员更倾向于利用复杂的逻辑结构优化算法来减少计算任务的运行时间,即Latency(延迟)。
图形处理器(Graphics Processing Unit,简称GPU),又称显示核心、视觉处理器、显示芯片、显卡,是一种专门在个人电脑、工作站、游戏机和一些移动设备(如平板电脑、智能手机等)上做图像和图形相关运算工作的微处理器。在为GPU编写程序时,利用其处理海量数据的优势,通过提高总的数据吞吐量来掩盖Lantency(延迟)。
显存,也被叫做帧缓存,它的作用是用来存储显卡芯片处理过或者即将提取的渲染数据。如同计算机的内存一样,显存是用来存储要处理的图形信息的部件。
下面对本申请实施例的设计思想进行介绍。
相关技术为了提高模型训练的速度,提出采用分布式训练方法对模型进行训练,即通过多个训练机器共同完成训练任务。然而,上述方法中每个训练机器上均包含整个模型的所有参数和状态量,需要耗费大量显存才能完成模型训练,对于较大的模型来说,更是难以完成训练。
通过分析发现,模型训练过程中的显存占用主要包括两部分,一部分为模型状态量,其中,每个节点均包含整个待训练模型的所有模型状态量。另一部分主要是用于保存中间结果的激活存储器、临时缓冲区(buffer)、临时buffer的频繁创建和释放导致的内存碎片。考虑到M个节点是共同训练目标模型,若将待训练模型的所有模型状态量划分至各个节点,每个节点只保存和维护部分模型状态量,那么对于每个节点来说,大大降低了显存占用,这样在有限显存资源的条件下也能完成较大模型的训练。
鉴于此,本申请实施例提供了一种模型训练方法,该方法应用于共同训练目标模型的M个节点,目标模型为自然语言处理模型,针对每个节点,该方法包括:
第i节点获取第i训练样本集,其中,第i训练样本集是对总训练样本集进行划分后得到的,每个节点对应一个训练样本集,其中,1≤i≤M。然后采用第i训练样本集,对待训练模型进行迭代训练,获得相应的目标模型,待训练模型包含M个模型状态量集合,每个模型状态量集合与一个节点关联。
具体地,在每次迭代过程中,执行以下操作:
第i节点基于第i训练样本集,确定关联的第i模型状态量集合中各个模型状态量的状态值,并基于获得的各个状态值,分别对待训练模型中对应的各个待训练参数进行参数值更新。
第i节点分别从其他M-1个节点中获取,由其他M-1个节点分别基于关联的模型状态量集合更新的各个其他待训练参数的参数值,并采用获取的各个参数值,分别对待训练模型中相应的其他待训练参数进行参数值更新。
本申请实施例中,将待训练模型中的模型状态量划分为M个模型状态量集合,每个模型状态量集合与一个节点关联,故每个节点只需要基于训练样本集,确定关联的模型状态量集合中各个模型状态量的状态值,并基于获得的各个状态值,对待训练模型中对应的各个待训练参数进行参数值更新。然后从其他M-1个节点中获取更新后的其他待训练参数的参数值,而不需要每个节点基于整个模型的模型状态量对整个模型的待训练参数进行更新,从而大大降低每个节点上的显存占用,避免了显存浪费,同时提高了模型训练的效率。
参考图1,其为本申请实施例提供的模型训练方法的系统架构图,该架构至少M个节点,分别为节点10~1、节点10~2、节点10~3、……、节点10~M。
M个节点中的任意一个节点可以是终端设备,或者是服务器;其中,终端设备可以包括智能手机、平板电脑、笔记本电脑、台式计算机、掌上电脑、移动互联网设备(mobileinternetdevice,MID)、可穿戴设备(例如智能手表、智能手环等)等,但并不局限于此。服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(Content Delivery Network,CDN)、以及大数据和人工智能平台等基础云计算服务的云服务器。
在图1所示的系统架构中,M个节点共同训练自然语言处理模型,预先对总训练样本集进行划分后,获得M个训练样本集,每个节点对应一个训练样本集。将待训练模型包含的所有模型状态量划分为M个模型状态量集合,每个模型状态量集合与一个节点关联。
在训练自然语言处理模型的过程中,每个节点执行以下训练步骤:
节点10~i采用第i训练样本集,对待训练模型进行迭代训练,获得相应的目标模型,其中,1≤i≤M,在每次迭代过程中,执行以下操作:
节点10~i基于第i训练样本集,确定关联的第i模型状态量集合中各个模型状态量的状态值,并基于获得的各个状态值,分别对待训练模型中对应的各个待训练参数进行参数值更新。
节点10~i分别从其他M-1个节点中获取,由其他M-1个节点分别基于关联的模型状态量集合更新的各个其他待训练参数的参数值,并采用获取的各个参数值,分别对待训练模型中相应的其他待训练参数进行参数值更新。
本申请实施例中,每个节点只需要基于训练样本集,确定关联的模型状态量集合中各个模型状态量的状态值,并基于获得的各个状态值,对待训练模型中对应的各个待训练参数进行参数值更新。然后从其他M-1个节点中获取更新后的其他待训练参数的参数值,而不需要每个节点基于整个模型的模型状态量对整个模型的待训练参数进行更新,从而大大降低每个节点上的显存占用,使得在有限显存资源的条件下也能完成较大模型的训练,同时提高了模型训练的效率。
基于图1所示的系统架构图,本申请实施例提供了一种模型训练方法的流程,如图2所示,该方法可以应用于共同训练目标模型的M个节点,该方法的流程可以由计算机设备执行,其中,计算机设备可以是图1所示的系统架构中任意一个节点,该方法包括以下步骤:
步骤S201,第i节点获取第i训练样本集。
具体地,第i训练样本集可以是对总训练样本集进行划分后得到的,每个节点对应一个训练样本集,其中,1≤i≤M。各个节点对应的训练样本集中的训练样本可以是完全不相同的,也可以存在部分相同的训练样本。
举例来说,总训练样本集中包括9000个训练样本,编号为1~9000。将编号为1~3000的训练样本作为训练样本集1,编号为3001~6000的训练样本作为训练样本集2,编号为6001~9000的训练样本作为训练样本集2,其中,第一节点与训练样本集1对应,第二节点与训练样本2对应,第三节点与训练样本3对应。
当训练的目标模型不同时,采用的训练样本也是不相同的。比如,当目标模型为自然语言处理模型时,训练样本为文本数据。当目标模型为计算机视觉模型时,训练样本为图像数据。当目标模型为语音识别模型时,训练样本为语音数据。
步骤S202,第i节点采用第i训练样本集,对待训练模型进行迭代训练,获得相应的目标模型。
具体地,待训练模型包含M个模型状态量集合,每个模型状态量集合与一个节点关联,模型状态量包括梯度和/或优化器参数,其中,优化器参数包括一阶动量、二阶动量等。梯度、一阶动量和二阶动量为形状相同的张量(tensor)。
可选地,对待训练模型的模型状态量进行统计,获得N个模型状态量,然后将N个模型状态量平均划分为M个模型状态量集合,也可以将N个模型状态量不平均划分为M个模型状态量集合,之后再将M个模型状态量集合分别与M个节点关联。另外,还可以对待训练模型中的各个模型状态量的要素数量进行统计,获得总要素数量。然后将总要素数量平均划分为M个模型状态量集合。
举例来说,如图3所示,对待训练模型的模型状态量进行统计,获得6个模型状态量,分别为模型状态量1、模型状态量2、…、模型状态量6。将6个模型状态量划分为3个模型状态量集合,分别为模型状态量集合A、模型状态量集合B、模型状态量集合C,其中,模型状态量集合A中包括模型状态量1,模型状态量集合B中包括模型状态量2和模型状态量3,模型状态量集合C中包括模型状态量4、模型状态量5和模型状态量6。模型状态量集合A与第一节点关联,模型状态量集合B与第二节点关联,模型状态量集合C与第三节点关联。
步骤S203,第i节点基于第i训练样本集,确定关联的第i模型状态量集合中各个模型状态量的状态值,并基于获得的各个状态值,分别对待训练模型中对应的各个待训练参数进行参数值更新。
具体地,在每次迭代过程中,第i节点基于第i训练样本集,以及上一次迭代过程中更新的待训练模型的所有待训练参数的参数值,确定关联的第i模型状态量集合中各个模型状态量的状态值。基于获得的各个状态值,以及上一次迭代过程中获得的第i模型状态量集合中各个模型状态量的状态值,分别对待训练模型中对应的各个待训练参数进行参数值更新。
步骤S204,第i节点分别从其他M-1个节点中获取,由其他M-1个节点分别基于关联的模型状态量集合更新的各个其他待训练参数的参数值,并采用获取的各个参数值,分别对待训练模型中相应的其他待训练参数进行参数值更新。
具体地,其他M-1个节点中的每个节点基于关联的模型状态量集合更新对应的各个待训练参数的参数值,具体更新过程与步骤S203中第i节点更新待训练参数的参数值的方法相同,此处不再赘述。需要说明的是,M个节点关联的模型状态量集合是不相同,因此M个节点对应更新的待训练参数是不相同,M个节点共同更新完待训练模型的所有待训练参数。
第i节点在每次迭代过程中均执行上述步骤S203和步骤S204,直至训练结束,训练结束的条件可以是迭代次数达到预设次数,或者待训练模型的精度满足预设条件。
本申请实施例中,将待训练模型中的模型状态量划分为M个模型状态量集合,每个模型状态量集合与一个节点关联,故每个节点只需要基于训练样本集,确定关联的模型状态量集合中各个模型状态量的状态值,并基于获得的各个状态值,对待训练模型中对应的各个待训练参数进行参数值更新。然后从其他M-1个节点中获取更新后的其他待训练参数的参数值,而不需要每个节点基于整个模型的模型状态量对整个模型的待训练参数进行更新,从而大大降低每个节点上的显存占用,避免了显存浪费,同时提高了模型训练的效率。
可选地,在上述步骤S203中,针对第i模型状态量集合中各个模型状态量,分别执行以下步骤:
第i节点基于第i训练样本集,确定一个模型状态量中的梯度的目标梯度值,然后采用目标梯度值,对一个模型状态量中的优化器参数进行参数值更新,获得目标参数值。
具体地,每个节点包括图形处理器和中央处理器。第i节点通过图形处理器,基于第i训练样本集,确定一个模型状态量中的梯度的目标梯度值,并将获得的目标梯度值保存至第i节点的内存中。第i节点通过中央处理器,从内存中获取该模型状态量中的梯度的目标梯度值,然后通过中央处理器,采用目标梯度值,对一个模型状态量中的优化器参数进行参数值更新,获得目标参数值。通过将更新优化器参数的步骤转移到中央处理器中执行,进一步减少了图形处理器的数据处理规模,进而减少了显存占用,同时充分利用了CPU的内存和GPU的显存。
需要说明的是,上述优化器参数的更新步骤也可以在图形处理器中执行,对此,本申请不做具体限定。另外,第i节点通过图形处理器,基于第i训练样本集,确定一个模型状态量中的梯度的目标梯度值的过程与第i节点将获得的目标梯度值保存至第i节点的内存的过程可以采用重叠通信(overlap)的方式,从而提高模型的训练效率。
可选地,优化器可以是自适应矩估计(Adam)优化器,优化器参数包括一阶动量、二阶动量。优化器参数的目标参数值可以是一阶动量和二阶动量在当前迭代周期内的一阶动量值和二阶动量值,也可以是一阶动量和二阶动量在当前迭代周期内修正后的一阶动量值和二阶动量值。
具体地,基于目标梯度值和上一迭代周期内模型状态量中的一阶动量,确定当前迭代周期内的一阶动量,具体如以下公式(1)所示:
mt=β1mt-1+(1-β1)gt……………(1)
其中,mt表示第t迭代周期内模型状态量中的一阶动量,mt-1表示第t-1迭代周期内模型状态量中的一阶动量,β1表示动力值,一般可以取0.9,gt为第t迭代周期内的梯度值。
基于目标梯度值和上一迭代周期内模型状态量中的二阶动量,确定当前迭代周期内的二阶动量,具体如以下公式(2)所示:
vt=β2vt-1+(1-β2)gt 2……………(2)
其中,vt表示第t迭代周期内模型状态量中的二阶动量,vt-1表示第t-1迭代周期内模型状态量中的二阶动量,β2表示动力值,一般可以取0.999,gt为第t迭代周期内的梯度值。
采用动力值对第t迭代周期内模型状态量中的一阶动量进行偏差修正,具体如以下公式(3)所示:
采用动力值对第t迭代周期内模型状态量中的二阶动量进行偏差校正,具体如以下公式(4)所示:
本申请实施例中,每个节点只需要基于关联的梯度的目标梯度值,对关联的优化器参数进行参数值更新,然后从其他节点中获取更新的其他优化器参数的参数值,而不需要每个节点保存和维护所有的优化器参数,从而大大降低每个节点上的数据处理规模以及显存占用,同时提高了模型训练的效率。
可选地,第i节点基于第i训练样本集,对待训练模型进行正向传播训练,获得模型预测结果。然后基于模型预测结果对待训练模型进行反向传播训练,获得一个模型状态量中的梯度的第一梯度值。第i节点接收其他M-1节点分别发送的一个模型状态量中的梯度的第二梯度值,然后基于第一梯度值和获得的M-1个第二梯度值,确定一个模型状态量中的梯度的目标梯度值。
具体地,第i节点基于第i训练样本集,以及上一次迭代过程中更新的待训练模型的所有待训练参数的参数值,对待训练模型进行正向传播训练,获得模型预测结果。然后基于模型预测结果以及第i训练样本集中各个训练样本的真实值,确定此次迭代过程中的损失函数。基于损失函数对待训练模型进行反向传播训练,获得待训练模型中关于所有待训练参数的梯度值。其他M-1节点中的每个节点基于对应的训练样本集执行相同的训练操作,获得待训练模型中关于所有待训练参数的梯度值。
针对第i节点关联的一个模型状态量中的梯度,第i节点通过反向传播训练,获得该梯度的第一梯度值,同时,第i节点接收其他M-1节点分别发送的该梯度的第二梯度值。第i节点对第一梯度值和获得的M-1个第二梯度值进行规约操作,获得确定一个模型状态量中的梯度的目标梯度值。
具体地,第i节点通过gpu通信库调用reduce-scatter(分散-规约)接口进行梯度规约操作,获得模型状态量中的梯度的目标梯度值。规约操作具体可以是对第一梯度值和M-1个第二梯度值进行加权平均,获得目标梯度值,也可以是从第一梯度值和M-1个第二梯度值中,选取一个梯度值作为目标梯度值,还可以是其他预设的操作方式,对此,本申请不做具体限定。每个节点保存关联的模型状态量中的梯度的目标梯度值。
举例来说,如图4所示,设定4个节点共同训练目标模型,4个节点分别为第一节点、第二节点、第三节点和第四节点。第一节点与梯度A关联,第二节点与梯度B关联,第三节点与梯度C关联,第四节点与梯度D关联。
第一节点采用第一训练样本集对待训练模型进行训练,获得梯度A、梯度B、梯度C和梯度D的梯度值分别为x1、y1、z1、k1。
第二节点采用第二训练样本集对待训练模型进行训练,获得梯度A、梯度B、梯度C和梯度D的梯度值分别为x2、y2、z2、k2。
第三节点采用第三训练样本集对待训练模型进行训练,获得梯度A、梯度B、梯度C和梯度D的梯度值分别为x3、y3、z3、k3。
第四节点采用第三训练样本集对待训练模型进行训练,获得梯度A、梯度B、梯度C和梯度D的梯度值分别为x4、y4、z4、k4。
第一节点接收第二节点、第三节点和第四节点发送的梯度值x2、梯度值x3和梯度值x4,然后对梯度值x1、梯度值x2、梯度值x3和梯度值x4进行梯度规约操作,获得梯度A的目标梯度值X。
第二节点接收第一节点、第三节点和第四节点发送的梯度值y1、梯度值y3和梯度值y4,然后对梯度值y1、梯度值y2、梯度值y3和梯度值y4进行梯度规约操作,获得梯度B的目标梯度值Y。
第三节点接收第一节点、第二节点和第四节点发送的梯度值z1、梯度值z2和梯度值z4,然后对梯度值z1、梯度值z2、梯度值z3和梯度值z4进行梯度规约操作,获得梯度C的目标梯度值Z。
第四节点接收第一节点、第二节点和第三节点发送的梯度值k1、梯度值k2和梯度值k3,然后对梯度值k1、梯度值k2、梯度值k3和梯度值k4进行梯度规约操作,获得梯度D的目标梯度值K。
本申请实施例中,针对与每个节点关联的梯度,每个节点基于自身训练获得的第一梯度值,以及从其他各个节点中获取第二梯度值,确定该梯度的目标梯度值,该目标梯度值综合了各个节点训练过程中的特点,从而提高了模型训练的准确性。
可选地,在上述步骤S203中,针对各个待训练参数,分别执行以下步骤:
针对一个模型状态量对应的一个待训练参数,采用该模型状态量中的优化器参数的目标参数值,对该待训练参数进行参数值更新。
具体地,第i节点通过中央处理器,基于获得的各个状态值,分别对待训练模型中对应的各个待训练参数进行参数值更新,并将更新后的参数值传输至图形处理器。通过将更新待训练参数的步骤转移到中央处理器中执行,进一步减少了图形处理器的数据处理规模,进而减少了显存占用,同时充分利用了CPU的内存和GPU的显存。需要说明的是,上述待训练参数的更新步骤也可以在图形处理器中执行,对此,本申请不做具体限定。
另外,第i节点通过中央处理器,基于获得的各个状态值,分别对待训练模型中对应的各个待训练参数进行参数值更新的过程和第i节点将更新后的参数值传输至图形处理器的过程可以采用重叠通信(overlap)的方式,从而提高模型的训练效率。
具体实施中,优化器参数包括一阶动量、二阶动量。采用一阶动量和二阶动量在当前迭代周期内修正后的一阶动量值和二阶动量值,对待训练参数进行参数值更新,获得更新后的目标参数值,具体如以下公式(5)所示:
其中,表示第t迭代周期内修正后的一阶动量,表示第t迭代周期内修正后的二阶动量,Wt表示第t迭代周期内更新后的待训练参数,Wt-1表示第t-1迭代周期内更新后的待训练参数,α为学习率,∈为一个常数,取值为e-8。
每个节点采用关联的模型状态量集合更新对应的各个待训练参数的参数值之后,每个节点调用gpu通信库的allgather接口,从其他M-1个节点中获取其他更新后的待训练参数的参数值,然后采用获得的其他更新后的待训练参数的参数值,相应更新本节点中待训练模型中的其他各个待训练参数的参数值,使得每个节点都可以获得全量参数信息。
举例来说,如图5所示,设定4个节点共同训练目标模型,4个节点分别为第一节点、第二节点、第三节点和第四节点。
第一节点基于关联的模型状态量更新待训练参数M的参数值,获得目标参数值m。第二节点基于关联的模型状态量更新待训练参数N的参数值,获得目标参数值n。第三节点基于关联的模型状态量更新待训练参数P的参数值,获得目标参数值p。第四节点基于关联的模型状态量更新待训练参数Q的参数值,获得目标参数值q。
第一节点接收第二节点发送的目标参数值n、第三节点发送的目标参数值p和第四节点发送的目标参数值q,然后采用接收的参数值更新本节点中待训练模型中的其他待训练参数。具体地,采用接收的目标参数值n更新待训练参数N的参数值,采用接收的目标参数值p更新待训练参数P的参数值,采用接收的目标参数值q更新待训练参数Q的参数值。
第二节点接收第一节点发送的目标参数值m、第三节点发送的目标参数值p和第四节点发送的目标参数值q,然后采用接收的参数值更新本节点中待训练模型中的其他待训练参数。具体地,采用接收的目标参数值m更新待训练参数M的参数值,采用接收的目标参数值p更新待训练参数P的参数值,采用接收的目标参数值q更新待训练参数Q的参数值。
第三节点接收第一节点发送的目标参数值m、第二节点发送的目标参数值n和第四节点发送的目标参数值q,然后采用接收的参数值更新本节点中待训练模型中的其他待训练参数。具体地,采用接收的目标参数值m更新待训练参数M的参数值,采用接收的目标参数值n更新待训练参数N的参数值,采用接收的目标参数值q更新待训练参数Q的参数值。
第四节点接收第一节点发送的目标参数值m、第二节点发送的目标参数值n和第三节点发送的目标参数值p,然后采用接收的参数值更新本节点中待训练模型中的其他待训练参数。具体地,采用接收的目标参数值m更新待训练参数M的参数值,采用接收的目标参数值n更新待训练参数N的参数值,采用接收的目标参数值p更新待训练参数P的参数值。
本申请实施例中,每个节点只需要基于关联的优化器参数的目标参数值,对相应的待训练参数进行参数值更新,然后从其他节点中获取更新的待训练参数的参数值,这样既可以获得全量的待训练参数的参数值,同时降低了每个待节点保存和维护的模型状态量,从而节省了每个节点上的显存占用。
可选地,M个节点中的每个节点都可以作为一个数据并行进程,各个节点采用数据并行的方式,基于对应的训练样本集对待训练模型进行迭代训练,获得相应的目标模型。同时,每个节点可以包括多个GPU,每个节点中的待训练模型可以划分为多个子模型,每个子模型位于一个GPU上,从而同时实现数据并行和模型并行。
举例来说,如图6所示,设定3个节点共同训练目标模型,3个节点分别为第一节点、第二节点、第三节点,其中,第一节点中包括GPU1和GPU2,第二节点中包括GPU3和GPU4,第三节点中包括GPU5和GPU6。
第一节点将待训练模型划分为两个子模型,分别为子模型1和子模型2,其中,子模型1位于GPU1,子模型2位于GPU2。
第二节点将待训练模型划分为两个子模型,分别为子模型3和子模型4,其中,子模型3位于GPU3,子模型4位于GPU4。
第三节点将待训练模型划分为两个子模型,分别为子模型5和子模型6,其中,子模型5位于GPU5,子模型6位于GPU6。
第一节点、第二节点和第三节点内部分别采用模型并行的方式,以及第一节点、第二节点和第三节点之间采用数据并行的方式训练目标模型。
本申请实施例中,在节点内部采用模型并行的方式,将待训练模型分割为多个部分,每部分位于节点的一个GPU中,从而降低了模型体积,便于对较大模型的训练。在节点之间采用数据并行的方式训练目标模型,可以有效提高模型训练的效率。
为了更好地解释本申请实施例,下面以具体实施场景为例,介绍本申请实施例提供的一种模型训练方法,该方法应用于如图7所示的共同训练自然语言处理模型的3个节点,3个节点分别为第一节点701、第二节点702、第三节点703。
预先将总文本数据划分为三个文本数据集合,分别为第一文本数据集合、第二文本数据集合和第三文本数据集合,其中,第一节点701对于第一文本数据集合,第二节点702对于第二文本数据集合,第三节点703对于第三文本数据集合。将待训练模型包含的所有模型状态量划分为3个模型状态量集合,分别为第一模型状态量集合、第二模型状态量集合和第三模型状态量集合、其中,第一节点701关联第一模型状态量集合,第二节点702关联第二模型状态量集合,第三节点703关联第三模型状态量集合。
训练自然语言处理模型的过程如图8所示,包括以下步骤:
第一节点采用第一文本数据集合,对待训练模型进行迭代训练,第二节点采用第二文本数据集合,对待训练模型进行迭代训练,第三节点采用第三文本数据集合,对待训练模型进行迭代训练,获得自然语言处理模型。
在每次迭代过程中,执行以下操作:
第一节点701基于第一文本数据集合,对待训练模型进行训练,获得梯度A、梯度B、梯度C的梯度值分别为x1、y1、z1。
第二节点702基于第二文本数据集合,对待训练模型进行训练,获得梯度A、梯度B、梯度C的梯度值分别为x2、y2、z2。
第三节点703基于第二文本数据集合,对待训练模型进行训练,获得梯度A、梯度B、梯度C的梯度值分别为x3、y3、z3。
第一节点701接收第二节点、第三节点发送的梯度值x2、梯度值x3,然后对梯度值x1、梯度值x2、梯度值x3进行梯度规约操作,获得梯度A的目标梯度值X。第一节点701基于目标梯度值X更新优化器参数W1,获得优化器参数W1=s1,然后采用优化器参数W1的参数值,更新待训练参数M,获得待训练参数M=m。
第二节点702接收第一节点、第三节点发送的梯度值y1、梯度值y3,然后对梯度值y1、梯度值y2、梯度值y3进行梯度规约操作,获得梯度B的目标梯度值Y。第二节点702基于目标梯度值Y更新优化器参数W2,获得优化器参数W2=s2。然后采用优化器参数W2的参数值,更新待训练参数N,获得待训练参数N=n。
第三节点703接收第一节点、第二节点发送的梯度值z1、梯度值z2,然后对梯度值z1、梯度值z2、梯度值z3进行梯度规约操作,获得梯度C的目标梯度值Z。第三节点703基于目标梯度值Z更新优化器参数W3,获得优化器参数W3=s3。然后采用优化器参数W3的参数值,更新待训练参数P,获得待训练参数P=p。
第一节点701接收第二节点702发送的目标参数值n、第三节点703发送的目标参数值p,然后采用接收的目标参数值n,更新本地待训练模型中待训练参数N的参数值。采用接收的目标参数值p,更新本地待训练模型中待训练参数P的参数值。
第二节点702接收第一节点701发送的目标参数值m、第三节点703发送的目标参数值p,然后采用接收的目标参数值m,更新本地待训练模型中待训练参数M的参数值。采用接收的目标参数值p,更新本地待训练模型中待训练参数P的参数值。
第三节点703接收第一节点701发送的目标参数值m、第二节点702发送的目标参数值n,然后采用接收的目标参数值m,更新本地待训练模型中待训练参数M的参数值。采用接收的目标参数值n,更新本地待训练模型中待训练参数N的参数值。
当每个节点迭代训练的次数达到预设次数时,停止训练,将最后一个迭代过程结束时获得的待训练模型作为最终的模型。
本申请实施例中,将待训练模型中的模型状态量划分为M个模型状态量集合,每个模型状态量集合与一个节点关联,故每个节点只需要基于训练样本集,确定关联的模型状态量集合中各个模型状态量的状态值,并基于获得的各个状态值,对待训练模型中对应的各个待训练参数进行参数值更新。然后从其他M-1个节点中获取更新后的其他待训练参数的参数值,而不需要每个节点基于整个模型的模型状态量对整个模型的待训练参数进行更新,从而大大降低每个节点上的显存占用,使得在有限显存资源的条件下也能完成较大模型的训练,同时提高了模型训练的效率。
基于相同的技术构思,本申请实施例提供了一种模型训练装置的结构示意图,如图9所示,该装置900应用于共同训练目标模型的M个节点,所述目标模型为自然语言处理模型,针对每个节点,所述模型训练装置900包括:
获取模块901,用于获取第i训练样本集,所述第i训练样本集是对总训练样本集进行划分后得到的,每个节点对应一个训练样本集,其中,1≤i≤M;
模型训练模块902,用于采用所述第i训练样本集,对待训练模型进行迭代训练,获得相应的目标模型,所述待训练模型包含M个模型状态量集合,每个模型状态量集合与一个节点关联;
其中,在每次迭代过程中,执行以下操作:
基于所述第i训练样本集,确定关联的第i模型状态量集合中各个模型状态量的状态值,并基于获得的各个状态值,分别对所述待训练模型中对应的各个待训练参数进行参数值更新;
分别从其他M-1个节点中获取,由所述其他M-1个节点分别基于关联的模型状态量集合更新的各个其他待训练参数的参数值,并采用获取的各个参数值,分别对所述待训练模型中相应的其他待训练参数进行参数值更新。
可选地,所述模型训练模块包括第一更新模块903,每个模型状态量包括梯度和优化器参数;
所述第一更新模块903具体用于:
针对所述第i模型状态量集合中各个模型状态量,分别执行以下步骤:
基于所述第i训练样本集,确定一个模型状态量中的梯度的目标梯度值;
采用所述目标梯度值,对所述一个模型状态量中的优化器参数进行参数值更新,获得目标参数值。
可选地,所述第一更新模块903具体用于:
基于所述第i训练样本集,对所述待训练模型进行正向传播训练,获得模型预测结果;
基于所述模型预测结果对所述待训练模型进行反向传播训练,获得所述一个模型状态量中的梯度的第一梯度值;
接收其他M-1节点分别发送的所述一个模型状态量中的梯度的第二梯度值;
基于所述第一梯度值和获得的M-1个第二梯度值,确定所述一个模型状态量中的梯度的目标梯度值。
可选地,所述第一更新模块903具体用于:
对所述第一梯度值和所述M-1个第二梯度值进行规约操作,获得确定所述一个模型状态量中的梯度的目标梯度值。
可选地,所述模型训练模块902还包括第二更新模块904;
所述第二更新模块904具体用于:
针对所述各个待训练参数,分别执行以下步骤:
针对所述一个模型状态量对应的一个待训练参数,采用所述一个模型状态量中的优化器参数的目标参数值,对所述一个待训练参数进行参数值更新。
可选地,所述第一更新模块903具体用于:
通过图形处理器,基于所述第i训练样本集,确定所述一个模型状态量中的梯度的目标梯度值,并将获得的目标梯度值保存至所述第i节点的内存中。
可选地,所述第一更新模块903具体用于:
通过中央处理器,从所述内存中获取所述一个模型状态量中的梯度的目标梯度值;
通过所述中央处理器,采用所述目标梯度值,对所述一个模型状态量中的优化器参数进行参数值更新,获得目标参数值。
可选地,所述第二更新模块904具体用于:
通过所述中央处理器,基于获得的各个状态值,分别对所述待训练模型中对应的各个待训练参数进行参数值更新,并将更新后的参数值传输至所述图形处理器。
可选地,所述M个模型状态量集合是对所述待训练模型包含N个模型状态量平均划分后获得的。
本申请实施例中,将待训练模型中的模型状态量划分为M个模型状态量集合,每个模型状态量集合与一个节点关联,故每个节点只需要基于训练样本集,确定关联的模型状态量集合中各个模型状态量的状态值,并基于获得的各个状态值,对待训练模型中对应的各个待训练参数进行参数值更新。然后从其他M-1个节点中获取更新后的其他待训练参数的参数值,而不需要每个节点基于整个模型的模型状态量对整个模型的待训练参数进行更新,从而大大降低每个节点上的显存占用,使得在有限显存资源的条件下也能完成较大模型的训练,同时提高了模型训练的效率。
基于相同的技术构思,本申请实施例提供了一种计算机设备,如图10所示,包括至少一个处理器1001,以及与至少一个处理器连接的存储器1002,本申请实施例中不限定处理器1001与存储器1002之间的具体连接介质,图10中处理器1001和存储器1002之间通过总线连接为例。总线可以分为地址总线、数据总线、控制总线等。
在本申请实施例中,存储器1002存储有可被至少一个处理器1001执行的指令,至少一个处理器1001通过执行存储器1002存储的指令,可以执行前述模型训练方法中所包括的步骤。
其中,处理器1001是计算机设备的控制中心,可以利用各种接口和线路连接计算机设备的各个部分,通过运行或执行存储在存储器1002内的指令以及调用存储在存储器1002内的数据,从而进行模型训练。可选的,处理器1001可包括一个或多个处理单元,处理器1001可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器1001中。在一些实施例中,处理器1001和存储器1002可以在同一芯片上实现,在一些实施例中,它们也可以在独立的芯片上分别实现。
处理器1001可以是通用处理器,例如中央处理器(CPU)、数字信号处理器、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本申请实施例中公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
存储器1002作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块。存储器1002可以包括至少一种类型的存储介质,例如可以包括闪存、硬盘、多媒体卡、卡型存储器、随机访问存储器(Random AccessMemory,RAM)、静态随机访问存储器(Static Random Access Memory,SRAM)、可编程只读存储器(Programmable Read Only Memory,PROM)、只读存储器(Read Only Memory,ROM)、带电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,EEPROM)、磁性存储器、磁盘、光盘等等。存储器1002是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。本申请实施例中的存储器1002还可以是电路或者其它任意能够实现存储功能的装置,用于存储程序指令和/或数据。
基于同一发明构思,本申请实施例提供了一种计算机可读存储介质,其存储有可由计算机设备执行的计算机程序,当程序在计算机设备上运行时,使得计算机设备执行上述模型训练方法的步骤。
本领域内的技术人员应明白,本发明的实施例可提供为方法、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (12)
1.一种模型训练方法,其特征在于,应用于共同训练目标模型的M个节点,所述目标模型为自然语言处理模型,针对每个节点,所述方法包括:
第i节点获取第i训练样本集,所述第i训练样本集是对总训练样本集进行划分后得到的,每个节点对应一个训练样本集,其中,1≤i≤M;
所述第i节点采用所述第i训练样本集,对待训练模型进行迭代训练,获得相应的目标模型,所述待训练模型包含M个模型状态量集合,每个模型状态量集合与一个节点关联;
其中,在每次迭代过程中,执行以下操作:
所述第i节点基于所述第i训练样本集,确定关联的第i模型状态量集合中各个模型状态量的状态值,并基于获得的各个状态值,分别对所述待训练模型中对应的各个待训练参数进行参数值更新;
所述第i节点分别从其他M-1个节点中获取,由所述其他M-1个节点分别基于关联的模型状态量集合更新的各个其他待训练参数的参数值,并采用获取的各个参数值,分别对所述待训练模型中相应的其他待训练参数进行参数值更新。
2.如权利要求1所述的方法,其特征在于,每个模型状态量包括梯度和优化器参数;
所述第i节点基于所述第i训练样本集,确定关联的第i模型状态量集合中各个模型状态量的状态值,包括:
针对所述第i模型状态量集合中各个模型状态量,分别执行以下步骤:
所述第i节点基于所述第i训练样本集,确定一个模型状态量中的梯度的目标梯度值;
所述第i节点采用所述目标梯度值,对所述一个模型状态量中的优化器参数进行参数值更新,获得目标参数值。
3.如权利要求2所述的方法,其特征在于,所述第i节点基于所述第i训练样本集,确定一个模型状态量中的梯度的目标梯度值,包括:
所述第i节点基于所述第i训练样本集,对所述待训练模型进行正向传播训练,获得模型预测结果;
所述第i节点基于所述模型预测结果对所述待训练模型进行反向传播训练,获得所述一个模型状态量中的梯度的第一梯度值;
所述第i节点接收其他M-1节点分别发送的所述一个模型状态量中的梯度的第二梯度值;
所述第i节点基于所述第一梯度值和获得的M-1个第二梯度值,确定所述一个模型状态量中的梯度的目标梯度值。
4.如权利要求3所述的方法,其特征在于,所述第i节点基于所述第一梯度值和获得的M-1个第二梯度值,确定所述一个模型状态量中的梯度的目标梯度值,包括:
所述第i节点对所述第一梯度值和所述M-1个第二梯度值进行规约操作,获得确定所述一个模型状态量中的梯度的目标梯度值。
5.如权利要求2所述的方法,其特征在于,所述基于获得的各个状态值,分别对所述待训练模型中对应的各个待训练参数进行参数值更新,包括:
针对所述各个待训练参数,分别执行以下步骤:
针对所述一个模型状态量对应的一个待训练参数,采用所述一个模型状态量中的优化器参数的目标参数值,对所述一个待训练参数进行参数值更新。
6.如权利要求2所述的方法,其特征在于,所述第i节点基于所述第i训练样本集,确定一个模型状态量中的梯度的目标梯度值,包括:
所述第i节点通过图形处理器,基于所述第i训练样本集,确定所述一个模型状态量中的梯度的目标梯度值,并将获得的目标梯度值保存至所述第i节点的内存中。
7.如权利要求6所述的方法,其特征在于,所述第i节点采用所述目标梯度值,对所述一个模型状态量中的优化器参数进行参数值更新,获得目标参数值,包括:
所述第i节点通过中央处理器,从所述内存中获取所述一个模型状态量中的梯度的目标梯度值;
所述第i节点通过所述中央处理器,采用所述目标梯度值,对所述一个模型状态量中的优化器参数进行参数值更新,获得目标参数值。
8.如权利要求7所述的方法,其特征在于,所述第i节点基于获得的各个状态值,分别对所述待训练模型中对应的各个待训练参数进行参数值更新,包括:
所述第i节点通过所述中央处理器,基于获得的各个状态值,分别对所述待训练模型中对应的各个待训练参数进行参数值更新,并将更新后的参数值传输至所述图形处理器。
9.如权利要求1至8任一所述的方法,其特征在于,所述M个模型状态量集合是对所述待训练模型包含N个模型状态量平均划分后获得的。
10.一种模型训练装置,其特征在于,应用于共同训练目标模型的M个节点,所述目标模型为自然语言处理模型,针对每个节点,所述模型训练装置包括:
获取模块,用于获取第i训练样本集,所述第i训练样本集是对总训练样本集进行划分后得到的,每个节点对应一个训练样本集,其中,1≤i≤M;
模型训练模块,用于采用所述第i训练样本集,对待训练模型进行迭代训练,获得相应的目标模型,所述待训练模型包含M个模型状态量集合,每个模型状态量集合与一个节点关联;
其中,在每次迭代过程中,执行以下操作:
基于所述第i训练样本集,确定关联的第i模型状态量集合中各个模型状态量的状态值,并基于获得的各个状态值,分别对所述待训练模型中对应的各个待训练参数进行参数值更新;
分别从其他M-1个节点中获取,由所述其他M-1个节点分别基于关联的模型状态量集合更新的各个其他待训练参数的参数值,并采用获取的各个参数值,分别对所述待训练模型中相应的其他待训练参数进行参数值更新。
11.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1~9任一权利要求所述方法的步骤。
12.一种计算机可读存储介质,其特征在于,其存储有可由计算机设备执行的计算机程序,当所述程序在计算机设备上运行时,使得所述计算机设备执行权利要求1~9任一所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110896147.3A CN114298329A (zh) | 2021-08-05 | 2021-08-05 | 一种模型训练方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110896147.3A CN114298329A (zh) | 2021-08-05 | 2021-08-05 | 一种模型训练方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114298329A true CN114298329A (zh) | 2022-04-08 |
Family
ID=80964004
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110896147.3A Pending CN114298329A (zh) | 2021-08-05 | 2021-08-05 | 一种模型训练方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114298329A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115563508A (zh) * | 2022-11-08 | 2023-01-03 | 北京百度网讯科技有限公司 | 模型训练方法、装置以及设备 |
WO2024148578A1 (zh) * | 2023-01-12 | 2024-07-18 | 华为技术有限公司 | 模型训练方法及装置 |
CN118378726A (zh) * | 2024-06-25 | 2024-07-23 | 之江实验室 | 一种模型训练系统、方法、存储介质及电子设备 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107330516A (zh) * | 2016-04-29 | 2017-11-07 | 腾讯科技(深圳)有限公司 | 模型参数训练方法、装置及系统 |
CN110134636A (zh) * | 2018-02-09 | 2019-08-16 | 中兴通讯股份有限公司 | 模型训练方法、服务器和计算机可读存储介质 |
CN111275173A (zh) * | 2020-02-12 | 2020-06-12 | 字节跳动有限公司 | 一种神经网络训练方法、装置及其设备 |
CN111709533A (zh) * | 2020-08-19 | 2020-09-25 | 腾讯科技(深圳)有限公司 | 机器学习模型的分布式训练方法、装置以及计算机设备 |
CN111858440A (zh) * | 2020-06-12 | 2020-10-30 | 苏州浪潮智能科技有限公司 | 一种分布式数据并行训练系统、方法、终端及存储介质 |
CN112884086A (zh) * | 2021-04-06 | 2021-06-01 | 北京百度网讯科技有限公司 | 模型训练方法、装置、设备、存储介质以及程序产品 |
-
2021
- 2021-08-05 CN CN202110896147.3A patent/CN114298329A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107330516A (zh) * | 2016-04-29 | 2017-11-07 | 腾讯科技(深圳)有限公司 | 模型参数训练方法、装置及系统 |
CN110134636A (zh) * | 2018-02-09 | 2019-08-16 | 中兴通讯股份有限公司 | 模型训练方法、服务器和计算机可读存储介质 |
CN111275173A (zh) * | 2020-02-12 | 2020-06-12 | 字节跳动有限公司 | 一种神经网络训练方法、装置及其设备 |
CN111858440A (zh) * | 2020-06-12 | 2020-10-30 | 苏州浪潮智能科技有限公司 | 一种分布式数据并行训练系统、方法、终端及存储介质 |
CN111709533A (zh) * | 2020-08-19 | 2020-09-25 | 腾讯科技(深圳)有限公司 | 机器学习模型的分布式训练方法、装置以及计算机设备 |
CN112884086A (zh) * | 2021-04-06 | 2021-06-01 | 北京百度网讯科技有限公司 | 模型训练方法、装置、设备、存储介质以及程序产品 |
Non-Patent Citations (3)
Title |
---|
JIE REN ET AL.: "ZeRO-Offload: Democratizing Billion-Scale Model Training", 《ARXIV.ORG》, 18 January 2021 (2021-01-18), pages 3 * |
SAMYAM RAJBHANDARI ET AL.: "ZeRO: Memory Optimizations Toward Training Trillion Parameter Models", 《IEEE》, 30 November 2020 (2020-11-30), pages 1 - 7 * |
曙光信息产业股份有限公司,天津滨海迅腾科技集团有限公司: "人工智能系统平台实施中级", 31 July 2021, 天津大学出版社, pages: 194 - 199 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115563508A (zh) * | 2022-11-08 | 2023-01-03 | 北京百度网讯科技有限公司 | 模型训练方法、装置以及设备 |
WO2024148578A1 (zh) * | 2023-01-12 | 2024-07-18 | 华为技术有限公司 | 模型训练方法及装置 |
CN118378726A (zh) * | 2024-06-25 | 2024-07-23 | 之江实验室 | 一种模型训练系统、方法、存储介质及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110546611B (zh) | 通过跳过处理操作来减少神经网络处理器中的功耗 | |
US20220391771A1 (en) | Method, apparatus, and computer device and storage medium for distributed training of machine learning model | |
Neil et al. | Minitaur, an event-driven FPGA-based spiking network accelerator | |
CN114298329A (zh) | 一种模型训练方法、装置、设备及存储介质 | |
US20210295168A1 (en) | Gradient compression for distributed training | |
WO2018081563A9 (en) | NEURONAL ARCHITECTURE RESEARCH | |
KR20190113928A (ko) | 강화 학습을 통한 디바이스 배치 최적화 | |
CN108090565A (zh) | 一种卷积神经网络并行化训练加速方法 | |
CN110476173B (zh) | 利用强化学习的分层设备放置 | |
US11468325B2 (en) | Multi-model training pipeline in distributed systems | |
JP2021532437A (ja) | 機械学習モデルを改良して局所性を改善させること | |
JP2023500222A (ja) | 系列マイニングモデルの訓練方法、系列データの処理方法、系列マイニングモデルの訓練装置、系列データの処理装置、コンピュータ機器、及びコンピュータプログラム | |
CN112052958A (zh) | 模型训练的方法、装置、设备及计算机可读存储介质 | |
KR102479264B1 (ko) | 트랜스포머 기반 생성 작업들에 대한 추론 시스템을 위한 동적 배칭 | |
CN111465943A (zh) | 芯片上计算网络 | |
CN114925320B (zh) | 一种数据处理方法及相关装置 | |
CN110689045A (zh) | 一种深度学习模型的分布式训练方法及装置 | |
CN114356540A (zh) | 一种参数更新方法、装置、电子设备和存储介质 | |
CN113032116A (zh) | 任务时间预测模型的训练方法、任务调度方法及相关装置 | |
CN118132156B (zh) | 一种算子执行方法、设备、存储介质及程序产品 | |
US20210304010A1 (en) | Neural network training under memory restraint | |
CN116126354A (zh) | 模型部署方法、装置、电子设备以及存储介质 | |
CN117786412A (zh) | 大型语言模型的弹性训练方法、集群系统、产品及介质 | |
US11481604B2 (en) | Apparatus and method for neural network processing | |
CN112748953A (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 |