一种反向传播神经网络dnn的训练系统的制作方法

文档序号:6399661阅读:440来源:国知局
专利名称:一种反向传播神经网络dnn的训练系统的制作方法
技术领域
本发明涉及反向传播神经网络技术领域,特别涉及一种反向传播神经网络DNN的训练系统。
背景技术
反向传播神经网络(即DNN)被广泛应用在很多重要的互联网应用,如语音识别,图像识别,自然语言处理等。它能大幅度提高语音识别的精度,因此被广泛用在很多公司的语首识别广品中。DNN训练计算有两个特点:计算复杂度高和不能大规模并行。DNN训练的计算主要是浮点类型的矩阵的乘法,计算复杂度是O (N3),属于典型的计算密集型。DNN训练计算由于算法的限制不能大规模并行,因此不能采用传统的多服务器的方法提高计算速度。采用GPU加速DNN训练是一直常用的加速方法,本发明提出一直采用4GPU进行加速的方案,该方案能比单GPU加速3.3倍。如图1所示,示出了一种目前的DNN的结构。包括输入层,数个中间层和输出层。各层的节点数一般是几百到几万不等,层以层之间是全连接的网络。DNN的训练计算是一层算完再期待下一层,层与层之间不能并行,所以该算法不适合大规模集群并行加速。一般一次DNN训练可以用以下几个阶段表示:前向计算O、反向误差计算E,最后是根据前向计算和反向误差计算的结果更新每层的权重W。前向计算过程是从输入层向后一直算到输出层,计算是串行的,例如第一次算完才能开始第二层的计算。反向计算过程是从输出层向前一直算到第一层,计算也是串行的,例如最后一层算完才能开始算倒数第一层。更新权值计算依赖前向计算和误差计算的结果,更新权值的计算没有层与层的依赖关系。每次输入只是一小段的训练数据,称为一个batch,一个batch完成一次训练,也就是说得到一个新的权值后,会用这个权值及新输入的下一个batch进行训练,得到更新的一个权值,知道所有的输入计算完毕。这个过程称为一轮,一般一个完整的训练需要10 20轮。Batch不能太大,否则会影响训练精度,这也影响了训练的多机并行化。DNN由信息的正向传播和误差的反向传播两个过程组成。输入层负责接收来自外界的输入信息,并传递给中间层;隐层是内部信息处理层,负责信息变换,根据信息变化能力的需求,隐层可以设计为单隐层或者多隐层结构;最后一个隐层传递到输出层的信息经进一步处理后,完成一次学习的正向传播处理过程,由输出层向外界输出信息处理结果。当实际输出与期望输出不符时,进入误差的反向传播阶段。误差通过输出层,按误差梯度下降的方式修正各层权值,向隐层、输入层逐层反传。DNN训练过程是周而复始的信息正向传播和误差反向传播过程,是各层权值不断调整的过程,也是神经网络学习训练的过程,此过程一直进行到网络输出的误差减少到可以接受的程度,或者预先设定的学习次数为止。DNN学习训练的复杂程度,与DNN的规模和训练的数据规模有关。越大规模的DNN上各层权值收敛越慢,就需要的训练次数非常多。而一般越多的训练数据就能让DNN权值越稳定,DNN的训练效果也会越好,因此对于工业使用的DNN前期训练的数据量可能非常之大。由于DNN训练计算量非常大,并且训练过程中数据前后依赖关系较强,无法做粗粒度的并行化,因此单机上的CPU已经无法在合理的时间内完成DNN的训练。随着GPU计算的通用化,利用GPU进行DNN训练已经成为一个有效的加速手段。但随着DNN规模的增大,单GPU也已经无法满足需要,因此多GPU上的DNN训练成为研究热点。目前普通的多GPU的训练算法一般是每块卡上都保存一个BPNN,初始权重相同,每次训练都将输入数据分为多份,每块卡同时进行一份数据的前向计算、反向误差计算和权重更新计算;由于每块卡都只算了一部分数据,因此最后需要权重同步和计算才能获得最终新的权重值。在每块卡获得一致的新权重值后,才可以进入下一次计算。然而上述方法存在以下缺点:数据同步开销较大。在普通算法中,每次计算都需要一次权重同步。大规模BPNN的权重数据量十分庞大,可达几百MB。而目前多块GPU之间使用的PC1-E2.0总线,单向传输带宽在4 5GB/S,如果是4张GPU分别要同步200MB的权重数据,采用分组同步的方式(GPU 1-2同步、3-4同步,1-3同步、2_4同步),则需要2轮传输,通信开销会达到上百毫秒。反观目前大规模的DNN训练在单块GPU上一次计算的耗时仅为几十毫秒,这意味着使用多卡反而比单卡训练更慢。

发明内容
本发明旨在至少解决现有技术中存在的技术问题之一。为此,本发明的目的在于提出一种具有训练速度快,数据传输开销低的反向传播神经网络DNN的训练系统。为了实现上述目的,本发明的实施例提供了一种反向传播神经网络DNN的训练系统,包括:第一图形处理器组,所述第一图形处理器组用于进行DNN前向计算和权重更新计算;第二图形处理器组,所述第二图形处理器组用于进行DNN前向计算和DNN反向计算;以及控制器组,所述控制器组与所述第一图形处理器组和第二图形处理器组相连,所述控制器组用于控制所述第一图形处理器组和第二图形处理器组分别根据各自的输入数据进行第N层DNN前向计算,直至前向计算完成之后,所述控制器组控制所述第一图形处理器组进行权重更新计算,并控制所述第二图形处理器组进行DNN反向计算,其中,N为正整数。本发明实施例的反向传播神经网络DNN的训练系统采用非对称结构,即一部分图形处理器(即GPU)用于计算DNN反向计算(即反向误差计算),另一部分在一部分GPU用于计算DNN反向误差计算的同时,进行权重更新计算,使权重更新计算和DNN反向计算并行化,从而实现训练速度的提升,加快训练效率。在DNN前向计算中,DNN前向计算和计算结果传输的流水化,使计算时间掩盖了传输开销,从而节省总的训练时间。将GPU分组,一组用于DNN反向计算,另一组用于权重更新计算,两组可以流水操作,提高了并发度,从而加快训练速度。可根据GPU位置进行分组,从而降低了数据在每个GPU之间传输开销,降低成本且提闻传输速率,从而进一步提闻总的训练效率。另外,根据本发明上述实施例的反向传播神经网络DNN的训练系统还可以具有如下附加的技术特征:在一些不例中,还包括:第一输入输出路由器,所述第一输入输出路由器与所述控制器组相连,且所述第一输入输出路由器与所述第一图形处理器组和第二图形处理器组中的一部分图形处理器相连;第二输入输出路由器,所述第二输入输出路由器与所述控制器组相连,且所述第二输入输出路由器与所述第一图形处理器组和第二图形处理器组中的另一部分图形处理器相连。在一些示例中,所述控制器组,还用于在所述第一图形处理器组和第二图形处理器组的第N层DNN前向计算结束之后,控制所述第一图形处理器组和第二图形处理器组根据第N层DNN前向计算的结果进行第N+1层DNN前向计算,同时向所述第一图形处理器组和第二图形处理器组的其他图形处理器广播所述第N层DNN前向计算的结果。在一些示例中,所述控制器组包括一个或多个控制器。在一些示例中,当所述控制器组包括多个控制器时,所述多个控制器之间通过QPI或HT总线相互通信。在一些示例中,所述控制器组还用于在所述第二图形处理器组进行第N层DNN反向计算之后,将第N层DNN反向计算的计算结果广播至所述第一图形处理器组,以供所述第一图形处理器组进行权重更新计算。在一些示例中,所述第一图形处理器组对所述第二图形处理器组广播的第N层DNN反向计算的计算结果进行合并。本发明的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。


本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:图1是现有的一种反向传播神经网络DNN的结构示意图;图2是根据本发明一个实施例的反向传播神经网络DNN的训练系统的结构图;图3是根据本发明一个实施例的反向传播神经网络DNN的训练系统的具有四个图形处理器对数据进行训练的示意图;图4是图3所示的反向传播神经网络DNN的训练系统在前向计算过程中图形处理器的前向计算和数据传输过程的示意图;图5是图3所示的反向传播神经网络DNN的训练系统对具有8层的反向传播神经网络DNN进行训练的示意图;以及图6是根据本发明一个实施例的反向传播神经网络DNN的训练系统的结构图。
具体实施例方式下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。在本发明的描述中,术语“纵向”、“横向”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明而不是要求本发明必须以特定的方位构造和操作,因此不能理解为对本发明的限制。参照下面的描述和附图,将清楚本发明的实施例的这些和其他方面。在这些描述和附图中,具体公开了本发明的实施例中的一些特定实施方式,来表示实施本发明的实施例的原理的一些方式,但是应当理解,本发明的实施例的范围不受此限制。相反,本发明的实施例包括落入所附加权利要求书的精神和内涵范围内的所有变化、修改和等同物。以下结合附图描述根据本发明实施例的反向传播神经网络DNN的训练系统。图2是根据本发明一个实施例的反向传播神经网络DNN的训练系统的结构图。如图2所示,根据本发明一个实施例的反向传播神经网络DNN的训练系统100,包括第一图形处理器组110、第二图形处理器组120和控制器组130。其中,第一图形处理器组110用于进行DNN前向计算和权重更新计算。第二图形处理器组120用于进行DNN前向计算(即前向计算)和DNN反向计算(即反向误差计算)。控制器组130与第一图形处理器组110和第二图形处理器组120相连,控制器组130用于控制第一图形处理器组110和第二图形处理器组120分别根据各自的输入数据进行第N层DNN前向计算,直至前向计算完成之后,控制器组130控制第一图形处理器组110进行权重更新计算,并控制第二图形处理器组120进行DNN反向计算,其中,N为正整数。第一图形处理器组110可包括一个或多个第一图形处理器、第二图形处理器组120可包括一个或者多个第二图形处理器。以下以第一图形处理器组110包括两个第一图形处理器(分别记为GPU2和GPU3),第二图形处理器组120包括两个第二图形处理器(分别记为:GPU0和GPUl)为例进行描述。具体地,一个深度的反向传播神经网络DNN —般包括7层以上的网络,每层有2048个节点,输出层大致包括8000个以上的节点,输入向量(即输入数据)大致包括400多个元素。如图3所示,示出了一种具有两个第一图形处理器(GPU2和GPU3)和两个第二图形处理器(GPU0和GPUl)的反向传播神经网络DNN的训练系统中的GPUO、GPUl以及GPU2和GPU3对数据进行训练的示意图。其中,如图3所示,控制器组130将前向计算所用到的一段训练数据batch均匀分布给GPU0、GPU1、GPU2和GPU3上,即输入数据batch被平均分成4份,四份数据分别分配给GPU0、GPU1、GPU2和GPU3,如图3所示,每份训练数据为batch/4,GPU0、GPU1、GPU2和GPU3对各自的训练数据进行独立的前向计算。在前向计算过程中,每个GPU把当前层的前向计算结果(即输出数据)广播至其他三个GPU,即控制器组130可在第一图形处理器组110和第二图形处理器组120的第N层DNN前向计算结束之后,控制第一图形处理器组110和第二图形处理器组120根据第N层DNN前向计算的结果进行第N+1层DNN前向计算,同时向第一图形处理器组110和第二图形处理器组120的其他图形处理器广播第N层DNN前向计算的结果。具体地,如图4所示,示出了在前向计算过程中每个GPU的前向计算和数据传输过程。即当前层的前向计算和上一次的数据传输并行,当所有层的前向计算做完,启动最后一层的输出数据广播到其他GPU,从而完成前向计算。在前向计算完成后,可由GPUO和GPUl进行DNN反向计算(即反向误差计算),由GPU2和GPU3进行权重更新计算。具体地,控制器组130可在第二图形处理器组120进行第N层DNN反向计算之后,将第N层DNN反向计算的计算结果广播至第一图形处理器组110,以供第一图形处理器组110进行权重更新计算。进一步地,第一图形处理器组110对第二图形处理器组120广播的第N层DNN反向计算的计算结果进行合并。例如,如图5所示,假如反向传播神经网络DNN共有8层,第二图形处理器组120 (即第二图形处理器组120包括图形处理器GPUO和GPU1);第一图形处理器组110 (即第一图形处理器组包括图形处理器GPU2和GPU3)。GPUO和GPUl计算各层的DNN反向计算E,其中,可使GPUO和GPUl均计算该层一半的DNN反向计算E,然后将该层所有的DNN反向计算结果传输给第一图形处理器组110的GPU2和GPU3,GPU2和GPU3可将来自GPUO和GPUl的DNN反向计算结果合并成一份完整的DNN反向计算结果,然后GPU2和GPU3可根据完整的DNN反向计算结果和该层的DNN前向计算结果计算该层的权重W,其中,GPU2和GPU3也可分别计算该层的一半的权重W,接着可对两部分权重W进行合并,并把该层的完整的权重W广播到GPU2和GPU3。由上可知,DNN反向计算E和权重W的计算是并行的,如图5所示,例如第二图形处理器组120的L7层的DNN反向计算E计算完之后,控制器组130可触发第一图形处理器组110进行L7层的权重W的计算,同时控制器组130触发第二图形处理器组120开始对L6层进行DNN反向计算E0如图6所示,反向传播神经网络DNN的训练系统100,还可包括第一输入输出路由器140和第二输入输出路由器150。具体地,第一输入输出路由器140与控制器组130相连,且第一输入输出路由器140与第一图形处理器组110和第二图形处理器组120中的一部分图形处理器相连。第二输入输出路由器150与控制器组130相连,且第二输入输出路由器与第一图形处理器组110和第二图形处理器组120中的另一部分图形处理器相连。具体地,结合图6,GPUO和GPUl连接到第一输入输出路由器140 (input andoutput hub,即 Ι0Η0)上,GPU2 和 GPU3 连接到第二输入输出路由器 150(input and outputhub,S卩10H1)。同一个IOH上的两个GPU相比跨IOH的GPU通信带宽更高,延时更低。在该实例中,将GPUO和GPU2归类为第二图形处理器组120,GPUl和GPU3归类为第一图形处理器组110,这样第二图形处理器组120计算处理得到的DNN反向计算结果,只有一半的通信需要跨Ι0Η,另外一半可以在同一个IOH内传输。同样,第一图形处理器组110计算出来的权重W也只有一半需要跨Ι0Η,另外一半只需要在同一个IOH内传输。由于同一个IOH上的两个GPU相比跨IOH的GPU通信带宽更高,延时更低,因此,进一步提高了训练数据进行训练的效率。此外,控制器组130可包括一个或多个控制器。进一步地,当控制器组130包括多个控制器时,多个控制器之间通过QPI或HT总线相互通信。例如,如图6所示,示出了包括两个控制器(即CPUO和CPUl)的反向传播神经网络DNN的训练系统。其中,CPUO和CPUl之间可通过QPI或HT总线进行通讯。本发明实施例的反向传播神经网络DNN的训练系统具有如下优点:1、该训练系统采用非对称结构,即一部分GPU用于计算DNN反向计算,另一部分在一部分GPU用于计算DNN反向计算的同时,进行权重更新计算,使权重更新计算和DNN反向计算并行化,从而实现训练速度的提升,加快训练效率。 2、在DNN前向计算中,DNN前向计算和计算结果传输的流水化,使计算时间掩盖了传输开销,从而节省总的训练时间。3、将GPU分组,一组计算DNN反向计算E,一组计算权重W,两组可以流水操作,提高了并发度,从而加快训练速度。4、可根据GPU位置进行分组,从而降低了数据在每个GPU之间传输开销,降低成本且提闻传输速率,从而进一步提闻总的训练效率。
在具体应用中用,例如对训练计算量十分巨大,需要用GPU加速的语音识别的DNN的大规模的反向传播神经网络DNN时,相比于传统单卡算法和多卡算法,当采用四个图形处理器GPU对上述大规模的反向传播神经网络DNN进行训练时,可获得3.3倍的加速比,因此具有训练效率高的优点。在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,“计算机可读介质”可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的 装直。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电 子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(R0M),可擦除可编辑只读存储器(EPR0M或闪速存储器),光纤装置,以及便携式光盘只读存储器(⑶ROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施 例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。尽管已经示出和描述了本发明的实施例,本领域的普通技术人员可以理解:在不脱离本发明的原理和宗旨的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由权利要求及其等同物限定。
权利要求
1.一种反向传播神经网络DNN的训练系统,其特征在于,包括: 第一图形处理器组,所述第一图形处理器组用于进行DNN前向计算和权重更新计算; 第二图形处理器组,所述第二图形处理器组用于进行DNN前向计算和DNN反向计算;以及 控制器组,所述控制器组与所述第一图形处理器组和第二图形处理器组相连,所述控制器组用于控制所述第一图形处理器组和第二图形处理器组分别根据各自的输入数据进行第N层DNN前向计算,直至前向计算完成之后,所述控制器组控制所述第一图形处理器组进行权重更新计算,并控制所述第二图形处理器组进行DNN反向计算,其中,N为正整数。
2.如权利要求1所述的反向传播神经网络DNN的训练系统,其特征在于,还包括: 第一输入输出路由器,所述第一输入输出路由器与所述控制器组相连,且所述第一输入输出路由器与所述第一图形处理器组和第二图形处理器组中的一部分图形处理器相连; 第二输入输出路由器,所述第二输入输出路由器与所述控制器组相连,且所述第二输入输出路由器与所述第一图形处理器组和第二图形处理器组中的另一部分图形处理器相连。
3.如权利要求1或2所述的反向传播神经网络DNN的训练系统,其特征在于,所述控制器组,还用于在所述第一图形处理器组和第二图形处理器组的第N层DNN前向计算结束之后,控制所述第一图形处理器组和第二图形处理器组根据第N层DNN前向计算的结果进行第N+1层DNN前向计算,同时向所述第一图形处理器组和第二图形处理器组的其他图形处理器广播所述第N层DNN前向计算的结果。
4.如权利要求1-3任一项所述的反向传播神经网络DNN的训练系统,其特征在于,所述控制器组包括一个或多个控制器。
5.如权利要求4所述的反向传播神经网络DNN的训练系统,其特征在于,当所述控制器组包括多个控制器时,所述多个控制器之间通过QPI或HT总线相互通信。
6.如权利要求1-3任一项所述的反向传播神经网络DNN的训练系统,其特征在于,所述控制器组还用于在所述第二图形处理器组进行第N层DNN反向计算之后,将第N层DNN反向计算的计算结果广播至所述第一图形处理器组,以供所述第一图形处理器组进行权重更新计算。
7.如权利要求6所述的反向传播神经网络DNN的训练系统,其特征在于,所述第一图形处理器组对所述第二图形处理器组广播的第N层DNN反向计算的计算结果进行合并。
全文摘要
本发明提供了一种反向传播神经网络DNN的训练系统,包括第一图形处理器组,用于进行DNN前向计算和权重更新计算;第二图形处理器组,用于进行DNN前向计算和DNN反向计算;控制器组,用于控制第一图形处理器组和第二图形处理器组分别根据各自的输入数据进行第N层DNN前向计算,直至前向计算完成之后,控制第一图形处理器组进行权重更新计算,并控制第二图形处理器组进行DNN反向计算,其中,N为正整数。本发明的训练系统具有训练速度快,数据传输开销低的优点,从而提升了反向传播神经网络DNN的训练速度。
文档编号G06N3/08GK103150596SQ201310057598
公开日2013年6月12日 申请日期2013年2月22日 优先权日2013年2月22日
发明者欧阳剑 申请人:百度在线网络技术(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1