CN114327399A - 分布式训练方法、装置、计算机设备、存储介质和产品 - Google Patents
分布式训练方法、装置、计算机设备、存储介质和产品 Download PDFInfo
- Publication number
- CN114327399A CN114327399A CN202111415782.1A CN202111415782A CN114327399A CN 114327399 A CN114327399 A CN 114327399A CN 202111415782 A CN202111415782 A CN 202111415782A CN 114327399 A CN114327399 A CN 114327399A
- Authority
- CN
- China
- Prior art keywords
- gradient
- task
- network
- data
- 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.)
- Granted
Links
- 238000012549 training Methods 0.000 title claims abstract description 289
- 238000000034 method Methods 0.000 title claims abstract description 64
- 238000012545 processing Methods 0.000 claims abstract description 192
- 238000003062 neural network model Methods 0.000 claims abstract description 121
- 238000004891 communication Methods 0.000 claims abstract description 118
- 238000004364 calculation method Methods 0.000 claims abstract description 65
- 238000005538 encapsulation Methods 0.000 claims abstract description 18
- 230000005540 biological transmission Effects 0.000 claims description 60
- 230000006870 function Effects 0.000 claims description 54
- 238000004590 computer program Methods 0.000 claims description 23
- 238000013507 mapping Methods 0.000 claims description 9
- 238000004806 packaging method and process Methods 0.000 claims description 3
- 238000012546 transfer Methods 0.000 description 15
- 238000010586 diagram Methods 0.000 description 5
- 238000004422 calculation algorithm Methods 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 3
- 230000004927 fusion Effects 0.000 description 2
- 238000010801 machine learning Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 239000000654 additive Substances 0.000 description 1
- 230000000996 additive effect Effects 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000003925 brain function Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000007599 discharging Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 210000002569 neuron Anatomy 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Landscapes
- Computer And Data Communications (AREA)
Abstract
本申请实施例公开了一种分布式训练方法、装置、计算机设备、存储介质和产品,通过模型训练任务的异步通信单元将网络梯度数据发送给梯度处理任务,网络梯度数据为对神经网络模型进行梯度计算得到的;基于梯度处理任务对网络梯度数据进行数据封装处理,得到处理后网络梯度数据;根据梯度处理任务将处理后网络梯度数据进行数据规约处理,得到模型训练任务对应的回传网络梯度数据;通过模型训练任务基于回传网络梯度数据对神经网络模型进行梯度更新,以对神经网络模型进行训练。本方案中异步通信节点具有异步属性,当网络梯度数据发送出去后,可以执行后续的模型训练任务以及对网络梯度数据进行数据处理,实现对网络梯度数据的计算与通信并行。
Description
技术领域
本申请涉及通信技术领域,具体涉及一种分布式训练方法、装置、计算机设备、存储介质和产品。
背景技术
在对神经网络模型进行训练时,使用线性代数编译程序将计算图中的多个离散的Op融合起来(Op fusion),作为一整个新的XLA Op,提高计算速度,减少缓存和细小Op的起停时间开销,线性代数编译程序也称为线性代数编译器(Accelerated Linear Algebra,XLA);使用Horovod进行高效传输,当XLA和Horovod一起使用时,由于XLA的融合仅支持同步节点不支持异步的HorovodAllreduce节点,采用Tensorflow XLA之后,一个XLA Op的输入和输出被当作整体来同步,对神经网络模型计算得到的所有梯度都要等到最后一个梯度计算完成之后才能开始传输,传输时间取决于耗时最长的HorovodAllreduce(Horovod框架的核心节点,负责在多机集群之间进行梯度传输),整体执行时间因此被拖慢。
发明内容
本申请实施例提供一种分布式训练方法、装置、计算机设备、存储介质和产品,实现对网络梯度数据的计算与通信并行。
本申请实施例提供的一种分布式训练方法,包括:
通过模型训练任务的异步通信单元将网络梯度数据发送给梯度处理任务,所述模型训练任务和所述梯度处理任务集成在分布式处理器中,所述网络梯度数据为对神经网络模型进行梯度计算得到的;
基于所述梯度处理任务对所述网络梯度数据进行数据封装处理,得到处理后网络梯度数据;
根据所述梯度处理任务将所述处理后网络梯度数据进行数据规约处理,得到所述模型训练任务对应的回传网络梯度数据;
通过所述模型训练任务基于所述回传网络梯度数据对所述神经网络模型进行梯度更新,以对所述神经网络模型进行训练。
相应的,本申请实施例还提供的一种分布式训练装置,包括:
发送模块,用于通过模型训练任务的异步通信单元将网络梯度数据发送给梯度处理任务,所述模型训练任务和所述梯度处理任务集成在分布式处理器中,所述网络梯度数据为对神经网络模型进行梯度计算得到的;
第一数据处理模块,用于基于所述梯度处理任务对所述网络梯度数据进行数据封装处理,得到处理后网络梯度数据;
第二数据处理模块,用于根据所述梯度处理任务将所述处理后网络梯度数据进行数据规约处理,得到所述模型训练任务对应的回传网络梯度数据;
梯度更新模块,用于通过所述模型训练任务基于所述回传网络梯度数据对所述神经网络模型进行梯度更新,以对所述神经网络模型进行训练。
在一实施例中,所述发送模块,包括:
获取子模块,用于获取所述分布式训练处理器中计算图中计算节点之间的边所对应的边标识;
映射子模块,用于将所述边标识进行映射处理,得到所述计算图的任务执行顺序;
第一发送子模块,用于根据所述任务执行顺序,通过模型训练任务的对应的异步通信单元,将对神经网络模型进行梯度计算得到网络梯度数据发送给梯度处理任务。
在一实施例中,所述分布式训练装置,还包括:
构建模块,用于通过线性代码编译程序构建初始异步通信单元;
封装模块,用于基于所述初始异步单元调用分布式训练框架程序中的异步传输逻辑代码,并封装成异步执行函数;
得到模块,用于基于所述异步执行函数以及所述初始异步通信单元,得到所述异步通信单元,以基于所述异步通信单元调用所述异步传输逻辑代码将所述网络梯度数据发送给梯度处理任务。
在一实施例中,所述发送模块,包括:
计算子模块,用于基于所述模型训练任务对神经网络模型进行梯度计算,得到网络梯度数据,所述神经网络模型部署于所述分布式处理器中;
第二发送子模块,用于通过所述模型训练任务的异步通信单元中异步执行函数,调用所述异步传输逻辑代码将所述网络梯度数据发送给梯度处理任务。
在一实施例中,所述第二数据处理模块,包括:
第三发送子模块,用于通过所述梯度处理任务将所述处理后网络梯度数据发送至所述分布式训练框架程序中的梯度传输函数;
梯度传输子模块,用于通过所述梯度传输函数对所述处理后网络梯度数据在所述分布式处理器之间进行梯度传输,得到每个分布式训练处理器对应的回传网络梯度。
在一实施例中,所述梯度更新模块,包括:
优先级获取子模块,用于若存在至少两个当前待处理任务时,获取每个当前待处理任务对应的执行优先级;
任务确定子模块,用于根据所述当前待处理任务的执行优先级确定目标训练子任务;
更新子模块,用于基于所述目标训练子任务,通过所述模型训练任务基于所述回传网络梯度数据对所述神经网络模型进行梯度更新。
在一实施例中,所述更新子模块还可以用于:
若所述目标训练子任务不为梯度更新任务,则执行所述目标训练子任务,并返回执行所述根据所述当前待处理任务的执行优先级确定目标训练子任务,直到所述目标训练子任务为梯度更新任务;
若所述目标训练任务为梯度更新任务,则通过所述分布式训练处理器基于所述回传网络梯度数据对所述神经网络模型进行梯度更新。
在一实施例中,所述分布式训练装置还可以包括:
释放模块,用于当针对批训练样本对所述神经网络模型完成训练时,将所述网络梯度从所述异步通信单元的缓存空间中删除,以释放所述异步通信单元的缓存空间,所述批训练样本为对神经网络模型进行训练的训练样本。
相应的,本申请实施例还提供的一种计算机设备,包括存储器和处理器;所述存储器存储有计算机程序,所述处理器用于运行所述存储器内的计算机程序,以执行本申请实施例提供的任一种分布式训练方法。
相应的,本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质用于存储计算机程序,所述计算机程序被处理器加载以执行本申请实施例提供的任一种分布式训练方法。
相应的,一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现本申请实施例提供的分布式训练方法。
本申请实施例通过模型训练任务的异步通信单元将网络梯度数据发送给梯度处理任务,模型训练任务和梯度处理任务集成在分布式处理器中,网络梯度数据为对神经网络模型进行梯度计算得到的;基于梯度处理任务对网络梯度数据进行数据封装处理,得到处理后网络梯度数据;根据梯度处理任务将处理后网络梯度数据进行数据规约处理,得到模型训练任务对应的回传网络梯度数据;通过模型训练任务基于回传网络梯度数据对神经网络模型进行梯度更新,以对神经网络模型进行训练。
本方案通过线性代数编译程序的执行单元——异步通信节点发送网络梯度数据,当启动XLA时,XLA可以识别异步通信单元,进而可以将多个分布式处理器中梯度计算、梯度传输、以及梯度更新等过程融合成一个XLA节点,且异步通信节点具有异步属性,当异步通信节点将网络梯度数据发送出去后,可以执行后续的模型训练任务,以及对网络梯度数据进行数据处理,实现对网络梯度数据的计算与通信并行。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的分布式训练方法的场景图;
图2是本申请实施例提供的分布式训练方法的流程图;
图3是本申请实施例提供的分布式训练方法的另一流程图;
图4是本申请实施例提供的分布式训练方法的梯度传输示意图;
图5是本申请实施例提供的分布式训练装置示意图;
图6是本申请实施例提供的终端的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请实施例提供一种分布式训练方法、装置、计算机设备和计算机可读存储介质。该分布式训练装置可以集成在计算机设备中,该计算机设备可以是服务器,也可以是终端等设备。
其中,该终端可以包括手机、穿戴式智能设备、平板电脑、笔记本电脑、个人计算(PC,Personal Computer)、以及车载计算机等。
其中,服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。
例如,如图1所示,计算机设备通过模型训练任务的异步通信单元将网络梯度数据发送给梯度处理任务,模型训练任务和梯度处理任务集成在分布式处理器中,网络梯度数据为对神经网络模型进行梯度计算得到的;基于梯度处理任务对网络梯度数据进行数据封装处理,得到处理后网络梯度数据;根据梯度处理任务将处理后网络梯度数据进行数据规约处理,得到模型训练任务对应的回传网络梯度数据;通过模型训练任务基于回传网络梯度数据对神经网络模型进行梯度更新,以对神经网络模型进行训练。
本方案通过线性代数编译程序的执行单元——异步通信单元发送网络梯度数据,当启动XLA时,XLA可以识别异步通信单元,进而可以将多个分布式处理器中梯度计算、梯度传输、以及梯度更新等过程融合成一个XLA节点,且异步通信节点具有异步属性,当异步通信节点将网络梯度数据发送出去后,可以执行后续的模型训练任务,以及对网络梯度数据进行数据处理,实现对网络梯度数据的计算与通信并行。
以下分别进行详细说明。需说明的是,以下实施例的描述顺序不作为对实施例优选顺序的限定。
本实施例将从分布式训练装置的角度进行描述,该分布式训练装置具体可以集成在计算机设备中,该计算机设备可以是服务器,也可以是终端等设备。
本申请实施例提供的一种分布式训练方法,如图2所示,该分布式训练方法的具体流程可以如下:
101、通过模型训练任务的异步通信单元将网络梯度数据发送给梯度处理任务,模型训练任务和梯度处理任务集成在分布式处理器中,网络梯度数据为对神经网络模型进行梯度计算得到的。
其中,分布式处理器可以包括至少一个分布式图形处理器(Graphics ProcessingUnit,GPU),图形处理器又称显示核心、视觉处理器、以及显示芯片,可以计算机设备上可以执行于本实施例提供的分布式训练方法相关运算工作的微处理器,多个分布式图像处理器可以处于同一台计算机设备上或者处于多台计算机设备上。可选的,分布式处理器还可以包括至少一个分布式中央处理器(central processing unit,CPU)作为计算机设备的运算和控制核心,是信息处理以及程序运行的最终执行单元。
分布式处理器上安装有TensorFlow以及horovod等程序,TensorFlow是基于数据流编程(dataflow programming)的符号数学系统,应用于神经网络模型相关的机器学习(machine learning)算法的编程实现,Horovod是TensorFlow、Keras、PyTorch和ApacheMXNet的分布式深度学习训练框架,应用于执行梯度处理任务。
分布式处理器可以用于对神经网络模型进行数据并行训练,所以,每一分布式处理器上均部署待训练的神经网络模型。
其中,神经网络模型可以是由大量的、简单的处理单元(称为神经元)广泛地互相连接而形成的复杂网络系统,它反映了人脑功能的许多基本特征,是一个高度复杂的非线性动力学习系统。神经网络模型可以部署在分布式处理器上,以使得分布式处理器基于模型训练任务对其进行训练。
其中,模型训练任务可以包括对分布式处理器上的神经网络模型进行训练对应的逻辑代码,梯度处理数据任务包括对网络梯度数据进行封装处理以及数据规约处理对应的逻辑代码。
其中,网络梯度数据可以是基于神经网络模型的输出以及损失函数计算得到的数据,根据不同神经网络模型不同的训练方法对应有不同的损失函数,以及不同的网络梯度数据计算方式。
其中,异步通信单元可以是线性代数编译程序的执行单元,例如,异步通信单元可以是XLA中的最小计算单元“thunk”,可以通过在XLA中构建得到,线性代数编译程序也称为线性代数编译器(Accelerated Linear Algebra,XLA),XLA能够加快TensorFlow模型的运行速度。比如,具体可以是获取训练样本,并通过分布式训练器基于模型训练任务和训练样本对神经网络模型进行训练,根据神经网络模型的网络层(例如,卷积层等)对训练样本进行预测得到的输出,计算网络梯度数据。
在分布式训练器得到网络梯度数据之后,通过模型训练任务中的异步通信单元将网络梯度数据发送给梯度处理任务。
根据神经网络模型不同网络层的输出进行梯度计算,可以得到多个网络梯度数据,需要对不同分布式处理器根据同个网络层得到的网络梯度数据进行数据规约处理,才能正确地进行反向传播,例如,GPU0上部署有神经网络模型A,神经网络模型A包括网络层a、网络层b、以及网络层c;GPU1上部署有神经网络模型A,神经网络模型A包括网络层a、网络层b、以及网络层c;需要对GPU0和GPU1的网络层a对应的网络梯度数据进行数据规约处理,或者是对GPU0和GPU1的网络层b对应的网络梯度数据进行数据规约处理,因此,需要确保每个分布式处理器发送给梯度处理任务的网络梯度数据为基于同一网络层得到的网络梯度数据,即每个分布式处理器发送不同网路层的网路梯度数据的顺序要一致,即在一实施例中,步骤“通过模型训练任务的异步通信单元,将对神经网络模型进行梯度计算得到网络梯度数据发送给梯度处理任务”,具体可以包括:
获取分布式训练处理器中计算图中计算节点之间的边所对应的边标识;
将边标识进行映射处理,得到计算图的任务执行顺序;
根据任务执行顺序,通过模型训练任务的对应的异步通信单元,将对神经网络模型进行梯度计算得到网络梯度数据发送给梯度处理任务。
其中,计算图可以是根据模型训练任务和梯度处理任务得到,计算图中每个节点(node)可以表征模型训练任务中的一个操作或者是梯度处理任务中的一个操作,例如,卷积或者矩阵乘法等。每两个节点之间通过边(edge)连接,边可以表示数据的流向,计算图中每条边有对应的边标识,边标识可以是边的名称等字符串的形式,例如,节点0与节点1之间的边的边标识可以是“node0->node1”。
比如,具体可以是获取计算图中计算节点之间的边所对应的边标识,根据边标识进行映射处理,将边标识映射为固定长度的字符串,根据每条边映射得到的字符串确定计算图的执行顺序,由于通过分布式处理器进行数据并行训练,因此,每个分布式处理器上的计算图相同,且相同的边在不同分布式处理器上的边标识一致,因此,同一条边在不同的分布式处理中映射得到的输出相同,故基于映射得到的字符串确定执行顺序,使得每个分布式处理器对计算图的执行顺序一致,当模型训练任务在模型训练过程中,需要发送多个网络梯度数据时,由于执行顺序一致,可以以相同的顺序发送多个网络梯度数据。
Tensorflow计算图的默认执行顺序为以边所对应的地址,通过哈希函数(Hashfunction)取哈希值,根据每条边对应的哈希值确定计算图的执行顺序。边所对应的地址为分布式处理器运行时为计算图随机分配的内存地址,分布式处理器每次运行针对同一条边所分配的内存地址不同,所以,不同分布式处理器针对同一条边所分配的内存地址也不尽相同,会导致不同分布式处理器基于为边分配的内存地址计算的执行顺序不同,导致发送网络梯度数据的顺序不同,例如,分布式处理器A和分布式处理器B均需要发送网络梯度数据A、B、C、D、和E,网络梯度数据A、B、C、D、和E为根据不同网络层的输出计算得到的网络梯度数据,分布式处理器A的发送顺序为A-B-C-D-E,分布式处理器B的发送顺序为A-D-E-B-C。由于不同分布式处理器发送的网络梯度数据的顺序不同,所以,梯度处理任务接收到的网络梯度顺序也不同,导致梯度处理任务对网络梯度数据进行数据规约处理出错,例如,梯度处理任务接收到分布式处理器A发送的网络梯度数据A,接收到分布式处理器B发送的网络梯度数据C,梯度处理任务对网络梯度数据A和网络梯度数据C进行数据规约处理,由于,网络梯度数据A和网络梯度数据C不是统一网络层对应的网络梯度数据,因此,梯度处理任务对网络梯度数据进行数据规约处理出错,回传的网络梯度数据出错,进一步引起模型训练出错。因此,在一实施例中,可以将边的名称通过哈希函数计算对应的哈希值,根据每条边的哈希值确定计算图的计算顺序,确保每个分布式处理器发送网络梯度数据的顺序是一致的,梯度处理任务对网络梯度数据正确进行数据规约处理。
发送网络梯度数据的异步传输单元可以在线性代码编译程序中构建得到,即在一实施例中,步骤“通过模型训练任务的异步通信单元,将对神经网络模型进行梯度计算得到网络梯度数据发送给梯度处理任务”之前,具体还可以包括:
通过线性代码编译程序构建初始异步通信单元;
基于初始异步单元调用分布式训练框架程序中的异步传输逻辑代码,并封装成异步执行函数;
基于异步执行函数以及初始异步通信单元,得到异步通信单元,以基于异步通信单元调用异步传输逻辑代码将网络梯度数据发送给梯度处理任务。
比如,具体可以是在XLA中构建分布式训练框架所需要的中间表示(IntermediateRepresentation,IR),IR可以看作是一种中介的数据格式,便于模型在线性代码编译程序以及分布式训练框架程序之间转换,使得新增的初始异步通信单元“HvdAllReduceThunk”,可以在XLA和Horovod之间通信,异步通信单元是XLA Op的最底层执行单元,在初始异步通信单元中实现一个异步执行函数,并在该异步执行函数中调用分布式训练框架程序中的异步传输逻辑代码,得到以线性代码编译程序中的最小执行单元调用分布式训练框架程序中的异步传输逻辑代码的异步通信单元,通过将网络梯度数据传递给异步传输逻辑代码以实现将网络梯度数据发送给梯度处理任务,本申请实施例中将分布式训练框架程序中的异步传输逻辑代码封装在异步执行单元中,以使得线性代码编译程序基于异步执行单元可以支持分布式训练框架程序的异步传输逻辑代码,在XLA进行网络优化时,可以将异步传输逻辑融合进网络优化中,融合成一个XLA节点,加快tensorflow的计算速度,实现同时利用了XLA的计算优势,和Horovod的异步通信优势,实现计算与通信并行。
通过异步通信单元可以调用分布式训练框架程序中的异步传输逻辑,即在一实施例中,步骤“通过模型训练任务的异步通信单元,将对神经网络模型进行梯度计算得到网络梯度数据发送给梯度处理任务”,具体可以包括:
基于模型训练任务对神经网络模型进行梯度计算,得到网络梯度数据,神经网络模型部署于分布式处理器中;
通过模型训练任务的异步通信单元中异步执行函数,调用异步传输逻辑代码将网络梯度数据发送给梯度处理任务。
比如,具体可以是获取训练样本,并通过分布式训练器基于模型训练任务和训练样本对神经网络模型进行训练,根据神经网络模型的网络层(例如,卷积层等)对训练样本进行预测得到的输出,计算网络梯度数据。
通过模型训练任务的异步通信单元中异步执行函数,调用分布式训练框架程序中的异步传输逻辑,将网络梯度数据发送给梯度处理任务。
102、基于梯度处理任务对网络梯度数据进行数据封装处理,得到处理后网络梯度数据。
比如,具体可以是基于梯度处理任务对网络梯度数据进行数据封装处理,将网络梯度数据封装成梯度处理任务可以识别的数据类型,使得梯度处理任务可以识别该网络梯度数据,以对其进行数据规约处理。
由于tensorflow和horovod是两个不同的程序,模型训练任务发送的网络梯度数据并不能被horovod识别并进行数据规约处理,因此,模型训练任务需要先将网络梯度数据封装为可以识别并进行数据规约处理的数据类型。
103、根据梯度处理任务将处理后网络梯度数据进行数据规约处理,得到模型训练任务对应的回传网络梯度数据。
其中,数据规约处理可以是对不同分布式处理器得到的网络梯度数据进行整合后分发给各个分布式处理器,可以通过AllReduce算法进行数据规约处理。
比如,具体可以是消息传递接口(Message Pass Interface,MPI)的规约算法对处理后网络梯度数据进行整合后分配给各个分布式处理器,或者是基于英伟达的Multi-GPU多卡通信库(Nvidia Collective multi-GPU Communication Library,NCCL)对处理后网络梯度数据进行数据规约处理。
在一实施例中,可以通过梯度传输函数对处理后网络梯度数据进行数据规约处理,即在一实施例中,步骤“根据梯度处理任务将处理后网络梯度数据进行数据规约处理,得到模型训练任务对应的回传网络梯度数据”,具体可以包括:
通过梯度处理任务将处理后网络梯度数据发送至分布式训练框架程序中的梯度传输函数;
通过梯度传输函数对处理后网络梯度数据在分布式训练处理器之间进行梯度传输,得到每个分布式处理器对应的回传网络梯度。
比如,具体可以是梯度处理任务将处理后网络梯度数据传递给分布式训练框架中的梯度传输函数,通过梯度传输函数调用NCCL对处理后网络梯度数据在参与神经网络模型训练的多个分布式训练处理器之间进行梯度传输,得到每个分布式处理器对应的回传网络梯度。
104、通过模型训练任务基于回传网络梯度数据对神经网络模型进行梯度更新,以对神经网络模型进行训练。
比如,具体可以是通过模型训练任务基于回传网络梯度数据对网络参数进行梯度更新,调整神经网络模型的网络参数,以对神经网络模型进行训练。
由于异步通信单元具有异步属性,当异步通信单元将网络梯度数据发送给梯度处理任务后,不需要接收到返回的结果,即可以执行后续任务,例如,计算下一个网络梯度数据,可以实现计算与通信并行,为了进一步提高训练速度,可以对不同的训练子任务设置对应的执行优先级,异步通信单元具有异步属性,不需要等待异步通信单元执行完任务后才能执行下一个训练子任务,而计算得到网络梯度数据后,即可通过异步通信单元进行传输,因此,可以对异步通信单元设置最高执行优先级,对梯度更新子任务设置最低执行优先级,使得梯度计算与梯度传输具有更多的并行空间,即在一实施例中,步骤“通过模型训练任务基于回传网络梯度数据对神经网络模型进行梯度更新”,具体可以包括:
若存在至少两个当前待处理任务时,获取每个当前待处理任务对应的执行优先级;
根据当前待处理任务的执行优先级确定目标训练子任务;
基于目标训练子任务,通过模型训练任务基于回传网络梯度数据对神经网络模型进行梯度更新。
其中,执行优先级可以表示当前待处理任务的执行先后顺序,先执行优先级高的当前待处理任务,再执行优先级低的当前待处理任务。
比如,具体可以是当存在至少两个待处理任务时,即计算图存在多个支路时,获取当前待处理任务的执行优先级,可以根据当前待处理任务对应的执行优先级,将执行优先级高的待处理任务确定目标训练子任务。
若目标训练子任务为梯度更新任务,则基于回传网络梯度数据对神经网络模型进行梯度更新;否则,暂时不更新梯度,即在一实施例中,步骤“基于目标训练子任务,通过模型训练任务基于回传网络梯度数据对神经网络模型进行梯度更新”,具体可以包括:
若目标训练子任务不为梯度更新任务,则执行目标训练子任务,并返回执行根据当前待处理任务的执行优先级确定目标训练子任务,直到目标训练子任务为梯度更新任务;
若目标训练任务为梯度更新任务,则通过分布式训练处理器基于回传网络梯度数据对神经网络模型进行梯度更新。
比如,具体可以是若目标训练子任务不为更新任务,则执行目标子任务,并继续根据执行优先级高的训练子任务,直到最高执行优先级对应的训练子任务为梯度更新任务,若目标训练子任务为梯度更新任务,基于回传网络梯度数据对神经网络模型进行反向传播训练,对神经网络模型进行网络参数更新,以得到训练后神经网络模型。
其中,通过异步传输单元执行的梯度传输任务由于异步属性,只要拿到网络梯度即可进行传输,且不需要等待接收到返回的回传网络梯度数据即可并行执行后续任务,而梯度更新任务则需要等待任务执行完成之后,才能执行后续其他的训练子任务,因此,可以设置异步传输单元的优先级最高,梯度更新任务的优先级最低,实现在梯度传输的过程中,并行执行其他任务,使得分布式处理器有更多的可能并行进行计算和传输。
在一实施例中,为了防止计算得到的网络梯度数据还未进行数据规约处理就被删除,导致梯度更新出错,可以设置异步通信单元对应的缓存空间(buffer)的生命周期持续到基于批训练样本对神经网络模型训练完成,防止由于异步通信单元由于异步属性,在执行下一训练子任务时,缓存空间被释放,即本申请实施例提供的分布式训练方法还包括:
当针对批训练样本对神经网络模型完成训练时,将网络梯度数据从异步通信单元的缓存空间中删除,以释放异步通信单元的缓存空间,批训练样本为对神经网络模型进行训练的训练样本。
其中,批训练样本为对神经网络模型进行一次训练(step)所用到的一批训练样本。
比如,具体可以是基于批训练样本对神经网络模型训练完成时,删除异步通信单元对应的缓存空间中的网络梯度数据,以释放缓存空间。
由上可知,本申请实施例通过模型训练任务的异步通信单元将网络梯度数据发送给梯度处理任务,模型训练任务和梯度处理任务集成在分布式处理器中,网络梯度数据为对神经网络模型进行梯度计算得到的;基于梯度处理任务对网络梯度数据进行数据封装处理,得到处理后网络梯度数据;根据梯度处理任务将处理后网络梯度数据进行数据规约处理,得到模型训练任务对应的回传网络梯度数据;通过模型训练任务基于回传网络梯度数据对神经网络模型进行梯度更新,以对神经网络模型进行训练。本方案通过线性代数编译程序的执行单元——异步通信节点发送网络梯度数据,当启动XLA时,XLA可以识别异步通信单元,进而可以将多个分布式处理器中梯度计算、梯度传输、以及梯度更新等过程融合成一个XLA节点,且异步通信节点具有异步属性,当异步通信节点将网络梯度数据发送出去后,可以执行后续的模型训练任务,以及对网络梯度数据进行数据处理,实现对网络梯度数据的计算与通信并行。
在上述实施例的基础上,下面将举例做进一步详细说明。
本实施例将从分布式训练装置的角度进行描述,该分布式训练装置具体可以集成在计算机设备中,该计算机设备可以是服务器等设备。
本申请实施例提供的一种分布式训练方法,如图3所示,该分布式训练方法的具体流程可以如下:
201、服务器通过分布式处理器中模型训练任务的异步通信单元将网络梯度数据发送给梯度处理任务。
比如,模型训练任务可以是利用TensorFlow实现对神经网络模型进行模型训练的相关程序;梯度处理任务是基于分布式训练框架程序——Horovod实现的程序,在模型训练任务中通过构建XLA所涉及的数据类型,包括Op Kernel,XlaBuilder,Hlo Ir等,以增加XLA的最小执行单元:XlaAsyncThunk,即异步通信单元,“thunk”是XLA中的最小计算单元。在该异步通信单元中实现一个异步执行函数——ExecuteOnStreamAsync,在该异步执行函数内通过Dlopen指令打开Horovod的动态链接库(so库),调用梯度处理任务中的异步传输逻辑代码,即调用梯度传输函数horovod_allreduce_for_xla_thunk中关于异步传输网络梯度数据的逻辑代码。
在梯度处理任务中通过分布式训练框架程序增加梯度传输函数horovod_allreduce_for_xla_thunk和以及通过指令注册一个计算节点(Operator),即注册节点REGISTER_XLA_OP,梯度传输函数为该注册节点的实现函数,同时新增TFXlaTensor数据类型,使Horovod可以识别出XLA的Op类型,并将器传递给horovod_allreduce_for_xla_thunk中调用的nccl函数以进行数据规约处理。
当服务器通过分布式处理器基于模型训练任务对神经网络模型进行训练得到网络梯度数据时,通过异步通信单元通过调用注册节点REGISTER_XLA_OP将该网络梯度数据传递给梯度处理任务。
202、服务器基于分布式处理器中的梯度处理任务对网络梯度数据进行数据封装处理,得到处理后网络梯度数据。
比如,具体可以是服务器基于分布式处理器中的梯度处理任务对网络梯度数据进行数据封装处理,封装成horovod可以识别的TFXlaTensor数据类型,得到处理后网络梯度数据。
由于tensorflow和horovod是两个不同的程序,模型训练任务发送的网络梯度数据并不能被horovod识别并进行数据规约处理,因此,模型训练任务需要先将网络梯度数据封装为可以识别并进行数据规约处理的数据类型,比如:TFXlaTensor。
203、服务器通过分布式处理器中的梯度处理任务将处理后网络梯度数据发送至分布式训练框架程序中的梯度传输函数。
比如,具体可以是服务器通过分布式处理器中的梯度处理任务将处理后网络梯度数据传递给分布式训练框架程序中的梯度传输函数horovod_allreduce_for_xla_thunk。
204、服务器通过梯度传输函数对处理后网络梯度数据在分布式训练处理器之间进行梯度传输,得到每个分布式处理器对应的回传网络梯度。
比如,具体可以是服务器通过梯度传输函数对处理后网络梯度数据传递给分布式训练框架中的梯度传输函数,通过梯度传输函数调用NCCL对处理后网络梯度数据在参与神经网络模型训练的多个分布式训练处理器之间进行梯度传输,得到每个分布式处理器对应的回传网络梯度。
本申请实施例提供的分布式训练方法可以应用于采用数据并行式的分布式训练,数据并行式的分布式训练在每个分布式处理器上都存储一个模型的备份,在各台分布式处理器上处理训练数据集的不同数据部分。数据并行式训练方法需要组合各个分布式处理器计算得到的网络梯度数据,即需要通过各个分布式处理器计算得到的网络梯度数据进行数据规约处理,以结合基于不同训练数据计算得到的网络梯度数据,得到回传网络梯度,并通过回传网络梯度对神经网络模型进行网络参数更新,使得神经网络模型更快地收敛,并且在分布式处理器之间同步模型参数。
205、服务器通过分布式处理器中的梯度处理任务将回传网络梯度分配给对应的分布式处理器。
比如,具体可以是服务器通过梯度处理任务将回传网络梯度分配给对应的分布式处理器,使得分布式处理器基于梯度处理任务返回的回传网络梯度对神经网络模型进行网络参数更新,以得到训练后神经网络模型。
206、服务器通过分布式处理器基于执行优先级和回传网络梯度数据对神经网络模型进行梯度更新,以对神经网络模型进行训练。
比如,具体可以是对异步通信单元设置最高执行优先级,对梯度更新子任务设置最低执行优先级,当模型训练任务执行过程中,计算图存在分支路时,可以根据不同支路的当前待处理任务对应的执行优先级,将执行优先级高的待处理任务确定目标训练子任务。
比如,具体可以是若目标训练子任务不为更新任务,则执行目标子任务,并继续根据执行优先级高的训练子任务,直到最高执行优先级对应的训练子任务为梯度更新任务,基于回传网络梯度数据对神经网络模型进行梯度更新。
可选的,可以将边的名称通过哈希函数取对应的哈希值,根据每条边的哈希值确定计算图的计算顺序,确保每个分布式处理器发送网络梯度数据的顺序是一致的,如图4所示,根据边的名称确定计算图的执行顺序后,每个GPU发送网络梯度数据的顺序一致,梯度处理任务接收到不同GPU发送的网络梯度数据的顺序是一致的。
由上可知,本申请实施例服务器通过分布式处理器中模型训练任务的异步通信单元将网络梯度数据发送给梯度处理任务;基于分布式处理器中的梯度处理任务对网络梯度数据进行数据封装处理,得到处理后网络梯度数据;通过分布式处理器中的梯度处理任务将处理后网络梯度数据发送至分布式训练框架程序中的梯度传输函数;通过梯度传输函数对处理后网络梯度数据在分布式训练处理器之间进行梯度传输,得到每个分布式处理器对应的回传网络梯度;通过分布式处理器中的梯度处理任务将回传网络梯度分配给对应的分布式处理器;通过分布式处理器基于执行优先级和回传网络梯度数据对神经网络模型进行梯度更新,以对神经网络模型进行训练。本方案通过线性代数编译程序的执行单元——异步通信节点发送网络梯度数据,当启动XLA时,XLA可以识别异步通信单元,进而可以将多个分布式处理器中梯度计算、梯度传输、以及梯度更新等过程融合成一个XLA节点,且异步通信节点具有异步属性,当异步通信节点将网络梯度数据发送出去后,可以执行后续的模型训练任务,以及对网络梯度数据进行数据处理,实现对网络梯度数据的计算与通信并行。
为了便于更好地实施本申请实施例提供的分布式训练方法,在一实施例中还提供了一种分布式训练装置。其中名词的含义与上述分布式训练方法中相同,具体实现细节可以参考方法实施例中的说明。
该分布式训练装置具体可以集成在计算机设备中,如图5所示,该分布式训练装置可以包括:发送模块301、第一数据处理模块302、第二数据处理模块303和梯度更新模块304,具体如下:
(1)发送模块301:用于通过模型训练任务的异步通信单元将网络梯度数据发送给梯度处理任务,模型训练任务和梯度处理任务集成在分布式处理器中,网络梯度数据为对神经网络模型进行梯度计算得到的。
在一实施例中,发送模块301可以包括获取子模块、映射子模块、以及第一发送子模块,具体地:
获取子模块:用于获取分布式训练处理器中计算图中计算节点之间的边所对应的边标识;
映射子模块:用于将边标识进行映射处理,得到计算图的任务执行顺序;
第一发送子模块:用于根据任务执行顺序,通过模型训练任务的对应的异步通信单元,将对神经网络模型进行梯度计算得到网络梯度数据发送给梯度处理任务。
在一实施例中,分布式训练装置还可以包括构建模块、封装模块、以及得到模块,具体地:
构建模块:用于通过线性代码编译程序构建初始异步通信单元;
封装模块:用于基于初始异步单元调用分布式训练框架程序中的异步传输逻辑代码,并封装成异步执行函数;
得到模块:用于基于异步执行函数以及初始异步通信单元,得到异步通信单元,以基于异步通信单元调用异步传输逻辑代码将网络梯度数据发送给梯度处理任务。
在一实施例中,发送模块301可以包括计算子模块和第二发送子模块,具体地:
计算子模块:用于基于模型训练任务对神经网络模型进行梯度计算,得到网络梯度数据,神经网络模型部署于分布式处理器中;
第二发送子模块:用于根通过模型训练任务的异步通信单元中异步执行函数,调用异步传输逻辑代码将网络梯度数据发送给梯度处理任务。
(2)第一数据处理模块302:用于基于梯度处理任务对网络梯度数据进行数据封装处理,得到处理后网络梯度数据。
(3)第二数据处理模块303:用于根据梯度处理任务将处理后网络梯度数据进行数据规约处理,得到模型训练任务对应的回传网络梯度数据。
在一实施例中,第二数据处理模块303可以包括第三发送子模块和梯度传输子模块,具体地:
第三发送子模块:用于通过梯度处理任务将处理后网络梯度数据发送至分布式训练框架程序中的梯度传输函数;
梯度传输子模块:用于通过梯度传输函数对处理后网络梯度数据在分布式训练处理器之间进行梯度传输,得到每个分布式处理器对应的回传网络梯度。
(4)梯度更新模块304:用于通过模型训练任务基于回传网络梯度数据对神经网络模型进行梯度更新,以对神经网络模型进行训练。
在一实施例中,梯度更新模块304可以包括任务确定子模块、任务确定子模块、以及更新子模块,具体地:
优先级获取子模块:用于若存在至少两个当前待处理任务时,获取每个当前待处理任务对应的执行优先级;
任务确定子模块:用于根据当前待处理任务的执行优先级确定目标训练子任务;
更新子模块:用于基于目标训练子任务,通过模型训练任务基于回传网络梯度数据对神经网络模型进行梯度更新。
在一实施例中,更新子模块还可以用于:
若目标训练子任务不为梯度更新任务,则执行目标训练子任务,并返回执行根据当前待处理任务的执行优先级确定目标训练子任务,直到目标训练子任务为梯度更新任务;
若目标训练任务为梯度更新任务,则通过分布式训练处理器基于回传网络梯度数据对神经网络模型进行梯度更新。
在一实施例中,本申请实施例提供的分布式训练装置还可以包括释放模块,具体地:
释放模块,用于当针对批训练样本对神经网络模型完成训练时,将网络梯度数据从异步通信单元的缓存空间中删除,以释放异步通信单元的缓存空间,批训练样本为对神经网络模型进行训练的训练样本。
由上可知,本申请实施例分布式训练装置由发送模块301通过模型训练任务的异步通信单元将网络梯度数据发送给梯度处理任务,模型训练任务和梯度处理任务集成在分布式处理器中,网络梯度数据为对神经网络模型进行梯度计算得到的;通过第一数据处理模块302基于梯度处理任务对网络梯度数据进行数据封装处理,得到处理后网络梯度数据;通过第二数据处理模块303根据梯度处理任务将处理后网络梯度数据进行数据规约处理,得到模型训练任务对应的回传网络梯度数据;由梯度更新模块304通过模型训练任务基于回传网络梯度数据对神经网络模型进行梯度更新,以对神经网络模型进行训练。本方案通过线性代数编译程序的执行单元——异步通信节点发送网络梯度数据,当启动XLA时,XLA可以识别异步通信单元,进而可以将多个分布式处理器中梯度计算、梯度传输、以及梯度更新等过程融合成一个XLA节点,且异步通信节点具有异步属性,当异步通信节点将网络梯度数据发送出去后,可以执行后续的模型训练任务,以及对网络梯度数据进行数据处理,实现对网络梯度数据的计算与通信并行。
本申请实施例还提供一种计算机设备,该计算机设备可以是终端,也可以是服务器,如图6所示,其示出了本申请实施例所涉及的计算机设备的结构示意图,具体来讲:
该计算机设备可以包括一个或者一个以上处理核心的处理器1001、一个或一个以上计算机可读存储介质的存储器1002、电源1003和输入单元1004等部件。本领域技术人员可以理解,图6中示出的计算机设备结构并不构成对计算机设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
处理器1001是该计算机设备的控制中心,利用各种接口和线路连接整个计算机设备的各个部分,通过运行或执行存储在存储器1002内的软件程序和/或模块,以及调用存储在存储器1002内的数据,执行计算机设备的各种功能和处理数据,从而对计算机设备进行整体监控。可选的,处理器1001可包括一个或多个处理核心;优选的,处理器1001可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和计算机程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器1001中。
存储器1002可用于存储软件程序以及模块,处理器1001通过运行存储在存储器1002的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器1002可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的计算机程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据计算机设备的使用所创建的数据等。此外,存储器1002可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器1002还可以包括存储器控制器,以提供处理器1001对存储器1002的访问。
计算机设备还包括给各个部件供电的电源1003,优选的,电源1003可以通过电源管理系统与处理器1001逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源1003还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
该计算机设备还可包括输入单元1004,该输入单元1004可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。
尽管未示出,计算机设备还可以包括显示单元等,在此不再赘述。具体在本实施例中,计算机设备中的处理器1001会按照如下的指令,将一个或一个以上的计算机程序的进程对应的可执行文件加载到存储器1002中,并由处理器1001来运行存储在存储器1002中的计算机程序,从而实现各种功能,如下:
通过模型训练任务的异步通信单元将网络梯度数据发送给梯度处理任务,模型训练任务和梯度处理任务集成在分布式处理器中,网络梯度数据为对神经网络模型进行梯度计算得到的;
基于梯度处理任务对网络梯度数据进行数据封装处理,得到处理后网络梯度数据;
根据梯度处理任务将处理后网络梯度数据进行数据规约处理,得到模型训练任务对应的回传网络梯度数据;
通过模型训练任务基于回传网络梯度数据对神经网络模型进行梯度更新,以对神经网络模型进行训练。
以上各个操作的具体实施可参见前面的实施例,在此不作赘述。
由上可知,本申请实施例的计算机设备可以通过模型训练任务的异步通信单元将网络梯度数据发送给梯度处理任务,模型训练任务和梯度处理任务集成在分布式处理器中,网络梯度数据为对神经网络模型进行梯度计算得到的;基于梯度处理任务对网络梯度数据进行数据封装处理,得到处理后网络梯度数据;根据梯度处理任务将处理后网络梯度数据进行数据规约处理,得到模型训练任务对应的回传网络梯度数据;通过模型训练任务基于回传网络梯度数据对神经网络模型进行梯度更新,以对神经网络模型进行训练。本方案通过线性代数编译程序的执行单元——异步通信节点发送网络梯度数据,当启动XLA时,XLA可以识别异步通信单元,进而可以将多个分布式处理器中梯度计算、梯度传输、以及梯度更新等过程融合成一个XLA节点,且异步通信节点具有异步属性,当异步通信节点将网络梯度数据发送出去后,可以执行后续的模型训练任务,以及对网络梯度数据进行数据处理,实现对网络梯度数据的计算与通信并行。
根据本申请的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述实施例中各种可选实现方式中提供的方法。
本领域普通技术人员可以理解,上述实施例的各种方法中的全部或部分步骤可以通过计算机程序来完成,或通过计算机程序控制相关的硬件来完成,该计算机程序可以存储于一计算机可读存储介质中,并由处理器进行加载和执行。
为此,本申请实施例提供一种计算机可读存储介质,其中存储有计算机程序,该计算机程序,能够被处理器进行加载,以执行本申请实施例所提供的任一种分布式训练方法。
以上各个操作的具体实施可参见前面的实施例,在此不再赘述。
其中,该计算机可读存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取记忆体(RAM,Random Access Memory)、磁盘或光盘等。
由于该计算机可读存储介质中所存储的计算机程序,可以执行本申请实施例所提供的任一种分布式训练方法,因此,可以实现本申请实施例所提供的任一种分布式训练方法所能实现的有益效果,详见前面的实施例,在此不再赘述。
以上对本申请实施例所提供的一种分布式训练方法、装置、计算机设备和计算机可读存储介质进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (12)
1.一种分布式训练方法,其特征在于,包括:
通过模型训练任务的异步通信单元将网络梯度数据发送给梯度处理任务,所述模型训练任务和所述梯度处理任务集成在分布式处理器中,所述网络梯度数据为对神经网络模型进行梯度计算得到的;
基于所述梯度处理任务对所述网络梯度数据进行数据封装处理,得到处理后网络梯度数据;
根据所述梯度处理任务将所述处理后网络梯度数据进行数据规约处理,得到所述模型训练任务对应的回传网络梯度数据;
通过所述模型训练任务基于所述回传网络梯度数据对所述神经网络模型进行梯度更新,以对所述神经网络模型进行训练。
2.根据权利要求1所述的方法,其特征在于,所述模型训练任务包括至少一个训练子任务,每个训练子任务设置有执行优先级,所述通过所述模型训练任务基于所述回传网络梯度数据对所述神经网络模型进行梯度更新,包括:
若存在至少两个当前待处理任务时,获取每个当前待处理任务对应的执行优先级;
根据所述当前待处理任务的执行优先级确定目标训练子任务;
基于所述目标训练子任务,通过所述模型训练任务基于所述回传网络梯度数据对所述神经网络模型进行梯度更新。
3.根据权利要求2所述的方法,其特征在于,所述训练子任务包括梯度更新任务,所述基于所述目标训练子任务,通过所述模型训练任务基于所述回传网络梯度数据对所述神经网络模型进行梯度更新,包括:
若所述目标训练子任务不为梯度更新任务,则执行所述目标训练子任务,并返回执行所述根据所述当前待处理任务的执行优先级确定目标训练子任务,直到所述目标训练子任务为梯度更新任务;
若所述目标训练任务为梯度更新任务,则通过所述分布式训练处理器基于所述回传网络梯度数据对所述神经网络模型进行梯度更新。
4.根据权利要求1所述的方法,其特征在于,所述分布式处理器包括存在多个计算节点的计算图,所述计算图基于所述模型训练任务以及所述梯度处理任务得到,所述通过模型训练任务的异步通信单元,将对神经网络模型进行梯度计算得到网络梯度数据发送给梯度处理任务,包括:
获取所述分布式训练处理器中计算图中计算节点之间的边所对应的边标识;
将所述边标识进行映射处理,得到所述计算图的任务执行顺序;
根据所述任务执行顺序,通过模型训练任务的对应的异步通信单元,将对神经网络模型进行梯度计算得到网络梯度数据发送给梯度处理任务。
5.根据权利要求1所述的方法,其特征在于,所述通过模型训练任务的异步通信单元,将对神经网络模型进行梯度计算得到网络梯度数据发送给梯度处理任务之前,所述方法还包括:
通过线性代码编译程序构建初始异步通信单元;
基于所述初始异步单元调用分布式训练框架程序中的异步传输逻辑代码,并封装成异步执行函数;
基于所述异步执行函数以及所述初始异步通信单元,得到所述异步通信单元,以基于所述异步通信单元调用所述异步传输逻辑代码将所述网络梯度数据发送给梯度处理任务。
6.根据权利要求5所述的方法,其特征在于,所述通过模型训练任务的异步通信单元,将对神经网络模型进行梯度计算得到网络梯度数据发送给梯度处理任务,包括:
基于所述模型训练任务对神经网络模型进行梯度计算,得到所述网络梯度数据,所述神经网络模型部署于所述分布式处理器中;
通过所述模型训练任务的异步通信单元中异步执行函数,调用所述异步传输逻辑代码将所述网络梯度数据发送给梯度处理任务。
7.根据权利要求5所述的方法,其特征在于,所述根据所述梯度处理任务将所述处理后网络梯度数据进行数据规约处理,得到所述模型训练任务对应的回传网络梯度数据,包括:
通过所述梯度处理任务将所述处理后网络梯度数据发送至所述分布式训练框架程序中的梯度传输函数;
通过所述梯度传输函数对所述处理后网络梯度数据在所述分布式处理器之间进行梯度传输,得到每个分布式训练处理器对应的回传网络梯度。
8.根据权利要求1至7任一项所述的方法,其特征在于,所述方法还包括:
当针对批训练样本对所述神经网络模型完成训练时,将所述网络梯度从所述异步通信单元的缓存空间中删除,以释放所述异步通信单元的缓存空间,所述批训练样本为对神经网络模型进行训练的训练样本。
9.一种分布式训练装置,其特征在于,包括:
发送模块,用于通过模型训练任务的异步通信单元将网络梯度数据发送给梯度处理任务,所述模型训练任务和所述梯度处理任务集成在分布式处理器中,所述网络梯度数据为对神经网络模型进行梯度计算得到的;
第一数据处理模块,用于基于所述梯度处理任务对所述网络梯度数据进行数据封装处理,得到处理后网络梯度数据;
第二数据处理模块,用于根据所述梯度处理任务将所述处理后网络梯度数据进行数据规约处理,得到所述模型训练任务对应的回传网络梯度数据;
梯度更新模块,用于通过所述模型训练任务基于所述回传网络梯度数据对所述神经网络模型进行梯度更新,以对所述神经网络模型进行训练。
10.一种计算机设备,其特征在于,包括存储器和处理器;所述存储器存储有计算机程序,所述处理器用于运行所述存储器内的计算机程序,以执行权利要求1至8任一项所述的分布式训练方法。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质用于存储计算机程序,所述计算机程序被处理器加载,以执行权利要求1至8任一项所述的分布式训练方法。
12.一种计算机程序产品,包括计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至8任一项所述的分布式训练方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111415782.1A CN114327399B (zh) | 2021-11-25 | 2021-11-25 | 分布式训练方法、装置、计算机设备、存储介质和产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111415782.1A CN114327399B (zh) | 2021-11-25 | 2021-11-25 | 分布式训练方法、装置、计算机设备、存储介质和产品 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114327399A true CN114327399A (zh) | 2022-04-12 |
CN114327399B CN114327399B (zh) | 2024-07-26 |
Family
ID=81046393
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111415782.1A Active CN114327399B (zh) | 2021-11-25 | 2021-11-25 | 分布式训练方法、装置、计算机设备、存储介质和产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114327399B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114492801A (zh) * | 2022-04-18 | 2022-05-13 | 中国科学院自动化研究所 | 一种神经网络的训练方法、装置及设备 |
CN116644803A (zh) * | 2023-07-27 | 2023-08-25 | 浪潮电子信息产业股份有限公司 | 分布式协同训练控制方法、系统、装置、设备及存储介质 |
CN116955365A (zh) * | 2023-09-21 | 2023-10-27 | 浪潮电子信息产业股份有限公司 | 梯度数据同步方法、模型训练方法、系统、设备及介质 |
WO2024139420A1 (zh) * | 2022-12-28 | 2024-07-04 | 华为技术有限公司 | 一种模型训练方法、装置、设备、系统和存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107688493A (zh) * | 2016-08-05 | 2018-02-13 | 阿里巴巴集团控股有限公司 | 训练深度神经网络的方法、装置及系统 |
WO2019128547A1 (zh) * | 2017-12-29 | 2019-07-04 | 华为技术有限公司 | 一种神经网络模型的训练方法及装置 |
CN110378472A (zh) * | 2019-07-24 | 2019-10-25 | 苏州浪潮智能科技有限公司 | 一种深度神经网络模型的数据并行训练方法、装置及设备 |
WO2020062165A1 (zh) * | 2018-09-29 | 2020-04-02 | 区链通网络有限公司 | 一种强化学习模型的训练方法、节点、系统及存储介质 |
CN112561079A (zh) * | 2020-12-18 | 2021-03-26 | 北京百度网讯科技有限公司 | 分布式的模型训练装置、方法及计算机程序产品 |
CN112861991A (zh) * | 2021-03-09 | 2021-05-28 | 中山大学 | 一种面向神经网络异步训练的学习率调整方法 |
-
2021
- 2021-11-25 CN CN202111415782.1A patent/CN114327399B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107688493A (zh) * | 2016-08-05 | 2018-02-13 | 阿里巴巴集团控股有限公司 | 训练深度神经网络的方法、装置及系统 |
WO2019128547A1 (zh) * | 2017-12-29 | 2019-07-04 | 华为技术有限公司 | 一种神经网络模型的训练方法及装置 |
WO2020062165A1 (zh) * | 2018-09-29 | 2020-04-02 | 区链通网络有限公司 | 一种强化学习模型的训练方法、节点、系统及存储介质 |
CN110378472A (zh) * | 2019-07-24 | 2019-10-25 | 苏州浪潮智能科技有限公司 | 一种深度神经网络模型的数据并行训练方法、装置及设备 |
CN112561079A (zh) * | 2020-12-18 | 2021-03-26 | 北京百度网讯科技有限公司 | 分布式的模型训练装置、方法及计算机程序产品 |
CN112861991A (zh) * | 2021-03-09 | 2021-05-28 | 中山大学 | 一种面向神经网络异步训练的学习率调整方法 |
Non-Patent Citations (1)
Title |
---|
朱祥磊;: "加速AI分布式训练研究和实践", 电信技术, no. 12, 25 December 2019 (2019-12-25) * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114492801A (zh) * | 2022-04-18 | 2022-05-13 | 中国科学院自动化研究所 | 一种神经网络的训练方法、装置及设备 |
WO2024139420A1 (zh) * | 2022-12-28 | 2024-07-04 | 华为技术有限公司 | 一种模型训练方法、装置、设备、系统和存储介质 |
CN116644803A (zh) * | 2023-07-27 | 2023-08-25 | 浪潮电子信息产业股份有限公司 | 分布式协同训练控制方法、系统、装置、设备及存储介质 |
CN116644803B (zh) * | 2023-07-27 | 2023-11-03 | 浪潮电子信息产业股份有限公司 | 分布式协同训练控制方法、系统、装置、设备及存储介质 |
CN116955365A (zh) * | 2023-09-21 | 2023-10-27 | 浪潮电子信息产业股份有限公司 | 梯度数据同步方法、模型训练方法、系统、设备及介质 |
CN116955365B (zh) * | 2023-09-21 | 2024-02-09 | 浪潮电子信息产业股份有限公司 | 梯度数据同步方法、模型训练方法、系统、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN114327399B (zh) | 2024-07-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114327399B (zh) | 分布式训练方法、装置、计算机设备、存储介质和产品 | |
CN110908667B (zh) | 神经网络联合编译的方法、装置和电子设备 | |
CN110780914B (zh) | 服务发布方法及装置 | |
US10754709B2 (en) | Scalable task scheduling systems and methods for cyclic interdependent tasks using semantic analysis | |
CN110262901B (zh) | 一种数据处理方法及数据处理系统 | |
CN109408500B (zh) | 人工智能运行平台 | |
Mechalikh et al. | PureEdgeSim: A simulation framework for performance evaluation of cloud, edge and mist computing environments | |
CN109117252B (zh) | 基于容器的任务处理的方法、系统及容器集群管理系统 | |
CN104536937A (zh) | 基于cpu-gpu异构集群的大数据一体机实现方法 | |
CN111459610B (zh) | 一种模型部署方法和装置 | |
CN111062521B (zh) | 一种在线预测方法、系统及服务器 | |
WO2022139865A1 (en) | User context migration based on computation graph in artificial intelligence application executing in edge computing environment | |
CN114924851B (zh) | 训练任务的调度方法、装置、电子设备和存储介质 | |
CN115358401A (zh) | 一种推理服务的处理方法、装置、计算机设备及存储介质 | |
CN111935026B (zh) | 一种数据传输方法、装置、处理设备及介质 | |
Sanchez-Gallegos et al. | On the building of efficient self-adaptable health data science services by using dynamic patterns | |
CN113608751A (zh) | 推理服务平台的运行方法、装置、设备及存储介质 | |
CN114997401B (zh) | 自适应推理加速方法、装置、计算机设备和存储介质 | |
CN116932147A (zh) | 流式作业处理方法、装置、电子设备及介质 | |
CN115708061A (zh) | 服务器部署模型的方法、模型处理方法和装置 | |
CN114327856A (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN115599507A (zh) | 数据处理方法、执行工作站、电子设备和存储介质 | |
CN113556375A (zh) | 云计算服务方法、装置、电子设备和计算机存储介质 | |
CN116032928B (zh) | 数据协同计算方法、装置、系统、电子装置和存储介质 | |
CN118132279B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |