一种神经网络模型训练方法、装置、芯片和系统制造方法及图纸

技术编号:18139062 阅读:58 留言:0更新日期:2018-06-06 12:13
本发明专利技术实施例涉及机器学习领域,尤其涉及一种神经网络模型训练方法、装置、芯片和系统,用以缩短模型参数的训练时延。本发明专利技术实施例每个训练周期包括K次迭代,针对N个工作模块中的一个工作模块在每个训练周期内的第i次迭代,各个工作模块并行执行:根据第i次迭代的局部梯度和第i次迭代的模型参数计算第i+1次迭代的模型参数,且在i小于K的情况下,根据第i+1次迭代的模型参数以及第i+1次迭代的样本数据,计算第i+1次迭代的局部梯度;工作模块从所述服务器模块下拉第r次迭代的全局梯度和/或向所述服务器模块上推第f次迭代的局部梯度。从而使计算进程与通讯进程的时间窗口重叠,缩短模型参数的训练时延。

【技术实现步骤摘要】
一种神经网络模型训练方法、装置、芯片和系统
本专利技术实施例涉及机器学习领域,尤其涉及一种神经网络模型训练方法、装置、芯片和系统。
技术介绍
随着计算机和信息技术的迅猛发展和普及应用,行业应用数据呈爆炸性增长。动辄达到数百万亿字节(Trillionbyte,简称TB),甚至数千万亿字节(Petabyte,简称PB)规模的行业、企业大数据往往隐含着很多在小数据量时不具备的深度知识和价值,大规模机器学习(包含深度学习)引领的数据分析是将大数据转换成有用知识的关键技术。Google、Facebook、微软、百度等国内外大型互联网公司纷纷成立专门的基于大数据的机器学习与人工智能研发机构,深入系统地研究基于大数据的机器学习和智能化计算技术。将大规模机器学习算法部署在大规模分布式并行计算系统,目前较为常用的是参数服务器(英文可称为parametersever)计算架构,配合有效的随机梯度下降算法(英文可称为Stochasticgradientdescent)进行训练。图1示例性示出了一种分布式训练系统示意图,如图1所示,包括服务器模块集合(英文可称为servers)101和工作模块集合(英文可称为workers)102,服务器模块集合可包括多个服务器模块(英文可称为server),工作模块集合可包括多个工作模块(英文可称为worker),服务器模块与主服务器(英文可称为master)节点类似,工作模块可指代计算执行器。分布式训练系统中包括多个分布式的节点,每个节点可包括一个或多个工作模块,也还可包括一个或多个服务器模块。以图1为例,对分布式训练系统下服务器模块和工作模块之间的信令交互过程进行详细介绍。图1中包括N个工作模块以及P个服务器模块,N个工作模块以及P个服务器模块用于训练神经网络模型中的模型参数,该示例中以训练一个模型参数为例进行介绍:第一,启动分布式计算平台,部署应用,服务器模块进行初始化,得到初始化的模型参数ω1,从服务器模块将全局模型参数ω1从服务器模块下拉(英文可称为pull)到各个工作模块;第二,每个工作模块执行第一次迭代:读入样本数据,依赖于全局模型参数ω1进行局部梯度计算;工作模块1计算得到局部梯度Δω1-1;工作模块2计算得到局部梯度Δω2-1;…工作模块N计算得到局部梯度ΔωN-1;第三,每个工作模块执行第二次迭代:各个工作模块均将第一次迭代中产生的局部梯度Δω1-1、局部梯度Δω2-1…局部梯度ΔωN-1均向服务器模块上推(英文可称为push)至服务器模块,服务器模块根据局部梯度Δω1-1、局部梯度Δω2-1…局部梯度ΔωN-1计算出全局梯度ω1_1;将全局梯度Δω1_1从服务器模块下拉(英文可称为pull)到各个工作模块;每个工作模块,根据全局梯度Δω1_1将本地模型参数ω1更新为模型参数ω2;各个工作模块读入样本数据,依赖于更新后的模型参数ω2进行局部梯度计算;工作模块1计算得到局部梯度Δω1-2;工作模块2计算得到局部梯度Δω2-2;…工作模块1计算得到局部梯度ΔωN-2;第四,在之后的几次迭代中各个工作模块均再次将各个局部梯度向服务器模块上推至服务器模块,以便服务器模块再次从服务器模块下拉全局梯度,从而使各个工作模块依赖从服务器模块下拉的全局梯度进行本地模型参数的更新,以及梯度计算;第五,重复进行几次迭代之后,各个工作模块向服务器模块上报最后一次更新后的本地的模型参数,服务器模块根据各个工作模块上报的更新后的本地的模型参数确定出平均值,得到经训练后的模型参数。该一个过程可称为一个训练周期(英文可称为epoch),可通过多个训练周期对该模型参数进行训练。通过上述描述可看出,每个模型参数在迭代过程中,每个工作模块先向服务器模块上推该局部梯度,并等待从服务器模块下拉到该模型参数的全局梯度之后,依据全局梯度更新本地模型参数,之后根据更新后的本地模型参数计算局部梯度,可见每次迭代过程所占用的时间包括向服务器模块上推局部梯度和从服务器模块下拉全局梯度的通讯时间,以及更新本地模型参数和计算局部梯度的计算时间,一次迭代的时间较长,从而导致模型参数的训练过程存在较大的时延。
技术实现思路
本专利技术实施例提供一种神经网络模型训练方法、装置、芯片和系统,用以缩短模型参数的训练时延,提高模型参数训练的效率。第一方面,本专利技术实施例提供一种神经网络模型训练方法。本专利技术实施例适用于包括服务器模块和N个工作模块的训练系统,服务器模块和N个工作模块用于在至少一个训练周期内训练模型参数,至少一个训练周期内的每个训练周期包括K次迭代,针对N个工作模块中的一个工作模块在每个训练周期内的第i次迭代,各个工作模块并行执行:根据第i次迭代的局部梯度和第i次迭代的模型参数计算第i+1次迭代的模型参数,且在i小于K的情况下,根据第i+1次迭代的模型参数以及第i+1次迭代的样本数据,计算第i+1次迭代的局部梯度;工作模块从服务器模块下拉第r次迭代的全局梯度和/或向服务器模块上推第f次迭代的局部梯度。本专利技术实施例中每次迭代过程中并行执行第一进程和第二进程,第一进程是计算进程,具体包括计算第i+1次迭代的模型参数,计算第i+1次迭代的局部梯度;第二进程是通讯进程,具体包括从服务器模块下拉第r次迭代的全局梯度和/或向服务器模块上推第f次迭代的局部梯度。第一进程中根据第i次迭代的局部梯度和第i次迭代的模型参数计算第i+1次迭代的模型参数,避免了现有技术中一定要等待从服务器模块下拉到第i次迭代的全局梯度才能计算第i+1次迭代的模型参数的方案,从而缩短了一次迭代的时长,提高了模型参数训练的效率。可选地,工作模块根据第i次迭代的局部梯度和第i次迭代的模型参数计算第i+1次迭代的模型参数,包括:工作模块在确定已从服务器模块下拉满足第一条件的第j次迭代的全局梯度的情况下,根据第j次迭代的全局梯度、第i次迭代的局部梯度和第i次迭代的模型参数,计算第i+1次迭代的模型参数;其中,j为小于等于i的正整数;第一条件包括:第j次迭代的全局梯度未被用于第1次迭代至第i次迭代之间任一次迭代中的模型参数的计算。如此,可以根据已从服务器模块下拉满足第一条件的第j次迭代的全局梯度计算第i+1次迭代的模型参数,提高了计算第i+1次迭代的模型参数的精度,另一方面,从已从服务器模块下拉的全局梯度中选择满足第一条件的第j次迭代的全局梯度,无需等待通讯进程,进一步缩短了迭代的时长,提高了模型参数训练的效率。可选地,工作模块根据第i次迭代的局部梯度和第i次迭代的模型参数计算第i+1次迭代的模型参数,包括:所工作模块在确定未从服务器模块下拉满足第一条件的第j次迭代的全局梯度的情况下,根据第i次迭代的局部梯度和第i次迭代的模型参数,计算第i+1次迭代的模型参数。如此,无需等待通讯进程,进一步缩短了迭代的时长,提高了模型参数训练的效率。可选地,第一条件还包括:第j次迭代的全局梯度为已经从服务器模块下拉的所有全局梯度中迭代批次最高的迭代中的全局梯度。如此,可以根据与当前迭代过程中最邻近的迭代中的全局梯度更新模型参数,加速了模型参数的收敛。可选地,第j次迭代的全局梯度根据以下内容确定的:N个工作模块中的M个工作模块上报的第j次迭代的局部梯度;其中,M为大于等于1且小于等于N的整数。如本文档来自技高网
...
一种神经网络模型训练方法、装置、芯片和系统

【技术保护点】
一种神经网络模型训练方法,其特征在于,所述方法适用于包括服务器模块和N个工作模块的训练系统,所述服务器模块和所述N个工作模块用于在至少一个训练周期内训练模型参数,所述至少一个训练周期内的每个训练周期包括K次迭代,针对所述N个工作模块中的一个工作模块在每个训练周期内的第i次迭代,各个工作模块并行执行:根据所述第i次迭代的局部梯度和所述第i次迭代的模型参数计算第i+1次迭代的模型参数,且在i小于K的情况下,根据所述第i+1次迭代的模型参数以及所述第i+1次迭代的样本数据,计算所述第i+1次迭代的局部梯度;从所述服务器模块下拉第r次迭代的全局梯度和/或向所述服务器模块上推第f次迭代的局部梯度;其中,所述r和f分别为小于等于i的正整数;其中,所述N、K分别为大于等于1的整数,所述i为大于等于1且小于等于K的整数。

【技术特征摘要】
1.一种神经网络模型训练方法,其特征在于,所述方法适用于包括服务器模块和N个工作模块的训练系统,所述服务器模块和所述N个工作模块用于在至少一个训练周期内训练模型参数,所述至少一个训练周期内的每个训练周期包括K次迭代,针对所述N个工作模块中的一个工作模块在每个训练周期内的第i次迭代,各个工作模块并行执行:根据所述第i次迭代的局部梯度和所述第i次迭代的模型参数计算第i+1次迭代的模型参数,且在i小于K的情况下,根据所述第i+1次迭代的模型参数以及所述第i+1次迭代的样本数据,计算所述第i+1次迭代的局部梯度;从所述服务器模块下拉第r次迭代的全局梯度和/或向所述服务器模块上推第f次迭代的局部梯度;其中,所述r和f分别为小于等于i的正整数;其中,所述N、K分别为大于等于1的整数,所述i为大于等于1且小于等于K的整数。2.如权利要求1所述的方法,其特征在于,所述工作模块根据所述第i次迭代的局部梯度和所述第i次迭代的模型参数计算第i+1次迭代的模型参数,包括:所述工作模块在确定已从所述服务器模块下拉满足第一条件的第j次迭代的全局梯度的情况下,根据所述第j次迭代的全局梯度、所述第i次迭代的局部梯度和所述第i次迭代的模型参数,计算第i+1次迭代的模型参数;其中,所述j为小于等于所述i的正整数;所述第一条件包括:所述第j次迭代的全局梯度未被用于第1次迭代至第i次迭代之间任一次迭代中的模型参数的计算;所述工作模块在确定未从所述服务器模块下拉满足所述第一条件的第j次迭代的全局梯度的情况下,根据所述第i次迭代的局部梯度和所述第i次迭代的模型参数,计算第i+1次迭代的模型参数。3.如权利要求2所述的方法,其特征在于,所述第一条件还包括:所述第j次迭代的全局梯度为已经从所述服务器模块下拉的所有全局梯度中迭代批次最高的迭代中的全局梯度。4.如权利要求2或3所述的方法,其特征在于,所述第j次迭代的全局梯度根据以下内容确定的:所述N个工作模块中的M个工作模块上报的第j次迭代的局部梯度;其中,所述M为大于等于1且小于等于N的整数。5.如权利要求1至4任一权利要求所述的方法,其特征在于,所述工作模块从所述服务器模块下拉第r次迭代的全局梯度和/或向所述服务器模块上推第f次迭代的局部梯度,包括以下内容中的两项,或者包括以下内容中的任一项:从所述服务器模块下拉所述第r次迭代的全局梯度;向所述服务器模块上推所述第i-1次迭代的局部梯度;或者向所述服务器模块上推所述第i次迭代的局部梯度。6.如权利要求1至5任一权利要求所述的方法,其特征在于,在所述i为K的情况下,所述方法还包括:所述工作模块计算所述第K次迭代的局部梯度之后,根据所述第K次迭代的局部梯度和所述第K次迭代的模型参数计算第K+1次迭代的模型参数之后,向所述服务器模块上推所述第K+1次迭代的模型参数;其中,所述第K+1次迭代的模型参数用于:使所述服务器模块根据所述N个工作模块中每个工作模块向所述服务器模块上推的第K+1次迭代的模型参数,以及迭代次数K,确定下个训练周期内的第1次迭代的模型参数。7.一种神经网络模型训练装置,其特征在于,所述训练装置包N个工作模块,所述训练装置适用于包括服务器模块和N个工作模块的训练系统,所述服务器模块和所述N个工作模块用于在至少一个训练周期内训练模型参数,所述至少一个训练周期内的每个训练周期包括K次迭代;所述N个工作模块中的每个工作模块包括通讯模块和计算模块;针对所述N个工作模块中的一个工作模块在每个训练周期内的第i次迭代:各个工作模块的所述通讯模块和所述计算模块并行运行;其中,所述计算模块,用于根据所述第i次迭代的局部梯度和所述第i次迭代的模型参数计算第i+1次迭代的模型参数,且在i小于K的情况下,根据所述第i+1次迭代的模型参数以及所述第i+1次迭代的样本数据,计算所述第i+1次迭代的局部梯度;所述通讯模块,用于从所述服务器模块下拉第r次迭代的全局梯度和/或向所述服务器模块上推第f次迭代的局部梯度;其中,所述r和f分别为小于等于i的正整数;其中,所述N、K分别为大于等于1的整数,所述i为大于等于1且小于等于K的整数。8.如权利要求7所述的训...

【专利技术属性】
技术研发人员:张长征白小龙涂丹丹
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:广东,44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1