利用GPU集群更新卷積神經網路的方法、裝置及設備
本說明書的一個或多個實施例涉及圖形處理技術領域,尤其涉及一種利用GPU集群更新卷積神經網路的方法、裝置及設備。
圖片分類就是根據圖片的語義資訊將不同類別的圖片區分開來,是電腦視覺最重要的研究課題之一。隨著人工智慧特別是深度學習的發展,圖片分類演算法取得了前所未有的進步。特別是,卷積神經網路(Convolutional Neural Networks,CNN)讓機器識別圖片的能力首次超越了人類。
在使用卷積神經網路對圖片進行分類之前,通常需要圖形處理器(Graphics Processing Unit,GPU)基於大量的訓練樣本,對卷積神經網路進行更新(也稱訓練)。然而,在更新卷積神經網路的過程中,GPU通常需要耗費大量的記憶體來儲存卷積神經網路的各層網路的參數以及輸出結果。以其中的全聯接層(fully connected layer,FC)為例來說,由於全聯接層的每一個節點都與上一層的所有節點相連,用來把前面提取到的特徵綜合起來,因此,與該層網路對應的參數以及輸出結果通常需要耗費大量的記憶體。從而,對於部分記憶體容量比較小的GPU,其通常無法完成卷積神經網路的更新。
本說明書的一個或多個實施例描述了一種利用GPU集群更新卷積神經網路的方法、裝置及設備,可以有效而準確地對卷積神經網路進行更新。
第一方面,提供了一種利用GPU集群更新卷積神經網路的方法,所述GPU集群包括第一GPU以及若干其它GPU,所述第一GPU具有所述卷積神經網路的前端各層網路的參數,所述第一GPU和所述其它GPU共同具有所述卷積神經網路的後端各層網路的參數,該方法由所述第一GPU執行,包括:
獲取帶分類標籤的樣本;
基於所述前端各層網路的參數,對所述樣本執行與所述前端各層網路相應的第一操作,得到所述樣本的第一操作結果;
基於所述第一操作結果以及具有的後端各層網路的參數,對所述樣本執行相應的第二操作得到第二操作結果;
將所述第一操作結果分別發送給所述其它GPU,以使得其它各GPU分別基於各自具有的後端各層網路的參數以及所述第一操作結果,對所述樣本執行相應的第三操作;
接收所述其它各GPU在執行相應的第三操作後得到的第三操作結果;
合併所述第二操作結果和所述第三操作結果得到所述樣本的分類結果;
根據所述分類結果和所述樣本的分類標籤,確定預測誤差;
根據所述預測誤差,更新所述卷積神經網路。
第二方面,提供了一種利用GPU集群更新卷積神經網路的方法,所述GPU集群包括第一GPU以及若干其它GPU,所述其它GPU具有所述卷積神經網路的前端各層網路的參數,所述第一GPU和所述其它GPU共同具有所述卷積神經網路的後端各層網路的參數,該方法由所述其它GPU中任意的第二GPU執行,包括:
接收所述第一GPU發送的樣本的第一操作結果;所述樣本具有分類標籤;
基於所述第一操作結果以及具有的後端各層網路的參數,對所述樣本執行相應的第三操作得到第三操作結果;
向所述第一GPU發送所述第三操作結果,以使得所述第一GPU在獲取到其它各GPU發送的第三操作結果後,對所述樣本的第二操作結果以及所述第三操作結果進行合併,得到所述樣本的分類結果;所述樣本的第二操作結果是由所述第一GPU基於所述第一操作結果以及具有的後端各層網路的參數對所述樣本執行相應的第二操作後得到的;還使得所述第一GPU根據所述分類結果和所述樣本的分類標籤,確定預測誤差;根據所述預測誤差,更新所述卷積神經網路。
第三方面,提供了一種利用GPU集群的圖片分類方法,所述GPU集群包括第一GPU以及若干其它GPU,所述第一GPU具有卷積神經網路的前端各層網路的參數,所述第一GPU和所述其它GPU共同具有所述卷積神經網路的後端各層網路的參數,該方法由所述第一GPU執行,包括:
獲取待分類圖片;
基於所述前端各層網路的參數,對所述待分類圖片執行與所述前端各層網路相應的第一操作,得到所述待分類圖片的第一操作結果;
基於所述第一操作結果以及具有的後端各層網路的參數,對所述待分類圖片執行相應的第二操作得到第二操作結果;
將所述第一操作結果分別發送給所述其它GPU,以使得其它各GPU分別基於各自具有的後端各層網路的參數以及所述第一操作結果,對所述待分類圖片執行相應的第三操作;
接收所述其它各GPU在執行相應的第三操作後得到的第三操作結果;
合併所述第二操作結果和所述第三操作結果得到所述待分類圖片的分類結果。
第四方面,提供了一種利用GPU集群更新卷積神經網路的裝置,所述GPU集群包括第一GPU以及若干其它GPU,所述第一GPU具有所述卷積神經網路的前端各層網路的參數,所述第一GPU和所述其它GPU共同具有所述卷積神經網路的後端各層網路的參數,該裝置包括:
獲取單元,用於獲取帶分類標籤的樣本;
第一操作單元,用於基於所述前端各層網路的參數,對所述獲取單元獲取的所述樣本執行與所述前端各層網路相應的第一操作,得到所述樣本的第一操作結果;
第二操作單元,用於基於所述第一操作結果以及具有的後端各層網路的參數,對所述樣本執行相應的第二操作得到第二操作結果;
發送單元,用於將所述第一操作結果分別發送給所述其它GPU,以使得其它各GPU分別基於各自具有的後端各層網路的參數以及所述第一操作結果,對所述樣本執行相應的第三操作;
接收單元,用於接收所述其它各GPU在執行相應的第三操作後得到的第三操作結果;
合併單元,用於合併所述第二操作結果和所述第三操作結果得到所述樣本的分類結果;
確定單元,用於根據所述分類結果和所述樣本的分類標籤,確定預測誤差;
更新單元,用於根據所述確定單元確定的所述預測誤差,更新所述卷積神經網路。
第五方面,提供了一種利用GPU集群更新卷積神經網路的裝置,所述GPU集群包括第一GPU以及若干其它GPU,所述其它GPU具有所述卷積神經網路的前端各層網路的參數,所述第一GPU和所述其它GPU共同具有所述卷積神經網路的後端各層網路的參數,該裝置包括:
接收單元,用於接收所述第一GPU發送的樣本的第一操作結果;所述樣本具有分類標籤;
第三操作單元,用於基於所述接收單元接收的所述第一操作結果以及具有的後端各層網路的參數,對所述樣本執行相應的第三操作得到第三操作結果;
發送單元,用於向所述第一GPU發送所述第三操作結果,以使得所述第一GPU在獲取到其它各GPU發送的第三操作結果後,對所述樣本的第二操作結果以及所述第三操作結果進行合併,得到所述樣本的分類結果;所述樣本的第二操作結果是由所述第一GPU基於所述第一操作結果以及具有的後端各層網路的參數對所述樣本執行相應的第二操作後得到的;還使得所述第一GPU根據所述分類結果和所述樣本的分類標籤,確定預測誤差;根據所述預測誤差,更新所述卷積神經網路。
第六方面,提供了一種利用GPU集群的圖片分類裝置,所述GPU集群包括第一GPU以及若干其它GPU,所述第一GPU具有卷積神經網路的前端各層網路的參數,所述第一GPU和所述其它GPU共同具有所述卷積神經網路的後端各層網路的參數,該裝置包括:
獲取單元,用於獲取待分類圖片;
第一操作單元,用於基於所述前端各層網路的參數,對所述獲取單元獲取的所述待分類圖片執行與所述前端各層網路相應的第一操作,得到所述待分類圖片的第一操作結果;
第二操作單元,用於基於所述第一操作結果以及具有的後端各層網路的參數,對所述待分類圖片執行相應的第二操作得到第二操作結果;
發送單元,用於將所述第一操作結果分別發送給所述其它GPU,以使得其它各GPU分別基於各自具有的後端各層網路的參數以及所述第一操作結果,對所述待分類圖片執行相應的第三操作;
接收單元,用於接收所述其它各GPU在執行相應的第三操作後得到的第三操作結果;
合併單元,用於合併所述第二操作結果和所述第三操作結果得到所述待分類圖片的分類結果。
第七方面,提供了一種更新卷積神經網路的設備,包括第一GPU以及若干其它GPU,所述第一GPU具有所述卷積神經網路的前端各層網路的參數,所述第一GPU和所述其它GPU共同具有所述卷積神經網路的後端各層網路的參數,所述第一GPU在運行時實現以下步驟:
獲取帶分類標籤的樣本;
基於所述前端各層網路的參數,對所述樣本執行與所述前端各層網路相應的第一操作,得到所述樣本的第一操作結果;
基於所述第一操作結果以及具有的後端各層網路的參數,對所述樣本執行相應的第二操作得到第二操作結果;
將所述第一操作結果分別發送給所述其它GPU,以使得其它各GPU分別基於各自具有的後端各層網路的參數以及所述第一操作結果,對所述樣本執行相應的第三操作;
接收所述其它各GPU在執行相應的第三操作後得到的第三操作結果;
合併所述第二操作結果和所述第三操作結果得到所述樣本的分類結果;
根據所述分類結果和所述樣本的分類標籤,確定預測誤差;
根據所述預測誤差,更新所述卷積神經網路。
第八方面,提供了一種更新卷積神經網路的設備,包括第一GPU以及若干其它GPU,所述其它GPU具有所述卷積神經網路的前端各層網路的參數,所述第一GPU和所述其它GPU共同具有所述卷積神經網路的後端各層網路的參數,所述其它GPU中任意的第二GPU在運行時實現以下步驟:
接收所述第一GPU發送的樣本的第一操作結果;所述樣本具有分類標籤;
基於所述第一操作結果以及具有的後端各層網路的參數,對所述樣本執行相應的第三操作得到第三操作結果;
向所述第一GPU發送所述第三操作結果,以使得所述第一GPU在獲取到其它各GPU發送的第三操作結果後,對所述樣本的第二操作結果以及所述第三操作結果進行合併,得到所述樣本的分類結果;所述樣本的第二操作結果是由所述第一GPU基於所述第一操作結果以及具有的後端各層網路的參數對所述樣本執行相應的第二操作後得到的;還使得所述第一GPU根據所述分類結果和所述樣本的分類標籤,確定預測誤差;根據所述預測誤差,更新所述卷積神經網路。
第九方面,提供了一種圖片分類設備,包括第一GPU以及若干其它GPU,所述第一GPU具有所述卷積神經網路的前端各層網路的參數,所述第一GPU和所述其它GPU共同具有所述卷積神經網路的後端各層網路的參數,所述第一GPU在運行時實現以下步驟:
獲取待分類圖片;
基於所述前端各層網路的參數,對所述待分類圖片執行與所述前端各層網路相應的第一操作,得到所述待分類圖片的第一操作結果;
基於所述第一操作結果以及具有的後端各層網路的參數,對所述待分類圖片執行相應的第二操作得到第二操作結果;
將所述第一操作結果分別發送給所述其它GPU,以使得其它各GPU分別基於各自具有的後端各層網路的參數以及所述第一操作結果,對所述待分類圖片執行相應的第三操作;
接收所述其它各GPU在執行相應的第三操作後得到的第三操作結果;
合併所述第二操作結果和所述第三操作結果得到所述待分類圖片的分類結果。
本說明書的一個或多個實施例提供的利用GPU集群更新卷積神經網路的方法、裝置及設備,第一GPU獲取帶分類標籤的樣本。基於前端各層網路的參數,對樣本執行第一操作得到第一操作結果。基於第一操作結果以及具有的後端各層網路的參數,對樣本執行第二操作得到第二操作結果。將第一操作結果分別發送給其它GPU。接收其它各GPU在基於各自具有的後端各層網路的參數以及第一操作結果,對樣本執行第三操作後得到的第三操作結果。合併第二操作結果和第三操作結果得到分類結果。根據分類結果和分類標籤,確定預測誤差。根據預測誤差,更新卷積神經網路。由此可以看出,本說明書提供的方案可以基於多個GPU來對卷積神經網路進行更新,從而可以有效而準確地對卷積神經網路進行更新。
下面結合圖式,對本說明書提供的方案進行描述。
在描述本說明書提供的方案之前,先對本方案的發明構思作以下介紹。
根據背景技術的內容可知,在圖形處理技術領域,通用的圖片分類方法即為基於卷積神經網路的分類方法。其中,以AlexNet,Inception系列,VGG,ResNet系列的卷積神經網路的性能較為卓越。經過研究發現,這些卷積神經網路基本都使用了softmax層作為最後分類的輸出。而softmax層的輸入層通常是一個全聯接層(fully connected layer,FC)或者一個卷積層(convolutional layer,CONV)。
如果softmax層的輸入層是FC層,假設該FC層輸入的資料大小為[N, H, W, I],輸出資料的大小為[N, O],則FC層的參數總個數為:H*W*I*O。這裡,H為FC層輸入的圖片(image)的高度,W為圖片的寬度,N為圖片的個數,I為FC層輸入的特徵圖(feature map)的個數,O是FC層輸出的特徵圖的大小(也即softmax層分類的個數)。如果softmax層的輸入層是CONV層,假設該CONV層輸入的資料大小為[N, H, W, I],輸出資料的大小為[N, O],卷積核大小為K*K(這裡的K通常為1,3,5等比較小的奇數),則該CONV層的參數總個數為:K*K*I*O。為方便討論,後續將softmax層及其輸入層FC層稱為FC-Softmax組合,將softmax層及其輸入層CONV層稱為Conv-Softmax組合。
假設CNN各層網路的參數以及對應的輸出結果以位元組(Byte)為單位進行儲存。則FC-softmax組合需要H*W*I*O*B位元組儲存該層參數,需要N*O*B位元組儲存softmax層的輸出結果。對Conv-softmax組合,需要
K*K*I*O*B位元組儲存該層參數,需要N*O*B位元組儲存softmax層的輸出結果。對於需要基於大規模的訓練樣本,來對卷積神經網路進行訓練的情況,如在訓練用於進行人臉識別的模型時,通常基於大規模的人臉圖片。如,人臉圖片的個數可能等於參與分類的人口總數。也就是說,上述公式中的O=10億。在O=10億情況下,當N=1時,FC-softmax組合需要至少4(H*W*I+1)GB記憶體,Conv-Softmax組合需要至少4(K*K*I+1)GB記憶體。這裡的4用於表示儲存的參數或者輸出結果為單精度浮點數。典型地,H=W=7,I=16,32,64,128,512或者1024等。而目前主流的圖形處理器(Graphics Processing Unit,GPU)設備記憶體只有16GB,遠遠小於FC-softmax組合或者Conv-Softmax組合需要的記憶體。在這種情況下,單個GPU無法完成卷積神經網路的訓練任務。
因此,本申請案的申請人考慮可將FC-Softmax組合或者Conv-Softmax組合的參數均勻分散到多個GPU上,然後利用多個GPU分散式記憶體完成訓練。這裡的多個GPU也可以稱為分散式GPU集群。
此外,申請人還考慮到對除FC-Softmax組合和Conv-Softmax組合的其它層,如卷積層或者池化層等(為方便討論,以下簡稱前端各層網路),由於其對應的參數占用的記憶體較少,因此如果將前端各層網路的參數也均勻分散到多個GPU上的話,會降低GPU利用率,浪費計算資源。為節約電腦資源,本方案對於前端各層網路仍然採用基於mini-batch的資料平行模式完成訓練,即每個GPU中儲存前端各層網路的全部的參數。
在這種情況下,假設GPU個數為P,每個GPU接收N張圖片輸入,整個網路訓練的批次大小(batch size)就是N*P。這裡的P和N均為正整數。在前端各層網路,每個時刻,N*P張圖片在所有GPU上被同時處理。在後端各層網路(如,FC-Softmax組合或者Conv-Softmax組合),每個時刻,所有GPU在處理同一張圖片。
需要說明的是,在前端各層網路,雖然P個GPU在理論上可以同時運行,但是對於部分層(如,批次正規化(batch normalization,BN)層)需要基於整個batch內的資料才能完成相應的操作,因此,該P個GPU之間通常還需要進行相互通訊。此外,在後端各層網路,由於P個GPU共同協作來處理一張圖片,因此,各個GPU間也需要進行通訊。在本說明書中,該P個GPU之間可以基於支持分散式通訊和計算的應用程式化介面函數庫進行相互通訊。該函數庫例如可以為信息傳遞介面(Message Passing Interface,MPI)庫或者Rabit庫等。
此外,由於對每張圖片,所有的GPU都要參與處理,因此可以指定一個GPU作為協調者(coordinator)來統籌和維護整個處理過程。該一個GPU也通常稱為具有協調和/或管理功能的GPU,其可以指定目前正在處理的圖片,以及最後負責把一個批次的圖片的分類結果拼接到一起輸出等等。
以上就是本方案的發明構思,基於以上的發明構思就可以得到本方案,以下對本方案進行詳細闡述。
圖1為本說明書提供的更新卷積神經網路的方法示意圖。圖1中,該分散式GPU集群中可以包括P個GPU:GPU0、GPU1、…、GPUP-1,且GPU0為具有協調和/或管理功能的GPU。其中,GPU0中可以具有CNN的前端各層網路的全部的參數以及後端各層網路的第一部分參數,GPU1中可以具有有CNN的前端各層網路的全部的參數以及後端各層網路的第二部分參數,依次類推。以後端某層網路為FC層為例來說,假設與FC層對應的參數可以構成n*m的矩陣,那麽,每個GPU中具有的該層的部分參數的個數可以表示為:(n*m)/P。特別地,當GPU的個數比較多時,各個GPU可以只初始化矩陣中的一列或者一行參數,本說明書對此不作限定。
需要說明的是,對於上述前端各層網路的參數,P個GPU可以各自獨立初始化,也可以統一初始化。如果獨立初始化,則該P個GPU之間不需要進行通訊。如果統一初始化,則一個GPU(如,GPU0)在完成初始化之後,可以向其它GPU廣播其初始化的參數,由此來完成各個GPU之間的統一初始化。對於上述後端各層網路的參數,由於各個GPU只儲存部分參數,從而各個GPU可以獨立完成初始化。
如圖1所示,本說明書提供的前端各層網路可以包括卷積層、BN層以及其它層,該BN層位於卷積層之後,用於對卷積層輸出的中間結果進行正規化處理。由於中間結果的正規化處理通常是基於一個批次的樣本(即P*N張圖片)來完成的,因此,各個GPU之間通常需要進行相互通訊,具體通訊內容後續說明。此外,圖1中還示出,在FC層以及Softmax層各個GPU之間通常也需要進行相互通訊,具體通訊內容也後續進行說明。
以上是對圖1的整體說明,以下將結合圖2來對卷積神經網路的更新過程進行詳細說明。圖2中,假設該方法的執行主體為GPU0(也稱第一GPU),即上述具有協調和管理功能的GPU,那麽該方法可以包括如下步驟:
步驟202,獲取帶分類標籤的樣本。
需要說明的是,GPU0在獲取樣本的同時,其它GPU也可以獲取各自對應的其它樣本。P個GPU共同獲取的樣本構成一個批次的樣本。在一個例子中,上述樣本可以為圖片,從而上述分類標籤可以是指人為預先標定好的圖片類別。
步驟204,基於前端各層網路的參數,對樣本執行與前端各層網路相應的第一操作,得到樣本的第一操作結果。
同樣地,其它各GPU也可以分別根據各自具有的前端各層網路的參數,對各自獲取的其它樣本執行與前端各層網路相應的第一操作,得到其它樣本的第一操作結果。
如前所述,這裡的前端各層網路可以包括卷積層、BN層以及其它層等。以某層網路為卷積層為例來說,GPU0根據儲存的卷積層的參數,對樣本執行與該卷積層對應的第一操作可以包括:GPU0根據與該卷積層對應的多個卷積核,對樣本執行卷積操作,從而得到第一中間結果。之後將第一中間結果輸入BN層,在BN層,GPU0在獲取到上述第一中間結果後,可以等待其它各GPU完成對各自獲取的其它樣本的卷積操作。之後,GPU0可以讀取其它各GPU在完成對各自獲取的其它樣本的卷積操作後所得到的第二中間結果。最後GPU0基於上述第一中間結果以及第二中間結果,對第一中間結果進行正規化處理。根據與BN層對應的尺度因子和平移因子,對正規化後的第一中間結果進行尺度變換和偏移。將尺度變換和偏移後的第一中間結果輸入其它層,並根據其它層的參數對樣本執行相應的其它操作,直至得到樣本的第一操作結果。
其它GPU執行與前端各層網路相對應的第一操作的過程類似,在此不復贅述。
需要說明的是,由於P個GPU均具有CNN的前端各層網路的參數,因此P個GPU可以針對各自獲取的樣本同時執行上述第一操作。此外,由於每個GPU中只儲存了CNN的後端各層網路的部分的參數,因此,對執行完成上述第一操作的目前一個樣本,可以由P個GPU共同對其執行與後端各層網路對應的第二操作和第三操作。以下對該共同執行過程進行說明。
步驟206,基於第一操作結果以及具有的後端各層網路的參數,對樣本執行相應的第二操作得到第二操作結果。
以樣本為圖片為例來說,樣本的第一操作結果可以理解為是由前端各層網路從圖片中提取的多張特徵圖。以後端各層網路為FC-Softmax組合為例來說,假設GPU0中儲存有FC層的一列參數,則GPU0對圖片執行與FC層相對應的第二操作可以理解為執行如下的矩陣運算:將提取的多張特徵圖分別與上述一列參數相乘。之後,將該矩陣運算結果輸入Softmax層,並執行與Softmax層相對應的第二操作,從而得到圖片的第二操作結果。
可以理解的是,上述與Softmax層相對應的第二操作即為對矩陣運算結果進一步處理,以使得其取值範圍在0到1之間的過程。由於該進一步處理的過程通常會涉及到與每列參數相對應的矩陣運算結果,因此GPU0還可以與其它GPU進行通訊,以獲取其它GPU各自所獲取的與某一列參數相對應的矩陣運算結果。在本說明書中,圖片的第二操作結果即為與GPU0所儲存的一列參數相對應的、進一步處理後的矩陣運算結果。
步驟208,將第一操作結果分別發送給其它GPU,以使得其它各GPU分別基於各自具有的後端各層網路的參數以及第一操作結果,對樣本執行相應的第三操作。
還以前述例子為例來說,假設其它GPU中的某個GPU(以下稱為GPU1)中儲存的是FC層的另一列參數,則GPU1對圖片執行與FC層相對應的第三操作可以理解為執行如下的矩陣運算:將提取的多張特徵圖分別與上述另一列網路相乘。之後,將該矩陣運算結果輸入Softmax層,並執行與Softmax層相對應的第三操作,從而得到與GPU1對應的1個圖片的第三操作結果。
步驟210,接收其它各GPU在執行相應的第三操作後得到的第三操作結果。
如前述例子,GPU0可以接收其它P-1個GPU各自獲取的進一步處理的矩陣運算結果,從而得到P個進一步處理的矩陣運算結果。
需要說明的是,前述例子是以FC層的參數為P列進行的說明,即矩陣的列數與GPU的個數相等,從而每個GPU中可以儲存FC層的一列的參數。在實際應用中,GPU的個數可以任意設定,如,GPU的個數可以少於FC層的參數的列數。在少於的情況下,可以透過如下的公式來分配每個GPU中的參數:參數總個數/P,其中,P為GPU個數。再如,GPU的個數也可以多於FC層的參數的列數。在多於的情況下,剩餘的GPU返回的操作結果可以為空,也即不參與運算。
步驟212,合併第二操作結果和第三操作結果得到樣本的分類結果。
如,GPU0將P個GPU的進一步處理的矩陣運算結果進行合併,從而得到上述分類結果。
步驟214,根據分類結果和樣本的分類標籤,確定預測誤差。
當然,在實際應用中,為了提高所確定的預測誤差的準確性,也可以基於一個批次的樣本的分類結果以及分類標籤,來確定預測誤差。在這種情況下,GPU0可以在確定出所獲取的樣本的分類結果之後,獲取其它GPU針對各自獲取的其它樣本所獲得的分類結果。合併P個GPU針對各自獲取的樣本所獲得的分類結果,得到合併後的分類結果。根據合併後的分類結果以及一個批次的樣本(包括樣本以及其它樣本)的分類標籤,確定預測誤差。
當然,在實際應用中,P個GPU中每個GPU獲取的樣本個數可以為多個。每個GPU針對各自所獲取的多個樣本執行第一操作以及第二操作或者第三操作的過程同上所述,在此不復贅述。
步驟216,根據預測誤差,更新卷積神經網路。
該更新過程具體可以為:GPU0根據預測誤差,確定前端各層網路的第一更新參數以及後端各層網路的第二更新參數。根據第一更新參數,更新第一GPU所具有的前端各層網路的參數。根據第二更新參數中與第一GPU所具有的後端各層網路的參數對應的更新參數,更新第一GPU所具有的後端各層網路的參數。向其它GPU發送第一更新參數以及各自對應的第二更新參數。以使其它GPU根據各自對應的第二更新參數,更新各自具有的後端各層網路的參數。
需要說明的是,GPU0之所以可以向其它GPU發送各自對應的第二更新參數,是因為GPU0在處理一個批次的樣本的過程中,可以學習到其它GPU各自所儲存的後端各層網路的部分參數。
需要說明的是,上述步驟206-步驟214是由P個GPU共同對GPU0所獲取的樣本執行與後端各層網路對應的第二操作或者第三操作的過程。當對其它GPU中任一個GPU(以下稱第二GPU)所獲取的其它樣本執行如上的第二操作或者第三操作時,上述步驟206-步驟214可以替換為如下各步驟:
步驟a,從第二GPU接收其它樣本的第一操作結果。
需要說明的是,這裡的第一操作結果可以是由第二GPU基於具有的前端各層網路的參數,對其它樣本執行與前端各層網路相應的第一操作後所得到的。
步驟b,基於其它樣本的第一操作結果以及具有的後端各層網路的參數,對其它樣本執行相應的第二操作得到第二操作結果。
即這裡是由GPU0對從其它GPU中任意的第二GPU接收的其它樣本執行第二操作的過程。需要說明的是,與此同時,其它GPU也可以對該其它樣本執行相應的第三操作。
步驟c,接收其它GPU在針對其它樣本執行相應的第三操作後得到的第三操作結果。
除GPU0之外的其它GPU在獲取到與其它樣本對應的第三操作結果之後,可以向GPU0發送各自獲取的其它樣本的第三操作結果。
步驟d,合併其它樣本的第二操作結果和其它樣本的第三操作結果,得到其它樣本的分類結果。
步驟e,根據樣本的分類結果和分類標籤,以及其它樣本的分類結果和分類標籤,確定預測誤差。
即當還獲取到其它樣本的分類結果時,可以基於一個批次的樣本的分類結果以及分類標籤,共同來確定預測誤差,由此來提高所確定誤差的準確性。
綜上,本說明書實施例提供的利用GPU集群更新卷積神經網路的方法,可以基於大規模的訓練樣本來對卷積神經網路進行更新,由此可以提高卷積神經網路更新的準確性。此外,本說明書實施例的多個GPU可以針對各自獲取的樣本同時執行與前端各層網路對應的第一操作,由此大大提升了GPU資源的利用率。
以上是以P個GPU中的GPU0(即協調者)為執行主體對卷積神經網路的更新過程所進行的描述,以下以P個GPU中除GPU0之外的任一個GPU(以下稱第二GPU)為例,對卷積神經網路的更新過程進行說明。
圖3為本說明書另一個實施例提供的利用GPU集群更新卷積神經網路的方法流程圖,所述方法的執行主體為第二GPU。如圖3所示,所述方法可以包括如下步驟:
步驟302,接收第一GPU發送的樣本的第一操作結果。
該樣本具有分類標籤。
可以理解的是,該樣本的第一操作結果是由第一GPU基於具有的前端各層網路的參數,對樣本執行與前端各層網路相應的第一操作後所得到的。
步驟304,基於第一操作結果以及具有的後端各層網路的參數,對樣本執行相應的第三操作得到第三操作結果。
這裡,在第二GPU執行上述第三操作的過程中,第一GPU可以對該樣本執行相應的第二操作,其它GPU中除第二GPU外的GPU也可以對該樣本執行相應的第三操作。
步驟306,向第一GPU發送第三操作結果。
第一GPU在獲取到其它各GPU發送的第三操作結果後,對樣本的第二操作結果以及第三操作結果進行合併,得到樣本的分類結果。這裡的樣本的第二操作結果是由第一GPU基於第一操作結果以及具有的後端各層網路的參數對樣本執行相應的第二操作後得到的。此外,第一GPU還可以根據分類結果和樣本的分類標籤,確定預測誤差。根據預測誤差,更新卷積神經網路。
當然,在實際應用中,為了提高所確定的預測誤差的準確性,也可以基於一個批次的樣本的分類結果以及對應的分類標籤,來確定預測誤差。其具體確定方法同上所述,在此不復贅述。此外,卷積神經網路的更新過程也可以參照步驟216,在此不作重複說明。
需要說明的是,上述步驟302-步驟306是由P個GPU共同對第一GPU所獲取的樣本執行與後端各層網路對應的第二操作或者第三操作的過程。當對第二GPU所獲取的其它樣本執行如上的第二操作或者第三操作時,上述步驟302-步驟306可以替換為如下各步驟:
步驟A,獲取帶分類標籤的其它樣本。
步驟B,基於前端各層網路的參數,對其它樣本執行與前端各層網路相應的第一操作,得到其它樣本的第一操作結果。
如前所述,這裡的前端各層網路可以包括卷積層、BN層以及其它層等。第二GPU執行對應的第一操作的過程同第一GPU(GPU0)類似,在此不復贅述。
以其它樣本也為圖片為例來說,其它樣本的第一操作結果可以理解為是由前端各層網路從圖片中提取的多張特徵圖。
步驟C,基於其它樣本的第一操作結果以及具有的後端各層網路的參數,對其它樣本執行相應的第三操作得到第三操作結果。
步驟D,向第一GPU以及其它GPU中除第二GPU外的GPU發送其它樣本的第一操作結果。
第一GPU基於具有的後端各層網路的參數以及其它樣本的第一操作結果,對其它樣本執行相應的第二操作得到第二操作結果。其它GPU中除第二GPU外的GPU基於各自具有的後端各層網路的參數以及其它樣本的第一操作結果,對其它樣本執行相應的第三操作得到第三操作結果。
步驟E,向第一GPU發送其它樣本的第三操作結果。
其它GPU中除第二GPU外的GPU也可以向第一GPU發送第三操作結果。第一GPU在接收到其它GPU發送的第三操作結果後,合併第二操作結果和其它GPU發送的第三操作結果得到其它樣本的分類結果,根據樣本的分類結果和分類標籤,以及其它樣本的分類結果和分類標籤,確定預測誤差。
在確定預測誤差之後,卷積神經網路的更新過程也可以參照步驟216,在此不作重複說明。
綜上,本說明書實施例提供的利用GPU集群更新卷積神經網路的方法,可以基於大規模的訓練樣本來對卷積神經網路進行更新,由此可以提高卷積神經網路更新的準確性。
在完成卷積神經網路的訓練之後,可以透過如下方式來完成圖片的分類:由分散式GPU集群中的第一GPU對待分類圖片執行與前端各層網路對應的第一操作,之後由多個GPU共同對該待分類圖片執行與後端各層網路的對應的第二操作或者第三操作,從而得到對應的分類結果。其具體分類過程可以如圖4所示。
圖4為本說明書提供的利用GPU集群的圖片分類方法流程圖,所述方法的執行主體可以為第一GPU,如圖4所示,所述方法可以包括如下步驟:
步驟402,獲取待分類圖片。
步驟404,基於前端各層網路的參數,對待分類圖片執行與前端各層網路相應的第一操作,得到待分類圖片的第一操作結果。
步驟406,基於第一操作結果以及具有的後端各層網路的參數,對待分類圖片執行相應的第二操作得到第二操作結果。
步驟408,將第一操作結果分別發送給其它GPU,以使得其它各GPU分別基於各自具有的後端各層網路的參數以及第一操作結果,對待分類圖片執行相應的第三操作。
步驟410,接收其它各GPU在執行相應的第三操作後得到的第三操作結果。
步驟412,合併第二操作結果和第三操作結果得到待分類圖片的分類結果。
綜上,本說明書實施例提供的利用GPU集群的圖片分類方法,可以實現圖片的準確而有效的分類。
與上述利用GPU集群更新卷積神經網路的方法對應地,本說明書一個實施例還提供的一種利用GPU集群更新卷積神經網路的裝置,該GPU集群包括第一GPU以及若干其它GPU,第一GPU具有卷積神經網路的前端各層網路的參數,第一GPU和其它GPU共同具有所述卷積神經網路的後端各層網路的參數,如圖5所示,該裝置可以包括:
獲取單元502,用於獲取帶分類標籤的樣本。
第一操作單元504,用於基於前端各層網路的參數,對獲取單元502獲取的樣本執行與前端各層網路相應的第一操作,得到樣本的第一操作結果。
第二操作單元506,用於基於第一操作結果以及具有的後端各層網路的參數,對樣本執行相應的第二操作得到第二操作結果。
發送單元508,用於將第一操作結果分別發送給其它GPU,以使得其它各GPU分別基於各自具有的後端各層網路的參數以及第一操作結果,對樣本執行相應的第三操作。
接收單元510,用於接收其它各GPU在執行相應的第三操作後得到的第三操作結果。
合併單元512,用於合併第二操作結果和第三操作結果得到樣本的分類結果。
確定單元514,用於根據分類結果和樣本的分類標籤,確定預測誤差。
更新單元516,用於根據確定單元514確定的預測誤差,更新卷積神經網路。
可選地,接收單元510,還用於從第二GPU接收其它樣本的第一操作結果,第二GPU是其它GPU中的任一個,該其它樣本具有分類標籤。
第二操作單元506,還用於基於接收單元510接收的其它樣本的第一操作結果以及具有的後端各層網路的參數,對其它樣本執行相應的第二操作得到第二操作結果。
接收單元510,還用於接收其它GPU在針對其它樣本執行相應的第三操作後得到的第三操作結果。
合併單元512,還用於合併其它樣本的第二操作結果和其它樣本的第三操作結果,得到其它樣本的分類結果。
確定單元514具體用於:根據樣本的分類結果和分類標籤,以及其它樣本的分類結果和分類標籤,確定預測誤差。
更新單元516具體可以用於:
根據預測誤差,確定前端各層網路的第一更新參數以及後端各層網路的第二更新參數。
根據第一更新參數,更新第一GPU所具有的前端各層網路的參數。根據第二更新參數中與第一GPU所具有的後端各層網路的參數對應的更新參數,更新第一GPU所具有的後端各層網路的參數。
向其它GPU發送第一更新參數以及各自對應的第二更新參數。以使其它GPU根據各自對應的第二更新參數,更新各自具有的後端各層網路的參數。
可選地,前端各層網路包括卷積層以及其它層。
第一操作單元504具體可以用於:
基於卷積層的參數,對樣本執行卷積操作,以得到第一中間結果。
獲取其它GPU根據各自具有的卷積層的參數,對各自獲取的其它樣本執行卷積操作所獲得的第二中間結果。
根據其它GPU的第二中間結果,對第一中間結果進行正規化處理。
基於其它層的參數以及正規化處理後的第一中間結果,對樣本執行其它操作,得到樣本的第一操作結果。
可選地,上述第一GPU與其它GPU之間基於支持分散式通訊和計算的應用程式化介面函數庫進行相互通訊。
本說明書上述實施例裝置的各功能模組的功能,可以透過上述方法實施例的各步驟來實現,因此,本說明書的一個實施例提供的裝置的具體工作過程,在此不復贅述。
本說明書的一個實施例提供的利用GPU集群更新卷積神經網路的裝置,可以基於多個GPU來對卷積神經網路進行更新,從而可以有效而準確地對卷積神經網路進行更新。
本說明書的一個實施例提供的利用GPU集群更新卷積神經網路的裝置可以為圖1中GPU0的一個模組或者單元。
與上述利用GPU集群更新卷積神經網路的方法對應地,本說明書一個實施例還提供的一種利用GPU集群更新卷積神經網路的裝置,該GPU集群包括第一GPU以及若干其它GPU,其它GPU具有卷積神經網路的前端各層網路的參數,第一GPU和其它GPU共同具有卷積神經網路的後端各層網路的參數,如圖6所示,該裝置可以包括:
接收單元602,用於接收第一GPU發送的樣本的第一操作結果。
該樣本具有分類標籤。
第三操作單元604,用於基於接收單元602接收的第一操作結果以及具有的後端各層網路的參數,對樣本執行相應的第三操作得到第三操作結果。
發送單元606,用於向第一GPU發送第三操作結果,以使得第一GPU在獲取到其它各GPU發送的第三操作結果後,對樣本的第二操作結果以及第三操作結果進行合併,得到樣本的分類結果。樣本的第二操作結果是由第一GPU基於第一操作結果以及具有的後端各層網路的參數對樣本執行相應的第二操作後得到的。還使得第一GPU根據分類結果和樣本的分類標籤,確定預測誤差。根據預測誤差,更新卷積神經網路。
可選地,該裝置還可以包括:
獲取單元608,用於獲取帶分類標籤的其它樣本。
第一操作單元610,用於基於前端各層網路的參數,對其它樣本執行與前端各層網路相應的第一操作,得到其它樣本的第一操作結果。
第三操作單元604,還用於基於其它樣本的第一操作結果以及具有的後端各層網路的參數,對其它樣本執行相應的第三操作得到第三操作結果。
發送單元606,還用於向第一GPU以及其它GPU中除第二GPU外的GPU發送其它樣本的第一操作結果,以使得第一GPU基於具有的後端各層網路的參數以及其它樣本的第一操作結果,對其它樣本執行相應的第二操作得到第二操作結果,以及使得其它GPU中除第二GPU外的GPU基於各自具有的後端各層網路的參數以及其它樣本的第一操作結果,對其它樣本執行相應的第三操作得到第三操作結果。
發送單元606,還用於向第一GPU發送其它樣本的第三操作結果,以使得第一GPU合併第二操作結果和其它各GPU發送的第三操作結果得到其它樣本的分類結果,根據樣本的分類結果和分類標籤,以及其它樣本的分類結果和分類標籤,確定預測誤差。
本說明書的上述實施例裝置的各功能模組的功能,可以透過上述方法實施例的各步驟來實現,因此,本說明書一個實施例提供的裝置的具體工作過程,在此不復贅述。
本說明書的一個實施例提供的利用GPU集群更新卷積神經網路的裝置,可以基於多個GPU來對卷積神經網路進行更新,從而可以有效而準確地對卷積神經網路進行更新。
本說明書一個實施例提供的利用GPU集群更新卷積神經網路的裝置可以為圖1中GPU1至GPUP-1中任一個GPU的一個模組或者單元。
與上述利用GPU集群的圖片分類方法對應地,本說明書實施例還提供了一種利用GPU集群的圖片分類裝置,該 GPU集群包括第一GPU以及若干其它GPU,第一GPU具有卷積神經網路的前端各層網路的參數,第一GPU和其它GPU共同具有卷積神經網路的後端各層網路的參數,如圖7所示,該裝置可以包括:
獲取單元702,用於獲取待分類圖片。
第一操作單元704,用於基於前端各層網路的參數,對獲取單元702獲取的待分類圖片執行與前端各層網路相應的第一操作,得到待分類圖片的第一操作結果。
第二操作單元706,用於基於第一操作結果以及具有的後端各層網路的參數,對待分類圖片執行相應的第二操作得到第二操作結果。
發送單元708,用於將第一操作結果分別發送給其它GPU,以使得其它各GPU分別基於各自具有的後端各層網路的參數以及第一操作結果,對待分類圖片執行相應的第三操作。
接收單元710,用於接收其它各GPU在執行相應的第三操作後得到的第三操作結果。
合併單元712,用於合併第二操作結果和第三操作結果得到待分類圖片的分類結果。
本說明書一個實施例提供的利用GPU集群的圖片分類裝置,可以實現圖片的準確而有效的分類。
本說明書一個實施例提供的利用GPU集群的圖片分類裝置可以為圖1中GPU0的一個模組或者單元。
與上述利用GPU集群的更新卷積神經網路的方法對應地,本說明書實施例還提供了一種更新卷積神經網路的設備,如圖8所示,該設備可以包括:包括第一GPU802以及若干其它GPU(GPU804-GPUP),第一GPU802具有卷積神經網路的前端各層網路的參數,第一GPU802和其它GPU共同具有卷積神經網路的後端各層網路的參數,第一GPU802在運行時實現以下步驟:
獲取帶分類標籤的樣本。
基於前端各層網路的參數,對樣本執行與前端各層網路相應的第一操作,得到樣本的第一操作結果。
基於第一操作結果以及具有的後端各層網路的參數,對樣本執行相應的第二操作得到第二操作結果。
將第一操作結果分別發送給其它GPU,以使得其它各GPU分別基於各自具有的後端各層網路的參數以及第一操作結果,對樣本執行相應的第三操作。
接收其它各GPU在執行相應的第三操作後得到的第三操作結果。
合併第二操作結果和第三操作結果得到樣本的分類結果。
根據分類結果和樣本的分類標籤,確定預測誤差。
根據預測誤差,更新卷積神經網路。
本說明書的一個實施例提供的更新卷積神經網路的設備,可以基於多個GPU來對卷積神經網路進行更新,從而可以有效而準確地對卷積神經網路進行更新。
與上述利用GPU集群更新卷積神經網路的方法對應地,本說明書實施例還提供了一種更新卷積神經網路的設備,如圖9所示,該設備可以包括:第一GPU902以及若干其它GPU(GPU904-GPUP),其它GPU具有卷積神經網路的前端各層網路的參數,第一GPU和其它GPU共同具有卷積神經網路的後端各層網路的參數,其它GPU中任意的第二GPU904在運行時實現以下步驟:
接收第一GPU發送的樣本的第一操作結果,該樣本具有分類標籤。
基於第一操作結果以及具有的後端各層網路的參數,對樣本執行相應的第三操作得到第三操作結果。
向第一GPU發送第三操作結果,以使得第一GPU在獲取到其它各GPU發送的第三操作結果後,對樣本的第二操作結果以及第三操作結果進行合併,得到樣本的分類結果。樣本的第二操作結果是由第一GPU基於第一操作結果以及具有的後端各層網路的參數對樣本執行相應的第二操作後得到的。還使得第一GPU根據分類結果和樣本的分類標籤,確定預測誤差。根據預測誤差,更新卷積神經網路。
本說明書一個實施例提供的更新卷積神經網路的設備,可以基於多個GPU來對卷積神經網路進行更新,從而可以有效而準確地對卷積神經網路進行更新。
與上述利用GPU集群的圖片分類方法對應地,本說明書還提供了一種圖片分類設備,如圖10所示,該設備可以包括:包括第一GPU1002以及若干其它GPU(GPU1004-GPUP),第一GPU1002具有卷積神經網路的前端各層網路的參數,第一GPU1002和其它GPU共同具有卷積神經網路的後端各層網路的參數,第一GPU1002在運行時實現以下步驟:
獲取待分類圖片。
基於前端各層網路的參數,對待分類圖片執行與前端各層網路相應的第一操作,得到待分類圖片的第一操作結果。
基於第一操作結果以及具有的後端各層網路的參數,對待分類圖片執行相應的第二操作得到第二操作結果。
將第一操作結果分別發送給其它GPU,以使得其它各GPU分別基於各自具有的後端各層網路的參數以及所述第一操作結果,對待分類圖片執行相應的第三操作。
接收其它各GPU在執行相應的第三操作後得到的第三操作結果。
合併第二操作結果和第三操作結果得到待分類圖片的分類結果。
本說明書提供的圖片分類設備,可以實現圖片的準確而有效的分類。
本說明書中的各個實施例均採用漸進的方式描述,各個實施例之間相同相似的部分互相參見即可,每個實施例重點說明的都是與其他實施例的不同之處。尤其,對於設備實施例而言,由於其基本相似於方法實施例,所以描述的比較簡單,相關之處參見方法實施例的部分說明即可。
結合本說明書公開內容所描述的方法或者演算法的步驟可以硬體的方式來實現,也可以是由處理器執行軟體指令的方式來實現。軟體指令可以由相應的軟體模組組成,軟體模組可以被存放於RAM記憶體、快閃記憶體、ROM記憶體、EPROM記憶體、EEPROM記憶體、暫存器、硬碟、移動硬碟、CD-ROM或者本領域熟知的任何其它形式的儲存媒體中。一種示例性的儲存媒體耦合至處理器,從而使處理器能夠從該儲存媒體讀取資訊,且可向該儲存媒體寫入資訊。當然,儲存媒體也可以是處理器的組成部分。處理器和儲存媒體可以位於ASIC中。另外,該ASIC可以位於伺服器中。當然,處理器和儲存媒體也可以作為分立組件存在於伺服器中。
本領域技術人員應該可以意識到,在上述一個或多個示例中,本發明所描述的功能可以用硬體、軟體、韌體或它們的任意組合來實現。當使用軟體實現時,可以將這些功能儲存在電腦可讀媒體中或者作為電腦可讀媒體上的一個或多個指令或碼進行傳輸。電腦可讀媒體包括電腦儲存媒體和通信媒體,其中通信媒體包括便於從一個地方向另一個地方傳送電腦程式的任何媒體。儲存媒體可以是通用或專用電腦能夠存取的任何可用媒體。
上述對本說明書特定實施例進行了描述。其它實施例在所附申請專利範圍的範圍內。在一些情況下,在申請專利範圍中記載的動作或步驟可以按照不同於實施例中的順序來執行並且仍然可以實現期望的結果。另外,在圖式中描繪的過程不一定要求示出的特定順序或者連續順序才能實現期望的結果。在某些實施方式中,多任務處理和平行處理也是可以的或者可能是有利的。
以上所述的具體實施方式,對本說明書的目的、技術方案和有益效果進行了進一步詳細說明,所應理解的是,以上所述僅為本說明書的具體實施方式而已,並不用於限定本說明書的保護範圍,凡在本說明書的技術方案的基礎之上,所做的任何修改、等同替換、改進等,均應包括在本說明書的保護範圍之內。
S202:步驟
S204:步驟
S206:步驟
S208:步驟
S210:步驟
S212:步驟
S214:步驟
S216:步驟
S302:步驟
S304:步驟
S306:步驟
S402:步驟
S404:步驟
S406:步驟
S408:步驟
S410:步驟
S412:步驟
502:獲取單元
504:第一操作單元
506:第二操作單元
508:發送單元
510:接收單元
512:合併單元
514:確定單元
516:更新單元
602:接收單元
604:第三操作單元
606:發送單元
702:獲取單元
704:第一操作單元
706:第二操作單元
708:發送單元
710:接收單元
712:合併單元
802:GPU
804:GPU
902:GPU
904:GPU
1002:GPU
1004:GPU
為了更清楚地說明本說明書實施例的技術方案,下面將對實施例描述中所需要使用的圖式作簡單地介紹,顯而易見地,下面描述中的圖式僅僅是本說明書的一些實施例,對於本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些圖式獲得其它的圖式。
圖1為本說明書提供的利用GPU集群更新卷積神經網路的方法示意圖;
圖2為本說明書一個實施例提供的利用GPU集群更新卷積神經網路的方法流程圖;
圖3為本說明書另一個實施例提供的利用GPU集群更新卷積神經網路的方法流程圖;
圖4為本說明書提供的利用GPU集群的圖片分類方法流程圖;
圖5為本說明書一個實施例提供的利用GPU集群更新卷積神經網路的裝置示意圖;
圖6為本說明書另一個實施例提供的利用GPU集群更新卷積神經網路的裝置示意圖;
圖7為本說明書提供的利用GPU集群的圖片分類裝置示意圖;
圖8為本說明書一個實施例提供的更新卷積神經網路的設備示意圖;
圖9為本說明書另一個實施例提供的更新卷積神經網路的設備示意圖;
圖10為本說明書提供的圖片分類設備示意圖。