TW202147188A - 神經網路模型的訓練方法和相關産品 - Google Patents

神經網路模型的訓練方法和相關産品 Download PDF

Info

Publication number
TW202147188A
TW202147188A TW110119475A TW110119475A TW202147188A TW 202147188 A TW202147188 A TW 202147188A TW 110119475 A TW110119475 A TW 110119475A TW 110119475 A TW110119475 A TW 110119475A TW 202147188 A TW202147188 A TW 202147188A
Authority
TW
Taiwan
Prior art keywords
gradient information
neural network
network model
working node
layer
Prior art date
Application number
TW110119475A
Other languages
English (en)
Inventor
王迎瑞
李周洋
王元波
張行程
Original Assignee
大陸商上海商湯智能科技有限公司
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 大陸商上海商湯智能科技有限公司 filed Critical 大陸商上海商湯智能科技有限公司
Publication of TW202147188A publication Critical patent/TW202147188A/zh

Links

Images

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
    • 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/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/25Fusion techniques
    • 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
    • G06N3/045Combinations of networks

Landscapes

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

Abstract

本申請實施例公開了一種神經網路模型的訓練方法和相關産品,該方法包括:第一工作節點基于對神經網路模型進行的當前迭代,得到所述神經網路模型的至少一個網路層的本地梯度信息;在與至少一個第二工作節點進行所述神經網路模型中的第一網路層的本地梯度信息傳輸的過程中,所述第一工作節點併行地更新所述神經網路模型中的第二網路層的參數。本申請實施例中,第一工作節點在與至少一個第二工作節點進行神經網路模型中的第一網路層的本地梯度信息傳輸的過程中,併行地更新神經網路模型中的第二網路層的參數。

Description

神經網路模型的訓練方法和相關産品
本申請涉及模型訓練領域,尤其涉及一種神經網路模型的訓練方法和相關産品。
深度學習正在爲衆多社會領域帶來巨大的發展進步,模型訓練是其關鍵環節。模型訓練過程中會讀取大量的樣本數據,進行大量的數學運算,非常耗時。儘管業界在ImageNet數據集上的基準(benchmark)測試中不斷取得突破。然而,回歸到通用的訓練平臺中,高效的分散式模型訓練方案依舊是一個棘手的實際問題。因此,需要研究更高效的分散式模型訓練方案。
本申請實施例公開了一種神經網路模型的訓練方法和相關産品。
第一方面,本申請實施例提供了一種神經網路模型的訓練方法,該方法包括:第一工作節點基于對神經網路模型進行的當前迭代,得到所述神經網路模型的至少一個網路層的本地梯度信息;在與至少一個第二工作節點進行所述神經網路模型中的第一網路層的本地梯度信息傳輸的過程中,所述第一工作節點併行地更新所述神經網路模型中的第二網路層的參數。
神經網路模型可以包含若干個層(Layer),其分散式併行訓練過程可以分爲各個層的前向計算(Forward Pass),反向計算(Backward Pass),梯度數據同步(例如,Allreduce Gradients)以及參數更新。在一些實施例中,前向計算爲正序逐層操作,反向計算爲逆序逐層操作;梯度數據同步主要占用網路頻寬資源,其他操作占用處理器的計算資源。本申請實施例中,第一工作節點併行執行參數更新與梯度數據同步,以便隱藏通信開銷,能够充分發掘模型訓練過程中的可重叠部分,降低通信造成的延遲,提高模型訓練效率。
本申請實施例中,第一工作節點在與至少一個第二工作節點進行神經網路模型中的第一網路層的本地梯度信息傳輸的過程中,併行地更新神經網路模型中的第二網路層的參數;將更新神經網路模型的參數的過程和傳輸本地梯度信息的過程重叠,可以提高模型訓練效率。
在一個可能的實現方式中,所述方法還包括:所述第一工作節點基于所述神經網路模型的多個網路層的連接關係,確定所述當前迭代的多個操作之間的依賴關係,所述多個操作至少包括所述神經網路模型中至少一個網路層的本地梯度信息的傳輸操作和參數更新操作;其中,所述第一工作節點基于所述多個操作之間的依賴關係執行所述多個操作。
在該實現方式中,可以基于神經網路模型的多個網路層的連接關係,準確地確定當前迭代的多個操作之間的依賴關係,並基于該多個操作之間的依賴關係先後執行該多個操作中的各操作。
在一個可能的實現方式中,所述第一工作節點以逆序的方式逐層更新所述神經網路模型中多個網路層的參數;和/或,所述第二網路層的網路深度大于所述第一網路層的網路深度。可選的,所述第一工作節點與至少一個第二工作節點以逆序的方式逐層傳輸所述神經網路模型中的多個網路層的本地梯度信息;所述第一工作節點以逆序的方式逐層計算所述神經網路模型中多個網路層的本地梯度信息(對應于反向計算爲逆序逐層操作)。
在一個可能的實現方式中,所述在與至少一個第二工作節點進行所述神經網路模型中的第一網路層的本地梯度信息傳輸的過程中,所述第一工作節點併行地更新所述神經網路模型中的第二網路層的參數包括:
所述第一工作節點在與所述至少一個第二工作節點進行所述神經網路模型中的所述第一網路層的本地梯度信息傳輸的過程中,在確定所述第二網路層的參數更新操作所依賴的操作已完成的情况下,併行地更新所述第二網路層的參數,其中,所述參數更新操作所依賴的操作包括與所述至少一個第二工作節點傳輸所述第二網路層的本地梯度信息。
在該實現方式中,可以保證能成功實現更新第二網路層的參數的操作。
在一個可能的實現方式中,所述方法還包括:所述第一工作節點在與至少一個第二工作節點進行所述神經網路模型中的所述第一網路層的本地梯度信息傳輸的過程中,計算所述神經網路模型中的第三網路層的本地梯度信息。
在該實現方式中,第一工作節點在與至少一個第二工作節點進行神經網路模型中的第一網路層的本地梯度信息傳輸的過程中,計算神經網路模型中的第三網路層的本地梯度信息;將計算神經網路模型中的網路層的本地梯度信息的過程和傳輸本地梯度信息的過程重叠(即通信和計算重叠),可以提高模型訓練效率。
在一個可能的實現方式中,在所述第一工作節點對神經網路模型進行當前迭代之前,所述方法還包括:所述第一工作節點對所述神經網路模型進行至少一次內層迭代,得到所述至少一次內層迭代對應的中間融合梯度信息; 所述第一工作節點基于對神經網路模型進行的當前迭代,得到所述神經網路模型的至少一個網路層的本地梯度信息,包括:所述第一工作節點基于所述中間融合梯度信息和所述當前迭代對應的本地梯度信息,得到所述神經網路模型的至少一個網路層的目標融合梯度信息;所述第一工作節點與所述至少一個第二工作節點傳輸的所述第一網路層的本地梯度信息包括所述第一網路層的目標融合梯度信息。
所述第一工作節點對所述神經網路模型進行至少一次內層迭代,可得到一組本地梯度信息。一組本地梯度信息可以理解爲第一工作節點完成神經網路模型中各網路層的前向計算和反向計算得到的全部本地梯度信息。神經網路模型的一個網路層的目標融合梯度信息可以理解爲由多次內層迭代得到的該網路層的多組本地梯度信息融合得到的梯度信息。
在該實現方式中,第一工作節點至少一個第二工作節點傳輸網路層的目標融合梯度信息;可以减少梯度信息的傳輸次數和總通信量。
在一個可能的實現方式中,所述第一工作節點基于所述中間融合梯度信息和所述當前迭代對應的本地梯度信息,得到所述神經網路模型的至少一個網路層的目標融合梯度信息包括:所述第一工作節點對所述中間融合梯度信息和所述當前迭代得到的本地梯度信息進行累加處理,得到所述神經網路模型的至少一個網路層的目標融合梯度信息。
在一個可能的實現方式中,所述方法還包括:所述第一工作節點在基于所述中間融合梯度信息和所述當前迭代對應的本地梯度信息,得到所述神經網路模型的第三網路層的目標融合梯度信息的過程中,與所述至少一個第二工作節點進行所述神經網路模型的第四網路層的目標融合梯度信息的傳輸。可選的,所述第四網路層的網路深度大于所述第三網路層的網路深度。
在該實現方式中,將計算神經網路模型中的網路層的目標融合梯度信息的過程和傳輸網路層的目標融合梯度信息的過程重叠(即計算和通信重叠),可以提高模型訓練效率。
在一個可能的實現方式中,在與至少一個第二工作節點進行所述神經網路模型中的第一網路層的本地梯度信息傳輸之前,所述方法還包括:所述第一工作節點將所述第一網路層的本地梯度信息中的各個數值均放大M倍,並將放大後的各個數值轉換爲半精度;所述M爲大于1的實數。
在該實現方式中,通過對本地梯度信息中的各個數值采用低精度儲存,可以减少本地梯度信息的數據量。
在一個可能的實現方式中,所述第一工作節點併行地更新所述神經網路模型中的第二網路層的參數之前,所述方法還包括:所述第一工作節點將獲得的所述第二網路層的本地梯度信息中包括的各個數值轉換爲單精度,並將所述轉換得到的各個數值縮小M倍以得到處理梯度信息,所述M爲大于1的實數;所述第一工作節點併行地更新所述神經網路模型中的第二網路層的參數包括:所述第一工作節點利用所述處理梯度信息更新所述神經網路模型中的所述第二網路層的參數。
在一個可能的實現方式中,在與至少一個第二工作節點進行所述神經網路模型中的第一網路層的本地梯度信息傳輸之前,所述方法還包括:所述第一工作節點基于所述第一網路層對應的偏移量,將計算得到的所述第一網路層的本地梯度信息儲存至預先分配的目標儲存空間,其中,所述目標儲存空間用以儲存所述神經網路模型的多個網路層的本地梯度信息;其中,所述第一工作節點發送的所述第一網路層的本地梯度信息是基于所述第一網路層對應的偏移量從所述目標儲存空間中獲取的,和/或,所述第一工作節點基于接收到的來自于所述至少一個第二工作節點的所述第一網路層的本地梯度信息,更新所述目標儲存空間儲存的所述第一網路層的本地梯度信息。
在該實現方式中,可以快速、準確地基于第一網路層對應的偏移量從目標儲存空間中獲取的第一網路層的本地梯度信息和/或更新目標儲存空間儲存的第一網路層的本地梯度信息。
在一個可能的實現方式中,在與至少一個第二工作節點進行所述神經網路模型中的第一網路層的本地梯度信息傳輸之前,所述方法還包括:所述第一工作節點將計算得到的所述神經網路模型的多個網路層的本地梯度信息儲存至預先分配的目標儲存空間,並通過記憶體管理器確定所述多個網路層中每個網路層對應的偏移量;所述目標儲存空間爲一個連續的儲存空間;所述第一工作節點基于所述多個網路層中每個網路層對應的偏移量,從所述目標儲存空間中獲取所述多個網路層中的至少兩個網路層的本地梯度信息;所述至少兩個網路層包括所述第一網路層;所述與至少一個第二工作節點進行所述神經網路模型中的第一網路層的本地梯度信息傳輸包括:與所述至少一個第二工作節點進行所述神經網路模型中的所述至少兩個網路層的本地梯度信息傳輸。
應理解,實現方式的主要原理是:將若干個網路層的本地梯度信息合併到一塊較大的數組,再發起一次全域通信;這樣可以提升全域通信效率,减少全域通信次數。
第二方面,本申請實施例提供了一種圖像預測方法,該方法包括:獲取待處理圖像;利用上述第一方面以及任一項可能的實現方式中訓練得到的神經網路模型對所述待處理圖像進行預測處理,得到預測結果。
第三方面,本申請實施例提供了一種數據處理裝置,包括:處理模組,用以基于對神經網路模型進行的當前迭代,得到所述神經網路模型的至少一個網路層的本地梯度信息;收發模組,用以與至少一個第二工作節點進行所述神經網路模型中的第一網路層的本地梯度信息的傳輸;所述處理模組,還用以在所述收發模組與至少一個第二工作節點進行所述神經網路模型中的第一網路層的本地梯度信息傳輸的過程中,併行地更新所述神經網路模型中的第二網路層的參數。
關于第三方面或各種可能的實施方式所帶來的技術效果,可參考對于第一方面或相應的實現方式的技術效果的介紹。
第四方面,本申請實施例提供了一種數據處理裝置,包括:獲取模組,用以獲取待處理圖像;處理模組,用以利用上述第一方面以及任一項可能的實現方式訓練得到的神經網路模型對所述待處理圖像進行預測處理,得到預測結果。
第五方面,本申請實施例提供了一種電子設備,該電子設備包括:處理器和記憶體,其中,所述記憶體用以儲存指令,所述處理器用以執行所述記憶體儲存的指令,使得所述處理器執行如上述第一方面以及任一種可能的實現方式的方法。
第六方面,本申請實施例提供了一種電子設備,該電子設備包括:處理器和記憶體,其中,所述記憶體用以儲存指令,所述處理器用以執行所述記憶體儲存的指令,使得所述處理器執行如上述第二方面以及任一種可能的實現方式的方法。
第七方面,本申請實施例提供了一種芯片,該芯片包括數據介面和處理器,其中,所述處理器用以執行第一方面或第一方面的任意可能實現方式中的方法。
第八方面,本申請實施例提供了一種芯片,該芯片包括數據介面和處理器,其中,所述處理器用以執行第二方面或第二方面的任意可能實現方式中的方法。
第九方面,本申請實施例提供了一種計算機可讀儲存媒體,該計算機儲存媒體儲存有計算機程式,該計算機程式包括程式指令,該程式指令當被處理器執行時使該處理器執行上述第一方面以及任一種可能的實現方式的方法。
第十方面,本申請實施例提供了一種計算機可讀儲存媒體,該計算機儲存媒體儲存有計算機程式,該計算機程式包括程式指令,該程式指令當被處理器執行時使該處理器執行上述第二方面以及任一種可能的實現方式的方法。
第十一方面,本申請實施例提供了一種計算機程式産品,該計算機程式産品包括程式指令,所述程式指令當被處理器執行時使所述處理器執行上述第一方面以及任一種可能的實現方式的方法。
第十二方面,本申請實施例提供了一種計算機程式産品,該計算機程式産品包括程式指令,所述程式指令當被處理器執行時使所述處理器執行上述第二方面以及任一種可能的實現方式的方法。
本申請的說明書實施例和權利要求書及上述附圖中的術語“第一”、“第二”、和“第三”等是用以區別類似的對象,而不必用以描述特定的順序或先後次序。此外,術語“包括”和“具有”以及他們的任何變形,意圖在于覆蓋不排他的包含,例如,包含了一系列步驟或單元。方法、系統、産品或設備不必限于清楚地列出的那些步驟或單元,而是可包括沒有清楚地列出的或對于這些過程、方法、産品或設備固有的其它步驟或單元。
高效的分散式模型訓練方案是棘手的實際問題。本申請提供了適用以分散式模型訓練場景的神經網路模型的訓練方法,能够提高模型訓練效率。下面分別對本申請實施例提供的神經網路模型的訓練方法適用的場景進行簡單的介紹。
分散式模型訓練場景:分散式訓練系統包括多個工作節點,每個工作節點的功能基本相同,各個工作節點通過對神經網路模型進行多次迭代訓練,得到訓練好的神經網路模型。在一次迭代中,每個工作節點使用各自的訓練樣本對神經網路模型進行訓練,得到各自的本地梯度信息;然後,多個工作節點之間進行數據同步,以使得多個工作節點中的每個工作節點獲得所有工作節點的本地梯度信息,然後將得到的所有工作節點的本地梯度信息進行融合,得到全域梯度信息,或者,多個工作節點中的每個工作節點通過對所有其他工作節點的本地梯度信息進行融合得到融合梯度信息,然後將自身的本地梯度信息與融合梯度信息進行融合,得到全域梯度信息。作爲一個例子,每個工作節點將自身計算得到的本地梯度信息和/或接收到的來自于至少一個其他工作節點的本地梯度信息發送給其他工作節點,或者發送自身計算得到的本地梯度信息與接收到的來自于至少一個其他工作節點的本地梯度信息進行融合得到的融合梯度信息,例如,發送給自己的左側或右側的工作節點,直到每個工作節點均得到所有工作節點計算得到的本地梯度信息、融合梯度信息或者全域梯度信息;然後,每個工作節點利用由全部的工作節點計算得到的本地梯度信息融合得到的全域梯度信息,更新神經網路模型的參數。這樣的迭代進行多次,每個工作節點在每次迭代中重複執行之前的操作,直到達到訓練截止條件,例如,神經網路模型收斂或者訓練次數達到預設次數等。在該分散式模型訓練場景中,在一些實施例中,每個工作節點采用的神經網路模型相同,並且各工作節點同步更新神經網路模型的參數,不同工作節點訓練神經網路模型使用的訓練樣本不同。也就是說,各工作節點采用的神經網路模型一直是相同的。在一些實施例中,多個工作節點可以是同一個終端設備或者伺服器上的多個處理器。舉例來說,某個伺服器上的8個GPU作爲8個工作節點,即一個GPU對應一個工作節點。在一些實施例中,一個工作節點或至少兩個工作節點對應一個硬件實體,例如終端設備或者伺服器。舉例來說,8個筆記型電腦作爲8個工作節點,即一個筆記型電腦作爲一個工作節點。又舉例來說,32台伺服器上的256塊GPU作爲256個工作節點。又舉例來說,分散式訓練系統包括的多個工作節點分別爲一個或多個設備(例如伺服器)中運行的多個虛擬機。
在上述場景中,通過本申請實施例提供的神經網路模型的訓練方法,將工作節點更新神經網路模型的參數的過程和工作節點的梯度數據同步過程併行執行,可以提高訓練效率。
下面結合一個分散式訓練流程圖的示例來描述本申請實施例提供的神經網路模型的訓練方法。
圖1爲本申請實施例提供的一種分散式訓練流程圖的示例。如圖1所示,GPU 0、GPU 1、GPU 2以及GPU 3分別爲分散式訓練系統中的一個工作節點,神經網路模型包括若干個層(Layer),GPU 0、GPU 1、GPU 2以及GPU 3的併行訓練過程可以包括:各個層的前向計算(Forward Pass),反向傳播(Backward Pass),梯度數據同步(如梯度規約通信)以及參數更新。其中,在前向計算中,神經網路模型的各個層依次對輸入到神經網路模型的圖像進行處理,得到對該圖像的處理結果。然後,可以基于處理結果和特定計算規則,得到神經網路模型的最後一層的梯度;在反向傳播中,可以將最後一層的梯度逆序反向傳播,依次計算神經網路模型的各個層的梯度。在梯度數據同步中,多個工作節點之間可以進行梯度數據的同步。本申請實施例中,梯度數據同步的目的是使得每個工作節點均獲得由全部的工作節點計算得到的本地梯度信息融合得到的全域梯度信息,本申請對實現這一目的的方式不作限定。在參數更新中,各工作節點利用梯度數據同步得到的全域梯度信息,進行神經網路模型的網路參數(例如權重等)的更新。
在圖1所示的例子中,不同工作節點將不同的訓練樣本輸入至神經網路模型進行前向計算和反向計算(即,反向傳播),得到各自的本地梯度信息。各工作節點完成一次全域的梯度數據同步之後,均能獲得由全部的工作節點計算得到的本地梯度信息融合得到的全域梯度信息或者全部的工作節點計算得到的本地梯度信息;各工作節點利用由全部的工作節點計算得到的本地梯度信息融合得到的全域梯度信息對各自的神經網路模型進行參數更新。其中,各工作節點可以采用相同的方式對神經網路模型進行參數更新。
在一些實施例中,梯度數據同步主要占用網路頻寬資源,其他操作占用GPU計算資源。爲了隱藏通信開銷,本申請實施例提供了使得梯度數據同步和參數更新重叠(即併行)的神經網路模型的訓練方法。下面結合附圖來介紹本申請實施例提供的神經網路模型的訓練方法。
圖2爲本申請實施例提供的一種神經網路模型的訓練方法流程圖。如圖2所示,該方法包括:
201、第一工作節點基于對神經網路模型進行的當前迭代,得到上述神經網路模型的至少一個網路層的本地梯度信息。
上述第一工作節點可以是筆記型電腦、桌上型電腦、平板電腦、手機等終端設備;也可以是伺服器;還可以是伺服器或者終端設備上運行的虛擬機;還可以是終端設備或者伺服器上的處理器,例如圖形處理器(Graphics Processing Unit,GPU)、中央處理器(Central Processing Unit,CPU)、網路處理器(Neural-network Processing Unit,NPU)等。如圖1所示,每個GPU通過反向計算可得到各網路層的本地梯度信息。在一些實施例中,反向計算爲逆序逐層操作,第一工作節點可逆序逐層計算神經網路模型中各網路層的本地梯度信息,參閱圖1。
在一些實施例中,第一工作節點在與至少一個第二工作節點進行神經網路模型中的第一網路層的本地梯度信息傳輸(執行步驟202)之前,還可以執行如下操作:上述第一工作節點將上述第一網路層的本地梯度信息中的各個數值均放大M倍,並將放大後的各個數值轉換爲半精度;上述M爲大于1的實數。在該實施例中,第一工作節點在與至少一個第二工作節點進行上述神經網路模型中的第一網路層的本地梯度信息傳輸之前,先將第一網路層的本地梯度信息轉換爲半精度浮點(half-precision float)數據,這樣其占用的儲存空間會比單精度浮點(single-precision float)數據减少一半;然後進行梯度規約通信;規約通信結束後,將規約通信得到的半精度梯度先轉換回單精度,再進行參數更新。通過這種方式通信開銷可减少一半。
但是需要注意的是,半精度浮點數據格式所能表示的正數範圍爲6.1*e-5到65504,遠小于單精度浮點數據的表示範圍,而神經網路模型的梯度往往是很小的值,因此在通信前第一工作節點先對本地梯度信息進行放大,通信結束後再縮小,以减少本地梯度信息傳遞過程中的精度損失。
202、第一工作節點在與至少一個第二工作節點進行上述神經網路模型中的第一網路層的本地梯度信息傳輸的過程中,併行地更新上述神經網路模型中的第二網路層的參數。
上述第一網路層和上述第二網路層不同。在一些實施例中,上述至少一個第二工作節點中每個第二工作節點與第一工作節點執行的操作類似。在一些實施例中,上述第一工作節點以逆序的方式逐層更新上述神經網路模型中多個網路層的參數;和/或,上述第二網路層的網路深度大于上述第一網路層的網路深度。在一些實施例中,第一工作節點實現梯度數據同步的方式爲逆序逐層操作,實現參數更新的方式爲逆序逐層操作。舉例來說,神經網路模型包含N層,第一工作節點與至少一個第二工作節點先後傳輸第N網路層至第1網路層的本地梯度信息(對應于逆序逐層操作實現梯度數據同步)。這裏的“傳輸”表示“發送”和“接收”,例如,第一工作節點在向至少一個第二工作節點發送通過第一工作節點計算得到的第N網路層的本地梯度信息的同時,也接收來自至少一個第二工作節點的第N網路層的本地梯度信息。然後,該第一工作節點先後更新第N網路層至第1網路層的參數(對應于逆序逐層操作實現參數更新)。圖3爲本申請實施例提供的一種計算和通信重叠的示例的示意圖。如圖3所示,301表示逆序逐層操作實現梯度數據同步的數據流(stream)1,302表示逆序逐層操作實現參數更新的數據流(stream)2,數據流1和數據流2併行;301中每個矩形框表示第一工作節點與其他工作節點傳輸(或者通信、同步)一個網路層的本地梯度信息的操作,例如第n網路層表示第一工作節點與其他工作節點傳輸第n網路層的本地梯度信息的操作;302中每個矩形框表示第一工作節點更新一個網路層的參數的操作,例如第n網路層表示第一工作節點更新第n網路層的參數的操作;箭頭表示時間軸。n爲大于1的整數。圖3中,第一工作節點與其他工作節點按照先後順序傳輸第n網路層的本地梯度信息、第(n-1)網路層的本地梯度信息、…、第1網路層的本地梯度信息;第一工作節點按照先後順序更新第n網路層的參數、第(n-1)網路層的參數、…、第1網路層的參數;第一工作節點與其他工作節點傳輸第(n-i)網路層的本地梯度信息的過程中,併行的更新第(n-i+1)網路層的參數。其中,i爲小于n的整數。由于第一工作節點實現梯度數據同步的方式爲逆序逐層操作,且實現參數更新的方式爲逆序逐層操作,因此第一工作節點可以在梯度數據同步的過程中,併行的利用已獲得的網路層的本地梯度信息來實現一部分參數更新的操作。參閱圖3,由于第一工作節點在執行接收第(n-1)網路層的本地梯度信息的操作之前,已接收到了第n網路層的本地梯度信息,因此該第一工作節點在執行接收第(n-1)網路層的本地梯度信息的操作的過程中,可併行地執行更新第n網路層的參數的操作。
在一些實施例中,上述第一工作節點基于上述神經網路模型的多個網路層的連接關係,確定上述當前迭代的多個操作之間的依賴關係,上述多個操作至少包括上述神經網路模型中至少一個網路層的本地梯度信息的傳輸操作和參數更新操作;上述第一工作節點基于上述多個操作之間的依賴關係執行上述多個操作。也就是說,第一工作節點可根據當前迭代的多個操作所屬網路層的先後關係確立當前迭代的多個操作之間的依賴關係,即各操作的具體執行時機由依賴關係驅動。示例性的,第一工作節點實現梯度數據同步的方式爲逆序逐層操作,實現參數更新的方式爲逆序逐層操作,神經網路模型中任一網路層的本地梯度信息的傳輸操作所依賴的操作爲該任一網路層之後的各網路層的本地梯度信息的傳輸操作均被完成,神經網路模型中任一網路層的參數更新操作所依賴的操作爲該任一網路層的本地梯度信息的傳輸操作均完成。舉例來說,第一工作節點完成神經網路模型中第n網路層的本地梯度信息的傳輸操作之後,可執行第(n-1)網路層的本地梯度信息的傳輸操作以及第n網路層的參數更新操作。
在一些實施例中,步驟202的實現方式如下:上述第一工作節點在與上述至少一個第二工作節點進行上述神經網路模型中的上述第一網路層的本地梯度信息傳輸的過程中,在確定上述第二網路層的參數更新操作所依賴的操作已完成的情况下,與上述第一網路層的本地梯度信息的傳輸併行地更新上述第二網路層的參數,其中,上述參數更新操作所依賴的操作包括與上述至少一個第二工作節點傳輸上述第二網路層的本地梯度信息。在一些實施例中,第一工作節點待執行的每個操作綁定一個事件(event),並根據各操作之間的依賴關係確立每個操作需要等待的event;每個數據流通過輕量級阻塞介面(例如cudaStreamWaitEvent)等待當前操作的關聯event完成後,再啓動當前操作。
在一個實施例中,第一工作節點在更新上述神經網路模型中的第二網路層的參數之前,可執行如下操作:第一工作節點將獲得的上述第二網路層的本地梯度信息中包括的各個數值轉換爲單精度,並將上述轉換得到的各個數值縮小M倍以得到處理梯度信息,上述M爲大于1的實數;第一工作節點併行地更新上述神經網路模型中的第二網路層的參數可以是:第一工作節點利用上述處理梯度信息更新上述神經網路模型中的上述第二網路層的參數。
本申請實施例中,第一工作節點在與至少一個第二工作節點進行神經網路模型中的第一網路層的本地梯度信息傳輸的過程中,併行地更新神經網路模型中的第二網路層的參數;將更新神經網路模型的參數的過程和傳輸本地梯度信息的過程重叠(即參數更新和計算重叠),可以提高模型訓練效率。
爲進一步隱藏通信開銷,第一工作節點還可以進一步將梯度數據同步和反向計算重叠。下面結合附圖來介紹一種梯度數據同步和反向計算重叠的可能的實現方式。
在一個實施例中,第一工作節點在執行圖1的方法流程的基礎上,還可以執行如下操作:第一工作節點在與至少一個第二工作節點進行上述神經網路模型中的上述第一網路層的本地梯度信息傳輸的過程中,計算上述神經網路模型中的第三網路層的本地梯度信息。上述第三網路層的網路深度小于上述第一網路層的網路深度。在一些實施例中,反向計算爲逆序逐層操作,第一工作節點實現梯度數據同步的方式爲逆序逐層操作,第一工作節點實現反向計算的過程可與實現梯度數據同步的過程重叠,即併行地實現反向計算和實現梯度數據同步。
圖4爲本申請實施例提供的另一種計算和通信重叠的示例的示意圖。如圖4所示,401表示逆序逐層操作實現反向計算的數據流3,301表示逆序逐層操作實現梯度數據同步的數據流1,302表示逆序逐層操作實現參數更新的數據流2,數據流1、數據流2以及數據流3併行;401中每個矩形框表示第一工作節點計算一個網路層的本地梯度信息的操作(對應于反向操作),例如第n網路層表示第一工作節點計算第n網路層的本地梯度信息的操作;301中每個矩形框表示第一工作節點與其他工作節點傳輸一個網路層的本地梯度信息的操作,例如第n網路層表示第一工作節點與其他工作節點傳輸第n網路層的本地梯度信息的操作;302中每個矩形框表示第一工作節點更新一個網路層的參數的操作,例如第n網路層表示第一工作節點更新第n網路層的參數的操作。n爲大于1的整數。圖4中,第一工作節點按照先後順序計算第n網路層的本地梯度信息、第(n-1)網路層的本地梯度信息、…、第1網路層的本地梯度信息;第一工作節點與其他工作節點按照先後順序傳輸第n網路層的本地梯度信息、第(n-1)網路層的本地梯度信息、…、第1網路層的本地梯度信息;第一工作節點按照先後順序更新第n網路層的參數、第(n-1)網路層的參數、…、第1網路層的參數;第一工作節點接收第(n-i)網路層的本地梯度信息的過程中,併行的更新第(n-i+1)網路層的參數以及計算第(n-i-1)網路層的本地梯度信息。其中,i爲小于(n-1)的整數。
在該實施例中,第一工作節點在與至少一個第二工作節點進行神經網路模型中的第一網路層的本地梯度信息傳輸的過程中,計算神經網路模型中的第三網路層的本地梯度信息;將計算神經網路模型中的網路層的本地梯度信息的過程和傳輸本地梯度信息的過程重叠,可以提高模型訓練效率。
前述實施例描述了計算和通信重叠的方案。上述計算和通信重叠方案的本質是用參數更新時間和/或反向計算時間隱藏通信時間,但是當神經網路模型的計算時間小于通信時間時,我們就無法充分隱藏通信開銷。因此有必要研究通信削减方案,以進一步壓縮通信開銷。
本申請實施例引入了內層迭代的策略。每次內層迭代進行一次完整的前向計算(Forward)和反向計算(Backward),並對本地梯度信息進行累計,但不做梯度數據同步和參數更新,即不同步各個工作節點的梯度數據以及不更新神經網路模型的參數。多次內層迭代對應一次全域通信,其中,在最後一次內層迭代中對本地梯度信息進行規約通信並更新參數值。在一些實施例中,全域通信操作可以與最後一次內層迭代的反向計算互相重叠。內層迭代策略本質上是增大每次迭代的批量(Batch size),這等效于减少整體訓練過程中的總通信量。下面結合附圖介紹本申請實施例提供的內層迭代方法。
圖5爲本申請實施例提供的一種內層迭代方法流程圖。如圖5所示,該內層迭代方法包括:
501、第一工作節點將訓練樣本輸入至神經網路模型進行前向計算,得到處理結果。
502、第一工作節點利用上述處理結果和上述神經網路模型進行反向計算,得到神經網路模型的至少一個網路層的本地梯度信息。
步驟502和步驟501可以理解爲上述第一工作節點對上述神經網路模型進行一次內層迭代,得到上述神經網路模型的至少一個網路層的本地梯度信息的實現方式。在一些實施例中,步驟502可替換爲:第一工作節點利用上述處理結果和上述神經網路模型進行反向計算,得到神經網路模型的各網路層的本地梯度信息。舉例來說,第一工作節點采用逆序逐層操作實現反向計算,得到神經網路模型的各網路層的本地梯度信息。
503、第一工作節點基于中間融合梯度信息和當前迭代(即本次內層迭代)對應的本地梯度信息,得到上述神經網路模型的至少一個網路層的目標融合梯度信息。
在一些實施例中,上述中間融合梯度信息可以是第一工作節點對上述神經網路模型進行至少一次內層迭代,得到的上述至少一次內層迭代對應的中間融合梯度信息。示例性的,上述中間融合梯度信息可以是第一工作節點進行一次內層迭代得到的神經網路模型的各網路層的本地梯度信息;還可以是由第一工作節點進行至少兩次內層迭代得到的至少兩組本地梯度信息進行融合得到。應理解,第一工作節點第一次執行步驟503時,上述中間融合梯度信息不存在,步驟503的實現方式可以是將步驟502得到的神經網路模型的至少一個網路層的本地梯度信息作爲中間融合梯度信息,並儲存;第一工作節點第二次執行步驟503時,步驟503的實現方式可以是基于當前的中間融合梯度信息和本次內層迭代對應的本地梯度信息(即第二次執行步驟502得到的梯度信息),得到新的中間融合梯度信息(對應于更新中間融合梯度);以此類推,第一工作節點第K次執行步驟503之後,得到神經網路模型的至少一個網路層的目標融合梯度信息。其中,K爲大于1的整數。可以理解,第一工作節點第一次執行步驟503可得到初始的中間融合梯度(對應于第一次執行步驟502得到的梯度信息),後面每執行一次步驟503就是利用當前的中間融合梯度信息和當前迭代(即本次內層迭代)對應的本地梯度信息,得到新的中間融合梯度信息。
在一些實施例中,第一工作節點進行一次內層迭代,得到一組本地梯度參數,每組本地梯度參數包括神經網路模型的各網路層的本地梯度信息;第一工作節點對其進行至少兩次內層迭代得到的至少兩組本地梯度信息進行融合可以是:對上述至少兩組本地梯度信息中分別包括的各網路層的本地梯度信息融合,得到各網路層的中間融合梯度。舉例來說,第一工作節點對至少兩組本地梯度信息中分別包括的第一網路層的本地梯度信息進行融合,得到第一網路層的中間融合梯度。示例性的,第一工作節點對至少兩組本地梯度信息中分別包括的第一網路層的本地梯度信息進行融合可以是逐次融合兩組本地梯度信息中分別包括的第一網路層中的相應參數。例如,第一組本地梯度信息中包括的第一網路層的某個參數的值爲a,第二組本地梯度信息中包括的該參數的值爲b,第三組本地梯度信息中包括的該參數的值爲c;以該參數爲例,第一工作節點對這3組本地梯度信息中分別包括的第一網路層的本地梯度信息進行融合可以是:先計算(a+b),再計算((a+b)+c)。在該例子中,該參數在第一網路層的中間融合梯度信息中對應的值爲((a+b)+c)。
在一些實施例中,步驟503的實現方式可以是:上述第一工作節點對上述中間融合梯度信息和上述當前迭代得到的本地梯度信息進行累加處理,得到上述神經網路模型的至少一個網路層的目標融合梯度信息。上述中間融合梯度信息中的梯度和上述當前迭代得到的本地梯度信息中的梯度一一對應;上述第一工作節點對上述中間融合梯度信息和上述當前迭代得到的本地梯度信息進行累加處理,得到上述神經網路模型的至少一個網路層的目標融合梯度信息可以是:對上述中間融合梯度信息和上述當前迭代得到的本地梯度信息中一一對應的參數進行累加處理。舉例來說,中間融合梯度信息中某個參數的值爲d,該參數在當前迭代得到的本地梯度信息中對應的值爲e,對d和e進行累加處理得到(d+e)。應理解,上述神經網路模型的任一網路層的目標融合梯度信息可以由第一工作節點多次內層迭代得到的多組該任一網路層的本地梯度信息融合得到。
504、第一工作節點判斷是否達到內層迭代門檻值。
若是,執行步驟505;若否,執行步驟501。上述內層迭代門檻值可以是3、5、10、20等,本申請不作限定。在實際應用中,第一工作節點可根據實際需求來相應的設置內層迭代門檻值。內層迭代門檻值越大,第一工作節點執行全域通信的次數越少。
505、第一工作節點執行全域通信操作,得到全域梯度信息。
在一些實施例中,上述全域梯度信息可以是由全部的工作節點計算得到的本地梯度信息融合得到的梯度信息。示例性的,上述全域梯度信息可以是由全部的工作節點計算得到的本地梯度信息中相應的梯度累加得到的梯度信息。舉例來說,每個工作節點計算得到的本地梯度信息對應一個向量,由全部的工作節點計算得到的本地梯度信息融合得到的全域梯度信息對應的向量可以是由各工作節點計算得到的本地梯度信息對應的向量中相同位置的元素累加得到。在一些實施例中,第一工作節點得到全域梯度信息之後,分散式訓練系統中各工作節點均得到全域梯度信息。
506、第一工作節點利用全域梯度信息更新神經網路模型。
應理解,分散式訓練系統中各工作節點均利用全域梯度信息更新神經網路模型,這樣每個工作節點均會得到一個相同的更新後的神經網路模型。步驟501至步驟506描述第一工作節點實現一次參數更新操作的過程,在實際應用中,第一工作節點可多次執行圖5中的方法流程以得到收斂的神經網路模型。
在一些實施例中,第一工作節點還可以執行如下操作:上述第一工作節點在基于上述中間融合梯度信息和上述當前迭代對應的本地梯度信息,得到上述神經網路模型的第三網路層的目標融合梯度信息的過程中,併行地與上述至少一個第二工作節點進行上述神經網路模型的第四網路層的目標融合梯度信息的傳輸。可選的,上述第四網路層的網路深度大于上述第三網路層的網路深度。第一工作節點可以按照逆序逐層操作進行最後一次內層迭代,因此第一工作節點可先後得到上述神經網路模型的最高網路層(具有最大網路深度)的目標融合梯度信息至最低網路層(具有最小網路深度)的目標融合梯度信息。應理解,第一工作節點在計算某一網路層的目標融合梯度信息的過程中,可將已計算得到的一些網路層的目標融合梯度信息傳輸給其他工作節點。也就是說,全域通信操作可以與最後一次內層迭代的反向計算互相重叠
在該實現方式中,將計算神經網路模型中的網路層的目標融合梯度信息的過程和傳輸網路層的目標融合梯度信息的過程重叠(即計算和通信重叠),可以提高模型訓練效率。
本申請實施例中,第一工作節點與至少一個第二工作節點傳輸網路層的目標融合梯度信息;可以减少梯度信息的傳輸次數和總通信量。
爲進一步提升通信效率,本申請實施例還提供了通信融合策略,即將若干個網路層的梯度合併到一塊較大的數組,再發起一次全域通信。通信融合策略可應用以前述實施例中,來提升通信效率。
對于常見神經網路模型中的大部分算子,其梯度參數的數量是相當小的,通常是特徵圖數量的小常數倍,通信量爲KBytes甚至Byte的量級。根據底層通信的相關研究,傳輸數據量偏小時無法充分利用網路頻寬。爲了獲得較大的通信量,以提升通信效率,我們引入了對通信融合的策略。
在該策略中,有幾點需要注意的地方。一方面,我們需要合理配置通信融合(也稱梯度融合)的規模。融合規模太小,則通信效率不高;融合規模太大,又會耽擱通信操作的啓動時機。因此,我們在實現通信融合策略時,讓融合大小可以配置,例如通過空運行(dry-run)爲每個神經網路模型和平臺(例如分散式訓練系統)調試出最合適的融合規模。另一方面,在通信融合的原始方案下,通信前要將多個離散存放的小數組合併爲一塊連續存放的大數組,通信後又要拆解回去,這就引入了兩次記憶體拷貝,會産生額外的開銷。
在一些實施例中,第一工作節點在執行步驟201之前,可執行如下操作:上述第一工作節點基于上述第一網路層對應的偏移量,將計算得到的上述第一網路層的本地梯度信息儲存至預先分配的目標儲存空間,其中,上述目標儲存空間用以儲存上述神經網路模型的多個網路層的本地梯度信息;
其中,上述第一工作節點發送的上述第一網路層的本地梯度信息是基于上述第一網路層對應的偏移量從上述目標儲存空間中獲取的,和/或,上述第一工作節點基于接收到的來自于上述至少一個第二工作節點的上述第一網路層的本地梯度信息,更新上述目標儲存空間儲存的上述第一網路層的本地梯度信息。
在該實施例中,第一工作節點預先給神經網路模型的所有參數梯度(對應于梯度信息)開闢統一的連續記憶體空間(對應于目標儲存空間),然後通過記憶體管理器將每個網路層的參數梯度指向對應的偏移量(offset),從而避免了通信時額外的記憶體拷貝。
在一些實施例中,第一工作節點在執行步驟201之前,可執行如下操作:上述第一工作節點將計算得到的上述神經網路模型的多個網路層的本地梯度信息儲存至預先分配的目標儲存空間,並通過記憶體管理器確定上述多個網路層中每個網路層對應的偏移量,上述目標儲存空間爲一個連續的儲存空間;上述第一工作節點基于上述多個網路層中每個網路層對應的偏移量,從上述目標儲存空間中獲取上述多個網路層中的至少兩個網路層的本地梯度信息;上述至少兩個網路層包括上述第一網路層;步驟201可替換爲:與上述至少一個第二工作節點進行上述神經網路模型中的上述至少兩個網路層的本地梯度信息傳輸。
圖6爲本申請實施例提供的一種通信融合策略的一個示例的示意圖。如圖6所示,601表示神經網路模型的各網路層,其中,L1表示第一網路層,Ln表示第n網路層;602表示各網路層的本地梯度信息,其中,梯度m、梯度(m-1)、…梯度1均表示一個梯度或一個網路層的梯度;603表示合併後的各網路層的本地梯度信息,其中,梯度組k、梯度組(k-1)…梯度組1均包括至少兩個梯度或至少兩個網路層的梯度。本申請實施例中,神經網路模型中的網路層和梯度不是一一對應,有些網路層可以有多個梯度,有些網路層可以無梯度。在一些實施例中,602的每個矩形框(例如梯度m)表示一個網路層的梯度,則第一工作節點每次向其他工作節點傳輸一個網路層的梯度需要傳輸m次,第一工作節點每次向其他工作節點傳輸一個梯度組(例如梯度組k)需要傳輸k次,k小于m。在一些實施例中,602的每個矩形框(例如梯度m)表示一個參數向量的梯度,則第一工作節點每次向其他工作節點傳輸一個梯度組(例如梯度組k)需要傳輸k次。應理解,第一工作節點可將若干個網路層的本地梯度信息合併到一塊較大的數組,再發起一次全域通信;這樣可以减少全域通信信息。
前述實施例描述了訓練神經網路模型的方法流程。下面介紹應用訓練得到的神經網路模型實現預測任務的舉例。
圖7爲本申請實施例提供的一種圖像預測方法流程圖。如圖7所示,該方法包括:
701、圖像處理裝置獲取待處理圖像。
上述圖像處理裝置可以是上述第一工作節點,也可以是其他工作節點,還可以是未參與神經網路模型訓練的裝置,例如終端設備或伺服器。
在一些實施例中,圖像處理裝置爲伺服器,圖像處理裝置獲取待處理圖像可以是伺服器接收到來自終端設備的待處理圖像或者按照用戶輸入的指令從其他設備獲取待處理圖像。
在一些實施例中,圖像處理裝置爲伺服器,圖像處理裝置獲取待處理圖像可以是伺服器獲取用戶上傳的待處理圖像或者按照用戶輸入的指令從其他設備獲取待處理圖像。
702、利用訓練得到的神經網路模型對上述待處理圖像進行預測處理,得到預測結果。
上述神經網路模型可以是采用前述實施例中的方法訓練得到的。應理解,圖7爲應用神經網路模型的一個示例。采用前述實施例中的訓練方法訓練得到的神經網路模型可處理不同的預測任務,例如文本識別、圖像識別、圖像分類等。
在一些實施例中,圖像處理裝置爲伺服器,圖像處理裝置在執行步驟702之後,還可以將預測結果發送給終端設備,例如手機、個人電腦等。
在一些實施例中,圖像處理裝置爲終端設備,圖像處理裝置在執行步驟702之後,還可以輸出預測結果,例如通過顯示屏顯示預測結果。
本申請實施例中,利用訓練得到的神經網路模型對待處理圖像進行預測處理,得到預測結果;可高效的實現不同的圖像預測任務。
前述實施例描述了第一工作節點實現的神經網路模型的訓練方法。下面結合附圖介紹第一工作節點的各模組的功能。
圖8爲本申請實施例提供的一種數據處理裝置的結構示意圖。圖8中的數據處理裝置可以爲前述實施例中的第一工作節點。如圖8所示,數據處理裝置可包括:
處理模組801,用以基于對神經網路模型進行的當前迭代,得到上述神經網路模型的至少一個網路層的本地梯度信息;
收發模組802,用以與至少一個第二工作節點進行所述神經網路模型中的第一網路層的本地梯度信息的傳輸;
處理模組801,還用以在收發模組802與至少一個第二工作節點進行上述神經網路模型中的第一網路層的本地梯度信息傳輸的過程中,併行地更新上述神經網路模型中的第二網路層的參數。
在一些實施例中,處理模組801可以是CPU、GPU、NPU等處理器,收發模組802可以具體數據收發功能的收發器。
在一個可能的實現方式中,處理模組801,還用以基于上述神經網路模型的多個網路層的連接關係,確定上述當前迭代的多個操作之間的依賴關係,上述多個操作至少包括上述神經網路模型中至少一個網路層的本地梯度信息的傳輸操作和參數更新操作;基于上述多個操作之間的依賴關係執行上述多個操作。
在一個可能的實現方式中,上述第一工作節點以逆序的方式逐層更新上述神經網路模型中多個網路層的參數;和/或,上述第二網路層的網路深度大于上述第一網路層的網路深度。
在一個可能的實現方式中,處理模組801,具體用以在上述收發模組與上述至少一個第二工作節點進行上述神經網路模型中的上述第一網路層的本地梯度信息傳輸的過程中,在確定上述第二網路層的參數更新操作所依賴的操作已完成的情况下,併行地更新上述第二網路層的參數,其中,上述參數更新操作所依賴的操作包括與上述至少一個第二工作節點傳輸上述第二網路層的本地梯度信息。
在一個可能的實現方式中,處理模組801,還用以在上述收發模組在與至少一個第二工作節點進行上述神經網路模型中的上述第一網路層的本地梯度信息傳輸的過程中,計算上述神經網路模型中的第三網路層的本地梯度信息。
在一個可能的實現方式中,處理模組801,還用以對上述神經網路模型進行至少一次內層迭代,得到上述至少一次內層迭代對應的中間融合梯度信息;
處理模組801,具體用以基于上述中間融合梯度信息和上述當前迭代對應的本地梯度信息,得到上述神經網路模型的至少一個網路層的目標融合梯度信息;上述第一工作節點與上述至少一個第二工作節點傳輸的上述第一網路層的本地梯度信息包括上述第一網路層的目標融合梯度信息。
在一個可能的實現方式中,處理模組801,具體用以對上述中間融合梯度信息和上述當前迭代得到的本地梯度信息進行累加處理,得到上述神經網路模型的至少一個網路層的目標融合梯度信息。
在一個可能的實現方式中,收發模組802,還用以在處理模組801基于上述中間融合梯度信息和上述當前迭代對應的本地梯度信息,得到上述神經網路模型的第三網路層的目標融合梯度信息的過程中,與上述至少一個第二工作節點進行上述神經網路模型的第四網路層的目標融合梯度信息的傳輸。
在一個可能的實現方式中,處理模組801,還用以將上述第一網路層的本地梯度信息中的各個數值均放大M倍,並將放大後的各個數值轉換爲半精度;上述M爲大于1的實數。
在一個可能的實現方式中,處理模組801,還用以將獲得的上述第二網路層的本地梯度信息中包括的各個數值轉換爲單精度,並將上述轉換得到的各個數值縮小M倍以得到處理梯度信息,上述M爲大于1的實數;
處理模組801,具體用以利用上述處理梯度信息更新上述神經網路模型中的上述第二網路層的參數。
在一個可能的實現方式中,處理模組801,還用以基于上述第一網路層對應的偏移量,將計算得到的上述第一網路層的本地梯度信息儲存至預先分配的目標儲存空間,其中,上述目標儲存空間用以儲存上述神經網路模型的多個網路層的本地梯度信息;
其中,收發模組802發送的上述第一網路層的本地梯度信息是基于上述第一網路層對應的偏移量從上述目標儲存空間中獲取的,和/或,處理模組801,還用以基于接收到的來自于上述至少一個第二工作節點的上述第一網路層的本地梯度信息,更新上述目標儲存空間儲存的上述第一網路層的本地梯度信息。
在一個可能的實現方式中,處理模組801,還用以將計算得到的上述神經網路模型的多個網路層的本地梯度信息儲存至預先分配的目標儲存空間,並通過記憶體管理器確定上述多個網路層中每個網路層對應的偏移量;上述目標儲存空間爲一個連續的儲存空間;上述第一工作節點基于上述多個網路層中每個網路層對應的偏移量,從上述目標儲存空間中獲取上述多個網路層中的至少兩個網路層的本地梯度信息;上述至少兩個網路層包括上述第一網路層;上述收發模組,具體用以與上述至少一個第二工作節點進行上述神經網路模型中的上述至少兩個網路層的本地梯度信息傳輸。
圖9爲本申請實施例提供的另一種數據處理裝置的結構示意圖。如圖9所示,該數據處理裝置,包括:
獲取模組901,用以獲取待處理圖像;
處理模組902,用以利用訓練得到的神經網路模型對上述待處理圖像進行預測處理,得到預測結果。
應理解以上數據處理裝置的各個單元的劃分僅僅是一種邏輯功能的劃分,實際實現時可以全部或部分集成到一個物理實體上,也可以物理上分開。例如,以上各個單元可以爲單獨設立的處理元件,也可以集成同一個芯片中實現,此外,也可以以程式代碼的形式儲存于控制器的儲存元件中,由處理器的某一個處理元件調用並執行以上各個單元的功能。此外各個單元可以集成在一起,也可以獨立實現。這裏的處理元件可以是一種積體電路芯片,具有信號的處理能力。在實現過程中,上述方法的各步驟或以上各個單元可以通過處理器元件中的硬件的集成邏輯電路或者軟件形式的指令完成。該處理元件可以是通用處理器,例如中央處理器(英文:central processing unit,簡稱:CPU),還可以是被配置成實施以上方法的一個或多個積體電路,例如:一個或多個特定積體電路(英文:application-specific integrated circuit,簡稱:ASIC),或,一個或多個微處理器(英文:digital signal processor,簡稱:DSP),或,一個或者多個現場可程式化邏輯閘陣列(英文:field-programmable gate array,簡稱:FPGA)等。
圖10是本申請實施例提供的一種伺服器的結構示意圖,該伺服器1000可因配置或性能不同而産生比較大的差异,可以包括一個或一個以上中央處理器(central processing units,CPU)1022(例如,一個或一個以上處理器)和記憶體1032,一個或一個以上儲存應用程式1042或數據1044的儲存媒體1030(例如一個或一個以上海量儲存設備),一個或一個以上加速設備(例如GPU或NPU)1024。其中,記憶體1032和儲存媒體1030可以是短暫儲存或持久儲存。儲存在儲存媒體1030的程式可以包括一個或一個以上模組(圖示沒標出),每個模組可以包括對伺服器中的一系列指令操作。更進一步地,中央處理器1022可以設置爲與儲存媒體1030通信,在伺服器1000上執行儲存媒體1030中的一系列指令操作。加速設備1024可執行中央處理器1022分配的任務,例如圖像處理任務。伺服器1000可以爲本申請實施例提供的數據處理裝置。
伺服器1000還可以包括一個或一個以上電源1026,一個或一個以上有線或無線網路介面1050,一個或一個以上輸入輸出介面1058,和/或,一個或一個以上操作系統1041,例如Windows ServerTM,Mac OS XTM,UnixTM, LinuxTM,FreeBSDTM等等。
上述實施例中由數據處理裝置所執行的步驟可以基于該圖10所示的伺服器結構。具體的,加速設備1024可實現圖8中處理模組801的功能,有線或無線網路介面1050可實現圖8中收發模組802的功能。具體的,加速設備1024可實現圖9中處理模組902的功能,有線或無線網路介面1050或者輸入輸出介面1058可實現圖9中獲取模組的功能。
圖11爲本申請實施例提供的一種終端設備的結構示意圖。如圖11所示,該終端設備110包括處理器1101、記憶體1102和通訊介面1103;該處理器1101、記憶體1102和通訊介面1103通過匯流排1104相互連接。圖11中的終端設備可以爲前述實施例中的數據處理裝置。
記憶體1102包括但不限于是隨機存取記憶體(random access memory,RAM)、唯讀記憶體(read-only memory,ROM)、可擦除可編程唯讀記憶體(erasable programmableread only memory,EPROM)、或可攜式唯讀記憶體(compact disc read-only memory,CDROM),該記憶體1102用以相關指令及數據。通訊介面1103用以接收和發送數據。
處理器1101可以包括一個或多個CPU以及一個或多個GPU,在處理器1101包括一個CPU的情况下,該CPU可以是單核CPU,也可以是多核CPU。上述實施例中由數據處理裝置所執行的步驟可以基于該圖11所示的終端設備的結構。具體的,處理器1101可實現圖8中處理模組801的功能,通訊介面1103可實現圖8中收發模組的功能。具體的,處理器1101可實現圖9中處理模組902的功能,通訊介面1103可實現圖9中獲取模組的功能。
在本申請的實施例中提供一種計算機可讀儲存媒體,上述計算機可讀儲存媒體儲存有計算機程式,上述計算機程式被處理器執行時實現前述實施例所提供的神經網路模型的訓練方法。
在本申請的實施例中提供一種計算機可讀儲存媒體,上述計算機可讀儲存媒體儲存有計算機程式,上述計算機程式被處理器執行時實現前述實施例所提供的圖像預測方法。
本申請實施例提供了一種包含指令的計算機程式産品,當其在計算機上運行時,使得計算機執行前述實施例所提供的神經網路模型的訓練方法。
本申請實施例提供了一種包含指令的計算機程式産品,當其在計算機上運行時,使得計算機執行前述實施例所提供的圖像預測方法。
以上所述,僅爲本申請的具體實施方式,但本申請的保護範圍並不局限于此,任何熟悉本技術領域的技術人員在本申請揭露的技術範圍內,可輕易想到各種等效的修改或替換,這些修改或替換都應涵蓋在本申請的保護範圍之內。因此,本申請的保護範圍應以權利要求的保護範圍爲准。
201:第一工作節點基于對神經網路模型進行的當前迭代,得到上述神經網路模型的至少一個網路層的本地梯度信息 202:第一工作節點在與至少一個第二工作節點進行上述神經網路模型中的第一網路層的本地梯度信息傳輸的過程中,併行地更新上述神經網路模型中的第二網路層的參數 301:逆序逐層操作實現梯度數據同步的數據流 302:逆序逐層操作實現參數更新的數據流 401:逆序逐層操作實現反向計算的數據流 501:第一工作節點將訓練樣本輸入至神經網路模型進行前向計算,得到處理結果 502:第一工作節點利用上述處理結果和上述神經網路模型進行反向計算,得到神經網路模型的至少一個網路層的本地梯度信息 503:第一工作節點基于中間融合梯度信息和當前迭代對應的本地梯度信息,得到上述神經網路模型的至少一個網路層的目標融合梯度信息 504:判斷是否達到內層迭代門檻值 505:第一工作節點執行全域通信操作,得到全域梯度信息 506:第一工作節點利用全域梯度信息更新神經網路模型 601:神經網路模型的各網路層 602:各網路層的本地梯度信息 603:合併後的各網路層的本地梯度信息 701:圖像處理裝置獲取待處理圖像 702:利用訓練得到的神經網路模型對上述待處理圖像進行預測處理,得到預測結果 801:處理模組 802:收發模組 901:獲取模組 902:處理模組 1000:伺服器 1022:中央處理器 1024:加速設備 1026:電源 1030:儲存媒體 1032:記憶體 1041:操作系統 1042:應用程式 1044:數據 1050:有線或無線網路介面 1058:輸入輸出介面 110:終端設備 1101:處理器 1102:記憶體 1103:通訊介面 1104:匯流排
圖1爲本申請實施例提供的一種分散式訓練流程圖的示例。 圖2爲本申請實施例提供的一種神經網路模型的訓練方法流程圖。 圖3爲本申請實施例提供的一種計算和通信重叠的示例的示意圖。 圖4爲本申請實施例提供的另一種計算和通信重叠的示例的示意圖。 圖5爲本申請實施例提供的一種內層迭代方法流程圖。 圖6爲本申請實施例提供的一種通信融合策略的一個示例的示意圖。 圖7爲本申請實施例提供的一種圖像預測方法流程圖。 圖8爲本申請實施例提供的一種數據處理裝置的結構示意圖。 圖9爲本申請實施例提供的另一種數據處理裝置的結構示意圖。 圖10爲本申請實施例提供的一種伺服器的結構示意圖。 圖11爲本申請實施例提供的一種終端設備的結構示意圖。
201:第一工作節點基于對神經網路模型進行的當前迭代,得到上述神經網路模型的至少一個網路層的本地梯度信息
202:第一工作節點在與至少一個第二工作節點進行上述神經網路模型中的第一網路層的本地梯度信息傳輸的過程中,併行地更新上述神經網路模型中的第二網路層的參數

Claims (15)

  1. 一種神經網路模型的訓練方法,包括: 第一工作節點基于對神經網路模型進行的當前迭代,得到所述神經網路模型的至少一個網路層的本地梯度信息; 在與至少一個第二工作節點進行所述神經網路模型中的第一網路層的本地梯度信息傳輸的過程中,所述第一工作節點併行地更新所述神經網路模型中的第二網路層的參數。
  2. 如請求項1所述的神經網路模型的訓練方法,還包括: 所述第一工作節點基于所述神經網路模型的多個網路層的連接關係,確定所述當前迭代的多個操作之間的依賴關係,所述多個操作至少包括所述神經網路模型中至少一個網路層的本地梯度信息的傳輸操作和參數更新操作; 其中,所述第一工作節點基于所述多個操作之間的依賴關係執行所述多個操作。
  3. 如請求項1或2所述的神經網路模型的訓練方法,其中所述第一工作節點以逆序的方式逐層更新所述神經網路模型中多個網路層的參數;和/或 所述第二網路層的網路深度大于所述第一網路層的網路深度。
  4. 如請求項1或2所述的方法,其中所述在與至少一個第二工作節點進行所述神經網路模型中的第一網路層的本地梯度信息傳輸的過程中,所述第一工作節點併行地更新所述神經網路模型中的第二網路層的參數包括: 所述第一工作節點在與所述至少一個第二工作節點進行所述神經網路模型中的所述第一網路層的本地梯度信息傳輸的過程中,在確定所述第二網路層的參數更新操作所依賴的操作已完成的情况下,併行地更新所述第二網路層的參數,其中,所述參數更新操作所依賴的操作包括與所述至少一個第二工作節點傳輸所述第二網路層的本地梯度信息。
  5. 如請求項1或2所述的神經網路模型的訓練方法,其中所述方法還包括: 所述第一工作節點在與至少一個第二工作節點進行所述神經網路模型中的所述第一網路層的本地梯度信息傳輸的過程中,計算所述神經網路模型中的第三網路層的本地梯度信息。
  6. 如請求項1或2所述的神經網路模型的訓練方法,其中在所述第一工作節點對神經網路模型進行當前迭代之前,所述方法還包括: 所述第一工作節點對所述神經網路模型進行至少一次內層迭代,得到所述至少一次內層迭代對應的中間融合梯度信息; 所述第一工作節點基于對神經網路模型進行的當前迭代,得到所述神經網路模型的至少一個網路層的本地梯度信息,包括:所述第一工作節點基于所述中間融合梯度信息和所述當前迭代對應的本地梯度信息,得到所述神經網路模型的至少一個網路層的目標融合梯度信息;所述第一工作節點與所述至少一個第二工作節點傳輸的所述第一網路層的本地梯度信息包括所述第一網路層的目標融合梯度信息。
  7. 如請求項6所述的神經網路模型的訓練方法,其中所述第一工作節點基于所述中間融合梯度信息和所述當前迭代對應的本地梯度信息,得到所述神經網路模型的至少一個網路層的目標融合梯度信息包括: 所述第一工作節點對所述中間融合梯度信息和所述當前迭代得到的本地梯度信息進行累加處理,得到所述神經網路模型的至少一個網路層的目標融合梯度信息。
  8. 如請求項6所述的神經網路模型的訓練方法,還包括: 所述第一工作節點在基于所述中間融合梯度信息和所述當前迭代對應的本地梯度信息,得到所述神經網路模型的第三網路層的目標融合梯度信息的過程中,併行地與所述至少一個第二工作節點進行所述神經網路模型的第四網路層的目標融合梯度信息的傳輸。
  9. 如請求項1或2所述的神經網路模型的訓練方法,其中在與至少一個第二工作節點進行所述神經網路模型中的第一網路層的本地梯度信息傳輸之前,所述方法還包括: 所述第一工作節點將所述第一網路層的本地梯度信息中的各個數值均放大M倍,並將放大後的各個數值轉換爲半精度;所述M爲大于1的實數。
  10. 如請求項1或2所述的神經網路模型的訓練方法,其中所述第一工作節點併行地更新所述神經網路模型中的第二網路層的參數之前,所述方法還包括: 所述第一工作節點將獲得的所述第二網路層的本地梯度信息中包括的各個數值轉換爲單精度,並將所述轉換得到的各個數值縮小M倍以得到處理梯度信息,所述M爲大于1的實數; 所述第一工作節點併行地更新所述神經網路模型中的第二網路層的參數包括: 所述第一工作節點利用所述處理梯度信息更新所述神經網路模型中的所述第二網路層的參數。
  11. 一種圖像預測方法,包括: 獲取待處理圖像; 利用權利要求1至10任一項訓練得到的神經網路模型對所述待處理圖像進行預測處理,得到預測結果。
  12. 一種數據處理裝置,包括: 處理模組,用以基于對神經網路模型進行的當前迭代,得到所述神經網路模型的至少一個網路層的本地梯度信息; 收發模組,用以與至少一個第二工作節點進行所述神經網路模型中的第一網路層的本地梯度信息的傳輸; 所述處理模組,還用以在所述收發模組與至少一個第二工作節點進行所述神經網路模型中的第一網路層的本地梯度信息傳輸的過程中,併行地更新所述神經網路模型中的第二網路層的參數。
  13. 一種數據處理裝置,包括: 獲取模組,用以獲取待處理圖像; 處理模組,用以利用權利要求1至10任一項訓練得到的神經網路模型對所述待處理圖像進行預測處理,得到預測結果。
  14. 一種計算機可讀儲存媒體,其中所述計算機可讀儲存媒體中儲存有計算機程式,所述計算機程式包括程式指令,所述程式指令當被移動設備的處理器執行時,使所述處理器執行權利要求1至11任意一項所述的神經網路模型的訓練方法。
  15. 一種電子設備,包括記憶體和處理器,其中,所述記憶體用以儲存指令,所述處理器用以執行所述記憶體儲存的指令,使得所述處理器執行如權利要求1至11任一項所述的神經網路模型的訓練方法。
TW110119475A 2020-06-03 2021-05-28 神經網路模型的訓練方法和相關産品 TW202147188A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN202010496921.7A CN111723933B (zh) 2020-06-03 2020-06-03 神经网络模型的训练方法和相关产品
CN202010496921.7 2020-06-03

Publications (1)

Publication Number Publication Date
TW202147188A true TW202147188A (zh) 2021-12-16

Family

ID=72565896

Family Applications (1)

Application Number Title Priority Date Filing Date
TW110119475A TW202147188A (zh) 2020-06-03 2021-05-28 神經網路模型的訓練方法和相關産品

Country Status (4)

Country Link
KR (1) KR20220054861A (zh)
CN (1) CN111723933B (zh)
TW (1) TW202147188A (zh)
WO (1) WO2021244354A1 (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111723933B (zh) * 2020-06-03 2024-04-16 上海商汤智能科技有限公司 神经网络模型的训练方法和相关产品
CN115222038A (zh) * 2021-04-16 2022-10-21 华为技术有限公司 一种梯度传输方法及相关装置
CN112866041B (zh) * 2021-04-23 2022-04-19 南京蓝洋智能科技有限公司 一种自适应性的网络系统的训练方法
CN113626652B (zh) * 2021-10-11 2021-12-17 北京一流科技有限公司 数据处理网络系统、数据处理网络部署系统及其方法
CN114792125B (zh) * 2022-04-15 2023-06-23 北京百度网讯科技有限公司 基于分布式训练的数据处理方法、装置、电子设备和介质
CN115328579B (zh) * 2022-10-11 2023-02-24 山东海量信息技术研究院 神经网络训练的调度方法、系统及计算机可读存储介质
CN116955365B (zh) * 2023-09-21 2024-02-09 浪潮电子信息产业股份有限公司 梯度数据同步方法、模型训练方法、系统、设备及介质

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2881862B1 (en) * 2012-07-30 2018-09-26 Nec Corporation Distributed processing device and distributed processing system as well as distributed processing method
US10152676B1 (en) * 2013-11-22 2018-12-11 Amazon Technologies, Inc. Distributed training of models using stochastic gradient descent
US10949746B2 (en) * 2016-10-27 2021-03-16 International Business Machines Corporation Efficient parallel training of a network model on multiple graphics processing units
US11288575B2 (en) * 2017-05-18 2022-03-29 Microsoft Technology Licensing, Llc Asynchronous neural network training
US11093827B2 (en) * 2017-09-20 2021-08-17 International Business Machines Corporation Variable ISA vector-based compaction in distributed training of neural networks
CN107578094A (zh) * 2017-10-25 2018-01-12 济南浪潮高新科技投资发展有限公司 基于参数服务器和fpga实现神经网络分布式训练的方法
CN108021395B (zh) * 2017-12-27 2022-04-29 北京金山安全软件有限公司 一种面向神经网络的数据并行处理方法及系统
US11630994B2 (en) * 2018-02-17 2023-04-18 Advanced Micro Devices, Inc. Optimized asynchronous training of neural networks using a distributed parameter server with eager updates
CN109600255A (zh) * 2018-12-04 2019-04-09 中山大学 一种去中心化的参数服务器优化算法
CN109919313B (zh) * 2019-01-31 2021-06-08 华为技术有限公司 一种梯度传输的方法及分布式训练系统
CN109871942B (zh) * 2019-02-19 2021-06-11 上海商汤智能科技有限公司 神经网络的训练方法和装置、系统、存储介质
CN110378472A (zh) * 2019-07-24 2019-10-25 苏州浪潮智能科技有限公司 一种深度神经网络模型的数据并行训练方法、装置及设备
CN110379416B (zh) * 2019-08-15 2021-10-22 腾讯科技(深圳)有限公司 一种神经网络语言模型训练方法、装置、设备及存储介质
CN110600020B (zh) * 2019-09-12 2022-05-17 上海依图信息技术有限公司 一种梯度传输方法及装置
CN111723933B (zh) * 2020-06-03 2024-04-16 上海商汤智能科技有限公司 神经网络模型的训练方法和相关产品

Also Published As

Publication number Publication date
CN111723933B (zh) 2024-04-16
CN111723933A (zh) 2020-09-29
KR20220054861A (ko) 2022-05-03
WO2021244354A1 (zh) 2021-12-09

Similar Documents

Publication Publication Date Title
TW202147188A (zh) 神經網路模型的訓練方法和相關産品
CN104346433B (zh) 用于数据库查询操作的可缩放加速的方法和系统
US20210374503A1 (en) Network-centric architecture and algorithms to accelerate distributed training of neural networks
US20210295168A1 (en) Gradient compression for distributed training
CN112884086B (zh) 模型训练方法、装置、设备、存储介质以及程序产品
CN111723932A (zh) 神经网络模型的训练方法和相关产品
CN111343602B (zh) 基于进化算法的联合布局与任务调度优化方法
EP3731089B1 (en) Scheduling method and related apparatus
CN116762080A (zh) 神经网络生成装置、神经网络运算装置、边缘设备、神经网络控制方法以及软件生成程序
CN102427420B (zh) 基于图模式匹配的虚拟网络映射方法及装置
CN116668351A (zh) 服务质量预测方法、装置、计算机设备及存储介质
CN104360936B (zh) 一种基于触发操作的Barrier操作性能分析方法
CN115994040A (zh) 计算系统以及进行数据广播和数据归约的方法及存储介质
EP4071619A1 (en) Address generation method, related device and storage medium
CN115346099A (zh) 基于加速器芯片的图像卷积方法、芯片、设备及介质
US11475311B2 (en) Neural network instruction streaming
US20210312325A1 (en) Mixed-precision neural processing unit (npu) using spatial fusion with load balancing
CN114118358A (zh) 图像处理方法、装置、电子设备、介质及程序产品
Tian et al. DART: distributed particle filter algorithm with resampling tree for ultimate real-time capability
CN115774800B (zh) 基于numa架构的时变图处理方法、电子设备、介质
CN113419931B (zh) 分布式机器学习系统的性能指标确定方法及装置
US20160259670A1 (en) Computer readable medium, mapping information generating method, and mapping information generating apparatus
WO2023173912A1 (zh) 一种处理单元pe阵列的配置方法和相关设备
JP7437593B2 (ja) 演算装置、及び演算方法
WO2021081809A1 (zh) 网络结构搜索的方法、装置、存储介质和计算机程序产品