CN110348571B - 一种神经网络模型训练方法、装置、芯片和系统 - Google Patents

一种神经网络模型训练方法、装置、芯片和系统 Download PDF

Info

Publication number
CN110348571B
CN110348571B CN201910503321.6A CN201910503321A CN110348571B CN 110348571 B CN110348571 B CN 110348571B CN 201910503321 A CN201910503321 A CN 201910503321A CN 110348571 B CN110348571 B CN 110348571B
Authority
CN
China
Prior art keywords
iteration
module
gradient
model parameters
server module
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.)
Active
Application number
CN201910503321.6A
Other languages
English (en)
Other versions
CN110348571A (zh
Inventor
张长征
白小龙
涂丹丹
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201910503321.6A priority Critical patent/CN110348571B/zh
Publication of CN110348571A publication Critical patent/CN110348571A/zh
Application granted granted Critical
Publication of CN110348571B publication Critical patent/CN110348571B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computing Systems (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Molecular Biology (AREA)
  • Artificial Intelligence (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Machine Translation (AREA)
  • Computer And Data Communications (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明实施例提供了一种模型训练方法。本发明实施例的每个工作模块包括并行运行的计算进程和通讯进程,计算进程根据上一次迭代的局部梯度和模型参数计算下一次训练模型的模型参数,通讯进程向服务器模块上推局部梯度以及下拉全局梯度。计算进程计算训练模型的下一次迭代的模型参数的过程不依赖于上一次迭代的全局梯度,从而使计算进程与通讯进程的时间窗口重叠,缩短了模型参数的训练时延。

Description

一种神经网络模型训练方法、装置、芯片和系统
技术领域
本发明实施例涉及机器学习领域,尤其涉及一种神经网络模型训练方法、装置、芯片和系统。
背景技术
随着计算机和信息技术的迅猛发展和普及应用,行业应用数据呈爆炸性增长。动辄达到数百万亿字节(Trillionbyte,简称TB),甚至数千万亿字节(Petabyte,简称PB)规模的行业、企业大数据往往隐含着很多在小数据量时不具备的深度知识和价值,大规模机器学习(包含深度学习)引领的数据分析是将大数据转换成有用知识的关键技术。Google、Facebook、微软、百度等国内外大型互联网公司纷纷成立专门的基于大数据的机器学习与人工智能研发机构,深入系统地研究基于大数据的机器学习和智能化计算技术。
将大规模机器学习算法部署在大规模分布式并行计算系统,目前较为常用的是参数服务器(英文可称为parameter sever)计算架构,配合有效的随机梯度下降算法(英文可称为Stochastic gradient descent)进行训练。图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的整数。如此,可提高工作模块和服务器模块的工作的灵活性。且进一步减少工作模块和服务器模块之间的通讯量。
可选地,工作模块从服务器模块下拉第r次迭代的全局梯度和/或向服务器模块上推第f次迭代的局部梯度,包括从服务器模块下拉第r次迭代的全局梯度。或者包括从服务器模块下拉第r次迭代的全局梯度,向服务器模块上推第i-1次迭代的局部梯度。或者包括从服务器模块下拉第r次迭代的全局梯度,向服务器模块上推第i次迭代的局部梯度。或者包括向服务器模块上推第i-1次迭代的局部梯度。或者包括向服务器模块上推第i次迭代的局部梯度。如此,可提高工作模块的灵活性,另一方面,也可尽量向服务器模块上推与当前迭代过程中最邻近的迭代中的局部梯度,从而加速了模型参数的收敛。
可选地,在i为K的情况下,方法还包括:工作模块计算第K次迭代的局部梯度之后,根据第K次迭代的局部梯度和第K次迭代的模型参数计算第K+1次迭代的模型参数之后,向服务器模块上推第K+1次迭代的模型参数;其中,第K+1次迭代的模型参数用于:使服务器模块根据N个工作模块中每个工作模块向服务器模块上推的第K+1次迭代的模型参数,以及迭代次数K,确定下个训练周期内的第1次迭代的模型参数。如此,提高训练周期的模型参数的准确度。
第二方面,本发明实施例提供一种用于神经网络模型训练装置,所述训练装置包N个工作模块,所述训练装置适用于包括服务器模块和N个工作模块的训练系统,服务器模块和N个工作模块用于在至少一个训练周期内训练模型参数,至少一个训练周期内的每个训练周期包括K次迭代;N个工作模块中每个工作模块包括通讯模块和计算模块;针对N个工作模块中的各个工作模块在每个训练周期内的第i次迭代,其中,N、K分别为大于等于1的整数,i为大于等于1且小于等于K的整数。各个工作模块的通讯模块和计算模块并行运行;其中,计算模块,用于根据第i次迭代的局部梯度和第i次迭代的模型参数计算第i+1次迭代的模型参数,且在i小于K的情况下,根据第i+1次迭代的模型参数以及第i+1次迭代的样本数据,计算第i+1次迭代的局部梯度;通讯模块,用于从服务器模块下拉第r次迭代的全局梯度和/或向服务器模块上推第f次迭代的局部梯度;其中,r和f分别为小于等于i的正整数。
本发明实施例中每次迭代过程中通讯模块和计算模块并行运行,通信模块执行第一进程,计算模块执行第二进程,第一进程是计算进程,具体包括计算第i+1次迭代的模型参数,计算第i+1次迭代的局部梯度;第二进程是通讯进程,具体包括从服务器模块下拉第r次迭代的全局梯度和/或向服务器模块上推第f次迭代的局部梯度。第一进程中根据第i次迭代的局部梯度和第i次迭代的模型参数计算第i+1次迭代的模型参数,避免了现有技术中一定要等待从服务器模块下拉到第i次迭代的全局梯度才能计算第i+1次迭代的模型参数的方案,从而缩短了一次迭代的时长,提高了模型参数训练的效率。
可选地,计算模块,用于:在确定已从服务器模块下拉满足第一条件的第j次迭代的全局梯度的情况下,根据第j次迭代的全局梯度、第i次迭代的局部梯度和第i次迭代的模型参数,计算第i+1次迭代的模型参数;其中,j为小于等于i的正整数;第一条件包括:第j次迭代的全局梯度未被用于第1次迭代至第i次迭代之间任一次迭代中的模型参数的计算。如此,无需等待通讯进程,进一步缩短了迭代的时长,提高了模型参数训练的效率。
可选地,计算模块,用于:在确定未从服务器模块下拉满足第一条件的第j次迭代的全局梯度的情况下,根据第i次迭代的局部梯度和第i次迭代的模型参数,计算第i+1次迭代的模型参数。如此,可以根据与当前迭代过程中最邻近的迭代中的全局梯度更新模型参数,加速了模型参数的收敛。
可选地,第一条件还包括:第j次迭代的全局梯度为已经从服务器模块下拉的所有全局梯度中迭代批次最高的迭代中的全局梯度。如此,可以根据已从服务器模块下拉满足第一条件的第j次迭代的全局梯度计算第i+1次迭代的模型参数,提高了计算第i+1次迭代的模型参数的精度,另一方面,从已从服务器模块下拉的全局梯度中选择满足第一条件的第j次迭代的全局梯度,无需等待通讯进程,进一步缩短了迭代的时长,提高了模型参数训练的效率。
可选地,第j次迭代的全局梯度根据以下内容确定的:N个工作模块中的M个工作模块上报的第j次迭代的局部梯度;其中,M为大于等于1且小于等于N的整数。如此,可提高工作模块和服务器模块的工作的灵活性。且进一步减少工作模块和服务器模块之间的通讯量。
可选地,通讯模块,用于从服务器模块下拉第r次迭代的全局梯度。或者用于从服务器模块下拉第r次迭代的全局梯度,向服务器模块上推第i-1次迭代的局部梯度。或者用于从服务器模块下拉第r次迭代的全局梯度,向服务器模块上推第i次迭代的局部梯度。或者用于向服务器模块上推第i-1次迭代的局部梯度。或者用于向服务器模块上推第i次迭代的局部梯度。如此,可提高工作模块的灵活性,另一方面,也可尽量向服务器模块上推与当前迭代过程中最邻近的迭代中的局部梯度,从而加速了模型参数的收敛。
可选地,在i为K的情况下,通讯模块还用于:在通过计算模块计算第K次迭代的局部梯度之后,根据第K次迭代的局部梯度和第K次迭代的模型参数计算第K+1次迭代的模型参数之后,向服务器模块上推第K+1次迭代的模型参数;其中,第K+1次迭代的模型参数用于:使服务器模块根据N个工作模块中每个工作模块向服务器模块上推的第K+1次迭代的模型参数,以及迭代次数K,确定下个训练周期内的第1次迭代的模型参数。如此,提高训练周期的模型参数的准确度。
第三方面,本发明实施例提供一种用于神经网络模型训练装置,所述训练装置包括处理器、存储器和收发器,所述处理器包括N个处理器核,所述训练装置适用于包括服务器模块和N个处理器核的训练系统,所述服务器模块和所述N个处理器核用于在至少一个训练周期内训练模型参数,所述至少一个训练周期内的每个训练周期包括K次迭代;
所述存储器用于存储指令;所述处理器用于执行所述存储器存储的指令,并控制所述收发器与所述服务器模块之间传输数据;当所述处理器执行所述存储器存储的指令时,所述N个处理器核中的每个处理器核用于:
根据第i次迭代的局部梯度和第i次迭代的模型参数计算第i+1次迭代的模型参数,且在i小于K的情况下,根据第i+1次迭代的模型参数以及第i+1次迭代的样本数据,计算第i+1次迭代的局部梯度;
收发器,用于从服务器模块下拉第r次迭代的全局梯度和/或向服务器模块上推第f次迭代的局部梯度;其中,r和f分别为小于等于i的正整数。
存储器用于存储从服务器模块下拉的全局梯度,以及计算出的局部梯度。
本发明实施例中每次迭代过程中收发器和处理器并行运行,处理器执行第一进程,收发器执行第二进程,第一进程是计算进程,具体包括计算第i+1次迭代的模型参数,计算第i+1次迭代的局部梯度;第二进程是通讯进程,具体包括从服务器模块下拉第r次迭代的全局梯度和/或向服务器模块上推第f次迭代的局部梯度。第一进程中根据第i次迭代的局部梯度和第i次迭代的模型参数计算第i+1次迭代的模型参数,避免了现有技术中一定要等待从服务器模块下拉到第i次迭代的全局梯度才能计算第i+1次迭代的模型参数的方案,从而缩短了一次迭代的时长,提高了模型参数训练的效率。
可选地,处理器,用于:在确定已从服务器模块下拉满足第一条件的第j次迭代的全局梯度的情况下,根据第j次迭代的全局梯度、第i次迭代的局部梯度和第i次迭代的模型参数,计算第i+1次迭代的模型参数;其中,j为小于等于i的正整数;第一条件包括:第j次迭代的全局梯度未被用于第1次迭代至第i次迭代之间任一次迭代中的模型参数的计算。如此,无需等待通讯进程,进一步缩短了迭代的时长,提高了模型参数训练的效率。
可选地,处理器,用于:在确定未从服务器模块下拉满足第一条件的第j次迭代的全局梯度的情况下,根据第i次迭代的局部梯度和第i次迭代的模型参数,计算第i+1次迭代的模型参数。如此,可以根据与当前迭代过程中最邻近的迭代中的全局梯度更新模型参数,加速了模型参数的收敛。
可选地,第一条件还包括:第j次迭代的全局梯度为已经从服务器模块下拉的所有全局梯度中迭代批次最高的迭代中的全局梯度。如此,可以根据已从服务器模块下拉满足第一条件的第j次迭代的全局梯度计算第i+1次迭代的模型参数,提高了计算第i+1次迭代的模型参数的精度,另一方面,从已从服务器模块下拉的全局梯度中选择满足第一条件的第j次迭代的全局梯度,无需等待通讯进程,进一步缩短了迭代的时长,提高了模型参数训练的效率。
可选地,第j次迭代的全局梯度根据以下内容确定的:N个工作模块中的M个工作模块上报的第j次迭代的局部梯度;其中,M为大于等于1且小于等于N的整数。如此,可提高工作模块和服务器模块的工作的灵活性。且进一步减少工作模块和服务器模块之间的通讯量。
可选地,收发器,用于从服务器模块下拉第r次迭代的全局梯度。或者用于从服务器模块下拉第r次迭代的全局梯度,向服务器模块上推第i-1次迭代的局部梯度。或者用于从服务器模块下拉第r次迭代的全局梯度,向服务器模块上推第i次迭代的局部梯度。或者用于向服务器模块上推第i-1次迭代的局部梯度。或者用于向服务器模块上推第i次迭代的局部梯度。如此,可提高工作模块的灵活性,另一方面,也可尽量向服务器模块上推与当前迭代过程中最邻近的迭代中的局部梯度,从而加速了模型参数的收敛。
可选地,在i为K的情况下,收发器还用于:在通过处理器计算第K次迭代的局部梯度之后,根据第K次迭代的局部梯度和第K次迭代的模型参数计算第K+1次迭代的模型参数之后,向服务器模块上推第K+1次迭代的模型参数;其中,第K+1次迭代的模型参数用于:使服务器模块根据N个工作模块中每个工作模块向服务器模块上推的第K+1次迭代的模型参数,以及迭代次数K,确定下个训练周期内的第1次迭代的模型参数。如此,提高训练周期的模型参数的准确度。
第四方面,本发明实施例提供一种用于神经网络模型训练的芯片,所述芯片适用于包括N个芯片和服务器的训练系统,所述服务器模块和所述N个芯片用于在至少一个训练周期内训练模型参数,所述至少一个训练周期内的每个训练周期包括K次迭代;所述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的整数;服务器模块,用于根据接收到的各个工作模块上推的第r次迭代的局部梯度计算第r次迭代的全局梯度,并将第r次迭代的全局梯度下拉至各个工作模块;接收各个工作模块上推的第f次迭代的局部梯度,并根据各个工作模块上推的第f次迭代的局部梯度计算第f次迭代的全局梯度。
本发明实施例中每次迭代过程中并行执行第一进程和第二进程,第一进程是计算进程,具体包括计算第i+1次迭代的模型参数,计算第i+1次迭代的局部梯度;第二进程是通讯进程,具体包括从服务器模块下拉第r次迭代的全局梯度和/或向服务器模块上推第f次迭代的局部梯度。第一进程中根据第i次迭代的局部梯度和第i次迭代的模型参数计算第i+1次迭代的模型参数,第一进程中根据第i次迭代的局部梯度和第i次迭代的模型参数计算第i+1次迭代的模型参数,避免了现有技术中一定要等待从服务器模块下拉到第i次迭代的全局梯度才能计算第i+1次迭代的模型参数的方案,从而缩短了一次迭代的时长,提高了模型参数训练的效率。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍。
图1为背景技术中示出的一种分布式训练系统示意图;
图2为本发明实施例适用的一种应用场景架构示意图;
图3为本发明实施例提供的一种适用的训练系统示意图;
图4为本发明实施例提供的一种神经网络模型训练方法流程示意图;
图5为本发明实施例提供的一种神经网络模型训练方法流程示意图;
图6为本发明实施例提供的一种神经网络模型训练装置的结构示意图;
图7为本发明实施例提供的一种神经网络模型训练装置的结构示意图;
图8为本发明实施例提供的一种用于神经网络模型训练的系统的结构示意图。
具体实施方式
为了使本发明的目的、技术方案及有益效果更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
图2示例性示出了本发明实施例适用的一种应用场景架构示意图,如图2所示,在具体实施中会存在多种原始数据,比如图2中的电信数据201、金融数据202以及消费者数据203等等,大数据平台204对这些原始数据进行数据采集,以及数据存储和数据计算等等,得到经过大数据平台204处理后的数据。数据挖掘平台205从大数据平台获取经过大数据平台204处理后的数据,并进行数据挖掘,比如使用逻辑回归分析(英文可称为LogisticRegression,简称LR)、大规模传统神经网络模型隐含狄利克雷分布(英文可称为LatentDirichlet Allocation,简称LDA);卷积神经网络(英文可称为Convolution neuralnetwork,简称CNN)、循环神经网络(英文可称为Recurrent neural network,简称RNN)、稀疏自动编码器(英文可称为Sparse AutoEncoder,简称SAE)等深度学习模型进行数据挖掘,得到数据挖掘后的结果。应用平台206中包括各个领域,可依据数据挖掘平台205确定出的数据挖掘后的结果进行电信领域大数据分析、金融领域大数据分析、消费者领域大数据分析,以及其它领域大数据分析等等。
本发明实施例可用于训练海量数据的分布式并行计算集群,适合的算法包括卷积神经网络(用于图像、语音或视频的处理)、递归神经网络(用于自然语言处理)、深度神经网络(用于处理语音)等多种深度学习算法以及大规模机器学习算法。
本发明实施例所提供的方案应用于数据挖掘平台205,数据挖掘平台205可通过深度学习智能分析对底层的原始数据进行挖掘分析,通过分布式架构的加速训练过程,提升了基于深度学习训练的数据挖掘平台的性能和可扩展性,从而支撑上层的应用平台的决策和运营,比如视频分析、图像识别、物体检测、自然语言处理等上层的应用平台的业务。
本发明实施例中一个节点可为包括至少一个图形处理器(Graphics ProcessingUnit,简称GPU)芯片和/或至少一个中央处理器(Central Processing Unit,简称CPU)芯片的计算机设备。其中,每个GPU芯片中包括一个或多个GPU核,每个CPU芯片中包括一个或多个CPU核。本发明实施例中的工作模块可包括一个或多个GPU核,服务器模块可包括一个或多个CPU核。
为了方便描述,多个服务器模块的可称为服务器模块集合,多个工作模块的可称为工作模块集合。图3示例性示出了本发明实施例提供的一种适用的系统架构示意图,如图3所示,本发明实施例包括服务器模块集合307和工作模块集合308,服务器模块集合307包括多个服务器模块,分别为服务器模块301、服务器模块302、…服务器模块303;工作模块集合308可包括多个工作模块,分别为工作模块304、工作模块305、…工作模块306。
分布式系统架构中包括多个分布式的节点。每个节点的具体部署形态包括3种:第一种,工作模块与服务器模块部署在同一个节点上,工作模块数目与服务器模块数目相等或不等;第二种,工作模块与服务器模块分别部署在不同节点上,工作模块数目与服务器模块相等或不等;第三种,工作模块与服务器模块混合部署在不同节点上,也就是多个节点中至少有一个节点上既有工作模块又有服务器模块,工作模块数目与服务器模块数目相等或不相等。本发明实施例所提供的方案适用于任一种具体部署形态。
服务器模块和工作模块用于在至少一个训练周期内训练模型参数。每个训练周期(英文可称为epoch)可包括K次迭代。可通过一个训练周期或多个训练周期对模型参数进行训练。本发明实施例中以下内容重点对一个训练周期进行详细介绍,其它训练周期的方案与下述内容类似,不再赘述。
基于上述内容,图4示例性示出了本发明实施例提供的一种神经网络模型训练方法流程示意图,该神经网络模型训练方法适用于包括服务器模块和N个工作模块的训练系统,服务器模块和N个工作模块用于在至少一个训练周期内训练模型参数,至少一个训练周期内的每个训练周期包括K次迭代,针对N个工作模块中的一个工作模块在每个训练周期内的第i次迭代,其中,N、K分别为大于等于1的整数,i为大于等于1且小于等于K的整数,如图4所示,方法包括:
步骤401,各个工作模块并行执行步骤402和步骤403;该工作模块为N个工作模块中的一个,可选地,可为N个工作模块中的一个工作模块;
步骤402,各个工作模块根据第i次迭代的局部梯度和第i次迭代的模型参数计算第i+1次迭代的模型参数,且在i小于K的情况下,根据第i+1次迭代的模型参数以及第i+1次迭代的样本数据,计算第i+1次迭代的局部梯度;
步骤403,各个工作模块从服务器模块下拉第r次迭代的全局梯度和/或向服务器模块上推第f次迭代的局部梯度;其中,r和f分别为小于等于i的正整数。具体来说包括几种方案:方案一,工作模块从服务器模块下拉第r次迭代的全局梯度;方案二,工作模块向服务器模块上推第f次迭代的局部梯度,方案三,工作模块从服务器模块下拉第r次迭代的全局梯度且向服务器模块上推第f次迭代的局部梯度。具体来说,工作模块从服务器模块下拉第r次迭代的全局梯度,包括工作模块接收服务器模块发送的第r次迭代的全局梯度,或者工作模块自动去服务器模块上获取第r次迭代的全局梯度。向服务器模块上推第f次迭代的局部梯度具体来说,工作模块将第f次迭代的局部梯度发送给服务器模块。
本发明实施例中每次迭代过程中并行执行步骤402和步骤403,步骤402为第一进程,步骤403为第二进程,第一个进程是计算进程,具体包括计算第i+1次迭代的模型参数,计算第i+1次迭代的局部梯度;第二进程是通讯进程,具体包括从服务器模块下拉第r次迭代的全局梯度和/或向服务器模块上推第f次迭代的局部梯度。一方面,第一进程中根据第i次迭代的局部梯度和第i次迭代的模型参数计算第i+1次迭代的模型参数,避免了现有技术中一定要等待从服务器模块下拉到第i次迭代的全局梯度才能计算第i+1次迭代的模型参数的方案,从而缩短了一次迭代的时长,提高了模型参数训练的效率。
另一方面,本发明实施例中在执行第一进程的同时,并行执行第二进程,避免了现有技术中一定要等待计算出第i+1次迭代的局部梯度之后才进行通讯进程,进一步缩短了一次迭代的时长,提高了模型参数训练的效率。
本发明实施例中,N个工作模块和服务器模块可位于一个节点上,该节点为包括多个GPU核和多个CPU核的计算机设备。一个工作模块包括一个或多个GPU核,一个服务器模块包括一个或多个CPU核,在该种情况下,N个工作模块和服务器模块之间可通过GPU核与CPU核之间的核间通信实现通讯。在N个工作模块和服务器模块分别位于多个节点的情况下,N个工作模块和服务器模块之间可通过节点间的一些链路实现通讯。本发明实施例中N个工作模块中的每个工作模块与服务器模块之间的可实现通讯。
可选地,上述步骤402中,工作模块根据第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次迭代的模型参数。如此,无需等待通讯进程,进一步缩短了迭代的时长,提高了模型参数训练的效率。
具体来说,系统中通讯进程与计算进程为相互独立的两个进程,可并行执行。可选地,工作模块在执行通讯进程时,向服务器模块上推一次局部梯度,从服务器模块下拉一次全局梯度;或者连续向服务器模块上推多次局部梯度,从服务器模块下拉一次或连续多次的全局梯度。可选地,在上述步骤403中,在服务器模块已经计算出第r次迭代的全局梯度的情况下,在上述步骤403中,工作模块可以从服务器模块下拉第r次迭代的全局梯度。另一种可选地方案中,在上述步骤403中,工作模块刚完成一次向服务器模块上推局部梯度的进程,或者工作模块轮到向服务器模块上推局部梯度的进程,则工作模块可选择向服务器模块上推第f次迭代的局部梯度。另一种可选地方案中,工作模块与服务器模块之间通讯进程进行的较快速,在工作模块计算计算第i+1次迭代的模型参数和计算第i+1次迭代的局部梯度的过程中,工作模块可以从服务器模块下拉第r次迭代的全局梯度且向服务器模块上推第f次迭代的局部梯度;也可以向服务器模块上推第f次迭代的局部梯度且从服务器模块下拉第r次迭代的全局梯度。本发明实施例中向服务器模块上推第f次迭代的局部梯度和从服务器模块下拉第r次迭代的全局梯度之间没有先后顺序。在上述方案中,工作模块可选择向服务器模块上推第f次迭代的局部梯度有多种实现方案。
下面通过一个例子,对上述内容进行更加详细的介绍。工作模块当前已经成功从服务器模块下拉第1次迭代的全局梯度、第3次迭代的全局梯度、第4次迭代的全局梯度和第6次迭代的全局梯度,第1次迭代的全局梯度已经用于第2次迭代的模型参数的计算中,第3次迭代的全局梯度、第4次迭代的全局梯度和第6次迭代的全局梯度均未被使用。当前进行第9次迭代过程,更新第9次迭代的模型参数,也就是说第i+1次迭代为第9次迭代。当前满足第一条件的第j次迭代的全局梯度为第3次迭代的全局梯度、第4次迭代的全局梯度和第6次迭代的全局梯度中的任一个,可选地,可根据第3次迭代的全局梯度、第4次迭代的全局梯度和第6次迭代的全局梯度中的任一个,以及第8次迭代的局部梯度和第8次迭代的模型参数计算第9次迭代的模型参数。
可选地,第一条件还包括:第j次迭代的全局梯度为已经从服务器模块下拉的所有全局梯度中迭代批次最高的迭代中的全局梯度。如此,可以根据与当前迭代过程中最邻近的迭代中的全局梯度更新模型参数,加速了模型参数的收敛。迭代批次即为迭代的次序号,比如第3次迭代的迭代的批次为第3次,迭代的次序号越大,迭代的批次越高。结合示例中来说,第3次迭代的全局梯度、第4次迭代的全局梯度和第6次迭代的全局梯度中迭代批次最高的迭代为第6次迭代,因此,优选地确定第j次迭代为第6次迭代的全局梯度。可选地,根据第6次迭代的全局梯度,以及第8次迭代的局部梯度和第8次迭代的模型参数计算第9次迭代的模型参数。
可选地,更新第9次迭代的模型参数的进程中,可并行执行通讯进程。工作模块更新第9次迭代的模型参数的进程时,工作模块已经计算出前8次迭代过程中的局部梯度,已经向服务器模块上推第1次迭代的局部梯度、第3次迭代的局部梯度、第4次迭代的局部梯度和第6次迭代的局部梯度。仍旧未向服务器模块上推的局部梯度包括:第2次迭代的局部梯度、第5次迭代的局部梯度、第7次迭代的局部梯度和第8次迭代的局部梯度。可选地,工作模块可执行以下几种方案可以选用:
方案a1,工作模块更新第9次迭代的模型参数、计算第9次迭代的局部梯度的进程中,并行执行:从服务器模块下拉第r次迭代的全局梯度。假设工作模块已经向服务器模块上推第5次迭代的局部梯度,且服务器模块已经计算出第5次迭代的全局梯度,但是工作模块还未从服务器模块下拉,则工作模块可从服务器模块下拉第5次迭代的全局梯度。也就是说,本发明实施例中工作模块可并行执行从服务器模块下拉第r次迭代的全局梯度,且第r次迭代的全局梯度已经由服务器模块计算出。
方案a2,工作模块工作模块更新第9次迭代的模型参数、计算第9次迭代的局部梯度的进程中,并行执行:从服务器模块下拉第r次迭代的全局梯度且向服务器模块上推第f次迭代的局部梯度;或者向服务器模块上推第f次迭代的局部梯度。向服务器模块上推第f次迭代的局部梯度存在以下方案b1、方案b2、方案b3和方案b4等多种情况:
方案b1,工作模块从未向服务器模块上推的局部梯度中确定出一个局部梯度,进行向服务器模块上推,比如从第2次迭代的局部梯度、第5次迭代的局部梯度、第7次迭代的局部梯度和第8次迭代的局部梯度中选出任一个进行向服务器模块上推。
方案b2,向服务器模块上推第i-1次迭代的局部梯度,工作模块选择迭代批次次高的一个未向服务器模块上推的局部梯度进行向服务器模块上推,比如从第2次迭代的局部梯度、第5次迭代的局部梯度、第7次迭代的局部梯度和第8次迭代的局部梯度中选出第7次迭代的局部梯度进行向服务器模块上推。
方案b3,向服务器模块上推第i次迭代的局部梯度,工作模块选择迭代批次最高的一个未向服务器模块上推的局部梯度进行向服务器模块上推,比如从第2次迭代的局部梯度、第5次迭代的局部梯度、第7次迭代的局部梯度和第8次迭代的局部梯度中选出第8次迭代的局部梯度进行向服务器模块上推。
方案b4,工作模块可保持等待,向服务器模块上推第i+1次迭代的局部梯度;也就是说工作模块等待确定出第9次迭代的局部梯度之后,将第9次迭代的局部梯度进行向服务器模块上推。
通过上述方案可以看出,本发明实施例中在进行第i+1次迭代中,可以选择向服务器模块上推已经计算出的第f次迭代的局部梯度,也可选择从服务器模块下拉服务器模块已经计算出的第r次迭代的全局梯度,无需上报工作模块计算出的每次迭代中的局部梯度以及从服务器模块下拉每次迭代中的全局梯度,降低了工作模块和服务器模块之间的通讯量。
可选地,第j次迭代的全局梯度根据以下内容确定的:N个工作模块中的M个工作模块上报的第j次迭代的局部梯度;其中,M为大于等于1且小于等于N的整数。如此,可提高工作模块和服务器模块的工作的灵活性。且进一步减少工作模块和服务器模块之间的通讯量。举例来说,共有50个工作模块,N为50,M为20,工作模块可根据20个工作模块上报的第j次迭代的局部梯度计算第j次迭代的全局梯度。可选地,可根据N个工作模块中所有工作模块上报的第j次迭代的局部梯度计算第j次迭代的全局梯度。
可选地,上述方案中服务器模块可根据多个工作模块上报的所有第j次迭代的局部梯度计算出第j次迭代的全局梯度。如何根据局部梯度计算全局梯度的具体算法有多种,比如求平均值、加权计算、对权重较大的几个局部梯度求均值等等。举几个示例进行示意性说明。比如服务器模块将多个工作模块上报的所有第j次迭代的局部梯度计算平均值,得到第j次迭代的全局梯度;再比如服务器模块将多个工作模块上报的所有第j次迭代的局部梯度分别乘以对应的权重,之后在计算乘以权重的局部梯度的平均值,得到第j次迭代的全局梯度。
可选地,在i为K的情况下,方法还包括:工作模块计算第K次迭代的局部梯度之后,根据第K次迭代的局部梯度和第K次迭代的模型参数计算第K+1次迭代的模型参数之后,向服务器模块上推第K+1次迭代的模型参数。其中,第K+1次迭代的模型参数用于:使服务器模块根据N个工作模块中每个工作模块向服务器模块上推的第K+1次迭代的模型参数,以及迭代次数K,确定下个训练周期内的第1次迭代的模型参数。如此,提高训练周期的模型参数的准确度。举个例子,比如对N个工作模块中每个工作模块向服务器模块上推的第K+1次迭代的模型参数求平均,或者用N个工作模块中每个工作模块向服务器模块上推的第K+1次迭代的模型参数之和除以迭代次数K的方案,得到该次训练周期所训练出的模型参数。可选地,可以再启动一个训练周期对该模型参数进行训练,此时将该次训练周期所训练出的模型参数确定为下个训练周期内的第1次迭代的模型参数。也可不再启动训练周期,直接将该次训练周期所训练出的模型参数确定为训练后的模型参数。
为了进一步对本发明实施例所提供的方案进行介绍,该方法包括:
启动分布式计算平台,部署应用,服务器模块进行初始化,得到初始化的模型参数ω1_0,从服务器模块将模型参数ω1_0从服务器模块下拉到各个工作模块;
工作模块执行第1次迭代。
工作模块的GPU分别读入第1次迭代的样本数据,依赖于全局模型参数ω1_0进行局部梯度计算,并同时分别对第2次迭代的样本数据进行预处理。如此,可进一步缩短训练周期的时间。之后计算第2次迭代的模型参数。
比如N个工作模块中,其中工作模块1计算得到局部梯度Δω1-1;工作模块2计算得到局部梯度Δω2-1;…工作模块n计算得到局部梯度Δωn-1…工作模块N计算得到局部梯度ΔωN-1
工作模块执行第2次迭代。
可选地,工作模块并行执行:计算第2次迭代的模型参数,计算第2次迭代的局部梯度;向服务器模块上推第1次迭代的局部梯度。可选地,在服务器模块计算完成第1次迭代的全局梯度之后,工作模块可从服务器模块从服务器模块下拉第1次迭代的全局梯度。
由于此时还未从服务器模块下拉全局梯度,因此第2次迭代的模型参数根据第1次迭代的模型参数、第1次迭代的局部梯度确定。具体来说,确定方案有多种,比如通过误差计算使第2次迭代的模型参数更加逼近最终值。可选地,提供一种工作模块m计算第i+1次迭代的模型参数的公式(1):
wn_i=wn_i-1+η·Δwn_i……公式(1)
在公式(1)中:
wn_i为工作模块n的第i+1次迭代的模型参数;
i为迭代次数,i的取值范围为[1,K];n的取值范围为[1,N];
wn_i-1为第i次迭代的模型参数;
Δwn_i为工作模块n在i次迭代中计算得到的局部梯度;
η为学习速率控制因子。其中,η可根据具体适用场景确定。
在该示例中通过上述公式(1)计算第2次迭代的模型参数。
工作模块的GPU分别读入经过预处理的第2次迭代的样本数据,之后并行执行以下内容:依赖于第2次迭代的模型参数进行局部梯度计算;对第3次迭代的样本数据进行预处理。
工作模块向服务器模块上推第1次迭代的局部梯度。比如,服务器模块可以接收N个工作模块分别上报的N个第1次迭代的局部梯度Δω1-2、Δω2-2、…Δωn-2、…ΔωN-2,可选地,计算N个第1次迭代的局部梯度的平均值,得到第1次迭代的全局梯度Δω1。如此,在进行第2次迭代的局部梯度计算的同时,也向服务器模块上推第1次迭代的局部梯度,使计算进程和通讯进程的时间窗口重叠,从而缩短了训练周期的时间。可选地,也可根据N个工作模块中的M个工作模块上报的M个第1次迭代的局部梯度计算第1次迭代的局部梯度的平均值,得到第1次迭代的全局梯度。
工作模块执行第3次迭代。
可选地,在工作模块还未从服务器模块下拉第1次迭代的全局梯度的情况下,工作模块并行执行:计算第3次迭代的模型参数,计算第3次迭代的局部梯度;从服务器模块从服务器模块下拉第1次迭代的全局梯度Δω1。如此,在计算第3次迭代的模型参数,计算第3次迭代的局部梯度的同时,也从服务器模块下拉第1次迭代的全局梯度,使计算进程和通讯进程的时间窗口重叠,从而缩短了训练周期的时间。
由于此时还未从服务器模块下拉全局梯度,即不存在满足第一条件的第j次迭代的全局梯度,因此第3次迭代的模型参数根据第2次迭代的模型参数、第2次迭代的局部梯度确定。可选地,可通过上述公式(1)确定第3次迭代的模型参数。
工作模块的GPU分别读入经过预处理的第3次迭代的样本数据,之后并行执行以下内容:依赖于第3次迭代的模型参数进行局部梯度计算;对第4次迭代的样本数据进行预处理。
工作模块执行第4次迭代。
可选地,工作模块并行执行:计算第4次迭代的模型参数,计算第4次迭代的局部梯度;向服务器模块上推第3次迭代的局部梯度。或者计算第4次迭代的模型参数,计算第4次迭代的局部梯度的同时不向服务器模块上推局部梯度也不从服务器模块下拉全局梯度。如此,降低工作模块和服务器模块之间的通讯量。本发明实施例中以不向服务器模块上推局部梯度也不从服务器模块下拉全局梯度为例进行介绍。
由于此时已经从服务器模块下拉第1次迭代的全局梯度,且之前并未将该第1次迭代的全局梯度用于模型参数的更新中,因此第4次迭代的模型参数根据第3次迭代的模型参数、第3次迭代的局部梯度,以及从服务器模块从服务器模块下拉的第1次迭代的全局梯度确定。具体来说,确定方案有多种,比如通过误差计算使第4次迭代的模型参数更加逼近最终值。可选地,提供一种工作模块n计算第4次迭代的模型参数的公式(2):
wn_i=wn_i-1+λ·Δwn_i+χ·Δwj……公式(2)
在公式(2)中:
wn_i为工作模块n的第i+1次迭代的模型参数;
n的取值范围为[1,N];i为迭代次数,i的取值范围为[1,K];
wn_i-1为工作模块n的第i次迭代的模型参数;
Δwn_i为工作模块n在i次迭代中计算得到的局部梯度;
Δwj为第j次迭代的全局梯度;j为小于等于i的正整数;
λ和χ分别为学习速率控制因子。其中,λ和χ可根据具体适用场景分别确定。
工作模块的GPU分别读入经过预处理的第4次迭代的样本数据,之后并行执行以下内容:依赖于第4次迭代的模型参数进行局部梯度计算;对第5次迭代的样本数据进行预处理。如此,在前3次迭代中使用局部梯度计算,在第4迭代过程中使用全局梯度进行计算,保证了模型参数向正确的值更加快速准确的逼近。
工作模块执行第5次迭代。
可选地,工作模块并行执行:计算第5次迭代的模型参数,计算第5次迭代的局部梯度;向服务器模块上推第4次迭代的局部梯度。或者并行执行计算第5次迭代的模型参数,计算第5次迭代的局部梯度;向服务器模块上推第3次迭代的局部梯度。本发明实施例中以下内容以向服务器模块上推第4次迭代的局部梯度为例进行介绍。
由于此时仅从服务器模块下拉第1次迭代的全局梯度,但是第1次全局梯度已经被用于计算第4次迭代的模型参数,因此根据上述公式(1)中所示的,根据第4次迭代的模型参数、第4次迭代的局部梯度确定第5次迭代的模型参数。
工作模块的GPU分别读入经过预处理的第5次迭代的样本数据,之后并行执行以下内容:依赖于第5次迭代的模型参数进行局部梯度计算;对第6次迭代的样本数据进行预处理。如此,服务器模块可以接收M个工作模块分别上报的M个第1次迭代的局部梯度Δω1-4、Δω2-4、…Δωn-4、…ΔωN-4,可选地,计算N个第4次迭代的局部梯度的平均值,得到第4次迭代的全局梯度Δω4
工作模块执行第6次迭代。
可选地,工作模块并行执行:计算第6次迭代的模型参数,计算第6次迭代的局部梯度;从服务器模块从服务器模块下拉第4次迭代的全局梯度。如此,在计算第6次迭代的模型参数,计算第6次迭代的局部梯度的同时,也从服务器模块下拉第4次迭代的全局梯度,使计算进程和通讯进程的时间窗口重叠,从而缩短了训练周期的时间。
可选地,由于工作模块在计算第6次迭代的模型参数的时候,并未成功从服务器模块下拉第4次迭代的全局梯度,因此可通过上述公式(1)确定第6次迭代的模型参数。
工作模块的GPU分别读入经过预处理的第6次迭代的样本数据,之后并行执行以下内容:依赖于第6次迭代的模型参数进行局部梯度计算;对第7次迭代的样本数据进行预处理。如此,服务器模块可以接收N个工作模块分别上报的N个第1次迭代的局部梯度Δω1-4、Δω2-4、…Δωn-4、…ΔωN-4,可选地,计算N个第4次迭代的局部梯度的平均值,得到第4次迭代的全局梯度Δω4
工作模块执行第7次迭代。
可选地,工作模块并行执行:计算第7次迭代的模型参数,计算第7次迭代的局部梯度;向服务器模块上推第6次迭代的局部梯度。
由于此时已经从服务器模块下拉第4次迭代的全局梯度,且之前并未将该第4次迭代的全局梯度用于模型参数的更新中,因此,通过上述公式(2),结合第6次迭代的模型参数、第6次迭代的局部梯度,以及从服务器模块从服务器模块下拉的第4次迭代的全局梯度确定。确定第7次迭代的模型参数。
工作模块的GPU分别读入经过预处理的第7次迭代的样本数据,之后并行执行以下内容:依赖于第7次迭代的模型参数进行局部梯度计算;对第8次迭代的样本数据进行预处理。如此,在第5次迭代和第6次迭代中使用局部梯度计算,在第7迭代过程中使用全局梯度进行计算,保证了模型参数向正确的值更加快速准确的逼近。
重复进行几次迭代之后,至收敛或迭代次数满足要求,在当前训练周期(英文可称为epoch)的最后一次迭代,即第K次迭代中,工作模块计算出第K次迭代的局部梯度之后,根据上述公式(1)计算第K+1次迭代的模型参数。服务器模块接收到N个工作模块分别上报的局部模型参数之后,计算该次训练周期的全局模型参数,具体方法有多种,比如求平均值等等,本发明实施例提供一种服务器计算全局模型参数的公式(3):
w2_0=(w1_K+w2_K...+wn_K...+wN_K)/K……公式(3)
在公式(3)中:
w2_0为全局模型参数,也可称w2_0为下一次训练周期内第1次迭代的模型参数;
wm_K为工作模块n的局部模型参数;
n的取值范围为[1,N];K为训练周期内的迭代总次数。
上述示例中,样本数据的来源可为工作模块对应的本地磁盘(英文可称为Disk),或者为相对应的分布式存储节点,如hadoop的分布式文件系统(Hadoop DistributedFilesystem,简称HDFS)、S3、分布式文件系统(Google File System,简称GFS)等。
图5示例性示出了一种神经网络模型训练的方法流程示意图,如图5所示,包括一个服务器模块和两个工作模块,分别为工作模块1和工作模块2。一个训练周期内包括K次迭代。在第2次迭代过程中,各个工作模块向服务器模块上推第1次迭代的局部梯度;在第3次迭代过程中,各个工作模块从服务器模块从服务器模块下拉第1次迭代的全局梯度。在第5次迭代过程中,各个工作模块向服务器模块上推第4次迭代的局部梯度;在第6次迭代过程中,各个工作模块从服务器模块从服务器模块下拉第4次迭代的全局梯度。可见,本发明实施例中,一方面计算进程与通讯进程的时间窗口重叠,缩短了训练周期的时长,提高了模型参数的训练效率,另一方面,仅向服务器模块上推和从服务器模块下拉部分迭代中的局部梯度和全局梯度,避免了向服务器模块上推和从服务器模块下拉每次迭代中的局部梯度和全局梯度,减小了工作模块和服务器模块之间的通信量。
为了进一步介绍本发明实施例所提供的方案,本发明实施例提供以下一个具体示例进行详细说明。该示例的应用场景为:用深度神经网络对图像数据集进行分类。该示例的数据集为图像识别数据库(比如imagenet),共1000类,128万张图像。该示例的神经网络为googlenet,属于大规模神经网络模型的一种。该示例的分布式系统包括4个节点(英文可称为node),每个节点分别包括一个服务器模块和一个工作模块,分别为服务器模块1、服务器模块2、服务器模块3、服务器模块4、工作模块1、工作模块2、工作模块3和工作模块4。每个工作模块对应1块K80GPU卡(12G显存),每个服务器模块对应一块Intel Xeon E5-2620CPU。可选地,每个工作模块还对应一部分CPU,用于对样本数据进行预处理。Googlenet是目前一种比较常见的、分类精准度较高的图像分类网络。以第1次迭代举例说明:
开始第一次迭代。
服务器模块1初始化全局模型参数,得到第1次迭代的模型参数,第1次迭代的模型参数服从从服务器模块将第1次迭代的模型参数从服务器模块下拉到4个节点的工作模块。
设定每次迭代过程中,各个工作模块处理的数据规模为256;四个工作模块基于W~(0,0.01)计算梯度,累计得到的梯度为(服务器模块的GPU计算梯度的同时,工作模块对应的CPU预处理下一张图像,即预处理第2次迭代的样本数据。该示例中提供一种可选地各个工作模块计算第1次迭代的局部梯度的计算公式(4):
在公式(4)中,Δw1_1为工作模块1的第1次迭代的局部梯度;Δw2_1为工作模块2的第1次迭代的局部梯度;Δw3_1为工作模块3的第1次迭代的局部梯度;Δw4_1为工作模块4的第1次迭代的局部梯度。
进行第2次迭代。
可选地,工作模块并行执行:计算第2次迭代的模型参数,计算第2次迭代的局部梯度;向服务器模块上推第1次迭代的局部梯度。可选地,在服务器模块计算完成第1次迭代的全局梯度之后,工作模块可从服务器模块从服务器模块下拉第1次迭代的全局梯度。
根据上述公式(1)计算第2次迭代中各个工作模块的模型参数,令公式(1)中的η为0.01。得到如公式(5)所示的结果:
w1_1=w1_0+0.01Δw1_1
w2_1=w1_0+0.01Δw2_1
w3_1=w1_0+0.01Δw3_1
w4_1=w1_0+0.01Δw4_1……公式(5)
在第2次迭代过程中,各个工作模块基于各自第2次迭代的模型参数计算第2次迭代的局部梯度,并同步向服务器模块1向服务器模块上推各个第1次迭代的局部梯度,且同时工作模块对应的CPU预处理下一张图像,即预处理第3次迭代的样本数据。该示例中提供一种可选地各个工作模块计算第2次迭代的局部梯度的计算公式(6):
在公式(6)中:
Δw1_2为工作模块1的第2次迭代的局部梯度;
Δw2_2为工作模块2的第2次迭代的局部梯度;
Δw3_2为工作模块3的第2次迭代的局部梯度;
Δw4_2为工作模块4的第2次迭代的局部梯度。
进行第3次迭代。
可选地,在工作模块还未从服务器模块下拉第1次迭代的全局梯度的情况下,工作模块并行执行:计算第3次迭代的模型参数,计算第3次迭代的局部梯度;从服务器模块从服务器模块下拉第1次迭代的全局梯度Δω1。在工作模块还未从服务器模块下拉第1次迭代的全局梯度的情况下,工作模块根据上述公式(1)计算第3次迭代中各个工作模块的模型参数,令公式(1)中的η为0.01。得到如公式(7)所示的结果:
w1_2=w1_1+0.01Δw1_2
w2_2=w2_1+0.01Δw2_2
w3_2=w3_1+0.01Δw3_2
w4_2=w4_1+0.01Δw4_2……公式(7)
在公式(7)中:
w1_2为工作模块1的第3次迭代的模型参数;w1_1为工作模块1的第2次迭代的模型参数;Δw1_2为工作模块1的第2次迭代的局部梯度;
w2_2为工作模块2的第3次迭代的模型参数;w2_1为工作模块2的第2次迭代的模型参数;Δw2_2为工作模块2的第2次迭代的局部梯度;
w3_2为工作模块3的第3次迭代的模型参数;w3_1为工作模块3的第2次迭代的模型参数;Δw3_2为工作模块3的第2次迭代的局部梯度;
w4_2为工作模块4的第3次迭代的模型参数;w4_1为工作模块4的第2次迭代的模型参数;Δw4_2为工作模块4的第2次迭代的局部梯度。
可选地,在工作模块已经从服务器模块下拉第1次迭代的全局梯度的情况下,工作模块根据上述公式(2)计算第3次迭代中各个工作模块的模型参数。根据上述公式(2)计算第3次迭代中各个工作模块的模型参数,令公式(2)中的λ为0.01,χ为0.4。得到如公式(8)所示的结果:
w1_2=w1_1+0.01·Δw1_2+0.4·Δw1
w2_2=w2_1+0.01·Δw2_2+0.4·Δw1
w3_2=w3_1+0.01·Δw3_2+0.4·Δw1
w4_2=w4_1+0.01·Δw4_2+0.4·Δw1……公式(8)
在公式(8)中:
w1_2为工作模块1的第3次迭代的模型参数;w1_1为工作模块1的第2次迭代的模型参数;Δw1_2为工作模块1的第2次迭代的局部梯度;
w2_2为工作模块2的第3次迭代的模型参数;w2_1为工作模块2的第2次迭代的模型参数;Δw2_2为工作模块2的第2次迭代的局部梯度;
w3_2为工作模块3的第3次迭代的模型参数;w3_1为工作模块3的第2次迭代的模型参数;Δw3_2为工作模块3的第2次迭代的局部梯度;
w4_2为工作模块4的第3次迭代的模型参数;w4_1为工作模块4的第2次迭代的模型参数;Δw4_2为工作模块4的第2次迭代的局部梯度;
Δw1为第1次迭代的全局梯度。
在第3次迭代过程中,各个工作模块基于各自第3次迭代的模型参数计算第3次迭代的局部梯度,并同步从服务器模块1从服务器模块下拉第1次迭代的全局梯度,且同时工作模块对应的CPU预处理下一张图像,即预处理第4次迭代的样本数据。该示例中提供一种可选地各个工作模块计算第3次迭代的局部梯度的计算公式(9):
在公式(9)中:
Δw1_3为工作模块1的第3次迭代的局部梯度;
Δw2_3为工作模块2的第3次迭代的局部梯度;
Δw3_3为工作模块3的第3次迭代的局部梯度;
Δw4_3为工作模块4的第3次迭代的局部梯度。
第3次迭代过程结束,开始进行第4次迭代过程。
可选地,在工作模块还未从服务器模块下拉第1次迭代的全局梯度的情况下,工作模块并行执行:计算第4次迭代的模型参数,计算第4次迭代的局部梯度;从服务器模块从服务器模块下拉第1次迭代的全局梯度Δω1。
在工作模块还未从服务器模块下拉第1次迭代的全局梯度的情况下,工作模块根据上述公式(1)计算第4次迭代中各个工作模块的模型参数。
可选地,在工作模块已经从服务器模块下拉第1次迭代的全局梯度的情况下,工作模块根据上述公式(2)计算第4次迭代中各个工作模块的模型参数。根据上述公式(2)计算第4次迭代中各个工作模块的模型参数,令公式(2)中的λ为0.01,χ为0.4。得到如公式(10)所示的结果:
w1_3=w1_2+0.01Δw1_3+0.4Δw1
w2_3=w2_2+0.01Δw2_3+0.4Δw1
w3_3=w3_2+0.01Δw3_3+0.4Δw1
w4_3=w4_2+0.01Δw4_3+0.4Δw1……公式(10)
在公式(10)中:
w1_3为工作模块1的第4次迭代的模型参数;w1_2为工作模块1的第3次迭代的模型参数;Δw1_3为工作模块1的第3次迭代的局部梯度;
w2_3为工作模块2的第4次迭代的模型参数;w2_2为工作模块2的第3次迭代的模型参数;Δw2_3为工作模块2的第3次迭代的局部梯度;
w3_3为工作模块3的第4次迭代的模型参数;w3_2为工作模块3的第3次迭代的模型参数;Δw3_3为工作模块3的第3次迭代的局部梯度;
w4_3为工作模块4的第4次迭代的模型参数;w4_2为工作模块4的第3次迭代的模型参数;Δw4_3为工作模块4的第3次迭代的局部梯度;
Δw1为第1次迭代的全局梯度。
进而根据第4次迭代的模型参数计算第4次迭代的局部梯度,其余迭代过程与上述内容类似,在此不再赘述。
可选地,工作模块向服务器模块1向服务器模块上推各个局部梯度,服务器模块1根据各个局部梯度计算全局梯度,可选地,可以计算各个局部梯度的平均值,作为全局梯度。本发明实施例中提供公式(11)用于进行全局梯度的计算:
Δw1=(w1_1+w2_1+...wn_1...+wN_1)/N……公式(11)
在公式(11)中:
Δw1为第1次迭代的全局梯度;
w1_1为工作模块1的第1次迭代的局部梯度;
w2_1为工作模块2的第1次迭代的局部梯度;
wn_1为工作模块n的第1次迭代的局部梯度,n的取值范围为[1,N];
wN_1为工作模块N的第1次迭代的局部梯度;N为工作模块的总数量。
通过上述内容可以看出,本发明实施例中在不增加额外通信时间开销的同时,利用全局梯度信息调控每个工作模块的模型更新,解决传统通信模式下由于较弱的同步导致的模型一致性收敛问题。本发明在确保大规模分布式神经网络模型(包括深度学习模型)稳定收敛的前提下,有效克服大模型导致的通信瓶颈问题;也是业界第一次提出将大规模分布式机器学习的通信时间开销与计算时间开销完全重叠的解决方案,规避通信瓶颈,最理想可实现几近线性的加速效果。
图6示例性示出了本发明实施例提供的一种神经网络模型训练装置的结构示意图。
基于相同构思,本发明实施例提供一种神经网络模型的训练装置,如图6所示,该训练装置包括N个工作模块,该训练装置适用于包括服务器模块和N个工作模块的训练系统,服务器模块和N个工作模块用于在至少一个训练周期内训练模型参数,至少一个训练周期内的每个训练周期包括K次迭代;工作模块为所N个工作模块中的一个,工作模块包括通讯模块和计算模块;针对N个工作模块中的一个工作模块在每个训练周期内的第i次迭代,其中,N、K分别为大于等于1的整数,i为大于等于1且小于等于K的整数。N个工作模块中各个工作模块包括通讯模块603和计算模块602。可选地,还可包括存储模块601。可选地,存储模块用于存储以下拉的全局梯度等信息。
各个工作模块的通讯模块603和计算模块602并行运行;
其中,计算模块602,用于根据第i次迭代的局部梯度和第i次迭代的模型参数计算第i+1次迭代的模型参数,且在i小于K的情况下,根据第i+1次迭代的模型参数以及第i+1次迭代的样本数据,计算第i+1次迭代的局部梯度;
通讯模块603,用于从服务器模块下拉第r次迭代的全局梯度和/或向服务器模块上推第f次迭代的局部梯度;其中,r和f分别为小于等于i的正整数。
本发明实施例中每次迭代过程中通讯模块和计算模块并行运行,通信模块执行第一进程,计算模块执行第二进程,第一进程是计算进程,具体包括计算第i+1次迭代的模型参数,计算第i+1次迭代的局部梯度;第二进程是通讯进程,具体包括从服务器模块下拉第r次迭代的全局梯度和/或向服务器模块上推第f次迭代的局部梯度。第一进程中根据第i次迭代的局部梯度和第i次迭代的模型参数计算第i+1次迭代的模型参数,避免了现有技术中一定要等待从服务器模块下拉到第i次迭代的全局梯度才能计算第i+1次迭代的模型参数的方案,从而缩短了一次迭代的时长,提高了模型参数训练的效率。
可选地,计算模块602,用于:在确定已从服务器模块下拉满足第一条件的第j次迭代的全局梯度的情况下,根据第j次迭代的全局梯度、第i次迭代的局部梯度和第i次迭代的模型参数,计算第i+1次迭代的模型参数;其中,j为小于等于i的正整数;第一条件包括:第j次迭代的全局梯度未被用于第1次迭代至第i次迭代之间任一次迭代中的模型参数的计算。如此,无需等待通讯进程,进一步缩短了迭代的时长,提高了模型参数训练的效率。
可选地,计算模块602,用于:在确定未从服务器模块下拉满足第一条件的第j次迭代的全局梯度的情况下,根据第i次迭代的局部梯度和第i次迭代的模型参数,计算第i+1次迭代的模型参数。如此,可以根据与当前迭代过程中最邻近的迭代中的全局梯度更新模型参数,加速了模型参数的收敛。
可选地,第一条件还包括:第j次迭代的全局梯度为已经从服务器模块下拉的所有全局梯度中迭代批次最高的迭代中的全局梯度。
可选地,第j次迭代的全局梯度根据以下内容确定的:N个工作模块中的M个工作模块上报的第j次迭代的局部梯度;其中,M为大于等于1且小于等于N的整数。如此,可以根据已从服务器模块下拉满足第一条件的第j次迭代的全局梯度计算第i+1次迭代的模型参数,提高了计算第i+1次迭代的模型参数的精度,另一方面,从已从服务器模块下拉的全局梯度中选择满足第一条件的第j次迭代的全局梯度,无需等待通讯进程,进一步缩短了迭代的时长,提高了模型参数训练的效率。
可选地,通讯模块603,用于从服务器模块下拉第r次迭代的全局梯度。或者用于从服务器模块下拉第r次迭代的全局梯度,向服务器模块上推第i-1次迭代的局部梯度。或者用于从服务器模块下拉第r次迭代的全局梯度,向服务器模块上推第i次迭代的局部梯度。或者用于向服务器模块上推第i-1次迭代的局部梯度。或者用于向服务器模块上推第i次迭代的局部梯度。如此,可提高工作模块的灵活性,另一方面,也可尽量向服务器模块上推与当前迭代过程中最邻近的迭代中的局部梯度,从而加速了模型参数的收敛。
可选地,在i为K的情况下,通讯模块603还用于:在通过计算模块计算第K次迭代的局部梯度之后,根据第K次迭代的局部梯度和第K次迭代的模型参数计算第K+1次迭代的模型参数之后,向服务器模块上推第K+1次迭代的模型参数;其中,第K+1次迭代的模型参数用于:使服务器模块根据N个工作模块中每个工作模块向服务器模块上推的第K+1次迭代的模型参数,以及迭代次数K,确定下个训练周期内的第1次迭代的模型参数。如此,提高训练周期的模型参数的准确度。
从上述内容可以看出:本发明实施例中每次迭代过程中并行执行第一进程和第二进程,第一进程是计算进程,具体包括计算第i+1次迭代的模型参数,计算第i+1次迭代的局部梯度;第二进程是通讯进程,具体包括从服务器模块下拉第r次迭代的全局梯度和/或向服务器模块上推第f次迭代的局部梯度。第一进程中根据第i次迭代的局部梯度和第i次迭代的模型参数计算第i+1次迭代的模型参数,避免了现有技术中一定要等待从服务器模块下拉到第i次迭代的全局梯度才能计算第i+1次迭代的模型参数的方案,从而缩短了一次迭代的时长,提高了模型参数训练的效率。
图7示例性示出了本发明实施例提供的一种神经网络模型训练装置的结构示意图。
基于相同构思,本发明实施例提供一种神经网络模型训练装置,用于执行上述方法流程。如图7所示,训练装置包括收发器701和处理器702。处理器702包括N个处理器核。可选地,还可包括存储器704,以及通信接口703。可选地,还可包括总线705。
其中,处理器、存储器、收发器通过总线相互连接。总线可以是外设部件互连标准(peripheral component interconnect,简称PCI)总线或扩展工业标准结构(extendedindustry standard architecture,简称EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图7中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
存储器704可以包括易失性存储器(volatile memory),例如随机存取存储器(random-access memory,简称RAM);存储器也可以包括非易失性存储器(non-volatilememory),例如快闪存储器(flash memory),硬盘(hard disk drive,简称HDD)或固态硬盘(solid-state drive,简称SSD);存储器704还可以包括上述种类的存储器的组合。
处理器702中包括的N个处理器核可包括GPU,或者可包括GPU和CPU。处理器核还可以进一步包括硬件芯片。上述硬件芯片可以是专用集成电路(application-specificintegrated circuit,简称ASIC),可编程逻辑器件(programmable logic device,简称PLD)或其组合。上述PLD可以是复杂可编程逻辑器件(complex programmable logicdevice,简称CPLD),现场可编程逻辑门阵列(field-programmable gate array,简称FPGA),通用阵列逻辑(generic array logic,简称GAL)或其任意组合。
收发器用于实现各个工作模块与服务器模块之间的数据的传输。
存储器用于存储指令。可选地,存储器还用于存储下拉的全局梯度等信息。
所述处理器包括N个处理器核,所述训练装置适用于包括服务器模块和N个处理器核的训练系统,所述服务器模块和所述N个处理器核用于在至少一个训练周期内训练模型参数,所述至少一个训练周期内的每个训练周期包括K次迭代。针对N个工作模块中的一个工作模块在每个训练周期内的第i次迭代,其中,N、K分别为大于等于1的整数,i为大于等于1且小于等于K的整数。各个工作模块的收发器701和处理器702并行运行;
其中,处理器702,用于根据第i次迭代的局部梯度和第i次迭代的模型参数计算第i+1次迭代的模型参数,且在i小于K的情况下,根据第i+1次迭代的模型参数以及第i+1次迭代的样本数据,计算第i+1次迭代的局部梯度;
收发器701,用于从服务器模块下拉第r次迭代的全局梯度和/或向服务器模块上推第f次迭代的局部梯度;其中,r和f分别为小于等于i的正整数。
存储器用于存储从服务器模块下拉的全局梯度,以及计算出的局部梯度。
本发明实施例中每次迭代过程中收发器和处理器并行运行,处理器执行第一进程,收发器执行第二进程,第一进程是计算进程,具体包括计算第i+1次迭代的模型参数,计算第i+1次迭代的局部梯度;第二进程是通讯进程,具体包括从服务器模块下拉第r次迭代的全局梯度和/或向服务器模块上推第f次迭代的局部梯度。第一进程中根据第i次迭代的局部梯度和第i次迭代的模型参数计算第i+1次迭代的模型参数,避免了现有技术中一定要等待从服务器模块下拉到第i次迭代的全局梯度才能计算第i+1次迭代的模型参数的方案,从而缩短了一次迭代的时长,提高了模型参数训练的效率。
可选地,处理器702,用于:在确定已从服务器模块下拉满足第一条件的第j次迭代的全局梯度的情况下,根据第j次迭代的全局梯度、第i次迭代的局部梯度和第i次迭代的模型参数,计算第i+1次迭代的模型参数;其中,j为小于等于i的正整数;第一条件包括:第j次迭代的全局梯度未被用于第1次迭代至第i次迭代之间任一次迭代中的模型参数的计算。如此,无需等待通讯进程,进一步缩短了迭代的时长,提高了模型参数训练的效率。
可选地,处理器702,用于:在确定未从服务器模块下拉满足第一条件的第j次迭代的全局梯度的情况下,根据第i次迭代的局部梯度和第i次迭代的模型参数,计算第i+1次迭代的模型参数。如此,可以根据与当前迭代过程中最邻近的迭代中的全局梯度更新模型参数,加速了模型参数的收敛。
可选地,第一条件还包括:第j次迭代的全局梯度为已经从服务器模块下拉的所有全局梯度中迭代批次最高的迭代中的全局梯度。如此,可以根据已从服务器模块下拉满足第一条件的第j次迭代的全局梯度计算第i+1次迭代的模型参数,提高了计算第i+1次迭代的模型参数的精度,另一方面,从已从服务器模块下拉的全局梯度中选择满足第一条件的第j次迭代的全局梯度,无需等待通讯进程,进一步缩短了迭代的时长,提高了模型参数训练的效率。
可选地,第j次迭代的全局梯度根据以下内容确定的:N个工作模块中的M个工作模块上报的第j次迭代的局部梯度;其中,M为大于等于1且小于等于N的整数。如此,可提高工作模块和服务器模块的工作的灵活性。且进一步减少工作模块和服务器模块之间的通讯量。
可选地,收发器701,用于从服务器模块下拉第r次迭代的全局梯度。或者用于从服务器模块下拉第r次迭代的全局梯度,向服务器模块上推第i-1次迭代的局部梯度。或者用于从服务器模块下拉第r次迭代的全局梯度,向服务器模块上推第i次迭代的局部梯度。或者用于向服务器模块上推第i-1次迭代的局部梯度。或者用于向服务器模块上推第i次迭代的局部梯度。如此,可提高工作模块的灵活性,另一方面,也可尽量向服务器模块上推与当前迭代过程中最邻近的迭代中的局部梯度,从而加速了模型参数的收敛。
可选地,在i为K的情况下,收发器701还用于:在通过处理器计算第K次迭代的局部梯度之后,根据第K次迭代的局部梯度和第K次迭代的模型参数计算第K+1次迭代的模型参数之后,向服务器模块上推第K+1次迭代的模型参数;其中,第K+1次迭代的模型参数用于:使服务器模块根据N个工作模块中每个工作模块向服务器模块上推的第K+1次迭代的模型参数,以及迭代次数K,确定下个训练周期内的第1次迭代的模型参数。如此,提高训练周期的模型参数的准确度。
从上述内容可以看出:本发明实施例中每次迭代过程中并行执行第一进程和第二进程,第一进程是计算进程,具体包括计算第i+1次迭代的模型参数,计算第i+1次迭代的局部梯度;第二进程是通讯进程,具体包括从服务器模块下拉第r次迭代的全局梯度和/或向服务器模块上推第f次迭代的局部梯度。第一进程中根据第i次迭代的局部梯度和第i次迭代的模型参数计算第i+1次迭代的模型参数,避免了现有技术中一定要等待从服务器模块下拉到第i次迭代的全局梯度才能计算第i+1次迭代的模型参数的方案,从而缩短了一次迭代的时长,提高了模型参数训练的效率。
基于相同构思,本发明实施例提供一种用于神经网络模型训练的芯片,所述芯片适用于包括N个芯片和服务器的训练系统,所述服务器模块和所述N个芯片用于在至少一个训练周期内训练模型参数,所述至少一个训练周期内的每个训练周期包括K次迭代;所述N个芯片中的每个芯片用于执行如上述第一方面中工作模块执行的方法。
图8示例性示出了本发明实施例提供的一种用于神经网络模型训练的系统的结构示意图。
基于相同构思,本发明实施例提供一种用于神经网络模型训练的系统的结构示意图,如图8所示,系统包括服务器模块800和N个工作模块801、工作模块802至工作模块80n;服务器模块800和N个工作模块801、工作模块802至工作模块80n用于在至少一个训练周期内训练模型参数,至少一个训练周期内的每个训练周期包括K次迭代;
针对N个工作模块中的一个工作模块在每个训练周期内的第i次迭代,N个工作模块801、工作模块802至工作模块80n中的各个工作模块用于:并行执行:根据第i次迭代的局部梯度和第i次迭代的模型参数计算第i+1次迭代的模型参数,且在i小于K的情况下,根据第i+1次迭代的模型参数以及第i+1次迭代的样本数据,计算第i+1次迭代的局部梯度;从服务器模块下拉第r次迭代的全局梯度和/或向服务器模块上推第f次迭代的局部梯度;其中,r和f分别为小于等于i的正整数;其中,N、K分别为大于等于1的整数,i为大于等于1且小于等于K的整数;
服务器模块800,用于根据接收到的各个工作模块上推的第r次迭代的局部梯度计算第r次迭代的全局梯度,并将第r次迭代的全局梯度下拉至各个工作模块;接收各个工作模块上推的第f次迭代的局部梯度,并根据各个工作模块上推的第f次迭代的局部梯度计算第f次迭代的全局梯度。
从上述内容可以看出:本发明实施例中每次迭代过程中并行执行第一进程和第二进程,第一进程是计算进程,具体包括计算第i+1次迭代的模型参数,计算第i+1次迭代的局部梯度;第二进程是通讯进程,具体包括从服务器模块下拉第r次迭代的全局梯度和/或向服务器模块上推第f次迭代的局部梯度。第一进程中根据第i次迭代的局部梯度和第i次迭代的模型参数计算第i+1次迭代的模型参数,避免了现有技术中一定要等待从服务器模块下拉到第i次迭代的全局梯度才能计算第i+1次迭代的模型参数的方案,从而缩短了一次迭代的时长,提高了模型参数训练的效率。
本领域内的技术人员应明白,本发明的实施例可提供为方法、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (23)

1.一种模型训练方法,其特征在于,运用所述方法的训练系统包括至少一个服务器模块和N个工作模块,所述至少一个服务器模块和所述N个工作模块在训练周期内训练所述模型的模型参数,所述训练周期包括K次迭代,其中,N和K均为正整数,每个工作模块上并行运行计算进程和通讯进程;
所述计算进程根据第j次迭代的全局梯度、第i次迭代的局部梯度和所述第i次迭代的模型参数计算第i+1次迭代的模型参数,其中,i为小于K的正整数,所述j为小于等于所述i的正整数;
所述计算进程根据所述第i+1次迭代的模型参数以及所述第i+1次迭代的样本数据,计算所述第i+1次迭代的局部梯度;
所述通讯进程从所述至少一个服务器模块下拉所述第r次迭代的全局梯度,其中,r为小于i的正整数。
2.如权利要求1所述的模型训练方法,其特征在于,还包括:
所述通讯进程向所述至少一个服务器模块上推第f次迭代的局部梯度,所述f为小于或等于i的正整数。
3.如权利要求1或2所述的模型训练方法,其特征在于,还包括:
所述通讯进程在所述计算进程计算所述第i+1次迭代的模型参数后,向所述至少一个服务器模块上推所述第i次迭代的局部梯度。
4.如权利要求1所述的模型训练方法,其特征在于,所述计算进程计算所述第i+1次迭代的模型参数之前,还包括:
所述通讯进程从所述至少一个服务器模块下拉多次迭代的全局梯度,所述第j次迭代的全局梯度为所述多次迭代的全局梯度之一;
所述工作模块根据第一条件从所述多次迭代的全局梯度中选择所述第j次迭代的全局梯度用于计算所述第i+1次迭代的模型参数。
5.如权利要求4所述的模型训练方法,其特征在于,所述第一条件包括以下条件或以下条件的任何一个:
选取未被用于所述第1次迭代至所述第i次迭代之间任一次迭代中的模型参数的计算;
选取所述多次迭代中批次最高的迭代的全局梯度。
6.如权利要求1、2、4和5中任一所述的模型训练方法,其特征在于,还包括:
所述至少一个服务器模块根据所述N个工作模块中部分工作模块上推的所述第r次迭代的局部梯度计算所述第r次迭代的全局梯度。
7.如权利要求1、2、4和5中任一所述的模型训练方法,其特征在于,还包括:
所述通讯进程连续向所述至少一个服务器模块上推多次迭代的局部梯度;和/或
所述通讯进程连续从所述至少一个服务器模块下拉多次迭代的全局梯度。
8.如权利要求1、2、4和5中任一所述的模型训练方法,其特征在于,所述计算进程计算所述第i+1次迭代的模型参数的过程中,不采用所述第i次迭代的全局梯度。
9.如权利要求8所述的模型训练方法,其特征在于,所述计算进程计算所述第i+1次迭代的模型参数无需等待所述通讯进程上推所述第i次迭代的局部梯度;和/或
所述计算进程计算所述第i+1次迭代的模型参数无需等待所述通讯进程下拉所述第i次迭代的全局梯度。
10.一种模型训练装置,其特征在于,所述模型训练装置包括N个工作模块,所述模型训练装置与至少一个服务器模块在训练周期内训练所述模型的模型参数,所述训练周期包括K次迭代,其中,N和K均为正整数,每个工作模块上包括并行运行的计算模块和通讯模块;
所述计算模块,用于根据第j次迭代的全局梯度、第i次迭代的局部梯度和所述第i次迭代的模型参数计算第i+1次迭代的模型参数,其中,i为小于K的正整数,所述j为小于等于所述i的正整数;
所述计算模块,用于根据所述第i+1次迭代的模型参数以及所述第i+1次迭代的样本数据,计算所述第i+1次迭代的局部梯度;
所述通讯模块,用于从所述至少一个服务器模块下拉所述第r次迭代的全局梯度,其中,r为小于i的正整数。
11.如权利要求10所述的模型训练装置,其特征在于,所述通讯模块,还用于向所述至少一个服务器模块上推第f次迭代的局部梯度,所述f为小于或等于i的正整数。
12.如权利要求10或11所述的模型训练装置,其特征在于,所述通讯模块,还用于在所述计算模块计算所述第i+1次迭代的模型参数后,向所述至少一个服务器模块上推所述第i次迭代的局部梯度。
13.如权利要求10所述的模型训练装置,其特征在于,所述通讯模块,还用于在所述计算模块计算所述第i+1次迭代的模型参数之前,从所述至少一个服务器模块下拉多次迭代的全局梯度,所述第j次迭代的全局梯度为所述多次迭代的全局梯度之一;
所述工作模块,用于根据第一条件从所述多次迭代的全局梯度中选择所述第j次迭代的全局梯度用于计算所述第i+1次迭代的模型参数。
14.如权利要求13所述的模型训练装置,其特征在于,所述第一条件包括以下条件或以下条件的任何一个:
选取未被用于所述第1次迭代至所述第i次迭代之间任一次迭代中的模型参数的计算;
选取所述多次迭代中批次最高的迭代的全局梯度。
15.如权利要求10、11、13和14中任一所述的模型训练装置,其特征在于,所述通讯模块,还用于连续向所述至少一个服务器模块上推多次迭代的局部梯度。
16.如权利要求10、11、13和14中任一所述的模型训练装置,其特征在于,所述通讯模块,还用于连续从所述至少一个服务器模块下拉多次迭代的全局梯度。
17.如权利要求10、11、13和14中任一所述的模型训练装置,其特征在于,所述计算模块,在计算所述第i+1次迭代的模型参数的过程中,不采用所述第i次迭代的全局梯度。
18.如权利要求17所述的模型训练装置,其特征在于,所述计算模块,计算第i+1次迭代的模型参数之前,无需等待所述通讯模块上推所述第i次迭代的局部梯度。
19.如权利要求17所述的模型训练装置,其特征在于,所述计算模块,计算所述第i+1次迭代的模型参数之前,无需等待所述通讯模块下拉所述第i次迭代的全局梯度。
20.一种模型训练装置,其特征在于,所述模型训练装置包括处理器、存储器和收发器,所述处理器包括N个处理器核,所述模型训练装置通过所述收发器与至少一个服务器模块通信,所述至少一个服务器模块和所述模型训练装置在训练周期内训练所述模型的模型参数,所述训练周期包括K次迭代,其中,N和K均为正整数;
所述存储器用于存储指令;
每个处理器核用于执行所述指令以并行运行计算进程和通讯进程;所述计算进程和所述通讯进程运行时执行如权利要求1至5或7至9任一所述的模型训练方法。
21.一种模型训练装置,其特征在于,所述模型训练装置包括N个芯片,所述模型训练装置与至少一个服务器模块通信,所述至少一个服务器模块和所述模型训练装置在训练周期内训练所述模型的模型参数,所述训练周期包括K次迭代,其中,N和K均为正整数;
每个芯片包括并行运行的计算模块和通讯模块;
所述计算模块,用于根据第j次迭代的全局梯度、第i次迭代的局部梯度和所述第i次迭代的模型参数计算第i+1次迭代的模型参数,其中,i为小于K的正整数,所述j为小于等于所述i的正整数;
所述计算模块,用于根据所述第i+1次迭代的模型参数以及所述第i+1次迭代的样本数据,计算所述第i+1次迭代的局部梯度;
所述通讯模块,用于从所述至少一个服务器模块下拉所述第r次迭代的全局梯度,其中,r为小于i的正整数。
22.一种模型训练系统,其特征在于,所述模型训练系统包括至少一个服务器模块和N个工作模块,所述至少一个服务器模块和所述N个工作模块在训练周期内训练所述模型的模型参数,所述训练周期包括K次迭代,其中,N和K均为正整数,每个工作模块上并行运行计算进程和通讯进程;
每个工作模块,用于运行所述计算进程以根据第j次迭代的全局梯度、第i次迭代的局部梯度和所述第i次迭代的模型参数计算第i+1次迭代的模型参数,并根据所述第i+1次迭代的模型参数以及所述第i+1次迭代的样本数据,计算所述第i+1次迭代的局部梯度,其中,i为小于K的正整数,所述j为小于等于所述i的正整数;还用于运行所述通讯进程以从所述至少一个服务器模块下拉所述第r次迭代的全局梯度,其中,r为小于i的正整数。
23.如权利要求22所述的模型训练系统,其特征在于,所述至少一个服务器模块,用于根据所述N个工作模块中部分工作模块上推的所述第r次迭代的局部梯度计算所述第r次迭代的全局梯度。
CN201910503321.6A 2016-11-29 2016-11-29 一种神经网络模型训练方法、装置、芯片和系统 Active CN110348571B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910503321.6A CN110348571B (zh) 2016-11-29 2016-11-29 一种神经网络模型训练方法、装置、芯片和系统

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201910503321.6A CN110348571B (zh) 2016-11-29 2016-11-29 一种神经网络模型训练方法、装置、芯片和系统
CN201611073994.5A CN108122032B (zh) 2016-11-29 2016-11-29 一种神经网络模型训练方法、装置、芯片和系统

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN201611073994.5A Division CN108122032B (zh) 2016-11-29 2016-11-29 一种神经网络模型训练方法、装置、芯片和系统

Publications (2)

Publication Number Publication Date
CN110348571A CN110348571A (zh) 2019-10-18
CN110348571B true CN110348571B (zh) 2024-03-29

Family

ID=62225831

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201910503321.6A Active CN110348571B (zh) 2016-11-29 2016-11-29 一种神经网络模型训练方法、装置、芯片和系统
CN201611073994.5A Active CN108122032B (zh) 2016-11-29 2016-11-29 一种神经网络模型训练方法、装置、芯片和系统

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN201611073994.5A Active CN108122032B (zh) 2016-11-29 2016-11-29 一种神经网络模型训练方法、装置、芯片和系统

Country Status (4)

Country Link
US (1) US20190279088A1 (zh)
EP (1) EP3540652B1 (zh)
CN (2) CN110348571B (zh)
WO (1) WO2018099084A1 (zh)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109919313B (zh) * 2019-01-31 2021-06-08 华为技术有限公司 一种梯度传输的方法及分布式训练系统
WO2020155083A1 (zh) * 2019-02-01 2020-08-06 华为技术有限公司 神经网络的分布式训练方法及装置
US11531912B2 (en) 2019-04-12 2022-12-20 Samsung Electronics Co., Ltd. Electronic apparatus and server for refining artificial intelligence model, and method of refining artificial intelligence model
KR20200120469A (ko) * 2019-04-12 2020-10-21 삼성전자주식회사 인공지능 모델을 갱신하는 전자 장치, 서버 및 그 동작 방법
CN110084380A (zh) * 2019-05-10 2019-08-02 深圳市网心科技有限公司 一种迭代训练方法、设备、系统及介质
CN112152741B (zh) * 2019-06-28 2021-11-19 华为技术有限公司 信道模型的训练方法及装置
CN110379416B (zh) * 2019-08-15 2021-10-22 腾讯科技(深圳)有限公司 一种神经网络语言模型训练方法、装置、设备及存储介质
US11379727B2 (en) * 2019-11-25 2022-07-05 Shanghai United Imaging Intelligence Co., Ltd. Systems and methods for enhancing a distributed medical network
CN110956265A (zh) * 2019-12-03 2020-04-03 腾讯科技(深圳)有限公司 一种模型训练方法和相关装置
US11599671B1 (en) 2019-12-13 2023-03-07 TripleBlind, Inc. Systems and methods for finding a value in a combined list of private values
CN111160535B (zh) * 2019-12-31 2024-01-30 北京计算机技术及应用研究所 基于Hadoop的DGCNN模型加速方法
CN111475313B (zh) * 2020-03-04 2023-06-27 江苏理工学院 适用于卷积神经网络前向传播的消息队列构建方法及装置
CN112085074B (zh) * 2020-08-25 2024-05-07 腾讯科技(深圳)有限公司 一种模型参数更新系统、方法及装置
CN112016699B (zh) * 2020-08-31 2024-02-02 北京灵汐科技有限公司 一种深度学习模型训练方法、工作节点和参数服务器
CN112015749B (zh) 2020-10-27 2021-02-19 支付宝(杭州)信息技术有限公司 基于隐私保护更新业务模型的方法、装置及系统
CN113052239B (zh) * 2021-03-25 2022-08-02 山东大学 基于梯度方向参数优化的神经网络的图像分类方法及系统
CN113343938B (zh) * 2021-07-16 2023-01-31 浙江大学 一种图像识别方法、装置、设备及计算机可读存储介质
CN114422605A (zh) * 2022-01-12 2022-04-29 重庆邮电大学 一种基于联邦学习的通信梯度自适应压缩方法
CN114912587B (zh) * 2022-06-09 2023-05-26 上海燧原科技有限公司 神经网络分布式训练系统、方法、装置、计算单元及介质
CN115660078A (zh) * 2022-12-29 2023-01-31 浪潮电子信息产业股份有限公司 一种分布式计算方法、系统、存储介质和电子设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104346629A (zh) * 2014-10-24 2015-02-11 华为技术有限公司 一种模型参数训练方法、装置及系统
CN104714852A (zh) * 2015-03-17 2015-06-17 华中科技大学 一种适用于分布式机器学习的参数同步优化方法及其系统
CN105184367A (zh) * 2014-06-09 2015-12-23 讯飞智元信息科技有限公司 深度神经网络的模型参数训练方法及系统
CN106156807A (zh) * 2015-04-02 2016-11-23 华中科技大学 卷积神经网络模型的训练方法及装置

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150324690A1 (en) * 2014-05-08 2015-11-12 Microsoft Corporation Deep Learning Training System
CN104036451B (zh) * 2014-06-20 2018-12-11 深圳市腾讯计算机系统有限公司 基于多图形处理器的模型并行处理方法及装置
US10242313B2 (en) * 2014-07-18 2019-03-26 James LaRue Joint proximity association template for neural networks
CN104463324A (zh) * 2014-11-21 2015-03-25 长沙马沙电子科技有限公司 一种基于大规模高性能集群的卷积神经网络并行处理方法
CN104598972A (zh) * 2015-01-22 2015-05-06 清华大学 一种大规模数据回归神经网络快速训练方法
US10445641B2 (en) * 2015-02-06 2019-10-15 Deepmind Technologies Limited Distributed training of reinforcement learning systems
US20160267380A1 (en) * 2015-03-13 2016-09-15 Nuance Communications, Inc. Method and System for Training a Neural Network
US20160321522A1 (en) * 2015-04-30 2016-11-03 Canon Kabushiki Kaisha Devices, systems, and methods for pairwise multi-task feature learning
CN104978601B (zh) * 2015-06-26 2017-08-25 深圳市腾讯计算机系统有限公司 神经网络模型训练系统和方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105184367A (zh) * 2014-06-09 2015-12-23 讯飞智元信息科技有限公司 深度神经网络的模型参数训练方法及系统
CN104346629A (zh) * 2014-10-24 2015-02-11 华为技术有限公司 一种模型参数训练方法、装置及系统
CN104714852A (zh) * 2015-03-17 2015-06-17 华中科技大学 一种适用于分布式机器学习的参数同步优化方法及其系统
CN106156807A (zh) * 2015-04-02 2016-11-23 华中科技大学 卷积神经网络模型的训练方法及装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Communication Efficient Distributed Machine Learning with the Parameter Server;Li Mu等;《Advances in neural information processing systems》;20141208;第1-6页 *

Also Published As

Publication number Publication date
CN108122032B (zh) 2020-02-14
EP3540652A4 (en) 2019-11-06
US20190279088A1 (en) 2019-09-12
CN108122032A (zh) 2018-06-05
CN110348571A (zh) 2019-10-18
WO2018099084A1 (zh) 2018-06-07
EP3540652A1 (en) 2019-09-18
EP3540652B1 (en) 2023-06-14

Similar Documents

Publication Publication Date Title
CN110348571B (zh) 一种神经网络模型训练方法、装置、芯片和系统
CN108122027B (zh) 一种神经网络模型的训练方法、装置及芯片
US11669744B2 (en) Regularized neural network architecture search
US10872290B2 (en) Neural network processor with direct memory access and hardware acceleration circuits
CN111406267A (zh) 使用性能预测神经网络的神经架构搜索
US20190026639A1 (en) Neural architecture search for convolutional neural networks
US11334814B2 (en) Method and apparatus for training a learning machine
WO2021238262A1 (zh) 一种车辆识别方法、装置、设备及存储介质
US20200184366A1 (en) Scheduling task graph operations
CN108446770B (zh) 一种基于采样的分布式机器学习慢节点处理系统及方法
CN113128478B (zh) 模型训练方法、行人分析方法、装置、设备及存储介质
WO2016095068A1 (en) Pedestrian detection apparatus and method
US11295236B2 (en) Machine learning in heterogeneous processing systems
JP2021022367A (ja) 画像処理方法及び情報処理装置
CN103870563B (zh) 确定给定文本的主题分布的方法和装置
US9613316B2 (en) Method for improving efficiency in an optimizing predictive model using stochastic gradient descent
US20220383036A1 (en) Clustering data using neural networks based on normalized cuts
US20160004985A1 (en) Prioritizing Proposal Development Under Resource Constraints
CN115759238B (zh) 一种量化模型的生成方法及装置、电子设备及存储介质
CN116644804A (zh) 分布式训练系统、神经网络模型训练方法、设备和介质
CN111160535A (zh) 基于Hadoop的DGCNN模型加速方法
US11928598B2 (en) Method and system for distributed neural network training
US20200371838A1 (en) Scheduling operations
CN112434817A (zh) 构建通信算法数据库的方法、装置和计算机存储介质
CN115905656A (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