一種反向傳播神經網路DNN的訓練系統

一種反向傳播神經網路DNN的訓練系統

《一種反向傳播神經網路DNN的訓練系統》是百度線上網路技術(北京)有限公司於2013年2月22日申請的發明專利,該專利的申請號為2013100575983,公布號為CN103150596A,授權公布日為2013年6月12日,發明人是歐陽劍。

《一種反向傳播神經網路DNN的訓練系統》包括:第一圖形處理器組,用於進行DNN前向計算和權重更新計算;第二圖形處理器組,用於進行DNN前向計算和DNN反向計算;控制器組,用於控制第一圖形處理器組和第二圖形處理器組分別根據各自的輸入數據進行第N層DNN前向計算,直至前向計算完成之後,控制第一圖形處理器組進行權重更新計算,並控制第二圖形處理器組進行DNN反向計算,其中,N為正整數。該發明的訓練系統具有訓練速度快,數據傳輸開銷低的優點,從而提升了反向傳播神經網路DNN的訓練速度。

2016年12月7日,《一種反向傳播神經網路DNN的訓練系統》獲得第十八屆中國專利優秀獎。

(概述圖為《一種反向傳播神經網路DNN的訓練系統》摘要附圖)

基本介紹

  • 中文名:一種反向傳播神經網路DNN的訓練系統
  • 公布號:CN103150596A
  • 授權日:2013年6月12日
  • 申請號:2013100575983
  • 申請日:2013年2月22日
  • 申請人:百度線上網路技術(北京)有限公司
  • 地址:北京市海淀區上地十街10號百度大廈三層
  • 發明人:歐陽劍
  • Int.Cl.:G06N3/08(2006.01)I
  • 代理機構:北京清亦華智慧財產權代理事務所(普通合夥)
  • 代理人:宋合成
  • 類別:發明專利
專利背景,發明內容,專利目的,技術方案,改善效果,附圖說明,技術領域,權利要求,實施方式,榮譽表彰,

專利背景

反向傳播神經網路(即DNN)被廣泛套用在很多重要的網際網路套用,如語音識別,圖像識別,自然語言處理等。它能大幅度提高語音識別的精度,因此被廣泛用在很多公司的語音識別產品中。
DNN訓練計算有兩個特點:計算複雜度高和不能大規模並行。DNN訓練的計算主要是浮點類型的矩陣的乘法,計算複雜度是O(N3),屬於典型的計算密集型。DNN訓練計算由於算法的限制不能大規模並行,因此不能採用傳統的多伺服器的方法提高計算速度。採用GPU加速DNN訓練是一直常用的加速方法,《一種反向傳播神經網路DNN的訓練系統》提出一直採用4GPU進行加速的方案,該方案能比單GPU加速3.3倍。
如圖1所示,示出了一種2013年2月前的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訓練成為研究熱點。
2013年2月前普通的多GPU的訓練算法一般是每塊卡上都保存一個BPNN,初始權重相同,每次訓練都將輸入數據分為多份,每塊卡同時進行一份數據的前向計算、反向誤差計算和權重更新計算;由於每塊卡都只算了一部分數據,因此最後需要權重同步和計算才能獲得最終新的權重值。在每塊卡獲得一致的新權重值後,才可以進入下一次計算。然而上述方法存在以下缺點:數據同步開銷較大。在普通算法中,每次計算都需要一次權重同步。大規模BPNN的權重數據量十分龐大,可達幾百MB。而2013年2月前多塊GPU之間使用的PCI-E2.0匯流排,單向傳輸頻寬在4~5GB/S,如果是4張GPU分別要同步200MB的權重數據,採用分組同步的方式(GPU1-2同步、3-4同步,1-3同步、2-4同步),則需要2輪傳輸,通信開銷會達到上百毫秒。反觀2013年2月前大規模的DNN訓練在單塊GPU上一次計算的耗時僅為幾十毫秒,這意味著使用多卡反而比單卡訓練更慢。

發明內容

專利目的

《一種反向傳播神經網路DNN的訓練系統》旨在至少解決2013年2月前技術中存在的技術問題之一。該發明的目的在於提出一種具有訓練速度快,數據傳輸開銷低的反向傳播神經網路DNN的訓練系統。

技術方案

《一種反向傳播神經網路DNN的訓練系統》的實施例提供了一種反向傳播神經網路DNN的訓練系統,包括:第一圖形處理器組,所述第一圖形處理器組用於進行DNN前向計算和權重更新計算;第二圖形處理器組,所述第二圖形處理器組用於進行DNN前向計算和DNN反向計算;以及控制器組,所述控制器組與所述第一圖形處理器組和第二圖形處理器組相連,所述控制器組用於控制所述第一圖形處理器組和第二圖形處理器組分別根據各自的輸入數據進行第N層DNN前向計算,直至前向計算完成之後,所述控制器組控制所述第一圖形處理器組進行權重更新計算,並控制所述第二圖形處理器組進行DNN反向計算,其中,N為正整數。
《一種反向傳播神經網路DNN的訓練系統》實施例的反向傳播神經網路DNN的訓練系統採用非對稱結構,即一部分圖形處理器(即GPU)用於計算DNN反向計算(即反向誤差計算),另一部分在一部分GPU用於計算DNN反向誤差計算的同時,進行權重更新計算,使權重更新計算和DNN反向計算並行化,從而實現訓練速度的提升,加快訓練效率。在DNN前向計算中,DNN前向計算和計算結果傳輸的流水化,使計算時間掩蓋了傳輸開銷,從而節省總的訓練時間。將GPU分組,一組用於DNN反向計算,另一組用於權重更新計算,兩組可以流水操作,提高了並發度,從而加快訓練速度。可根據GPU位置進行分組,從而降低了數據在每個GPU之間傳輸開銷,降低成本且提高傳輸速率,從而進一步提高總的訓練效率。
另外,根據《一種反向傳播神經網路DNN的訓練系統》上述實施例的反向傳播神經網路DNN的訓練系統還可以具有如下附加的技術特徵:
在一些示例中,還包括:第一輸入輸出路由器,所述第一輸入輸出路由器與所述控制器組相連,且所述第一輸入輸出路由器與所述第一圖形處理器組和第二圖形處理器組中的一部分圖形處理器相連;第二輸入輸出路由器,所述第二輸入輸出路由器與所述控制器組相連,且所述第二輸入輸出路由器與所述第一圖形處理器組和第二圖形處理器組中的另一部分圖形處理器相連。
在一些示例中,所述控制器組,還用於在所述第一圖形處理器組和第二圖形處理器組的第N層DNN前向計算結束之後,控制所述第一圖形處理器組和第二圖形處理器組根據第N層DNN前向計算的結果進行第N+1層DNN前向計算,同時向所述第一圖形處理器組和第二圖形處理器組的其他圖形處理器廣播所述第N層DNN前向計算的結果。
在一些示例中,所述控制器組包括一個或多個控制器。
在一些示例中,當所述控制器組包括多個控制器時,所述多個控制器之間通過QPI或HT匯流排相互通信。
在一些示例中,所述控制器組還用於在所述第二圖形處理器組進行第N層DNN反向計算之後,將第N層DNN反向計算的計算結果廣播至所述第一圖形處理器組,以供所述第一圖形處理器組進行權重更新計算。
在一些示例中,所述第一圖形處理器組對所述第二圖形處理器組廣播的第N層DNN反向計算的計算結果進行合併。

改善效果

《一種反向傳播神經網路DNN的訓練系統》實施例的反向傳播神經網路DNN的訓練系統具有如下優點:
1、該訓練系統採用非對稱結構,即一部分GPU用於計算DNN反向計算,另一部分在一部分GPU用於計算DNN反向計算的同時,進行權重更新計算,使權重更新計算和DNN反向計算並行化,從而實現訓練速度的提升,加快訓練效率。
2、在DNN前向計算中,DNN前向計算和計算結果傳輸的流水化,使計算時間掩蓋了傳輸開銷,從而節省總的訓練時間。
3、將GPU分組,一組計算DNN反向計算E,一組計算權重W,兩組可以流水操作,提高了並發度,從而加快訓練速度。
4、可根據GPU位置進行分組,從而降低了數據在每個GPU之間傳輸開銷,降低成本且提高傳輸速率,從而進一步提高總的訓練效率。

附圖說明

圖1是2013年2月前的一種反向傳播神經網路DNN的結構示意圖;
圖2是根據《一種反向傳播神經網路DNN的訓練系統》一個實施例的反向傳播神經網路DNN的訓練系統的結構圖;
圖3是根據該發明一個實施例的反向傳播神經網路DNN的訓練系統的具有四個圖形處理器對數據進行訓練的示意圖;
圖4是圖3所示的反向傳播神經網路DNN的訓練系統在前向計算過程中圖形處理器的前向計算和數據傳輸過程的示意圖;
圖5是圖3所示的反向傳播神經網路DNN的訓練系統對具有8層的反向傳播神經網路DNN進行訓練的示意圖;以及
圖6是根據該發明一個實施例的反向傳播神經網路DNN的訓練系統的結構圖。

技術領域

《一種反向傳播神經網路DNN的訓練系統》涉及反向傳播神經網路技術領域,特別涉及一種反向傳播神經網路DNN的訓練系統。

權利要求

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的訓練系統。
圖2是根據《一種反向傳播神經網路DNN的訓練系統》一個實施例的反向傳播神經網路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和GPU1)為例進行描述。
具體地,一個深度的反向傳播神經網路DNN一般包括7層以上的網路,每層有2048個節點,輸出層大致包括8000個以上的節點,輸入向量(即輸入數據)大致包括400多個元素。如圖3所示,示出了一種具有兩個第一圖形處理器(GPU2和GPU3)和兩個第二圖形處理器(GPU0和GPU1)的反向傳播神經網路DNN的訓練系統中的GPU0、GPU1以及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,從而完成前向計算。
在前向計算完成後,可由GPU0和GPU1進行DNN反向計算(即反向誤差計算),由GPU2和GPU3進行權重更新計算。具體地,控制器組130可在第二圖形處理器組120進行第N層DNN反向計算之後,將第N層DNN反向計算的計算結果廣播至第一圖形處理器組110,以供第一圖形處理器組110進行權重更新計算。進一步地,第一圖形處理器組110對第二圖形處理器組120廣播的第N層DNN反向計算的計算結果進行合併。例如,如圖5所示,假如反向傳播神經網路DNN共有8層,第二圖形處理器組120(即第二圖形處理器組120包括圖形處理器GPU0和GPU1);第一圖形處理器組110(即第一圖形處理器組包括圖形處理器GPU2和GPU3)。GPU0和GPU1計算各層的DNN反向計算E,其中,可使GPU0和GPU1均計算該層一半的DNN反向計算E,然後將該層所有的DNN反向計算結果傳輸給第一圖形處理器組110的GPU2和GPU3,GPU2和GPU3可將來自GPU0和GPU1的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反向計算E。
如圖6所示,反向傳播神經網路DNN的訓練系統100,還可包括第一輸入輸出路由器140和第二輸入輸出路由器150。具體地,第一輸入輸出路由器140與控制器組130相連,且第一輸入輸出路由器140與第一圖形處理器組110和第二圖形處理器組120中的一部分圖形處理器相連。第二輸入輸出路由器150與控制器組130相連,且第二輸入輸出路由器與第一圖形處理器組110和第二圖形處理器組120中的另一部分圖形處理器相連。
具體地,結合圖6,GPU0和GPU1連線到第一輸入輸出路由器140(inputand out puthub,即IOHO)上,GPU2和GPU3連線到第二輸入輸出路由器150(inputandoutputhub,即IOH1)。同一個IOH上的兩個GPU相比跨IOH的GPU通信頻寬更高,延時更低。在該實例中,將GPU0和GPU2歸類為第二圖形處理器組120,GPU1和GPU3歸類為第一圖形處理器組110,這樣第二圖形處理器組120計算處理得到的DNN反向計算結果,只有一半的通信需要跨IOH,另外一半可以在同一個IOH內傳輸。同樣,第一圖形處理器組110計算出來的權重W也只有一半需要跨IOH,另外一半只需要在同一個IOH內傳輸。由於同一個IOH上的兩個GPU相比跨IOH的GPU通信頻寬更高,延時更低,因此,進一步提高了訓練數據進行訓練的效率。
此外,控制器組130可包括一個或多個控制器。進一步地,當控制器組130包括多個控制器時,多個控制器之間通過QPI或HT匯流排相互通信。例如,如圖6所示,示出了包括兩個控制器(即CPU0和CPU1)的反向傳播神經網路DNN的訓練系統。其中,CPU0和CPU1之間可通過QPI或HT匯流排進行通訊。
在具體套用中用,例如對訓練計算量十分巨大,需要用GPU加速的語音識別的DNN的大規模的反向傳播神經網路DNN時,相比於傳統單卡算法和多卡算法,當採用四個圖形處理器GPU對上述大規模的反向傳播神經網路DNN進行訓練時,可獲得3.3倍的加速比,因此具有訓練效率高的優點。
在流程圖中表示或在此以其他方式描述的邏輯和/或步驟,例如,可以被認為是用於實現邏輯功能的可執行指令的定序列表,可以具體實現在任何計算機可讀介質中,以供指令執行系統、裝置或設備(如基於計算機的系統、包括處理器的系統或其他可以從指令執行系統、裝置或設備取指令並執行指令的系統)使用,或結合這些指令執行系統、裝置或設備而使用。就該說明書而言,“計算機可讀介質”可以是任何可以包含、存儲、通信、傳播或傳輸程式以供指令執行系統、裝置或設備或結合這些指令執行系統、裝置或設備而使用的裝置。
計算機可讀介質的更具體的示例(非窮盡性列表)包括以下:具有一個或多個布線的電連線部(電子裝置),攜帶型計算機盤盒(磁裝置),隨機存取存儲器(RAM),唯讀存儲器(ROM),可擦除可編輯唯讀存儲器(EPROM或閃速存儲器),光纖裝置,以及攜帶型光碟唯讀存儲器(CDROM)。另外,計算機可讀介質甚至可以是可在其上列印所述程式的紙或其他合適的介質,因為可以例如通過對紙或其他介質進行光學掃描,接著進行編輯、解譯或必要時以其他合適方式進行處理來以電子方式獲得所述程式,然後將其存儲在計算機存儲器中。
應當理解,《一種反向傳播神經網路DNN的訓練系統》的各部分可以用硬體、軟體、固件或它們的組合來實現。在上述實施方式中,多個步驟或方法可以用存儲在存儲器中且由合適的指令執行系統執行的軟體或固件來實現。例如,如果用硬體來實現,和在另一實施方式中一樣,可用該領域公知的下列技術中的任一項或他們的組合來實現:具有用於對數據信號實現邏輯功能的邏輯門電路的離散邏輯電路,具有合適的組合邏輯門電路的專用積體電路,可程式門陣列(PGA),現場可程式門陣列(FPGA)等。
在該說明書的描述中,參考術語“一個實施例”、“一些實施例”、“示例”、“具體示例”、或“一些示例”等的描述意指結合該實施例或示例描述的具體特徵、結構、材料或者特點包含於《一種反向傳播神經網路DNN的訓練系統》的至少一個實施例或示例中。在該說明書中,對上述術語的示意性表述不一定指的是相同的實施例或示例。而且,描述的具體特徵、結構、材料或者特點可以在任何的一個或多個實施例或示例中以合適的方式結合。

榮譽表彰

2016年12月7日,《一種反向傳播神經網路DNN的訓練系統》獲得第十八屆中國專利優秀獎。

相關詞條

熱門詞條

聯絡我們