CN117312839A - 模型训练方法、装置、系统及相关设备 - Google Patents
模型训练方法、装置、系统及相关设备 Download PDFInfo
- Publication number
- CN117312839A CN117312839A CN202211148350.3A CN202211148350A CN117312839A CN 117312839 A CN117312839 A CN 117312839A CN 202211148350 A CN202211148350 A CN 202211148350A CN 117312839 A CN117312839 A CN 117312839A
- Authority
- CN
- China
- Prior art keywords
- model
- devices
- gradient data
- communication
- communication domain
- 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 287
- 238000000034 method Methods 0.000 title claims abstract description 85
- 238000004891 communication Methods 0.000 claims abstract description 399
- 230000004927 fusion Effects 0.000 claims abstract description 52
- 230000008569 process Effects 0.000 claims abstract description 28
- 230000003993 interaction Effects 0.000 claims description 85
- 230000004913 activation Effects 0.000 claims description 25
- 238000004590 computer program Methods 0.000 claims description 10
- 238000003860 storage Methods 0.000 claims description 10
- 230000004044 response Effects 0.000 claims description 8
- 238000013135 deep learning Methods 0.000 description 21
- 238000012545 processing Methods 0.000 description 18
- 238000010586 diagram Methods 0.000 description 16
- 239000012634 fragment Substances 0.000 description 16
- 230000002452 interceptive effect Effects 0.000 description 16
- 230000000694 effects Effects 0.000 description 11
- 238000013528 artificial neural network Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 7
- 238000004422 calculation algorithm Methods 0.000 description 5
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000003058 natural language processing Methods 0.000 description 3
- 238000013473 artificial intelligence Methods 0.000 description 2
- 230000002457 bidirectional effect Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 101100498818 Arabidopsis thaliana DDR4 gene Proteins 0.000 description 1
- 241000950638 Symphysodon discus Species 0.000 description 1
- 230000004931 aggregating effect Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 238000007499 fusion processing Methods 0.000 description 1
- HOQADATXFBOEGG-UHFFFAOYSA-N isofenphos Chemical compound CCOP(=S)(NC(C)C)OC1=CC=CC=C1C(=O)OC(C)C HOQADATXFBOEGG-UHFFFAOYSA-N 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000008447 perception Effects 0.000 description 1
- 238000011176 pooling Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/21—Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
- G06F18/214—Generating training patterns; Bootstrap methods, e.g. bagging or boosting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/098—Distributed learning, e.g. federated learning
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Life Sciences & Earth Sciences (AREA)
- Artificial Intelligence (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Evolutionary Computation (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Computational Linguistics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Evolutionary Biology (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Filters That Use Time-Delay Elements (AREA)
- Cable Transmission Systems, Equalization Of Radio And Reduction Of Echo (AREA)
- Computer And Data Communications (AREA)
Abstract
提供一种模型训练方法,包括:获取待训练的AI模型并确定多个通信域;在每轮训练AI模型的过程中,利用每个通信域对应的局部梯度数据更新AI模型,其中,每个通信域对应的局部梯度数据根据该通信域中的多个设备分别生成的梯度数据进行梯度融合得到,并且,当间隔多轮训练AI模型时,利用全部梯度数据更新每个通信域分别训练的AI模型,该全部梯度数据根据多个通信域中的梯度数据进行梯度融合得到。如此,由于每间隔多轮训练才会利用所有设备训练AI模型所生成的梯度数据更新AI模型,这可以缓解部分通信域在一段时间内训练AI模型的进度较低导致AI模型的整体训练进度被拉低的问题,从而能够提高AI模型的整体训练效率。
Description
本申请要求于2022年06月29日提交中国国家知识产权局、申请号为202210760755.6、申请名称为“深度学习的方法、装置和系统”的中国专利申请的优先权,其全部内容通过引用结合在本申请中。
技术领域
本申请涉及人工智能技术领域,尤其涉及一种模型训练方法、装置、系统及相关设备。
背景技术
随着人工智能(artificAIl intelligence,AI)的发展,AI模型的规模也在逐渐增大。例如,自然语言处理(natural language processing,NLP)领域中的盘古(pangu)模型的参数量可以高达2000亿,训练样本的数据量高达40太字节。相应地,较大的模型参数量和样本数据量,会使得训练AI模型所需的算力较高。
目前,可以通过对AI模型进行分布式训练,以解决AI模型训练所需的庞大算力。具体实现时,AI模型的训练样本可以被等分成多个样本子集,并且每个样本子集以及该AI模型被分配给一个设备,从而每个设备利用一个样本子集迭代训练该AI模型,并生成用于更新该AI模型的梯度(gradient)。然后,不同设备之间交互各自生成的梯度数据并进行梯度融合,计算出全局的梯度数据(也即对所有设备生成的梯度数据进行梯度融合后所得到的数据),再根据该全局的梯度数据更新每个设备所负责训练的AI模型中的参数。基于上述方式,对AI模型中的参数进行多轮的迭代更新,最终完成对AI模型的训练。
实际应用场景中,不同设备之间通常采用ring-allreduce的方式交互梯度数据,即不同设备之间交互的梯度数据的流向可以构成一个环,并且,不同设备之间通过执行多次数据交互以及梯度数据融合,可以使得每个设备均能获得全局的梯度数据。但是,这种交互梯度数据的方式,通常会导致AI模型的训练效率较低、通信资源消耗较大。
发明内容
提供一种模型训练方法、装置、系统、存储介质以及计算机程序产品,以提高AI模型的训练效率、减少训练AI模型所需消耗的通信资源。
第一方面,本申请实施例提供一种模型训练方法,该方法可以由相应的模型训练装置执行,具体地,模型训练装置获取待训练的AI模型并确定多个通信域,该AI模型例如可以是具有较大的模型参数量或样本数据量的AI模型,如盘古模型等,所确定的每个通信域包括多个设备,例如可以将训练AI模型的所有设备分别划入多个通信域等;在每轮利用多个通信域中的设备分布式训练AI模型的过程中,模型训练装置利用每个通信域对应的局部梯度数据更新该通信域所训练的AI模型,其中,每个通信域对应的局部梯度数据根据该通信域中的多个设备分别生成的梯度数据进行梯度融合得到,并且,当间隔多轮利用该多个通信域中的设备分布式训练AI模型时(所间隔的轮数可以固定的轮数,也可以是随机的轮数),模型训练装置利用全部梯度数据更新每个通信域分别训练的AI模型,该全部梯度数据根据多个通信域中的多个设备分别生成的梯度数据进行梯度融合得到,以便利用全局的梯度数据实现对全局的AI模型进行更新。
由于每间隔多轮训练才会利用所有设备训练AI模型所生成的梯度数据更新AI模型,而在中间的每轮模型训练过程中,每个通信域单独利用其内部的多个设备生成的梯度数据更新该通信域所训练的AI模型,这可以缓解部分通信域在一段时间内训练AI模型的进度较低导致AI模型的整体训练进度被拉低的问题,从而能够提高AI模型的整体训练效率。并且,模型训练装置在每间隔多轮会利用全局的梯度数据更新AI模型,这可以保证AI模型的训练效果能够达到较高水平。在此基础上,由于中间的每轮模型训练过程中,不同通信域内的设备之间可以不用交互梯度数据,这可以有效减少训练AI模型所需消耗的通信资源。
在一种可能的实施方式中,在每轮训练过程中,针对多个通信域中的各个通信域可以独立训练和更新AI模型,以其中一个目标通信域为例,在每轮训练过程中,目标通信域中的多个设备之间交互各自生成的梯度数据,并根据多个设备之间交互的梯度数据进行梯度融合,生成目标通信域对应的局部梯度数据,从而利用该目标通信域对应的局部梯度数据更新该目标通信域所训练的AI模型。针对其它通信域,也可以是参照类似方式训练各自所负责的AI模型。如此,每个通信域可以通过在内部交互梯度数据的方式,实现在局部范围内对AI模型的进行梯度更新,并且,不同通信域之间更新AI模型的效率可以不受其它通信域的影响,以此可以提高AI模型的整体训练效率。
在一种可能的实施方式中,目标通信域中的多个设备之间在交互各自生成的梯度数据时,具体可以是获取该目标通信域对应的激活操作的版本号以及交互操作的版本号,其中,激活操作用于触发目标通信与中的不同设备之间交互梯度数据,交互操作是指目标通信域中的不同设备之间交互梯度数据的操作,从而当激活操作的版本号大于或者等于交互操作的版本号时,目标通信域中的多个设备之间交互各自生成的梯度数据。如此,各个通信域可以通过限制交互梯度数据的次数,来避免部分通信域执行交互梯度数据的次数过多,以此避免多个通信域之间存在异步冲突。
在一种可能的实施方式中,目标通信域中的多个设备之间的物理连接为环状连接,如基于HCCS环状方式进行连接等。
在一种可能的实施方式中,在确定多个通信域时,可以将亲和性较高的多个设备划入同一通信域中,具体实现时,模型训练装置可以获取设备拓扑关系,该设备拓扑关系用于指示训练AI模型的多个设备之间的连接关系,从而根据该设备拓扑关系,对用于训练AI模型的多个设备进行划分,得到多个通信域,其中,每个通信域中的不同设备之间的通信速率高于不同通信域的设备之间的通信速率。如此,通过将通信速率较高的设备划入同一通信域,可以提高后续模型训练过程中该通信域内的不同设备之间交互梯度数据的效率,以此可以提高AI模型的整体训练效率。
在一种可能的实施方式中,可以由用户将训练AI模型的所有设备配置各个设备所属的通信域。具体实现时,模型训练装置可以生成第一配置界面,该第一配置界面用于向用户呈现用于训练该AI模型的多个设备的标识,以便由用户在该第一配置界面上配置各个设备所属的通信域,从而模型训练装置可以响应于用户的第一配置操作,确定用于训练AI模型的多个设备中的每个设备所属的通信域,以此划分得到多个通信域。如此,可以由用户实现对多个通信域的配置,以便于用户对AI模型的训练进行干预,实现较优的模型训练效果。
在一种可能的实施方式中,在训练AI模型之前,模型训练装置还可以生成第二配置界面,该第二配置界面用于向用户呈现多种交互策略,其中的每种交互策略用于指示通信域中的多个设备之间交互梯度数据的一种方式,如allgather、allreduce、ring-allreduce、半倍(having-doubling)allreduce策略等,从而响应于用户针对该多种交互策略的第二配置操作,确定每个通信域中的多个设备之间交互梯度数据的方式。其中,不同通信域中的多个设备之间可以采用同一交互策略交互梯度数据,或者可以采用不同交互策略交互梯度数据等。如此,可以由用户对每个通信域内的交互策略进行人为配置,以便用户对AI模型的训练进行干预,如可以根据每个通信域内的设备特性配置最合适的交互策略等,从而实现较优的模型训练效果。
在一种可能的实施方式中,不同通信域中的设备位于同一计算节点,或者,多个通信域中的设备分别位于不同的计算节点。
在一种可能的实施方式中,每个通信域中的设备包括处理器、芯片或者服务器等,以此可以基于不同粒度的设备实现对AI模型的分布式训练。
第二方面,本申请实施例提供一种模型训练装置,所述装置包括:获取模块,用于获取待训练的AI模型;确定模块,用于确定多个通信域,所述多个通信域中的每个通信域包括多个设备;更新模块,用于在每轮利用所述多个通信域中的设备分布式训练所述AI模型的过程中,利用每个通信域对应的局部梯度数据更新该通信域所训练的所述AI模型,每个通信域对应的局部梯度数据根据该通信域中的多个设备分别生成的梯度数据进行梯度融合得到;并且,当间隔多轮利用所述多个通信域中的设备分布式训练所述AI模型时,利用全局梯度数据更新每个通信域分别训练的所述AI模型,所述全局梯度数据根据所述多个通信域中的多个设备分别生成的梯度数据进行梯度融合得到。
在一种可能的实施方式中,所述更新模块,用于:目标通信域中的多个设备之间交互各自生成的梯度数据,所述目标通信域为所述多个通信域的其中一个通信域;所述目标通信域根据所述多个设备之间交互的梯度数据进行梯度融合,生成所述目标通信域对应的局部梯度数据;所述目标通信域利用所述目标通信域对应的局部梯度数据更新所述目标通信域所训练的所述AI模型。
在一种可能的实施方式中,所述更新模块,用于:获取所述目标通信域对应的激活操作的版本号以及交互操作的版本号,所述激活操作用于触发所述目标通信域中的不同设备之间交互梯度数据,所述交互操作为所述目标通信域中的不同设备之间交互梯度数据的操作;当激活操作的版本号大于或者等于交互操作的版本号,所述目标通信域中的多个设备之间交互各自生成的梯度数据。
在一种可能的实施方式中,所述目标通信域中的多个设备之间的物理连接为环状连接。
在一种可能的实施方式中,所述确定模块,用于:获取设备拓扑关系,所述设备拓扑关系指示用于训练所述AI模型的多个设备之间的连接关系;根据所述设备拓扑关系,对用于训练所述AI模型的多个设备进行划分,得到所述多个通信域,其中,每个通信域中的不同设备之间的通信速率高于不同通信域的设备之间的通信速率。
在一种可能的实施方式中,所述确定模块,用于:生成第一配置界面,所述第一配置界面用于向用户呈现用于训练所述AI模型的多个设备的标识;响应于用户的第一配置操作,确定所述用于训练所述AI模型的多个设备中的每个设备所属的通信域。
在一种可能的实施方式中,所述确定模块,还用于:在训练所述AI模型之前,生成第二配置界面,所述第二配置界面用于向用户呈现多种交互策略,所述多种交互策略中的每种交互策略用于指示通信域中的多个设备之间交互梯度数据的一种方式;响应于用户针对所述多种交互策略的第二配置操作,确定所述每个通信域中的多个设备之间交互梯度数据的方式。
在一种可能的实施方式中,不同通信域中的设备位于同一计算节点,或者,所述多个通信域中的设备分别位于不同的计算节点。
在一种可能的实施方式中,每个通信域中的设备包括处理器、芯片或服务器。
由于第二方面提供的模型训练装置,对应于第一方面提供的模型训练方法,因此,第二方面以及第二方面中各实施方式所具有技术效果,可以参见相应的第一方面以及第一方面中各实施方式所具有的技术效果,在此不做赘述。
第三方面,本申请实施例提供一种模型训练系统,其特征在于,所述模型训练系统包括多个设备,所述模型训练系统用于执行上述第一方面以及第一方面的任一实现方式中的模型训练方法。
第四方面,本申请实施例提供一种计算设备,所述计算设备包括处理器和存储器;所述存储器用于存储指令,所述处理器执行所述存储器存储的该指令,以使所述计算设备执行上述第一方面或第一方面任一种可能实现方式中的模型训练方法。需要说明的是,该存储器可以集成于处理器中,也可以是独立于处理器之外。所述计算设备还可以包括总线。其中,处理器通过总线连接存储器。其中,存储器可以包括可读存储器以及随机存取存储器。
第五方面,本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有程序或指令,当其在至少一个计算机上运行时,使得至少一个计算机执行上述第一方面以及第一方面的任一实现方式中的模型训练方法。
第六方面,本申请实施例还提供一种包含指令的计算机程序产品,当其在至少一个计算机上运行时,使得至少一个计算机执行上述第一方面以及第一方面的任一实现方式中的模型训练方法。。
另外,第二方面至六中任一种实现方式所带来的技术效果可参见第一方面中不同实现方式所带来的技术效果,此处不再赘述。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的4个设备交互梯度数据的示意图;
图2为本申请实施例提供的一示例性模型训练系统的架构示意图;
图3为本申请实施例提供的一种模型训练方法的流程示意图;
图4为用于训练AI模型的NPU1至NPU8之间的拓扑结构示意图;
图5为本申请实施例提供的一示例性配置界面示意图;
图6为4个处理器之间交互梯度数据的示意图;
图7为本申请实施例提供的另一示例性配置界面示意图;
图8为处理器2通知其余处理器交互梯度数据的示意图;
图9为本申请实施例提供的一示例性服务器的架构示意图;
图10为本申请实施例提供的针对盘古模型进行分布式训练的流程示意图;
图11为本申请实施例提供的一种模型训练装置的结构示意图;
图12为本申请实施例提供的一种计算设备的硬件结构示意图。
具体实施方式
实际应用时,当待训练的AI模型中的参数量以及用于训练该AI模型的样本数据量较大时,单个设备所具备的有限算力可能难以单独完成对该AI模型的训练,因此,可以通过分布式训练的方式,综合多个设备的算力共同训练该AI模型。其中,训练AI模型的设备,可以是处理器级别的设备,如神经网络处理器(neural-network processing unit,NPU)、图形处理器(graphics processing unit,GPU)等。或者,训练AI模型的设备,可以是芯片级别的设备,如可以是与主机连接的多个芯片等。或者,训练AI模型的设备,可以是服务器级别的设备,如可以是多个独立的服务器等。其中,当训练AI模型的多个设备为处理器级别的设备或者芯片级别的设备时,该多个处理器可以位于同一服务器(该服务器可以构成计算节点),也可以位于不同的服务器。当训练AI模型的多个设备为服务器级别的设备时,该多个设备可以位于同一数据中心(该数据中心可以视为一个计算节点),或者,该多个设备可以位于不同的数据中心,即可以跨数据中心对AI模型进行分布式训练。
在迭代训练AI模型的过程中,多个设备之间通常会采用ring-allreduce的方式交互各个设备每轮训练AI模型所生成的梯度数据,并通过对交互得到的梯度数据进行梯度融合后所生成的新的梯度数据,更新AI模型参数。
以利用4个设备训练AI模型为例,如图1所示的设备1至设备4,在每轮迭代训练AI模型的过程中,各个设备分别利用一个样本子集训练AI模型,并生成相应的梯度数据,则,设备1至设备4可以分别对训练得到的梯度数据按照设备数量划分为4个分片。其中,设备1的梯度数据可以被划分为分片a1、b1、c1、d1,设备2的梯度数据可以被划分为分片a2、b2、c2、d2,设备3的梯度数据可以被划分为分片a3、b3、c3、d3,设备4的梯度数据可以被划分为分片a4、b4、c4、d4。则,设备1至设备4在第一次交互过程中,设备1向设备2发送分片a1,设备2向设备3发送分片b2,设备3向设备4发送分片c3,设备4向设备1发送分片d4。然后,各个设备可以将自身存储的梯度数据的分片与接收到的分片进行梯度融合,生成新的梯度数据,如设备1可以将设备4发送的分片d4与其存储的分片d1进行梯度融合,生成新的梯度数据的分片D1,并利用D1覆盖分片d1。例如,假设分片d4为{3,5,4,2,7,2},分片d1为{1,5,6,9,11,21},则对分片d4与d1进行梯度融合所得到的D1可以是{2,5,5,6,9,12}(对应位置的数值进行相加后计算平均值,该平均值向上取整)。类似地,设备2可以生成新的梯度数据的分片B2,并利用B2覆盖分片b2;设备3可以生成新的梯度数据的分片C2,并利用C2覆盖分片c2;设备4可以生成新的梯度数据的分片C4,并利用C4覆盖分片c4。
接着,设备1至设备4进行第二次交互,设备1将分片D1发送被设备2,设备2将分片A2发送被设备3,设备3将分片B3发送被设备4,设备4将分片C4发送被设备1,并且,各个设备再次利用自身存储的梯度数据分片与接收到的分片进行梯度融合,生成新的梯度数据分片,并将其替换原先存储的梯度数据分片。通过设备1与设备4之间的多次交互,每个设备中均存在一个梯度数据分片,为利用设备1与设备4中的相应分片进行梯度融合得到,如图1所示。
然后,设备1至设备4继续进行交互,将每个设备所存储的经过梯度融合后的分片共享给其它设备,使得每个设备均能获得基于所有设备中的梯度数据进行梯度融合后所得到的梯度融合结果,如图1所示,从而各个设备可以利用该梯度融合结果更新AI模型中的参数。如此,多个设备可以完成一轮对于AI模型的训练过程。
由于不同设备之间交互梯度数据的速度通常存在差异,如受负载或者资源规格等影响,部分设备发送/接收梯度数据的时延较高,这就拉低了多个设备之间交互梯度数据的整体效率,从而影响AI模型的训练效率。并且,多个设备之间频繁的交互梯度数据,也会导致训练AI模型所需消耗的通信资源较高。
基于此,本申请实施例提供一种模型训练方法,该方法可以由相应的模型训练装置执行,用于提高AI模型的训练效率。具体实现时,模型训练装置获取待训练的AI模型,并确定多个通信域,该多个通信域中的每个通信域包括多个设备;模型训练装置在每轮利用该多个通信域训练AI模型的过程中,利用每个通信域对应的局部梯度数据更新该通信域所训练的AI模型,其中,每个通信域对应的局部梯度数据根据该通信域中的多个设备分别生成的梯度数据进行梯度融合得到;并且,在每间隔多轮利用该多个通信域训练该AI模型的过程中,模型训练装置利用全局梯度数据更新每个通信域分别训练的AI模型,该全局梯度数据根据该多个通信域中的多个设备分别生成的梯度数据进行梯度融合得到。
由于每间隔多轮训练才会利用所有设备训练AI模型所生成的梯度数据更新AI模型,而在中间的每轮模型训练过程中,每个通信域单独利用其内部的多个设备生成的梯度数据更新该通信域所训练的AI模型,这可以缓解部分通信域在一段时间内训练AI模型的进度较低导致AI模型的整体训练进度被拉低的问题,从而能够提高AI模型的整体训练效率。
为便于理解,仍以设备1至设备4迭代训练AI模型为例,模型训练装置可以将设备1与设备2划入通信域1,将设备3与设备4划入通信域2。在每轮训练AI模型的过程中,通信域1内的设备1以及设备2分别训练AI模型,并得到相应的梯度数据,模型训练装置可以将对通信域1内的梯度数据进行梯度融合,并利用生成的局部梯度数据更新设备1以及设备2所负责训练的AI模型。同时,模型训练装置也会在该轮训练过程中,利用通信域2中生成的局部梯度数据更新设备3以及设备4所负责训练的AI模型。
假设在第一轮训练AI模型的过程中,通信域1完成AI模型训练和更新的耗时为40秒,通信域2完成AI模型训练和更新的耗时为60秒;在第二轮训练AI模型的过程中,通信域1完成AI模型训练和更新的耗时为55秒,通信域2完成AI模型训练和更新的耗时为40秒,然后再基于这两个通信域2在第二轮训练生成的局部梯度数据在全局更新AI模型,假设耗时10秒。由于通信域1与通信域2在两轮模型训练过程中相互独立,并且,子通信域1的模型训练耗时为95秒(即40秒+55秒),子通信域2的耗时为100秒(60秒+40秒),这使得AI模型的整体训练耗时为110秒(即100秒+10秒),其小于现有的基于ring-allreduce方式训练AI模型的方式所产生耗时125秒(即60秒+55秒+10秒),从而能够提高AI模型的整体训练效率。
并且,模型训练装置在每间隔多轮会利用全局的梯度数据更新AI模型,这可以保证AI模型的训练效果能够达到较高水平。在此基础上,由于中间的每轮模型训练过程中,不同通信域内的设备之间可以不用交互梯度数据,这可以有效减少训练AI模型所需消耗的通信资源。
示例性地,上述用于执行模型训练方法的模型训练装置,可以部署于图2所示的系统架构。其中,图2所示的系统架构,可以包括深度学习框架201、计算架构202、固件和驱动203、硬件层204。
深度学习框架201,可以综合开发组件以及预训练模型等资源,屏蔽用户对于底层复杂硬件的感知,并为用户提供快速开发AI模型的服务。示例性地,深度学习框架201,例如可以是TensorFlow框架、PyTorch框架、或MindSpore框架等,或者可以是其它类型的深度学习框架,对此并不进行限定。
计算架构202,用于提供开放的编程接口、支持用户快速构建基于AI模型的AI应用和业务,并调用硬件层204中的多个处理器实现AI模型训练的并行化能力。进一步地,计算架构102还可以实现对AI模型进行图级和算子级的编译优化和自动调优等功能。示例性地,计算架构202例如可以是神经网络计算架构(compute architecture for neuralnetworks,CANN)等,或者可以是其它可适用的架构。
固件和驱动203,用于响应计算架构202对于硬件层204的调用,使用硬件层204中的多个处理器,以执行相应的数据处理操作,如使用硬件层204中的多个处理器并行化训练AI模型等。
硬件层204,包括多个处理器,如图2中的处理器1至处理器8,还包括其它器件如存储器、网卡等(图2中未输出),用于为上层提供数据处理能力,支持上层的服务。示例性地,硬件层204中包括的处理器,例如可以包括中央处理器(central processing unit,CPU)、神经网络处理器(neural-network processing unit,NPU)、图形处理器(graphicsprocessing unit,GPU)、数据处理单元(data processing unit,DPU)中一种或者多种,或者可以包括其它类型的处理器,对此并不进行限定。
图2所示的系统架构仅作为一种示例性说明,实际应用时,模型训练装置也可以是部署于其它类型的系统架构中,用于实现对AI模型的分布式训练。比如,在其它可能的系统架构中,硬件层204可以包括多个服务器,即可以是以服务器为粒度对AI模型进行分布式训练。
为使本申请的上述目的、特征和优点能够更加明显易懂,下面将结合附图对本申请实施例中的各种非限定性实施方式进行示例性说明。显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,基于上述内容所获得的所有其它实施例,都属于本申请保护的范围。
如图3所示,为本申请实施例中一种模型训练方法的流程示意图,该方法可以应用于如图2所示的系统架构中。实际应用时,该方法也可以应用于其它可适用的系统架构。为便于理解与描述,下面以应用于图2所示的系统架构为例进行示例性说明,该方法具体可以包括:
S301:获取待训练的AI模型。
实际应用场景中,用户在深度学习框架201上开发AI应用时,可以将向深度学习框架201提供用于实现该AI应用的AI模型,从而深度学习框架201可以将该AI模型提供给计算架构202中模型训练装置,以触发对该AI模型的训练。
作为一种实现示例,用户可以在深度学习框架201上编写训练脚本(基于特定格式编写的可执行文件),该训练脚本中可以集成有用户在该深度学习框架201上构建的AI模型的文件。然后,深度学习框架201可以将该训练脚本提供给计算架构202中的模型训练装置,从而模型训练装置可以从该训练脚本中解析出AI模型,并根据训练脚本所指示的模型训练逻辑,对AI模型进行分布式训练。
作为另一种实现示例,深度学习框架201可以向用户提供配置界面,该配置界面中可以呈现多个已经完成构建的AI模型等,从而深度学习框架201可以根据用户针对AI模型选择操作,确定用户选择的待训练的AI模型。进一步地,配置界面中还可以呈现多种能够用于训练AI模型的深度学习算法,以便用户在该配置界面上选择深度学习算法,并基于所选择的深度学习算法配置相应的参数,如学习率、损失函数等。然后,深度学习框架201可以将用户所选择的AI模型、深度学习算法以及配置的参数提供给模型训练装置,以便模型训练装置基于该深度学习算法以及配置的参数,对AI模型进行分布式训练。当然,模型训练装置也可以通过其它方式获取待训练的AI模型,本实施例对此并不进行限定。
S302:确定多个通信域,该多个通信域中的每个通信域包括多个设备。
本实施例中,模型训练装置可以利用硬件层204中的N个处理器训练AI模型,N为正整数(如N为8、16等)。并且,在训练AI模型之前,模型训练装置可以先将训练AI模型的N个处理器划分成多个集合,每个集合包括至少两个处理器,并且,每个集合内的处理器可以构成一个通信域。比如,模型训练装置可以将8个处理器划分成2个通信域,每个通信域内包括4个处理器等。
其中,在训练AI模型的过程中,不同通信域内的处理器之间可以独立训练AI模型,比如,当通信域1内的处理器完成一轮针对AI模型的训练后,可以不用等待通信域2内的处理器同样完成一轮AI模型训练,而直接执行下一轮训练AI模型的过程。并且,每个通信域内的处理器之间可以通过allreduce、ring-allreduce等方式交互每轮训练AI模型所生成的梯度数据。
为便于理解,本实施例提供了以下两种确定多个通信域的实现示例:
在第一种实现示例中,模型训练装置可以根据设备之间的亲和性,将亲和性较高的多个设备划入同一通信域。具体实现时,模型训练装置可以获取硬件层204中的N个处理器之间的设备拓扑关系,该设备拓扑关系能够用于指示该N个处理器之间的连接关系,从而模型训练装置可以根据该设备拓扑关系,对用于训练AI模型的N个处理器进行划分,得到多个通信域,每个通信域中的不同处理之间的通信速率高于不同通信域的处理器之间的通信速率。实际应用时,模型训练装置可以根据该设备拓扑关系,将物理连接为环状连接的多个处理器划入一个通信域中,以此可以划分得到多个通信域。示例性地,同一通信域内的处理器之间,例如可以是基于华为缓存一致性系统(huawei cache coherence system,HCCS)环状连接方式建立物理连接。
比如,假设用于训练AI模型的N个处理器包括如图4所示的NPU1至NPU8,其中NPU1至NPU4之间采用全互联模式(full mesh)进行连接,NPU5至NPU8之间也采用全互联模式进行连接,NPU1与NPU5之间可以通过CPU进行连接。则,模型训练装置可以根据NPU1至NPU8之间的拓扑结构,确定将NPU1至NPU4划入通信域1中,将NPU5至NPU8划入通信域2中。通常情况下,NPU1至NPU4之间的通信速率,高于跨通信域的NPU之间的通信速率。
在第二种实现示例中,模型训练装置可以生成配置界面,例如可以生成如图5所示的配置界面,该配置界面包括M个可用于训练AI模型的处理器的标识(如处理器名称等),M为大于或者等于N的正整数,从而模型训练装置可以通过深度学习框架201,将该配置界面呈现给用户,以供用户从呈现的M个处理器中选择此次用于训练AI模型的N个处理器,并进一步为用户所选择的每个处理器配置其所属的通信域。相应地,模型训练装置可以执行通信域的初始化流程,具体可以是响应于用户的配置操作,确定用于训练AI模型的N个处理器中的每个处理器所属的通信域,以此划分得到多个通信域,并确定每个通信域的规模。其中,每个通信域包括的处理器的数量可以相同,也可以不同。
举例来说,假设图5所示的配置界面上呈现有16个可供用户选择的处理器,并基于用户针对处理器的选择操作,确定选择处理器1至处理器8来训练AI模型。然后,用户可以在该配置界面上创建两个通信域,分别为通信域1以及通信域2,并在该配置界面上指定处理器1至处理器8分别所属的通信域。如此,模型训练装置可以根据用户对于各个处理器所属通信域的配置,确定每个通信域中包括的处理器,以此得到多个通信域。
当然,上述确定通信域的实现方式仅作为一些示例性说明,实际应用时,模型训练装置也可以通过其它方式确定多个通信域,如模型训练装置在确定用户所选择的多个处理器后,可以将位于同一服务器内的处理器划入一个通信域等,本实施例对此并不进行限定。
S303:在每轮利用多个通信域训练AI模型的过程中,利用每个通信域对应的局部梯度数据更新该通信域所训练的AI模型,每个通信域对应的局部梯度数据根据该通信域中的多个处理器分别生成的梯度数据进行梯度融合得到。
在确定多个通信域后,模型训练装置可以利用多个通信域中的处理器对AI模型进行分布式训练。
具体实现时,模型训练装置可以为每个处理器分配AI模型以及用于训练该AI模型的训练样本子集,不同处理器所分配到的AI模型相同、所分配到的训练样本子集不同,每个训练样本子集包括至少一个训练样本。然后,在每轮训练过程中,每个处理器可以利用分配到的训练样本子集训练AI模型,并根据AI模型基于训练样本的推理结果与实际结果的差异生成梯度数据,该梯度数据用于对AI模型中的参数进行梯度更新。由于每个处理器基于部分训练样本(也即训练样本子集)训练AI模型,因此,不同处理器之间可以交互各自生成的梯度数据并进行梯度融合,并基于梯度融合后的结果对各个处理器上的AI模型中的参数进行梯度数据,以此达到利用多个训练样本子集训练AI模型的效果。
本实施例中,在每轮模型训练的过程中,并非在所有的处理器之间交互梯度数据,每个处理器仅在其所属的通信域内交互梯度数据,并进行梯度融合以及模型参数更新,这使得不同通信域内的模型训练过程互不干扰。以利用图4所示的NPU1至NPU8训练AI模型为例,在每轮模型训练过程中,NPU1至NPU4之间仅在通信域1内交互梯度数据,与通信域2中的NPU5至NPU8之间不交互梯度数据。类似地,NPU5至NPU8之间仅在通信域2内交互梯度数据,与通信域1内的NPU不交互梯度数据。如此,每个通信域在完成梯度数据交互、梯度融合以及模型参数更新后,可以直接执行下一轮的模型训练过程,无需等待其它通信域完成一轮的AI模型训练。
其中,每个通信域内的多个处理器之间,可以基于任意策略交互梯度数据。为便于理解与说明,下面以多个通信域中的其中一个通信域(以下称之为目标通信域)为例进行示例性说明,其余通信域中的处理器之间可以参照类似过程进行数据交互,每个通信域内基于所有处理器的梯度数据进行梯度融合所生成的新的梯度数据,称之为局部梯度数据。示例性地,目标通信域中的多个处理器之间,可以基于以下几种实现方式进行数据交互。
在第一种实现示例中,目标通信域内的多个处理器,可以基于allgather、allreduce、ring-allreduce、半倍(having-doubling)allreduce中的任意一种策略交互梯度数据。
以基于allreduce策略交互梯度数据为例,假设目标通信域内包括4个处理器,分别为处理器1、处理器2、处理器3以及处理器4,并且,这4个处理器上的梯度数据分别为梯度数据a、梯度数据b、梯度数据c以及梯度数据d,如图6所示。则,在第一次交互时,处理器1可以与处理器2交互梯度数据,同时,处理器3与处理器4交互梯度数据。此时,处理器1以及处理器2可以通过对梯度数据a以及梯度数据b进行梯度融合,生成梯度数据M;处理器3以及处理器4可以通过对梯度数据c以及梯度数据d进行梯度融合,生成梯度数据N。在第二次交互时,处理器1可以与处理器3交互梯度数据,具体为处理器1向处理器3发送梯度数据M,处理器3向处理器1发送梯度数据N。同时,处理器2与处理器4交互梯度数据。此时,处理器1以及处理器3可以通过对梯度数据M以及梯度数据N进行梯度融合,生成梯度数据X,该梯度数据X即为根据梯度数据a、梯度数据b、梯度数据c以及梯度数据d进行梯度融合所生成的数据。并且,处理器2以及处理器4也能通过对梯度数据M以及梯度数据N进行梯度融合,生成梯度数据X。如此,经过两次交互后,每个处理器均可以获得根据目标通信域内的所有处理器的梯度数据进行梯度融合后所生成的梯度数据X。
进一步地,每个通信域内所采用的交互梯度数据的策略,可以由用户进行配置。比如,模型训练装置可以通过深度学习框架201向用户呈现如图7所示的配置界面,从而用户在该配置界面上可以为每个通信域配置交互策略。具体地,如图7所示,配置界面可以针对每个通信域提供多种交互策略的候选项,如allgather、allreduce、ring-allreduce、半倍allreduce等,从而用户可以从多个候选项中,为每个通信域配置一种交互策略,并且,不同通信域所采用的交互策略可以相同,或者可以不相同,本实施例对此并不进行限定。
在第二种实现方式中,目标通信域中的不同处理器训练AI模型的速度可能存在差异。则,目标通信域中的不同处理器在交互梯度数据时,对于已完成AI模型训练的处理器,可以优先交互梯度数据,不用等待目标通信域内的其余所有处理器也完成AI模型训练,以此可以提高目标通信域内的多个处理器之间交互梯度数据的效率。
仍以目标通信域中包括4个处理器为例,处理器1至处理器4并行训练AI模型,假设处理器2在目标通信域中最先完成AI模型的训练,则处理器2可以生成激活消息,并利用该激活消息通知处理器1、处理器3以及处理器4开始交互梯度数据。实际应用时,基于处理器之间的物理连接以及通信规则,处理器2可以先向处理器1发送激活消息,以通知处理器1开始交互梯度数据,然后再向处理器4发送激活消息,并由处理器1向处理器2发送激活消息,以通知处理器2开始交互梯度数据,如图8所示。这样,若处理器1第二个完成AI模型训练,则处理器2与处理器3可以直接交互梯度数据(并进行梯度数据融合)。然后,若处理器3第三个完成AI模型训练,则处理器2可以再与处理器3交互梯度数据。并且,当处理器4也完成AI模型训练,处理器2再与处理器4交互梯度数据。这样,处理器2可以获得目标通信域中的所有处理器生成的梯度数据。最后,处理器2可以将基于4个处理器的梯度数据所生成的局部梯度数据发送给其余各处理器,以便利用该局部梯度数据对各个处理器上的AI模型进行参数更新,如图8所示。
进一步地,由于在对AI模型进行多轮训练的过程中,各个通信域独立执行AI模型的训练和梯度数据融合的过程,为此,各个通信域可以通过限制交互梯度数据的次数,来避免部分通信域执行交互梯度数据的次数过多,以此避免多个通信域之间存在异步冲突。具体实现时,目标通信域内最先完成AI模型训练的处理器可以生成激活消息,该激活消息用于通知该目标通信域中的其余各个处理器开始交互梯度数据,并且,该激活消息中包括激活操作的版本号,该激活操作用于触发目标通信域中的不同处理器之间交互梯度数据。并且,最先完成AI模型训练的处理器可以获取当前已执行的交互操作的版本号,该交互操作即为目标通信域中不同设备之间交互梯度数据的操作,从而该处理器可以比较激活操作的版本号与交互操作的版本号。并且,当激活操作的版本号大于或者等于交互操作的版本号时,该处理器开始与其它处理器交互梯度数据;否则,多个处理器之间不执行梯度数据的交互操作。
在第三种实现示例中,目标通信域中的多个处理器,可以通过共享内存交互梯度数据。具体实现时,目标通信域中的多个处理器可以配置有共享内存,并且,多个处理器均能访问该共享内存。这样,当目标通信域中的每个处理器在完成一轮对于AI模型的训练并生成梯度数据后,可以将该梯度数据发送至共享内存中的指定区域,从而共享内存中可以存储有多个处理器分别生成的梯度数据。如此,每个处理器可以从共享内存中访问得到该目标通信域中的所有处理器生成的梯度数据,并通过对这些梯度数据进行梯度融合,可以得到局部梯度数据。
需要说明的是,在每轮训练AI模型的过程中,每个通信域中的多个处理器,均可以参照上述方式交互梯度数据并生成局部梯度数据。并且,上述几种在通信域内交互梯度数据的实现方式仅作为一些示例,在其它实施例中,每个通信域内的多个设备之间也可以采用其它方式交互梯度数据,本实施例对此并不进行限定。
S304:当间隔多轮利用多个通信域中的设备分布式训练AI模型时,利用全局梯度数据更新每个通信域分别训练的AI模型,其中,该全局梯度数据根据所有通信域中的多个处理器分别生成的梯度数据进行梯度融合得到。
由于每个通信域均是利用部分训练样本子集训练AI模型,这使得每个通信域所训练出的AI模型的推理性能(如推理准确性等),通常难以达到基于全集的训练样本所训练出的AI模型的推理性能。为此,本实施例中,在对AI模型完成多轮训练后,多个通信域之间可以交互梯度数据,以便基于所有处理器生成的梯度数据更新各个处理器上的AI模型,具体可以是对所有处理器生成的梯度数据进行梯度融合,并利用梯度融合所生成的新的梯度数据(以下称之为全局梯度数据)更新各个处理器上的AI模型中的参数。如此,最终训练出的AI模型的推理性能,通常能够达到基于全集训练样本训练该AI模型的推理性能。
在一种可能的实施方式中,各个通信域单独训练AI模型,并且,每个通信域内的处理器在每轮训练AI模型时,可以统计当前对于该AI模型的迭代次数。若当前的迭代次数为T值的整数倍,则不仅该通信域内的多个处理器按照上文所述的方式交互梯度数据,并通过梯度融合生成该通信域对应的局部梯度数据,而且,该通信域还与其它通信域之间交互局部梯度数据,以使得每个通信域能够获得所有通信域分别生成的局部梯度数据。如此,通过对所有通信域生成的局部梯度数据进行梯度融合,得到可以全局梯度数据,并利用该全局梯度数据对每个通信域内的AI模型进行参数更新。
其中,多个通信域之间交互局部梯度数据的方式,与每个通信域内的多个处理器之间交互梯度数据的方式类似。例如,多个通信域之间可以基于allgather、allreduce、ring-allreduce、半倍allreduce中的任意一种策略交互局部梯度数据,或者,多个通信域按照完成(m*T)轮模型训练的顺序依次交互局部梯度数据(m为正整数),或者多个通信域基于共享存储区域交互局部梯度数据等,本实施例对此并不进行限定。
上述实施方式中,不同通信域之间交互局部梯度数据,而在另一种可能的实施方式中,多个通信域之间可以直接交互各个处理器分别生成的梯度数据。
比如,当每个通信域内的处理器迭代训练AI模型的次数为T值的整数倍时,每个通信域内的一个处理器可以汇总该通信域内的各个处理器分别生成的梯度数据,得到该通信域对应的梯度数据集合,该梯度数据集合包括该通信域中的所有处理器分别生成的梯度数据,从而多个通信域中负责汇总梯度数据的处理器之间,可以交互各自的梯度数据集合。或者,当每个通信域内的处理器迭代训练AI模型的次数为T值的整数倍时,参与AI模型训练的所有处理器之间直接交互各自生成的梯度数据等。如此,每个通信域均能获得所有通信域内的处理器分别生成的梯度数据,从而通过对所有的梯度数据进行梯度融合,可以得到全局梯度数据,以便利用该全局梯度数据对每个通信域内的AI模型进行参数更新。
其中,上述实现方式中,是以多个通信域每间隔(T-1)轮交互梯度数据(或者局部梯度数据)为例进行示例性说明,在其它实施例中,多个通信域之间每次交互梯度数据所间隔的模型训练次数可以不是固定值。比如,在分布式训练AI模型的过程中,当每个通信域迭代训练AI模型的次数均达到1000次时,多个通信域之间第一次交互梯度数据(或者局部梯度数据),间隔的模型训练次数为1000;然后,当每个通信域迭代训练AI模型的次数均达到1900次时,多个通信域之间第二次交互梯度数据(或者局部梯度数据),间隔的模型训练次数为900;当每个通信域迭代训练AI模型的次数均达到2700次时,多个通信域之间第三次交互梯度数据(或者局部梯度数据),间隔的模型训练次数为800;当每个通信域迭代训练AI模型的次数均达到3400次时,多个通信域之间第四次交互梯度数据(或者局部梯度数据),间隔的模型训练次数为700,以此类推。
需要说明的是,本实施例中,是以通信域中的设备具体为处理器进行示例性说明,在其它实施例中,通信域中的设备也可以是芯片或者服务器,其对AI模型进行分布式训练的具体实现过程,可参照本实施例的相关之处描述进行理解,在此不做赘述。
本实施例中,由于每间隔多轮模型训练才会利用所有处理器训练AI模型所生成的梯度数据更新AI模型,而在中间的每轮模型训练过程中,每个通信域单独利用其内部的多个处理器生成的梯度数据更新该通信域所训练的AI模型,这可以缓解部分通信域训练AI模型的进度较低而对AI模型的整体训练进度所产生的影响,也即能够提高AI模型的整体训练效率。比如,第1轮集合1的进度拉低3秒,第2轮集合2的进度拉低5秒,整体进度不会被拉低为8秒,而是其中的最慢的一个进度,即5秒。并且,每间隔多轮模型训练利用全局梯度数据更新AI模型,可以保证AI模型的训练效果达到较高水平,在此基础上,由于中间的每轮模型训练过程中,不同通信域内的处理器之间可以不用交互梯度数据,这可以有效减少训练AI模型所需消耗的通信资源。
下面,结合具体应用场景,对AI模型进行分布式训练的具体实现过程进行介绍。在该应用场景中,图1所述的系统架构可以部署于服务器中,该服务器包括4个CPU,并且可以外接8个NPU芯片,如图9所示,从而利用该服务器中的NPU1至NPU8可以实现对盘古模型(一种AI模型)进行分布式训练。在其它实施例中,也可以是基于多个服务器中的NPU芯片实现对盘古模型的分布式训练,其训练方式与利用一个服务器中的多个NPU分布式训练盘古模型的实现方式类似,可进行参照理解。
在图9所示的服务器中,每个CPU可以支持8个第4代双倍速率双列直插式存储模块(double data rate 4dual inline memory modules,DDR4 DIMM),并且,CPU1至CPU4之间可以全互联(full mesh)。服务器中的CPU可以提供90GB/s(吉字节每秒)的带宽能力,其中,每个CPU提供的单向带宽可以为30GB/s,双向带宽为60GB/s。
服务器外接的8个NPU芯片中,NPU1至NPU4可以全互联,可以位于一个NPU主板,NPU5至NPU8全互联,可以位于另一个NPU主板,并且,服务器外接的8个NPU芯片与CPU之间存在连接,例如可以基于外围元件快速互连(peripheral component interconnectexpress,PCIE)总线进行连接等(图9中仅示出NPU与CPU之间的部分连接),从而NPU1至NPU4可以通过服务器中的CPU与NPU5至NPU8进行数据交互。每个NPU主板可以提供90GB/s的带宽能力,其中,每个NPU提供的单向带宽可以为30GB/s,双向带宽为60GB/s基于图9所示的服务器,可以实现对盘古模型进行分布式训练,该分布式训练过程如图10所示。用户可以向服务器提供训练脚本,该训练脚本中可以包括盘古模型的文件,并指定利用NPU1至NPU8训练该盘古模型,并定义NPU1至NPU4属于通信域1、定义NPU5至NPU8属于通信域2。
如此,服务器中主机侧的CPU,可以从该训练脚本中解析出待训练的盘古模型,并确定此次用于分布式训练盘古模型的多个NPU以及每个NPU所属的通信域。
然后,CPU可以根据训练脚本提取计算图,该计算图中包括多个节点,不同节点之间存在边进行连接。其中,计算图中的节点,用于指示训练脚本中定义的计算,节点之间的边用于指示不同计算之间的依赖关系,所提取的计算图可以保存至闪存卡(trans-flashcard)
接着,CPU可以对闪存卡中的计算图进行编译,生成中间表示(intermedAIterepresentation,IR),并将IR提供给编译器。其中,编译器可以定义有一个或者多个算子库,如图10所示的神经网络(neural network,NN)算子库、华为集合通信库(huaweicollective communication library,HCCL)算子库等。示例性地,NN算子库中可以包括卷积层算子、池化层算子、损失函数等;HCCL算子库中可以包括用于定义数据通信方式的算子,如allreduce算子、allgather算子等。
如此,CPU可以利用编译器,确定分布式训练盘古模型所需依次执行的算子,并以此生成相应的设备指令,并将该设备指令下发给设备侧的NPU。
设备侧的NPU1以及NPU8可以基于主机侧下发的设备指令,循环执行相应的算子并对盘古模型进行梯度更新,直至满足迭代终止条件,以此实现对盘古模型的分布式训练。其中,在分布式训练盘古模型的过程中,通信域1中的NPU1至NPU4,与通信域2中的NPU5至NPU8分别对盘古模型单独训练,并且,通信域1与通信域2在每间隔(T-1)轮模型训练交互训练盘古模型所生成的梯度数据,以实现在全局对盘古模型进行梯度更新,其具体训练过程,可参见前述图3所示实施例的相关之处描述,在此不做赘述。
最后,设备侧在完成针对盘古模型的分布式训练后,可以将训练结果发送给主机侧,该训练结果例如可以包括完成训练的盘古模型、盘古模型的属性信息(如推理准确性)等。
上文中结合图1至图10,详细描述了本申请所提供的模型训练方法,下面将结合图11至图12,分别描述根据本申请所提供的模型训练装置以及计算设备。
与上述方法同样的发明构思,本申请实施例还提供一种模型训练装置。参见图11,为本申请实施例提供的一种模型训练装置的结构示意图,图11所示的模型训练装置1100,例如可以是上述图3所示实施例中提及的模型训练装置。如图11所示,模型训练装置1100包括:
获取模块1101,用于获取待训练的AI模型;
确定模块1102,用于确定多个通信域,所述多个通信域中的每个通信域包括多个设备;
更新模块1103,用于在每轮利用所述多个通信域中的设备分布式训练所述AI模型的过程中,利用每个通信域对应的局部梯度数据更新该通信域所训练的所述AI模型,每个通信域对应的局部梯度数据根据该通信域中的多个设备分别生成的梯度数据进行梯度融合得到;并且,当间隔多轮利用所述多个通信域中的设备分布式训练所述AI模型时,利用全局梯度数据更新每个通信域分别训练的所述AI模型,所述全局梯度数据根据所述多个通信域中的多个设备分别生成的梯度数据进行梯度融合得到。
在一种可能的实施方式中,所述更新模块1103,用于:
目标通信域中的多个设备之间交互各自生成的梯度数据,所述目标通信域为所述多个通信域的其中一个通信域;
所述目标通信域根据所述多个设备之间交互的梯度数据进行梯度融合,生成所述目标通信域对应的局部梯度数据;
所述目标通信域利用所述目标通信域对应的局部梯度数据更新所述目标通信域所训练的所述AI模型。
在一种可能的实施方式中,所述更新模块1103,用于:
获取所述目标通信域对应的激活操作的版本号以及交互操作的版本号,所述激活操作用于触发所述目标通信域中的不同设备之间交互梯度数据,所述交互操作为所述目标通信域中的不同设备之间交互梯度数据的操作;
当激活操作的版本号大于或者等于交互操作的版本号,所述目标通信域中的多个设备之间交互各自生成的梯度数据。
在一种可能的实施方式中,所述目标通信域中的多个设备之间的物理连接为环状连接。
在一种可能的实施方式中,所述确定模块1102,用于:
获取设备拓扑关系,所述设备拓扑关系指示用于训练所述AI模型的多个设备之间的连接关系;
根据所述设备拓扑关系,对用于训练所述AI模型的多个设备进行划分,得到所述多个通信域,其中,每个通信域中的不同设备之间的通信速率高于不同通信域的设备之间的通信速率。
在一种可能的实施方式中,所述确定模块1102,用于:
生成第一配置界面,所述第一配置界面用于向用户呈现用于训练所述AI模型的多个设备的标识;
响应于用户的第一配置操作,确定所述用于训练所述AI模型的多个设备中的每个设备所属的通信域。
在一种可能的实施方式中,所述确定模块1102,还用于:
在训练所述AI模型之前,生成第二配置界面,所述第二配置界面用于向用户呈现多种交互策略,所述多种交互策略中的每种交互策略用于指示通信域中的多个设备之间交互梯度数据的一种方式;
响应于用户针对所述多种交互策略的第二配置操作,确定所述每个通信域中的多个设备之间交互梯度数据的方式。
在一种可能的实施方式中,不同通信域中的设备位于同一计算节点,或者,所述多个通信域中的设备分别位于不同的计算节点。
在一种可能的实施方式中,每个通信域中的设备包括处理器、芯片或服务器。
图11所示的数据处理装置100对应于图3所示实施例中的数据处理装置,故数据处理装置100中的各个功能模块的具体实现及其所具有的技术效果,可以参见前述实施例的相关之处描述,在此不做赘述。
本申请实施例还提供一种计算设备,如图12所示,计算设备1200中可以包括通信接口1210、处理器1220。可选的,计算设备1200中还可以包括存储器1230。其中,存储器1230可以设置于计算设备1200内部,还可以设置于计算设备1200外部。示例性地,上述图3所示实施例中数据处理装置执行的各个动作均可以由处理器1220实现。处理器1220可以通过通信接口1210获取待训练的AI模型以及多个通信域,并用于实现图3中所执行的方法。在实现过程中,处理流程的各步骤可以通过处理器1220中的硬件的集成逻辑电路或者软件形式的指令完成图3中执行的方法。为了简洁,在此不再赘述。处理器1220用于实现上述方法所执行的程序代码可以存储在存储器1230中。存储器1230和处理器1220连接,如耦合连接等。
本申请实施例的一些特征可以由处理器1220执行存储器1230中的程序指令或者软件代码来完成/支持。存储器1230上在加载的软件组件可以从功能或者逻辑上进行概括。
本申请实施例中涉及到的任一通信接口可以是电路、总线、收发器或者其它任意可以用于进行信息交互的装置。比如计算设备1200中的通信接口1210,示例性地,该其它装置可以是与该计算设备1200相连的设备等。
本申请实施例中涉及的处理器可以是通用处理器、数字信号处理器、专用集成电路、现场可编程门阵列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
本申请实施例中的耦合是装置、模块或模块之间的间接耦合或通信连接,可以是电性,机械或其它的形式,用于装置、模块或模块之间的信息交互。
处理器可能和存储器协同操作。存储器可以是非易失性存储器,比如硬盘或固态硬盘等,还可以是易失性存储器,例如随机存取存储器。存储器是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。
本申请实施例中不限定上述通信接口、处理器以及存储器之间的具体连接介质。比如存储器、处理器以及通信接口之间可以通过总线连接。所述总线可以分为地址总线、数据总线、控制总线等。
基于以上实施例,本申请实施例还提供了一种计算机存储介质,该存储介质中存储软件程序,该软件程序在被一个或多个处理器读取并执行时可实现上述任意一个或多个实施例提供的模型训练装置执行的方法。所述计算机存储介质可以包括:U盘、移动硬盘、只读存储器、随机存取存储器、磁碟或者光盘等各种可以存储程序代码的介质。
本领域内的技术人员应明白,本申请的实施例可提供为方法、装置、系统、存储介质或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的术语在适当情况下可以互换,这仅仅是描述本申请的实施例中对相同属性的对象在描述时所采用的区分方式。
显然,本领域的技术人员可以对本申请实施例进行各种改动和变型而不脱离本申请实施例的范围。这样,倘若本申请实施例的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (22)
1.一种模型训练方法,其特征在于,所述方法包括:
获取待训练的AI模型;
确定多个通信域,所述多个通信域中的每个通信域包括多个设备;
在每轮利用所述多个通信域中的设备分布式训练所述AI模型的过程中,利用每个通信域对应的局部梯度数据更新该通信域所训练的所述AI模型,每个通信域对应的局部梯度数据根据该通信域中的多个设备分别生成的梯度数据进行梯度融合得到;
当间隔多轮利用所述多个通信域中的设备分布式训练所述AI模型时,利用全局梯度数据更新每个通信域分别训练的所述AI模型,所述全局梯度数据根据所述多个通信域中的多个设备分别生成的梯度数据进行梯度融合得到。
2.根据权利要求1所述的方法,其特征在于,所述利用每个通信域对应的局部梯度数据更新该通信域所训练的所述AI模型,包括:
目标通信域中的多个设备之间交互各自生成的梯度数据,所述目标通信域为所述多个通信域的其中一个通信域;
所述目标通信域根据所述多个设备之间交互的梯度数据进行梯度融合,生成所述目标通信域对应的局部梯度数据;
所述目标通信域利用所述目标通信域对应的局部梯度数据更新所述目标通信域所训练的所述AI模型。
3.根据权利要求2所述的方法,其特征在于,所述目标通信域中的多个设备之间交互各自生成的梯度数据,包括:
获取所述目标通信域对应的激活操作的版本号以及交互操作的版本号,所述激活操作用于触发所述目标通信域中的不同设备之间交互梯度数据,所述交互操作为所述目标通信域中的不同设备之间交互梯度数据的操作;
当激活操作的版本号大于或者等于交互操作的版本号,所述目标通信域中的多个设备之间交互各自生成的梯度数据。
4.根据权利要求2或3所述的方法,其特征在于,所述目标通信域中的多个设备之间的物理连接为环状连接。
5.根据权利要求1至4任一项所述的方法,其特征在于,所述确定多个通信域,包括:
获取设备拓扑关系,所述设备拓扑关系指示用于训练所述AI模型的多个设备之间的连接关系;
根据所述设备拓扑关系,对用于训练所述AI模型的多个设备进行划分,得到所述多个通信域,其中,每个通信域中的不同设备之间的通信速率高于不同通信域的设备之间的通信速率。
6.根据权利要求1至4任一项所述的方法,其特征在于,所述确定多个通信域,包括:
生成第一配置界面,所述第一配置界面用于向用户呈现用于训练所述AI模型的多个设备的标识;
响应于用户的第一配置操作,确定所述用于训练所述AI模型的多个设备中的每个设备所属的通信域。
7.根据权利要求1至6任一项所述的方法,其特征在于,在训练所述AI模型之前,所述方法还包括:
生成第二配置界面,所述第二配置界面用于向用户呈现多种交互策略,所述多种交互策略中的每种交互策略用于指示通信域中的多个设备之间交互梯度数据的一种方式;
响应于用户针对所述多种交互策略的第二配置操作,确定所述每个通信域中的多个设备之间交互梯度数据的方式。
8.根据权利要求1至7任一项所述的方法,其特征在于,不同通信域中的设备位于同一计算节点,或者,所述多个通信域中的设备分别位于不同的计算节点。
9.根据权利要求1至8任一项所述的方法,其特征在于,每个通信域中的设备包括处理器、芯片或服务器。
10.一种模型训练装置,其特征在于,所述装置包括:
获取模块,用于获取待训练的AI模型;
确定模块,用于确定多个通信域,所述多个通信域中的每个通信域包括多个设备;
更新模块,用于在每轮利用所述多个通信域中的设备分布式训练所述AI模型的过程中,利用每个通信域对应的局部梯度数据更新该通信域所训练的所述AI模型,每个通信域对应的局部梯度数据根据该通信域中的多个设备分别生成的梯度数据进行梯度融合得到;并且,当间隔多轮利用所述多个通信域中的设备分布式训练所述AI模型时,利用全局梯度数据更新每个通信域分别训练的所述AI模型,所述全局梯度数据根据所述多个通信域中的多个设备分别生成的梯度数据进行梯度融合得到。
11.根据权利要求10所述的装置,其特征在于,所述更新模块,用于:
目标通信域中的多个设备之间交互各自生成的梯度数据,所述目标通信域为所述多个通信域的其中一个通信域;
所述目标通信域根据所述多个设备之间交互的梯度数据进行梯度融合,生成所述目标通信域对应的局部梯度数据;
所述目标通信域利用所述目标通信域对应的局部梯度数据更新所述目标通信域所训练的所述AI模型。
12.根据权利要求11所述的装置,其特征在于,所述更新模块,用于:
获取所述目标通信域对应的激活操作的版本号以及交互操作的版本号,所述激活操作用于触发所述目标通信域中的不同设备之间交互梯度数据,所述交互操作为所述目标通信域中的不同设备之间交互梯度数据的操作;
当激活操作的版本号大于或者等于交互操作的版本号,所述目标通信域中的多个设备之间交互各自生成的梯度数据。
13.根据权利要求11或12所述的装置,其特征在于,所述目标通信域中的多个设备之间的物理连接为环状连接。
14.根据权利要求10至13任一项所述的装置,其特征在于,所述确定模块,用于:
获取设备拓扑关系,所述设备拓扑关系指示用于训练所述AI模型的多个设备之间的连接关系;
根据所述设备拓扑关系,对用于训练所述AI模型的多个设备进行划分,得到所述多个通信域,其中,每个通信域中的不同设备之间的通信速率高于不同通信域的设备之间的通信速率。
15.根据权利要求10至13任一项所述的装置,其特征在于,所述确定模块,用于:
生成第一配置界面,所述第一配置界面用于向用户呈现用于训练所述AI模型的多个设备的标识;
响应于用户的第一配置操作,确定所述用于训练所述AI模型的多个设备中的每个设备所属的通信域。
16.根据权利要求10至15任一项所述的装置,其特征在于,所述确定模块,还用于:
在训练所述AI模型之前,生成第二配置界面,所述第二配置界面用于向用户呈现多种交互策略,所述多种交互策略中的每种交互策略用于指示通信域中的多个设备之间交互梯度数据的一种方式;
响应于用户针对所述多种交互策略的第二配置操作,确定所述每个通信域中的多个设备之间交互梯度数据的方式。
17.根据权利要求10至16任一项所述的装置,其特征在于,不同通信域中的设备位于同一计算节点,或者,所述多个通信域中的设备分别位于不同的计算节点。
18.根据权利要求10至17任一项所述的装置,其特征在于,每个通信域中的设备包括处理器、芯片或服务器。
19.一种模型训练系统,其特征在于,所述模型训练系统包括多个设备,所述模型训练系统用于执行如权利要求1至9中任一项所述的方法。
20.一种计算设备,其特征在于,包括处理器和存储器;
所述处理器用于执行所述存储器中存储的指令,以使得所述计算设备执行权利要求1至9中任一项所述的方法。
21.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有指令,当其在至少一个计算设备上运行时,使得所述至少一个计算设备执行如权利要求1至9中任一项所述的方法。
22.一种包含指令的计算机程序产品,其特征在于,当其在至少一个计算设备上运行时,使得所述至少一个计算设备执行如权利要求1至9中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2023/101224 WO2024001861A1 (zh) | 2022-06-29 | 2023-06-20 | 模型训练方法、装置、系统及相关设备 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210760755 | 2022-06-29 | ||
CN2022107607556 | 2022-06-29 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117312839A true CN117312839A (zh) | 2023-12-29 |
Family
ID=89236100
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211148350.3A Pending CN117312839A (zh) | 2022-06-29 | 2022-09-20 | 模型训练方法、装置、系统及相关设备 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN117312839A (zh) |
WO (1) | WO2024001861A1 (zh) |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102467996B1 (ko) * | 2020-06-24 | 2022-11-16 | 대구대학교 산학협력단 | 인공지능 블록형 모듈 아키텍처를 이용한 엣지 컴퓨팅 시스템 |
CN114221736A (zh) * | 2020-09-04 | 2022-03-22 | 华为技术有限公司 | 数据处理的方法、装置、设备及介质 |
CN113656175B (zh) * | 2021-08-18 | 2022-07-08 | 北京百度网讯科技有限公司 | 基于分布式系统训练模型的方法及设备 |
CN113867959A (zh) * | 2021-09-29 | 2021-12-31 | 苏州浪潮智能科技有限公司 | 一种训练任务资源调度方法、装置、设备及介质 |
CN114579311B (zh) * | 2022-03-04 | 2023-05-30 | 北京百度网讯科技有限公司 | 执行分布式计算任务的方法、装置、设备以及存储介质 |
-
2022
- 2022-09-20 CN CN202211148350.3A patent/CN117312839A/zh active Pending
-
2023
- 2023-06-20 WO PCT/CN2023/101224 patent/WO2024001861A1/zh unknown
Also Published As
Publication number | Publication date |
---|---|
WO2024001861A1 (zh) | 2024-01-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111626430B (zh) | 一种数据处理方法及相关产品 | |
CN110908667B (zh) | 神经网络联合编译的方法、装置和电子设备 | |
CN112236784B (zh) | 修改机器学习模型以改善局部性 | |
US11010313B2 (en) | Method, apparatus, and system for an architecture for machine learning acceleration | |
CN109669772B (zh) | 计算图的并行执行方法和设备 | |
JP7451614B2 (ja) | オンチップの計算ネットワーク | |
JP7527716B2 (ja) | データ処理方法、装置、電子機器、及びコンピュータプログラム | |
US20210158131A1 (en) | Hierarchical partitioning of operators | |
CN111160539A (zh) | 运行人工神经网络的计算处理图的系统及方法 | |
US11275661B1 (en) | Test generation of a distributed system | |
US8681166B1 (en) | System and method for efficient resource management of a signal flow programmed digital signal processor code | |
CN114467083A (zh) | 用于应用程序组的定制根进程 | |
CN114008589B (zh) | 用于在顺序处理器上进行多次执行的动态代码加载 | |
CN113988287A (zh) | 基于nGraph框架实现分布式神经网络训练的方法 | |
CN114330735A (zh) | 处理机器学习模型的方法、电子设备和计算机程序产品 | |
KR20210103367A (ko) | 가속기, 가속기의 동작 방법 및 이를 포함한 전자 장치 | |
US10684834B2 (en) | Method and apparatus for detecting inter-instruction data dependency | |
US12014202B2 (en) | Method and apparatus with accelerator | |
CN116910568B (zh) | 图神经网络模型的训练方法及装置、存储介质及电子装置 | |
WO2020169182A1 (en) | Method and apparatus for allocating tasks | |
CN117312839A (zh) | 模型训练方法、装置、系统及相关设备 | |
US20220222177A1 (en) | Systems, apparatus, articles of manufacture, and methods for improved data transfer for heterogeneous programs | |
US11797280B1 (en) | Balanced partitioning of neural network based on execution latencies | |
CN112860534B (zh) | 硬件架构性能评估和性能优化方法及装置 | |
US11531578B1 (en) | Profiling and debugging for remote neural network execution |
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 |