一種對用于圖片識別的卷積神經(jīng)網(wǎng)絡(luò)訓(xùn)練的方法與設(shè)備的制造方法
【專利摘要】本申請的目的是提供一種對用于圖片識別的卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練的方法與設(shè)備。具體地,根據(jù)用于圖片識別的卷積神經(jīng)網(wǎng)絡(luò)的參數(shù)信息初始化同一GPU上所述卷積神經(jīng)網(wǎng)絡(luò)的多個網(wǎng)絡(luò);將所述卷積神經(jīng)網(wǎng)絡(luò)所對應(yīng)的訓(xùn)練圖片數(shù)據(jù)分配至所述多個網(wǎng)絡(luò);對所述多個網(wǎng)絡(luò)按所分配的所述訓(xùn)練圖片數(shù)據(jù)進(jìn)行并行訓(xùn)練處理;根據(jù)所述網(wǎng)絡(luò)經(jīng)訓(xùn)練處理后的誤差信息更新所述卷積神經(jīng)網(wǎng)絡(luò)的參數(shù)信息。與現(xiàn)有技術(shù)相比,本申請通過使用同一套參數(shù)信息初始化同一GPU上卷積神經(jīng)網(wǎng)絡(luò)的多個網(wǎng)絡(luò),將訓(xùn)練圖片數(shù)據(jù)分配至所述多個網(wǎng)絡(luò)進(jìn)行并行訓(xùn)練處理,用所得誤差信息更新所述參數(shù)信息,從而提高GPU單卡計(jì)算效率,減少計(jì)算資源浪費(fèi),提升卷積神經(jīng)網(wǎng)絡(luò)對圖片的識別效率。
【專利說明】
一種對用于圖片識別的卷積神經(jīng)網(wǎng)絡(luò)訓(xùn)練的方法與設(shè)備
技術(shù)領(lǐng)域
[0001]本申請涉及計(jì)算機(jī)領(lǐng)域,尤其涉及一種對用于圖片識別的卷積神經(jīng)網(wǎng)絡(luò)訓(xùn)練的技術(shù)。
【背景技術(shù)】
[0002]隨著互聯(lián)網(wǎng)高速發(fā)展,網(wǎng)絡(luò)中圖片數(shù)據(jù)量激增,針對圖片數(shù)據(jù)的處理技術(shù)迅速發(fā)展并日益完善,其中,卷積神經(jīng)網(wǎng)絡(luò)這樣的深度學(xué)習(xí)算法被廣泛應(yīng)用于圖片識別中,并在降低網(wǎng)絡(luò)模型復(fù)雜度、提升圖片數(shù)據(jù)處理能力等方面取得了顯著的成效。為了提升圖片識別中數(shù)據(jù)的處理效率,目前對于基于GPU進(jìn)行圖片識別學(xué)習(xí)訓(xùn)練的卷積神經(jīng)網(wǎng)絡(luò)多采用單機(jī)多GPU或多機(jī)多GPU的方式,其中,GPU(Graphics Processing Unit)又稱顯示核心、視覺處理器、顯示芯片,是一種專門在個人電腦、工作站、游戲機(jī)和一些移動設(shè)備(如平板電腦、智能手機(jī)等)上圖像運(yùn)算工作的微處理器。然而,對于每一塊GHJ而言,其性能并沒有被充分利用,從而造成計(jì)算資源的嚴(yán)重浪費(fèi)。
【發(fā)明內(nèi)容】
[0003]本申請的目的是提供一種對用于圖片識別的卷積神經(jīng)網(wǎng)絡(luò)訓(xùn)練的方法與設(shè)備,用以解決基于GHJ對用于圖片識別的卷積神經(jīng)網(wǎng)絡(luò)訓(xùn)練效率低下造成資源浪費(fèi)的問題。
[0004]根據(jù)本申請的一個方面,提供了一種對用于圖片識別的卷積神經(jīng)網(wǎng)絡(luò)訓(xùn)練的方法,該方法解決了基于GPU對用于圖片識別的卷積神經(jīng)網(wǎng)絡(luò)訓(xùn)練效率低下造成資源浪費(fèi)的問題,其中該方法包括:
[0005]根據(jù)用于圖片識別的卷積神經(jīng)網(wǎng)絡(luò)的參數(shù)信息初始化同一GPU上所述卷積神經(jīng)網(wǎng)絡(luò)的多個網(wǎng)絡(luò);
[0006]將所述卷積神經(jīng)網(wǎng)絡(luò)所對應(yīng)的訓(xùn)練圖片數(shù)據(jù)分配至所述多個網(wǎng)絡(luò);
[0007]對所述多個網(wǎng)絡(luò)按所分配的所述訓(xùn)練圖片數(shù)據(jù)進(jìn)行并行訓(xùn)練處理;
[0008]根據(jù)所述網(wǎng)絡(luò)經(jīng)訓(xùn)練處理后的誤差信息更新所述卷積神經(jīng)網(wǎng)絡(luò)的參數(shù)信息。
[0009]根據(jù)本申請的另一方面,還提供了一種提供了一種對用于圖片識別的卷積神經(jīng)網(wǎng)絡(luò)訓(xùn)練的設(shè)備,該設(shè)備解決了基于GPU對用于圖片識別的卷積神經(jīng)網(wǎng)絡(luò)訓(xùn)練效率低下造成資源浪費(fèi)的問題,其中該設(shè)備包括:
[0010]第一裝置,用于根據(jù)用于圖片識別的卷積神經(jīng)網(wǎng)絡(luò)的參數(shù)信息初始化同一GPU上所述卷積神經(jīng)網(wǎng)絡(luò)的多個網(wǎng)絡(luò);
[0011]第二裝置,用于將所述卷積神經(jīng)網(wǎng)絡(luò)所對應(yīng)的訓(xùn)練圖片數(shù)據(jù)分配至所述多個網(wǎng)絡(luò);
[0012]第三裝置,用于對所述多個網(wǎng)絡(luò)按所分配的所述訓(xùn)練圖片數(shù)據(jù)進(jìn)行并行訓(xùn)練處理;
[0013]第四裝置,用于根據(jù)所述網(wǎng)絡(luò)經(jīng)訓(xùn)練處理后的誤差信息更新所述卷積神經(jīng)網(wǎng)絡(luò)的參數(shù)信息。
[0014]與現(xiàn)有技術(shù)相比,本申請通過根據(jù)用于圖片識別的卷積神經(jīng)網(wǎng)絡(luò)的參數(shù)信息初始化同一 GPU上所述卷積神經(jīng)網(wǎng)絡(luò)的多個網(wǎng)絡(luò),將所述卷積神經(jīng)網(wǎng)絡(luò)所對應(yīng)的訓(xùn)練圖片數(shù)據(jù)分配至所述多個網(wǎng)絡(luò)并進(jìn)行訓(xùn)練處理后,用訓(xùn)練處理所得的誤差信息更新所述卷積神經(jīng)網(wǎng)絡(luò)的參數(shù)信息,從而提高GPU的單卡計(jì)算效率,減少計(jì)算資源浪費(fèi),進(jìn)而提升卷積神經(jīng)網(wǎng)絡(luò)對圖片的識別效率。
【附圖說明】
[0015]通過閱讀參照以下附圖所作的對非限制性實(shí)施例所作的詳細(xì)描述,本申請的其它特征、目的和優(yōu)點(diǎn)將會變得更明顯:
[0016]圖1示出根據(jù)本申請一個方面的一種對用于圖片識別的卷積神經(jīng)網(wǎng)絡(luò)訓(xùn)練的設(shè)備示意圖;
[0017]圖2示出根據(jù)本申請一個優(yōu)選實(shí)施例的一種對用于圖片識別的卷積神經(jīng)網(wǎng)絡(luò)訓(xùn)練的方法與設(shè)備中將訓(xùn)練圖片數(shù)據(jù)分配至多個網(wǎng)絡(luò)的示意圖;
[0018]圖3示出根據(jù)本申請一個優(yōu)選實(shí)施例的一種對用于圖片識別的卷積神經(jīng)網(wǎng)絡(luò)訓(xùn)練的方法與設(shè)備中根據(jù)經(jīng)訓(xùn)練所得誤差信息更新卷積神經(jīng)網(wǎng)絡(luò)參數(shù)信息的示意圖;
[0019]圖4示出根據(jù)本申請另一個方面的一種對用于圖片識別的卷積神經(jīng)網(wǎng)絡(luò)訓(xùn)練的方法流程圖;
[0020]圖5示出根據(jù)本申請一個優(yōu)選實(shí)施例的一種多GPU并行方案示意圖。
[0021]附圖中相同或相似的附圖標(biāo)記代表相同或相似的部件。
【具體實(shí)施方式】
[0022 ]下面結(jié)合附圖對本申請作進(jìn)一步詳細(xì)描述。
[0023]在本申請一個典型的配置中,終端、服務(wù)網(wǎng)絡(luò)的設(shè)備和可信方均包括一個或多個處理器(CPU)、輸入/輸出接口、網(wǎng)絡(luò)接口和內(nèi)存。
[0024]內(nèi)存可能包括計(jì)算機(jī)可讀介質(zhì)中的非永久性存儲器,隨機(jī)存取存儲器(RAM)和/或非易失性內(nèi)存等形式,如只讀存儲器(ROM)或閃存(flash RAM)。內(nèi)存是計(jì)算機(jī)可讀介質(zhì)的示例。
[0025]計(jì)算機(jī)可讀介質(zhì)包括永久性和非永久性、可移動和非可移動媒體可以由任何方法或技術(shù)來實(shí)現(xiàn)信息存儲。信息可以是計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序的模塊或其他數(shù)據(jù)。計(jì)算機(jī)的存儲介質(zhì)的例子包括,但不限于相變內(nèi)存(PRAM)、靜態(tài)隨機(jī)存取存儲器(SRAM)、動態(tài)隨機(jī)存取存儲器(DRAM)、其他類型的隨機(jī)存取存儲器(RAM)、只讀存儲器(ROM)、電可擦除可編程只讀存儲器(EEPROM)、快閃記憶體或其他內(nèi)存技術(shù)、只讀光盤只讀存儲器(CD-ROM)、數(shù)字多功能光盤(DVD)或其他光學(xué)存儲、磁盒式磁帶,磁帶磁盤存儲或其他磁性存儲設(shè)備或任何其他非傳輸介質(zhì),可用于存儲可以被計(jì)算設(shè)備訪問的信息。按照本文中的界定,計(jì)算機(jī)可讀介質(zhì)不包括非暫存電腦可讀媒體(transitory media),如調(diào)制的數(shù)據(jù)信號和載波。
[0026]圖1示出根據(jù)本申請一個方面的一種對用于圖片識別的卷積神經(jīng)網(wǎng)絡(luò)訓(xùn)練的設(shè)備I的示意圖。其中,所述設(shè)備I包括第一裝置11、第二裝置12、第三裝置13和第四裝置14.
[0027]其中,所述設(shè)備I的第一裝置11根據(jù)用于圖片識別的卷積神經(jīng)網(wǎng)絡(luò)的參數(shù)信息初始化同一 GPU上所述卷積神經(jīng)網(wǎng)絡(luò)的多個網(wǎng)絡(luò);第二裝置12將所述卷積神經(jīng)網(wǎng)絡(luò)所對應(yīng)的訓(xùn)練圖片數(shù)據(jù)分配至所述多個網(wǎng)絡(luò);第三裝置13對所述多個網(wǎng)絡(luò)按所分配的所述訓(xùn)練圖片數(shù)據(jù)進(jìn)行并行訓(xùn)練處理;第四裝置14根據(jù)所述網(wǎng)絡(luò)經(jīng)訓(xùn)練處理后的誤差信息更新所述卷積神經(jīng)網(wǎng)絡(luò)的參數(shù)信息。
[0028]具體地,第一裝置11根據(jù)用于圖片識別的卷積神經(jīng)網(wǎng)絡(luò)的參數(shù)信息初始化同一GPU上所述卷積神經(jīng)網(wǎng)絡(luò)的多個網(wǎng)絡(luò)。其中,對所述卷積神經(jīng)網(wǎng)絡(luò)的多個網(wǎng)絡(luò)使用同一套參數(shù)對其進(jìn)行初始化,即所述同一GPU上的多個網(wǎng)絡(luò)共享同一套初始化參數(shù),初始化參數(shù)包括權(quán)值但不限于權(quán)值。共享同一套初始化參數(shù),可為所述多個網(wǎng)絡(luò)并行打下基礎(chǔ),簡化初始化工作同時提高多個網(wǎng)絡(luò)并行工作的效率。優(yōu)選地,所述卷積神經(jīng)網(wǎng)絡(luò)的多個網(wǎng)絡(luò)可以是該卷積神經(jīng)網(wǎng)絡(luò)的多個網(wǎng)絡(luò)副本,每個網(wǎng)絡(luò)都保留有完整卷積神經(jīng)網(wǎng)絡(luò)所需的必要的數(shù)據(jù)信息。
[0029]本領(lǐng)域技術(shù)人員應(yīng)能理解上述初始化同一GPU上所述卷積神經(jīng)網(wǎng)絡(luò)的多個網(wǎng)絡(luò)的方式僅為舉例,其他現(xiàn)有的或今后可能出現(xiàn)的初始化同一 GPU上所述卷積神經(jīng)網(wǎng)絡(luò)的多個網(wǎng)絡(luò)的方式如可適用于本發(fā)明,也應(yīng)包含在本發(fā)明保護(hù)范圍以內(nèi),并在此以引用方式包含于此。
[°03°]優(yōu)選地,所述多個網(wǎng)絡(luò)的數(shù)量信息與所述GPU所支持的獨(dú)立工作流的數(shù)量相適應(yīng)。具體地,GPU的每個獨(dú)立工作流上可以相應(yīng)地運(yùn)行一個網(wǎng)絡(luò),由于每個獨(dú)立工作流不會互相阻塞,因此多個網(wǎng)絡(luò)可以在各自的獨(dú)立工作流上并行運(yùn)行,由此,多個網(wǎng)絡(luò)的數(shù)量受到所述GPU所支持的獨(dú)立工作流的數(shù)量的約束,需小于或等于GPU所支持的獨(dú)立工作流的數(shù)量。所述獨(dú)立工作流的數(shù)量受到GPU本身架構(gòu)以及所支持通用計(jì)算標(biāo)準(zhǔn)的約束,具體地,GPU需要有獨(dú)立核心流處理器的硬件架構(gòu),同時需要支持至少一種GPU的通用計(jì)算標(biāo)準(zhǔn)如Nvidia的CUDA、Khronos的OpenCL、AMD的Stream等,例如,例如Nvidia所生產(chǎn)的GPU從開普勒架構(gòu)都可以支持硬件隊(duì)列獨(dú)立工作且不互相阻塞,即允許CUDA流獨(dú)占一個硬件工作隊(duì)列,從而形成獨(dú)立工作流,每個獨(dú)立工作流對應(yīng)一個網(wǎng)絡(luò)可充分利用GPU的硬件資源,并提高卷積神經(jīng)網(wǎng)絡(luò)的處理速度。在此,CUDA(Compute Unified Device Architecture),是顯卡廠商N(yùn)VIDIA推出的運(yùn)算平臺。
[0031]接著,第二裝置12將所述卷積神經(jīng)網(wǎng)絡(luò)所對應(yīng)的訓(xùn)練圖片數(shù)據(jù)分配至所述多個網(wǎng)絡(luò)。其中,第二裝置可以是一個數(shù)據(jù)分配器,具體地,數(shù)據(jù)分配器可以由數(shù)據(jù)分配函數(shù)實(shí)現(xiàn)其功能,即給予在同一 GHJ上卷積神經(jīng)網(wǎng)絡(luò)的多個網(wǎng)絡(luò)分配該卷積神經(jīng)網(wǎng)絡(luò)所獲取的圖片數(shù)據(jù),從而使得每個網(wǎng)絡(luò)均獲取可供訓(xùn)練的圖片數(shù)據(jù)。數(shù)據(jù)分配函數(shù)將需要訓(xùn)練的圖片數(shù)據(jù)劃分成若干部分,創(chuàng)建圖片數(shù)據(jù)指針并給每個指針分配一個分別指向所分的若干部分圖片數(shù)據(jù)的地址,使得每個獲得圖片數(shù)據(jù)的網(wǎng)絡(luò)均分得并維護(hù)一個圖片數(shù)據(jù)指針。優(yōu)選地,所述卷積神經(jīng)網(wǎng)絡(luò)所對應(yīng)的訓(xùn)練圖片數(shù)據(jù)由CPU獲取,數(shù)據(jù)分配器可以分配CPU內(nèi)存中的地址,也可以分配GPU的顯存中的地址。前者圖片數(shù)據(jù)指針指向CPU內(nèi)存中的地址,各網(wǎng)絡(luò)實(shí)例分別從圖片數(shù)據(jù)指針?biāo)赶虻腃HJ地址中將圖片數(shù)據(jù)直接拷貝至GPU顯存。如圖2所示,后者卷積神經(jīng)網(wǎng)絡(luò)框架先將所有數(shù)據(jù)從內(nèi)存拷貝至GPU顯存,圖片數(shù)據(jù)指針指向GPU顯存中的地址,數(shù)據(jù)分配器再從顯存中拷貝至各網(wǎng)絡(luò)實(shí)例。
[0032]本領(lǐng)域技術(shù)人員應(yīng)能理解上述數(shù)據(jù)分配器分配圖片數(shù)據(jù)的方式僅為舉例,其他現(xiàn)有的或今后可能出現(xiàn)的數(shù)據(jù)分配器分配圖片數(shù)據(jù)的方式如可適用于本發(fā)明,也應(yīng)包含在本發(fā)明保護(hù)范圍以內(nèi),并在此以引用方式包含于此。
[0033]第三裝置13對所述多個網(wǎng)絡(luò)按所分配的所述訓(xùn)練圖片數(shù)據(jù)進(jìn)行并行訓(xùn)練處理。其中,所述的多個網(wǎng)絡(luò)是并存在卷積神經(jīng)網(wǎng)絡(luò)中,同時可以獨(dú)立運(yùn)行且不會互相干擾,從而使得所述多個網(wǎng)絡(luò)可以進(jìn)行并行訓(xùn)練處理。具體地,對卷積神經(jīng)網(wǎng)絡(luò)框架的代碼進(jìn)行修改,以卷積神經(jīng)網(wǎng)絡(luò)框架caffe為例,修改caffe的代碼從而允許caffe程序運(yùn)行時可以存在多個網(wǎng)絡(luò)實(shí)例,具體地,例如,初始化caffe中一個net類實(shí)例,修改net類中前向傳播、后向傳播具體內(nèi)容以及權(quán)值更新函數(shù),通過該實(shí)例調(diào)用net類中前向傳播和后向傳播的功能從而實(shí)現(xiàn)網(wǎng)絡(luò)的具體功能,因此通過初始化多個net類實(shí)例可實(shí)現(xiàn)單GPU上多個網(wǎng)絡(luò)實(shí)例共存,每個網(wǎng)絡(luò)實(shí)例均單獨(dú)保存一份網(wǎng)絡(luò)權(quán)值數(shù)據(jù),以及前向傳播和反向傳播過程中所需的數(shù)據(jù),使得所述多個網(wǎng)絡(luò)實(shí)例可以獨(dú)立運(yùn)行。因此在所述多個網(wǎng)絡(luò)初始化并分別獲取訓(xùn)練圖片數(shù)據(jù)后,可在各獨(dú)立運(yùn)行的網(wǎng)絡(luò)中進(jìn)行卷積神經(jīng)網(wǎng)絡(luò)的前向傳播計(jì)算以及后向傳播計(jì)算,從而對圖片數(shù)據(jù)進(jìn)行訓(xùn)練處理。多個網(wǎng)絡(luò)在同一 GPU上對圖片數(shù)據(jù)進(jìn)行并行訓(xùn)練處理,可以提升同一時間內(nèi)GPU的計(jì)算資源利用率,同時提升卷積神經(jīng)網(wǎng)絡(luò)對圖片數(shù)據(jù)的處理速度。
[0034]本領(lǐng)域技術(shù)人員應(yīng)能理解上述多個網(wǎng)絡(luò)并行訓(xùn)練圖片數(shù)據(jù)的方式僅為舉例,其他現(xiàn)有的或今后可能出現(xiàn)的多個網(wǎng)絡(luò)并行訓(xùn)練圖片數(shù)據(jù)的方式如可適用于本發(fā)明,也應(yīng)包含在本發(fā)明保護(hù)范圍以內(nèi),并在此以引用方式包含于此。
[0035]第四裝置14根據(jù)所述網(wǎng)絡(luò)經(jīng)訓(xùn)練處理后的誤差信息更新所述卷積神經(jīng)網(wǎng)絡(luò)的參數(shù)信息。其中,所述多個網(wǎng)絡(luò)在分別進(jìn)行訓(xùn)練處理的過程中根據(jù)反向傳播所得偏差以及前向傳播所得的結(jié)果,來計(jì)算網(wǎng)絡(luò)權(quán)值偏差,并將每一層的網(wǎng)絡(luò)權(quán)值偏差保存,根據(jù)每一層網(wǎng)絡(luò)權(quán)值的偏差對卷積神經(jīng)網(wǎng)絡(luò)參數(shù)信息進(jìn)行更新。因?yàn)樗龆鄠€網(wǎng)絡(luò)獨(dú)立運(yùn)行不互相阻塞的,在經(jīng)過一次訓(xùn)練后所有的網(wǎng)絡(luò)可以分別單獨(dú)進(jìn)行更新,或者因?yàn)樗龆鄠€網(wǎng)絡(luò)開始使用的是同一套參數(shù)進(jìn)行初始化的,且訓(xùn)練處理是并行進(jìn)行地,所以所述多個網(wǎng)絡(luò)在運(yùn)行時間基本一致的情況下也可以進(jìn)行統(tǒng)一的誤差更新,例如一次訓(xùn)練完結(jié)束的時間偏差都小于某一設(shè)定閾值,此時可以對多個網(wǎng)絡(luò)進(jìn)行統(tǒng)一更新。
[0036]優(yōu)選地,所述訓(xùn)練圖片數(shù)據(jù)中的圖片滿足單通道像素尺寸小于等于32*32。在同一GPU上并行運(yùn)行一個卷積神經(jīng)網(wǎng)絡(luò)的多個網(wǎng)絡(luò),可提高GPU的利用率,同時使得卷積神經(jīng)網(wǎng)絡(luò)在圖片處理尤其是在滿足一定條件的小圖片識別的過程中計(jì)算速度和收斂速度大幅度提升,尤其訓(xùn)練圖片數(shù)據(jù)中的圖片滿足單通道像素尺寸在小于等于32x32時,所述卷積神經(jīng)網(wǎng)絡(luò)識別圖片的速度有顯著提升。
[0037]優(yōu)選地,所述多個網(wǎng)絡(luò)中每一個都獨(dú)占所述GPU中的一個硬件隊(duì)列,其中,所述第二裝置12將所述卷積神經(jīng)網(wǎng)絡(luò)所對應(yīng)的訓(xùn)練圖片數(shù)據(jù)經(jīng)所述硬件隊(duì)列分配至所述多個網(wǎng)絡(luò)。
[0038]具體地,所述多個網(wǎng)絡(luò)獨(dú)立運(yùn)行的基礎(chǔ)需要有相應(yīng)的可以獨(dú)立運(yùn)行的硬件進(jìn)行支撐,以Nvidia所生產(chǎn)開普勒架構(gòu)之后支持CUDA運(yùn)行的GPU為例,在同一 GPU上可以允許每個獨(dú)立工作流獨(dú)占一個硬件隊(duì)列,在此基礎(chǔ)上同一GPU上的多個網(wǎng)絡(luò)實(shí)例均可維護(hù)一個獨(dú)立工作流屬性,該屬性可以決定該網(wǎng)絡(luò)實(shí)例在訓(xùn)練時在哪個獨(dú)立工作流所對應(yīng)的硬件隊(duì)列上運(yùn)行,即所分配的訓(xùn)練圖片數(shù)據(jù)實(shí)例在調(diào)用某一層負(fù)責(zé)計(jì)算的操作系統(tǒng)核心時,可以給該操作系統(tǒng)核心輸入一個關(guān)于具體在哪個獨(dú)立工作流上執(zhí)行的參數(shù),相應(yīng)的就可以在該獨(dú)立工作流對應(yīng)的網(wǎng)絡(luò)進(jìn)行訓(xùn)練圖片傳輸或者是其它計(jì)算。據(jù)此,所述訓(xùn)練圖片數(shù)據(jù)經(jīng)由圖片數(shù)據(jù)指針調(diào)用至對應(yīng)網(wǎng)絡(luò)時即經(jīng)過相應(yīng)的硬件隊(duì)列傳輸至相應(yīng)網(wǎng)絡(luò)。同一 GPU上每個網(wǎng)絡(luò)獨(dú)占一個硬件隊(duì)列是多網(wǎng)絡(luò)同GPU并行計(jì)算的基礎(chǔ),保證了各網(wǎng)絡(luò)運(yùn)行不相互干擾,從而可以充分利用(PU資源,提升各網(wǎng)絡(luò)的運(yùn)行效率。
[0039]本領(lǐng)域技術(shù)人員應(yīng)能理解上述調(diào)用獨(dú)立工作流的方式僅為舉例,其他現(xiàn)有的或今后可能出現(xiàn)的調(diào)用獨(dú)立工作流的方式如可適用于本發(fā)明,也應(yīng)包含在本發(fā)明保護(hù)范圍以內(nèi),并在此以引用方式包含于此。
[0040]優(yōu)選地,所述第二裝置12將所述卷積神經(jīng)網(wǎng)絡(luò)所對應(yīng)的訓(xùn)練圖片數(shù)據(jù)按所述多個網(wǎng)絡(luò)的數(shù)量分成多個訓(xùn)練圖片子集;將每個訓(xùn)練圖片子集傳輸至對應(yīng)的所述網(wǎng)絡(luò)。具體地,分配訓(xùn)練圖片數(shù)據(jù)的第二裝置12可以是一個函數(shù),這個函數(shù)將圖片數(shù)據(jù)分為與所述多個網(wǎng)絡(luò)數(shù)量相適應(yīng)的若干份,在所述多個網(wǎng)絡(luò)運(yùn)行需要對圖片數(shù)據(jù)處理時,通過指向所對應(yīng)部分的圖片數(shù)據(jù)地址的指針對圖片數(shù)據(jù)進(jìn)行調(diào)用,此時圖片數(shù)據(jù)藉由獨(dú)立工作流傳送至相對應(yīng)的所述網(wǎng)絡(luò)。將訓(xùn)練圖片數(shù)據(jù)分為對應(yīng)統(tǒng)一 GPU上多個網(wǎng)絡(luò)數(shù)量的若干份并傳送至各網(wǎng)絡(luò),可使得各網(wǎng)絡(luò)可以同時處理一批訓(xùn)練圖片數(shù)據(jù),從而在并行運(yùn)行時提高GHJ的資源使用率。
[0041]進(jìn)一步地,任兩個所述訓(xùn)練圖片子集中的圖片數(shù)量的差值低于預(yù)定的圖片分配閾值。其中,預(yù)定的圖片分配閾值可以盡可能的小,從而使得所分配給所述多個網(wǎng)絡(luò)中的圖片數(shù)量基本一致,從而達(dá)到平均分配的效果,例如,在同一GHJ卷積神經(jīng)網(wǎng)絡(luò)的網(wǎng)絡(luò)一共有4個,訓(xùn)練圖片一共有120張,若預(yù)定圖片分配閾值設(shè)置為0,則每個網(wǎng)絡(luò)所分得的圖片為30張,若預(yù)定圖片分配閾值設(shè)置為10,則每個網(wǎng)絡(luò)所分得的圖片可以為27、33、30、25。預(yù)定的圖片分配閾值可以很好的控制分配至各個網(wǎng)絡(luò)的圖片數(shù)量,使其在圖片總數(shù)與網(wǎng)絡(luò)總數(shù)的比值附近波動,從而使得各網(wǎng)絡(luò)在進(jìn)行圖片數(shù)據(jù)訓(xùn)練處理時的時間基本保持一致,從而提高了同一段時間內(nèi)GPU的資源利用率,也使得所述多個網(wǎng)絡(luò)基本保持同步運(yùn)行。
[0042]在一個優(yōu)選的實(shí)施例中(參照圖1),所述網(wǎng)絡(luò)包括多個計(jì)算層,其中,所述第三裝置13對所述多個網(wǎng)絡(luò)按所分配的所述訓(xùn)練圖片數(shù)據(jù)進(jìn)行并行訓(xùn)練處理,其中,所述多個網(wǎng)絡(luò)的訓(xùn)練處理按所述計(jì)算層保持同步。
[0043]具體地,在卷積神經(jīng)網(wǎng)絡(luò)中所有的多個計(jì)算層在所述的多個網(wǎng)絡(luò)中也同時都具有,每個網(wǎng)絡(luò)在對所分配到的圖片數(shù)據(jù)進(jìn)行并行訓(xùn)練處理時,使得所述多個網(wǎng)絡(luò)在每個計(jì)算層的數(shù)據(jù)處理保持同步,可以使得所有網(wǎng)絡(luò)的每一個計(jì)算層的都可以選擇在計(jì)算時所有網(wǎng)絡(luò)可以同時充分調(diào)動GPU上的資源,例如,在資源富裕的情況下某一時間可以允許三個相同的計(jì)算同時進(jìn)行,此時如果計(jì)算層不同步可能只有一個計(jì)算在進(jìn)行,從而造成了計(jì)算資源的浪費(fèi)。優(yōu)選地,在采用可以實(shí)現(xiàn)數(shù)據(jù)并行的網(wǎng)絡(luò)更新權(quán)值算法時,所有網(wǎng)絡(luò)可以同步得出相應(yīng)計(jì)算層的計(jì)算結(jié)果,從而在一次訓(xùn)練中正向和反向傳播的過程中進(jìn)行誤差的疊加,因?yàn)樗芯W(wǎng)絡(luò)初始化是使用的同一套參數(shù),在同步計(jì)算的情況下,可以將疊加的誤差對所有網(wǎng)絡(luò)實(shí)現(xiàn)同步更新,從而實(shí)現(xiàn)了所有網(wǎng)絡(luò)的權(quán)值共享,若計(jì)算層不保持同步,所有網(wǎng)絡(luò)的計(jì)算層計(jì)算進(jìn)程進(jìn)行的不一樣,從而無法對權(quán)值進(jìn)行統(tǒng)一更新,增加了計(jì)算的復(fù)雜度,占用了不必要的計(jì)算資源。
[0044]進(jìn)一步地,所述第三裝置13還在至少一個所述計(jì)算層中將所述多個網(wǎng)絡(luò)的訓(xùn)練處理合并進(jìn)行。一般情況下所述多個網(wǎng)絡(luò)分別在各自獨(dú)立工作流上計(jì)算可以提高處理效率,但是在具體訓(xùn)練處理的計(jì)算過程中存在將所述多個網(wǎng)絡(luò)同一計(jì)算層的數(shù)據(jù)計(jì)算合并會得到更快的計(jì)算速度。因?yàn)樗龆鄠€網(wǎng)絡(luò)在每個計(jì)算層的數(shù)據(jù)處理保持同步,因此在這樣的數(shù)據(jù)處理模式基礎(chǔ)上,可將符合條件的某個計(jì)算層中所述多個網(wǎng)絡(luò)的數(shù)據(jù)進(jìn)行合并處理,例如,在處理卷積神經(jīng)網(wǎng)絡(luò)中常見的矩陣運(yùn)算過程中,相乘的兩個矩陣越接近方陣計(jì)算效率越高,若所述各網(wǎng)絡(luò)獨(dú)立計(jì)算則會出長條形矩陣相乘從而造成效率低下,將卷積神經(jīng)網(wǎng)絡(luò)的多個網(wǎng)絡(luò)的同一計(jì)算層的矩陣計(jì)算進(jìn)行合并會得到接近方陣的矩陣,從而使得卷積神經(jīng)網(wǎng)絡(luò)數(shù)據(jù)處理速度有所提高。
[0045]本領(lǐng)域技術(shù)人員應(yīng)能理解上述在計(jì)算層中合并處理多個網(wǎng)絡(luò)訓(xùn)練的方式僅為舉例,其他現(xiàn)有的或今后可能出現(xiàn)的在計(jì)算層中合并處理多個網(wǎng)絡(luò)訓(xùn)練的方式如可適用于本發(fā)明,也應(yīng)包含在本發(fā)明保護(hù)范圍以內(nèi),并在此以引用方式包含于此。
[0046]更優(yōu)選地,所述第三裝置13還根據(jù)所述多個網(wǎng)絡(luò)的訓(xùn)練處理過程中所述GPU的利用率,確定所述多個網(wǎng)絡(luò)在下一個所述計(jì)算層中的訓(xùn)練處理方式。具體地,接上文所述在所述多個網(wǎng)絡(luò)并行處理訓(xùn)練圖片數(shù)據(jù)的過程中采取合并處理可改變卷積神經(jīng)網(wǎng)絡(luò)的計(jì)算效率,因此選擇所述多個網(wǎng)絡(luò)在某個計(jì)算層選擇是在同一個或幾個獨(dú)立工作流上共同或分組計(jì)算,或者各自分別子在某個獨(dú)立工作流上互相不干擾的獨(dú)立計(jì)算可以根據(jù)上層相似的計(jì)算層在計(jì)算時或者歷史數(shù)據(jù)中相應(yīng)計(jì)算層的GPU利用率來確定,從而使得卷積神經(jīng)網(wǎng)絡(luò)在處理訓(xùn)練圖片數(shù)據(jù)時更加靈活高效,也更好的應(yīng)用技術(shù)上已有的針對卷積神經(jīng)網(wǎng)絡(luò)的優(yōu)化,例如,在某一計(jì)算層中已有的技術(shù)優(yōu)化顯示合并所有網(wǎng)絡(luò)的數(shù)據(jù)計(jì)算會得到最高的GPU利用率或者計(jì)算速度,則此時可以讓所有網(wǎng)絡(luò)的該層操作系統(tǒng)內(nèi)核調(diào)用同一個獨(dú)立工作流,從而使得所有網(wǎng)絡(luò)順序執(zhí)行而獲得最優(yōu)的計(jì)算速度和資源利用率。
[0047]優(yōu)選地,所述第四裝置14根據(jù)所述網(wǎng)絡(luò)在每一所述計(jì)算層中的誤差信息,確定所述所述網(wǎng)絡(luò)經(jīng)訓(xùn)練處理后的誤差信息;根據(jù)所述網(wǎng)絡(luò)經(jīng)訓(xùn)練處理后的誤差信息更新所述卷積神經(jīng)網(wǎng)絡(luò)的參數(shù)信息。
[0048]具體地,可在卷積神經(jīng)網(wǎng)絡(luò)框架中增加多個網(wǎng)絡(luò)實(shí)例一起更新的功能,例如,在caffe中net類的實(shí)現(xiàn)中,可定義static的成員函數(shù),使得多個實(shí)例之間可進(jìn)行交流,從而達(dá)到共同更新的目的。如圖3所示所有網(wǎng)絡(luò)實(shí)例根據(jù)不同的數(shù)據(jù)都各自在不同的獨(dú)立工作流上完成前向傳播和反向傳播過程后,此更新功能將所有網(wǎng)絡(luò)實(shí)例對應(yīng)層的權(quán)值偏差都相加,由此確定所述網(wǎng)絡(luò)經(jīng)訓(xùn)練后的誤差信息,然后利用誤差信息來更新所有網(wǎng)絡(luò)。因?yàn)樵谟?xùn)練開始時,所有網(wǎng)絡(luò)都使用同一權(quán)值進(jìn)行初始化,因此經(jīng)過一次訓(xùn)練以后所有網(wǎng)絡(luò)實(shí)例一起更新且更新的權(quán)值偏差都一樣,就可以確保所有網(wǎng)絡(luò)實(shí)際上還是對同一網(wǎng)絡(luò)權(quán)值進(jìn)行訓(xùn)練,而區(qū)別僅在于各個網(wǎng)絡(luò)實(shí)例所用來訓(xùn)練使用的數(shù)據(jù)不同,例如,卷積神經(jīng)網(wǎng)絡(luò)的輸入數(shù)據(jù)為datal+data2,讓datal+data2全部輸入到卷積神經(jīng)網(wǎng)絡(luò)中進(jìn)行訓(xùn)練,得到網(wǎng)絡(luò)權(quán)值的誤差信息為delta_Wl+delta_W2,因?yàn)榫矸e神經(jīng)網(wǎng)絡(luò)更新方法可以可以進(jìn)行數(shù)據(jù)并行,即若只輸入datal,則可得到更新量delta_wl,若只輸入data2,則得到更新量delta_w2,這樣兩個網(wǎng)絡(luò)分開計(jì)算以后,只要把更新量加起來即delta_Wl+delta_W2,那么得到的結(jié)果就和一次性將所有數(shù)據(jù)都輸入得到的結(jié)果一樣,因此將誤差信息統(tǒng)一對卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行參數(shù)更新可以使得數(shù)據(jù)并行,從而提升卷積神經(jīng)網(wǎng)絡(luò)處理圖片數(shù)據(jù)的速度。
[0049]本領(lǐng)域技術(shù)人員應(yīng)能理解上述多個網(wǎng)絡(luò)實(shí)例一起更新的方式僅為舉例,其他現(xiàn)有的或今后可能出現(xiàn)的多個網(wǎng)絡(luò)實(shí)例一起更新的方式如可適用于本發(fā)明,也應(yīng)包含在本發(fā)明保護(hù)范圍以內(nèi),并在此以引用方式包含于此。
[0050]優(yōu)選地,如圖5所示的多GPU并行的方案中,所述設(shè)備I還包括:第五裝置15(未示出),其中,所述第五裝置15向?qū)?yīng)參數(shù)服務(wù)器上傳所述卷積神經(jīng)網(wǎng)絡(luò)的參數(shù)信息。第六裝置16(未示出),其中,所述第六裝置16接收所述參數(shù)服務(wù)器返回的、基于不同GPU上傳的所述卷積神經(jīng)網(wǎng)絡(luò)的參數(shù)信息所更新的所述卷積神經(jīng)網(wǎng)絡(luò)的參數(shù)信息。其中,所述參數(shù)服務(wù)器用于對不同GPU中的卷積神經(jīng)網(wǎng)絡(luò)的參數(shù)信息進(jìn)行更新并反饋,從而達(dá)到多個GPU參數(shù)信息同步更新使得多GHJ并行的效果。
[0051 ]具體地,在所述多GPU并行的方案中每個GPU均有多個網(wǎng)絡(luò)并存在同一卷積神經(jīng)網(wǎng)絡(luò)中,可以獨(dú)立運(yùn)行且不會互相干擾,因此,在每個GHJ中多個網(wǎng)絡(luò)并行訓(xùn)練處理,且在訓(xùn)練處理過程中根據(jù)網(wǎng)絡(luò)訓(xùn)練處理后的誤差信息統(tǒng)一進(jìn)行參數(shù)信息的更新,在此,每個GPU中的參數(shù)信息更新是基于與多個GPU共同進(jìn)行數(shù)據(jù)交互的參數(shù)服務(wù)器所反饋的信息進(jìn)行的。例如圖5所示的權(quán)值更新,是通過權(quán)值更新器完成,其中,每個GPU中的所述權(quán)值更新器與CPU中央處理器中的參數(shù)服務(wù)器進(jìn)行數(shù)據(jù)交互,由每個GPU中的權(quán)值更新器上傳所述參數(shù)服務(wù)器在數(shù)據(jù)交互的過程中根據(jù)每個GHJ上的權(quán)值更新計(jì)算的權(quán)值矩陣對權(quán)值進(jìn)行更新。
[0052]優(yōu)選地,每個GPU中的權(quán)值矩陣在進(jìn)行完一次訓(xùn)練過程后,將權(quán)值矩陣上傳到CPU中的參數(shù)服務(wù)器中,參數(shù)服務(wù)器中一直維護(hù)著一份全局的最新的權(quán)值矩陣,在接收到某一GPU的計(jì)算結(jié)果后,進(jìn)行更新,并將更新完成后的權(quán)值矩陣傳回給對應(yīng)的GPU,進(jìn)行下一次的訓(xùn)練。具體參數(shù)服務(wù)器是如何根據(jù)每個GPU的計(jì)算結(jié)果來進(jìn)行更新全局權(quán)值矩陣的算法,不同的實(shí)現(xiàn)不盡相同。
[0053]本領(lǐng)域技術(shù)人員應(yīng)能理解上述多GPU并行進(jìn)行神經(jīng)網(wǎng)絡(luò)圖片識別的方式僅為舉例,其他現(xiàn)有的或今后可能出現(xiàn)的多GPU并行進(jìn)行神經(jīng)網(wǎng)絡(luò)圖片識別的方式如可適用于本發(fā)明,也應(yīng)包含在本發(fā)明保護(hù)范圍以內(nèi),并在此以引用方式包含于此。
[0054]圖4示出根據(jù)本申請另一個方面的一種對用于圖片識別的卷積神經(jīng)網(wǎng)絡(luò)訓(xùn)練的方法流程圖。
[0055]其中,在步驟SI中設(shè)備I根據(jù)用于圖片識別的卷積神經(jīng)網(wǎng)絡(luò)的參數(shù)信息初始化同一GPU上所述卷積神經(jīng)網(wǎng)絡(luò)的多個網(wǎng)絡(luò);在步驟S2中設(shè)備I將所述卷積神經(jīng)網(wǎng)絡(luò)所對應(yīng)的訓(xùn)練圖片數(shù)據(jù)分配至所述多個網(wǎng)絡(luò);在步驟S3中設(shè)備I對所述多個網(wǎng)絡(luò)按所分配的所述訓(xùn)練圖片數(shù)據(jù)進(jìn)行并行訓(xùn)練處理;在步驟S4中設(shè)備I根據(jù)所述網(wǎng)絡(luò)經(jīng)訓(xùn)練處理后的誤差信息更新所述卷積神經(jīng)網(wǎng)絡(luò)的參數(shù)信息。
[0056]具體地,在步驟SI中設(shè)備I根據(jù)用于圖片識別的卷積神經(jīng)網(wǎng)絡(luò)的參數(shù)信息初始化同一GPU上所述卷積神經(jīng)網(wǎng)絡(luò)的多個網(wǎng)絡(luò)。其中,對所述卷積神經(jīng)網(wǎng)絡(luò)的多個網(wǎng)絡(luò)使用同一套參數(shù)對其進(jìn)行初始化,即所述同一GPU上的多個網(wǎng)絡(luò)共享同一套初始化參數(shù),初始化參數(shù)包括權(quán)值但不限于權(quán)值。共享同一套初始化參數(shù),可為所述多個網(wǎng)絡(luò)并行打下基礎(chǔ),簡化初始化工作同時提高多個網(wǎng)絡(luò)并行工作的效率。優(yōu)選地,所述卷積神經(jīng)網(wǎng)絡(luò)的多個網(wǎng)絡(luò)可以是該卷積神經(jīng)網(wǎng)絡(luò)的多個網(wǎng)絡(luò)副本,每個網(wǎng)絡(luò)都保留有完整卷積神經(jīng)網(wǎng)絡(luò)所需的必要的數(shù)據(jù)信息。
[0057]本領(lǐng)域技術(shù)人員應(yīng)能理解上述初始化同一GPU上所述卷積神經(jīng)網(wǎng)絡(luò)的多個網(wǎng)絡(luò)的方式僅為舉例,其他現(xiàn)有的或今后可能出現(xiàn)的初始化同一 GPU上所述卷積神經(jīng)網(wǎng)絡(luò)的多個網(wǎng)絡(luò)的方式如可適用于本發(fā)明,也應(yīng)包含在本發(fā)明保護(hù)范圍以內(nèi),并在此以引用方式包含于此。
[0058]優(yōu)選地,所述多個網(wǎng)絡(luò)的數(shù)量信息與所述GPU所支持的獨(dú)立工作流的數(shù)量相適應(yīng)。具體地,GPU的每個獨(dú)立工作流上可以相應(yīng)地運(yùn)行一個網(wǎng)絡(luò),由于每個獨(dú)立工作流不會互相阻塞,因此多個網(wǎng)絡(luò)可以在各自的獨(dú)立工作流上并行運(yùn)行,由此,多個網(wǎng)絡(luò)的數(shù)量受到所述GPU所支持的獨(dú)立工作流的數(shù)量的約束,需小于或等于GPU所支持的獨(dú)立工作流的數(shù)量。所述獨(dú)立工作流的數(shù)量受到GPU本身架構(gòu)以及所支持通用計(jì)算標(biāo)準(zhǔn)的約束,具體地,GPU需要有獨(dú)立核心流處理器的硬件架構(gòu),同時需要支持至少一種GPU的通用計(jì)算標(biāo)準(zhǔn)如Nvidia的CUDA、Khronos的OpenCL、AMD的Stream等,例如,例如Nvidia所生產(chǎn)的GPU從開普勒架構(gòu)都可以支持硬件隊(duì)列獨(dú)立工作且不互相阻塞,即允許CUDA流獨(dú)占一個硬件工作隊(duì)列,從而形成獨(dú)立工作流,每個獨(dú)立工作流對應(yīng)一個網(wǎng)絡(luò)可充分利用GPU的硬件資源,并提高卷積神經(jīng)網(wǎng)絡(luò)的處理速度。
[0059]接著,在步驟S2中設(shè)備I將所述卷積神經(jīng)網(wǎng)絡(luò)所對應(yīng)的訓(xùn)練圖片數(shù)據(jù)分配至所述多個網(wǎng)絡(luò)。具體地,這一功能可由一個數(shù)據(jù)分配器完成,具體地,數(shù)據(jù)分配器功能可以由一個函數(shù)實(shí)現(xiàn),即給予在同一GPU上卷積神經(jīng)網(wǎng)絡(luò)的多個網(wǎng)絡(luò)分配該卷積神經(jīng)網(wǎng)絡(luò)所獲取的圖片數(shù)據(jù),從而使得每個網(wǎng)絡(luò)均獲取可供訓(xùn)練的圖片數(shù)據(jù)。數(shù)據(jù)分配函數(shù)將需要訓(xùn)練的圖片數(shù)據(jù)劃分成若干部分,創(chuàng)建圖片數(shù)據(jù)指針并給每個指針分配一個分別指向所分的若干部分圖片數(shù)據(jù)的地址,使得每個獲得圖片數(shù)據(jù)的網(wǎng)絡(luò)均分得并維護(hù)一個圖片數(shù)據(jù)指針。優(yōu)選地,所述卷積神經(jīng)網(wǎng)絡(luò)所對應(yīng)的訓(xùn)練圖片數(shù)據(jù)由CPU獲取,數(shù)據(jù)分配器可以分配CPU內(nèi)存中的地址,也可以分配GPU的顯存中的地址。前者圖片數(shù)據(jù)指針指向CPU內(nèi)存中的地址,各網(wǎng)絡(luò)實(shí)例分別從圖片數(shù)據(jù)指針?biāo)赶虻腃HJ地址中將圖片數(shù)據(jù)直接拷貝至GPU顯存。如圖2所示,后者卷積神經(jīng)網(wǎng)絡(luò)框架先將所有數(shù)據(jù)從內(nèi)存拷貝至GHJ顯存,圖片數(shù)據(jù)指針指向GPU顯存中的地址,數(shù)據(jù)分配器再從顯存中拷貝至各網(wǎng)絡(luò)實(shí)例。
[0060]本領(lǐng)域技術(shù)人員應(yīng)能理解上述數(shù)據(jù)分配器分配圖片數(shù)據(jù)的方式僅為舉例,其他現(xiàn)有的或今后可能出現(xiàn)的數(shù)據(jù)分配器分配圖片數(shù)據(jù)的方式如可適用于本發(fā)明,也應(yīng)包含在本發(fā)明保護(hù)范圍以內(nèi),并在此以引用方式包含于此。
[0061]在步驟S3中設(shè)備I對所述多個網(wǎng)絡(luò)按所分配的所述訓(xùn)練圖片數(shù)據(jù)進(jìn)行并行訓(xùn)練處理。其中,所述的多個網(wǎng)絡(luò)是并存在卷積神經(jīng)網(wǎng)絡(luò)中,同時可以獨(dú)立運(yùn)行且不會互相干擾,從而使得所述多個網(wǎng)絡(luò)可以進(jìn)行并行訓(xùn)練處理。具體地,對卷積神經(jīng)網(wǎng)絡(luò)框架的代碼進(jìn)行修改,例如,以卷積神經(jīng)網(wǎng)絡(luò)框架caf f e為例,修改caf f e的代碼,從而允許caf f e程序運(yùn)行時可以存在多個網(wǎng)絡(luò)實(shí)例。同時,每個網(wǎng)絡(luò)實(shí)例均單獨(dú)保存一份網(wǎng)絡(luò)權(quán)值數(shù)據(jù),以及前向傳播和反向傳播過程中所需的數(shù)據(jù),使得所述多個網(wǎng)絡(luò)實(shí)例可以獨(dú)立運(yùn)行。因此在所述多個網(wǎng)絡(luò)初始化并分別獲取訓(xùn)練圖片數(shù)據(jù)后,可在各獨(dú)立運(yùn)行的網(wǎng)絡(luò)中進(jìn)行卷積神經(jīng)網(wǎng)絡(luò)的前向傳播計(jì)算以及后向傳播計(jì)算,從而對圖片數(shù)據(jù)進(jìn)行訓(xùn)練處理。多個網(wǎng)絡(luò)在同一 GHJ上對圖片數(shù)據(jù)進(jìn)行并行訓(xùn)練處理,可以提升同一時間內(nèi)GPU的計(jì)算資源利用率,同時提升卷積神經(jīng)網(wǎng)絡(luò)對圖片數(shù)據(jù)的處理速度。
[0062]本領(lǐng)域技術(shù)人員應(yīng)能理解上述多個網(wǎng)絡(luò)并行訓(xùn)練圖片數(shù)據(jù)的方式僅為舉例,其他現(xiàn)有的或今后可能出現(xiàn)的多個網(wǎng)絡(luò)并行訓(xùn)練圖片數(shù)據(jù)的方式如可適用于本發(fā)明,也應(yīng)包含在本發(fā)明保護(hù)范圍以內(nèi),并在此以引用方式包含于此。
[0063]在步驟S4中設(shè)備I根據(jù)所述網(wǎng)絡(luò)經(jīng)訓(xùn)練處理后的誤差信息更新所述卷積神經(jīng)網(wǎng)絡(luò)的參數(shù)信息。其中,所述多個網(wǎng)絡(luò)在分別進(jìn)行訓(xùn)練處理的過程中根據(jù)反向傳播所得偏差以及前向傳播所得的結(jié)果,來計(jì)算網(wǎng)絡(luò)權(quán)值偏差,并將每一層的網(wǎng)絡(luò)權(quán)值偏差保存,根據(jù)每一層網(wǎng)絡(luò)權(quán)值的偏差對卷積神經(jīng)網(wǎng)絡(luò)參數(shù)信息進(jìn)行更新。因?yàn)樗龆鄠€網(wǎng)絡(luò)獨(dú)立運(yùn)行不互相阻塞的,在經(jīng)過一次訓(xùn)練后所有的網(wǎng)絡(luò)可以分別單獨(dú)進(jìn)行更新,或者因?yàn)樗龆鄠€網(wǎng)絡(luò)開始使用的是同一套參數(shù)進(jìn)行初始化的,且訓(xùn)練處理是并行進(jìn)行地,所以所述多個網(wǎng)絡(luò)在運(yùn)行時間基本一致的情況下也可以進(jìn)行統(tǒng)一的誤差更新,例如一次訓(xùn)練完結(jié)束的時間偏差都小于某一設(shè)定閾值,此時可以對多個網(wǎng)絡(luò)進(jìn)行統(tǒng)一更新。
[0064]優(yōu)選地,所述訓(xùn)練圖片數(shù)據(jù)中的圖片滿足單通道像素尺寸小于等于32*32。在同一GPU上并行運(yùn)行一個卷積神經(jīng)網(wǎng)絡(luò)的多個網(wǎng)絡(luò),可提高GPU的利用率,同時使得卷積神經(jīng)網(wǎng)絡(luò)在圖片處理尤其是在滿足一定條件的小圖片識別的過程中計(jì)算速度和收斂速度大幅度提升,尤其訓(xùn)練圖片數(shù)據(jù)中的圖片滿足單通道像素尺寸在小于等于32x32時,所述卷積神經(jīng)網(wǎng)絡(luò)識別圖片的速度有顯著提升。
[0065]優(yōu)選地,所述多個網(wǎng)絡(luò)中每一個都獨(dú)占所述GPU中的一個硬件隊(duì)列,其中,所述將所述卷積神經(jīng)網(wǎng)絡(luò)所對應(yīng)的訓(xùn)練圖片數(shù)據(jù)分配至所述多個網(wǎng)絡(luò)包括:將所述卷積神經(jīng)網(wǎng)絡(luò)所對應(yīng)的訓(xùn)練圖片數(shù)據(jù)經(jīng)所述硬件隊(duì)列分配至所述多個網(wǎng)絡(luò)。
[0066]具體地,所述多個網(wǎng)絡(luò)獨(dú)立運(yùn)行的基礎(chǔ)需要有相應(yīng)的可以獨(dú)立運(yùn)行的硬件進(jìn)行支撐,以Nvidia所生產(chǎn)開普勒架構(gòu)之后支持CUDA運(yùn)行的GPU為例,在同一 GPU上可以允許每個獨(dú)立工作流獨(dú)占一個硬件隊(duì)列,在此基礎(chǔ)上同一GPU上的多個網(wǎng)絡(luò)實(shí)例均可維護(hù)一個獨(dú)立工作流屬性,該屬性可以決定該網(wǎng)絡(luò)實(shí)例在訓(xùn)練時在哪個獨(dú)立工作流所對應(yīng)的硬件隊(duì)列上運(yùn)行,即所分配的訓(xùn)練圖片數(shù)據(jù)實(shí)例在調(diào)用某一層負(fù)責(zé)計(jì)算的操作系統(tǒng)核心時,可以給該操作系統(tǒng)核心輸入一個關(guān)于具體在哪個獨(dú)立工作流上執(zhí)行的參數(shù),相應(yīng)的就可以在該獨(dú)立工作流對應(yīng)的網(wǎng)絡(luò)進(jìn)行訓(xùn)練圖片傳輸或者是其它計(jì)算。據(jù)此,所述訓(xùn)練圖片數(shù)據(jù)經(jīng)由圖片數(shù)據(jù)指針調(diào)用至對應(yīng)網(wǎng)絡(luò)時即經(jīng)過相應(yīng)的硬件隊(duì)列傳輸至相應(yīng)網(wǎng)絡(luò)。同一 GPU上每個網(wǎng)絡(luò)獨(dú)占一個硬件隊(duì)列是多網(wǎng)絡(luò)同GPU并行計(jì)算的基礎(chǔ),保證了各網(wǎng)絡(luò)運(yùn)行不相互干擾,從而可以充分利用(PU資源,提升各網(wǎng)絡(luò)的運(yùn)行效率。
[0067]本領(lǐng)域技術(shù)人員應(yīng)能理解上述調(diào)用獨(dú)立工作流的方式僅為舉例,其他現(xiàn)有的或今后可能出現(xiàn)的調(diào)用獨(dú)立工作流的方式如可適用于本發(fā)明,也應(yīng)包含在本發(fā)明保護(hù)范圍以內(nèi),并在此以引用方式包含于此。
[0068]優(yōu)選地,所述將所述卷積神經(jīng)網(wǎng)絡(luò)所對應(yīng)的訓(xùn)練圖片數(shù)據(jù)分配至所述多個網(wǎng)絡(luò)包括:將所述卷積神經(jīng)網(wǎng)絡(luò)所對應(yīng)的訓(xùn)練圖片數(shù)據(jù)按所述多個網(wǎng)絡(luò)的數(shù)量分成多個訓(xùn)練圖片子集;將每個訓(xùn)練圖片子集傳輸至對應(yīng)的所述網(wǎng)絡(luò)。具體地,分配訓(xùn)練圖片數(shù)據(jù)的可以是一個函數(shù),這個函數(shù)將圖片數(shù)據(jù)分為與所述多個網(wǎng)絡(luò)數(shù)量相適應(yīng)的若干份,在所述多個網(wǎng)絡(luò)運(yùn)行需要對圖片數(shù)據(jù)處理時,通過指向所對應(yīng)部分的圖片數(shù)據(jù)地址的指針對圖片數(shù)據(jù)進(jìn)行調(diào)用,此時圖片數(shù)據(jù)藉由獨(dú)立工作流傳送至相對應(yīng)的所述網(wǎng)絡(luò)。將訓(xùn)練圖片數(shù)據(jù)分為對應(yīng)統(tǒng)一 GPU上多個網(wǎng)絡(luò)數(shù)量的若干份并傳送至各網(wǎng)絡(luò),可使得各網(wǎng)絡(luò)可以同時處理一批訓(xùn)練圖片數(shù)據(jù),從而在并行運(yùn)行時提高GPU的資源使用率。
[0069]進(jìn)一步地,任兩個所述訓(xùn)練圖片子集中的圖片數(shù)量的差值低于預(yù)定的圖片分配閾值。其中,預(yù)定的圖片分配閾值可以盡可能的小,從而使得所分配給所述多個網(wǎng)絡(luò)中的圖片數(shù)量基本一致,從而達(dá)到平均分配的效果,例如,在同一 GPU上卷積神經(jīng)網(wǎng)絡(luò)的網(wǎng)絡(luò)一共有4個,訓(xùn)練圖片一共有120張,若預(yù)定圖片分配閾值設(shè)置為0,則每個網(wǎng)絡(luò)所分得的圖片為30張,若預(yù)定圖片分配閾值設(shè)置為10,則每個網(wǎng)絡(luò)所分得的圖片可以為27、33、30、25。預(yù)定的圖片分配閾值可以很好的控制分配至各個網(wǎng)絡(luò)的圖片數(shù)量,使其在圖片總數(shù)與網(wǎng)絡(luò)總數(shù)的比值附近波動,從而使得各網(wǎng)絡(luò)在進(jìn)行圖片數(shù)據(jù)訓(xùn)練處理時的時間基本保持一致,從而提高了同一段時間內(nèi)GPU的資源利用率,也使得所述多個網(wǎng)絡(luò)基本保持同步運(yùn)行。
[0070]在一個優(yōu)選的實(shí)施例中(參照圖1),所述網(wǎng)絡(luò)包括多個計(jì)算層,其中,所述對所述多個網(wǎng)絡(luò)按所分配的所述訓(xùn)練圖片數(shù)據(jù)進(jìn)行并行訓(xùn)練處理包括:對所述多個網(wǎng)絡(luò)按所分配的所述訓(xùn)練圖片數(shù)據(jù)進(jìn)行并行訓(xùn)練處理,其中,所述多個網(wǎng)絡(luò)的訓(xùn)練處理按所述計(jì)算層保持同步。
[0071]具體地,在卷積神經(jīng)網(wǎng)絡(luò)中所有的多個計(jì)算層在所述的多個網(wǎng)絡(luò)中也同時都具有,每個網(wǎng)絡(luò)在對所分配到的圖片數(shù)據(jù)進(jìn)行并行訓(xùn)練處理時,使得所述多個網(wǎng)絡(luò)在每個計(jì)算層的數(shù)據(jù)處理保持同步,可以使得所有網(wǎng)絡(luò)的每一個計(jì)算層的都可以選擇在計(jì)算時所有網(wǎng)絡(luò)可以同時充分調(diào)動GPU上的資源,例如,在資源富裕的情況下某一時間可以允許三個相同的計(jì)算同時進(jìn)行,此時如果計(jì)算層不同步可能只有一個計(jì)算在進(jìn)行,從而造成了計(jì)算資源的浪費(fèi)。優(yōu)選地,在采用可以實(shí)現(xiàn)數(shù)據(jù)并行的網(wǎng)絡(luò)更新權(quán)值算法時,所有網(wǎng)絡(luò)可以同步得出相應(yīng)計(jì)算層的計(jì)算結(jié)果,從而在一次訓(xùn)練中正向和反向傳播的過程中進(jìn)行誤差的疊加,因?yàn)樗芯W(wǎng)絡(luò)初始化是使用的同一套參數(shù),在同步計(jì)算的情況下,可以將疊加的誤差對所有網(wǎng)絡(luò)實(shí)現(xiàn)同步更新,從而實(shí)現(xiàn)了所有網(wǎng)絡(luò)的權(quán)值共享,若計(jì)算層不保持同步,所有網(wǎng)絡(luò)的計(jì)算層計(jì)算進(jìn)程進(jìn)行的不一樣,從而無法對權(quán)值進(jìn)行統(tǒng)一更新,增加了計(jì)算的復(fù)雜度,占用了不必要的計(jì)算資源。
[0072]進(jìn)一步地,所述對所述多個網(wǎng)絡(luò)按所分配的所述訓(xùn)練圖片數(shù)據(jù)進(jìn)行并行訓(xùn)練處理還包括:在至少一個所述計(jì)算層中將所述多個網(wǎng)絡(luò)的訓(xùn)練處理合并進(jìn)行。一般情況下所述多個網(wǎng)絡(luò)分別在各自獨(dú)立工作流上計(jì)算可以提高處理效率,但是在具體訓(xùn)練處理的計(jì)算過程中存在將所述多個網(wǎng)絡(luò)同一計(jì)算層的數(shù)據(jù)計(jì)算合并會得到更快的計(jì)算速度。因?yàn)樗龆鄠€網(wǎng)絡(luò)在每個計(jì)算層的數(shù)據(jù)處理保持同步,因此在這樣的數(shù)據(jù)處理模式基礎(chǔ)上,可將符合條件的某個計(jì)算層中所述多個網(wǎng)絡(luò)的數(shù)據(jù)進(jìn)行合并處理,例如,在處理卷積神經(jīng)網(wǎng)絡(luò)中常見的矩陣運(yùn)算過程中,相乘的兩個矩陣越接近方陣計(jì)算效率越高,若所述各網(wǎng)絡(luò)獨(dú)立計(jì)算則會出長條形矩陣相乘從而造成效率低下,將卷積神經(jīng)網(wǎng)絡(luò)的多個網(wǎng)絡(luò)的同一計(jì)算層的矩陣計(jì)算進(jìn)行合并會得到接近方陣的矩陣,從而使得卷積神經(jīng)網(wǎng)絡(luò)數(shù)據(jù)處理速度有所提高。
[0073]本領(lǐng)域技術(shù)人員應(yīng)能理解上述在計(jì)算層中合并處理多個網(wǎng)絡(luò)訓(xùn)練的方式僅為舉例,其他現(xiàn)有的或今后可能出現(xiàn)的在計(jì)算層中合并處理多個網(wǎng)絡(luò)訓(xùn)練的方式如可適用于本發(fā)明,也應(yīng)包含在本發(fā)明保護(hù)范圍以內(nèi),并在此以引用方式包含于此。
[0074]更優(yōu)選地,所述對所述多個網(wǎng)絡(luò)按所分配的所述訓(xùn)練圖片數(shù)據(jù)進(jìn)行并行訓(xùn)練處理還包括:根據(jù)所述多個網(wǎng)絡(luò)的訓(xùn)練處理過程中所述GHJ的利用率,確定所述多個網(wǎng)絡(luò)在下一個所述計(jì)算層中的訓(xùn)練處理方式。具體地,接上文所述在所述多個網(wǎng)絡(luò)并行處理訓(xùn)練圖片數(shù)據(jù)的過程中采取合并處理可改變卷積神經(jīng)網(wǎng)絡(luò)的計(jì)算效率,因此選擇所述多個網(wǎng)絡(luò)在某個計(jì)算層選擇是在同一個或幾個獨(dú)立工作流上共同或分組計(jì)算,或者各自分別子在某個獨(dú)立工作流上互相不干擾的獨(dú)立計(jì)算可以根據(jù)上層相似的計(jì)算層在計(jì)算時或者歷史數(shù)據(jù)中相應(yīng)計(jì)算層的GPU利用率來確定,從而使得卷積神經(jīng)網(wǎng)絡(luò)在處理訓(xùn)練圖片數(shù)據(jù)時更加靈活高效,也更好的應(yīng)用技術(shù)上已有的針對卷積神經(jīng)網(wǎng)絡(luò)的優(yōu)化,例如,在某一計(jì)算層中已有的技術(shù)優(yōu)化顯示合并所有網(wǎng)絡(luò)的數(shù)據(jù)計(jì)算會得到最高的GPU利用率或者計(jì)算速度,則此時可以讓所有網(wǎng)絡(luò)的該層操作系統(tǒng)內(nèi)核調(diào)用同一個獨(dú)立工作流,從而使得所有網(wǎng)絡(luò)順序執(zhí)行而獲得最優(yōu)的計(jì)算速度和資源利用率。
[0075]優(yōu)選地,所述根據(jù)所述網(wǎng)絡(luò)經(jīng)訓(xùn)練處理后的誤差信息更新所述卷積神經(jīng)網(wǎng)絡(luò)的參數(shù)信息包括:根據(jù)所述網(wǎng)絡(luò)在每一所述計(jì)算層中的誤差信息,確定所述所述網(wǎng)絡(luò)經(jīng)訓(xùn)練處理后的誤差信息;根據(jù)所述網(wǎng)絡(luò)經(jīng)訓(xùn)練處理后的誤差信息更新所述卷積神經(jīng)網(wǎng)絡(luò)的參數(shù)信息。
[0076]具體地,可在卷積神經(jīng)網(wǎng)絡(luò)框架中增加多個網(wǎng)絡(luò)實(shí)例一起更新的功能,如圖3所示所有網(wǎng)絡(luò)實(shí)例根據(jù)不同的數(shù)據(jù)都各自在不同的獨(dú)立工作流上完成前向傳播和反向傳播過程后,此更新功能將所有網(wǎng)絡(luò)實(shí)例對應(yīng)層的權(quán)值偏差都相加,由此確定所述網(wǎng)絡(luò)經(jīng)訓(xùn)練后的誤差信息,然后利用誤差信息來更新所有網(wǎng)絡(luò)。因?yàn)樵谟?xùn)練開始時,所有網(wǎng)絡(luò)都使用同一權(quán)值進(jìn)行初始化,因此經(jīng)過一次訓(xùn)練以后所有網(wǎng)絡(luò)實(shí)例一起更新且更新的權(quán)值偏差都一樣,就可以確保所有網(wǎng)絡(luò)實(shí)際上還是對同一網(wǎng)絡(luò)權(quán)值進(jìn)行訓(xùn)練,而區(qū)別僅在于各個網(wǎng)絡(luò)實(shí)例所用來訓(xùn)練使用的數(shù)據(jù)不同,例如,卷積神經(jīng)網(wǎng)絡(luò)的輸入數(shù)據(jù)為datal+data2,讓datal+data2全部輸入到卷積神經(jīng)網(wǎng)絡(luò)中進(jìn)行訓(xùn)練,得到網(wǎng)絡(luò)權(quán)值的誤差信息為delta_Wl+delta_w2,因?yàn)榫矸e神經(jīng)網(wǎng)絡(luò)更新方法可以可以進(jìn)行數(shù)據(jù)并行,即若只輸入datal,則可得到更新量delta_wl,若只輸入data2,則得到更新量delta_w2,這樣兩個網(wǎng)絡(luò)分開計(jì)算以后,只要把更新量加起來即delta_Wl+delta_W2,那么得到的結(jié)果就和一次性將所有數(shù)據(jù)都輸入得到的結(jié)果一樣,因此將誤差信息統(tǒng)一對卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行參數(shù)更新可以使得數(shù)據(jù)并行,從而提升卷積神經(jīng)網(wǎng)絡(luò)處理圖片數(shù)據(jù)的速度。
[0077]優(yōu)選地,如圖5所示的多GPU并行的方案中,所述方法還包括:步驟S5(未示出),其中,在步驟S5中設(shè)備I向?qū)?yīng)參數(shù)服務(wù)器上傳所述卷積神經(jīng)網(wǎng)絡(luò)的參數(shù)信息。步驟S6(未示出),其中,在步驟S6中設(shè)備I接收所述參數(shù)服務(wù)器返回的、基于不同GPU上傳的所述卷積神經(jīng)網(wǎng)絡(luò)的參數(shù)信息所更新的所述卷積神經(jīng)網(wǎng)絡(luò)的參數(shù)信息。其中,所述參數(shù)服務(wù)器用于對不同GPU中的卷積神經(jīng)網(wǎng)絡(luò)的參數(shù)信息進(jìn)行更新并反饋,從而達(dá)到多個GPU參數(shù)信息同步更新使得多GHJ并行的效果。
[0078]具體地,在所述多GPU并行的方案中每個GPU均有多個網(wǎng)絡(luò)并存在同一卷積神經(jīng)網(wǎng)絡(luò)中,可以獨(dú)立運(yùn)行且不會互相干擾,因此,在每個GHJ中多個網(wǎng)絡(luò)并行訓(xùn)練處理,且在訓(xùn)練處理過程中根據(jù)網(wǎng)絡(luò)訓(xùn)練處理后的誤差信息統(tǒng)一進(jìn)行參數(shù)信息的更新,在此,每個GPU中的參數(shù)信息更新是基于與多個GPU共同進(jìn)行數(shù)據(jù)交互的參數(shù)服務(wù)器所反饋的信息進(jìn)行的。例如圖5所示的權(quán)值更新,是通過權(quán)值更新器完成,其中,每個GPU中的所述權(quán)值更新器與CPU中央處理器中的參數(shù)服務(wù)器進(jìn)行數(shù)據(jù)交互,由每個GPU中的權(quán)值更新器上傳所述參數(shù)服務(wù)器在數(shù)據(jù)交互的過程中根據(jù)每個GHJ上的權(quán)值更新計(jì)算的權(quán)值矩陣對權(quán)值進(jìn)行更新。
[0079]優(yōu)選地,每個GPU中的權(quán)值矩陣在進(jìn)行完一次訓(xùn)練過程后,將權(quán)值矩陣上傳到CPU中的參數(shù)服務(wù)器中,參數(shù)服務(wù)器中一直維護(hù)著一份全局的最新的權(quán)值矩陣,在接收到某一GPU的計(jì)算結(jié)果后,進(jìn)行更新,并將更新完成后的權(quán)值矩陣傳回給對應(yīng)的GPU,進(jìn)行下一次的訓(xùn)練。具體參數(shù)服務(wù)器是如何根據(jù)每個GPU的計(jì)算結(jié)果來進(jìn)行更新全局權(quán)值矩陣的算法,不同的實(shí)現(xiàn)不盡相同。
[0080]本領(lǐng)域技術(shù)人員應(yīng)能理解上述多GPU并行進(jìn)行神經(jīng)網(wǎng)絡(luò)圖片識別的方式僅為舉例,其他現(xiàn)有的或今后可能出現(xiàn)的多GPU并行進(jìn)行神經(jīng)網(wǎng)絡(luò)圖片識別的方式如可適用于本發(fā)明,也應(yīng)包含在本發(fā)明保護(hù)范圍以內(nèi),并在此以引用方式包含于此。
[0081]本領(lǐng)域技術(shù)人員應(yīng)能理解上述多個網(wǎng)絡(luò)實(shí)例一起更新的方式僅為舉例,其他現(xiàn)有的或今后可能出現(xiàn)的多個網(wǎng)絡(luò)實(shí)例一起更新的方式如可適用于本發(fā)明,也應(yīng)包含在本發(fā)明保護(hù)范圍以內(nèi),并在此以引用方式包含于此。
[0082]對于本領(lǐng)域技術(shù)人員而言,顯然本申請不限于上述示范性實(shí)施例的細(xì)節(jié),而且在不背離本申請的精神或基本特征的情況下,能夠以其他的具體形式實(shí)現(xiàn)本申請。因此,無論從哪一點(diǎn)來看,均應(yīng)將實(shí)施例看作是示范性的,而且是非限制性的,本申請的范圍由所附權(quán)利要求而不是上述說明限定,因此旨在將落在權(quán)利要求的等同要件的含義和范圍內(nèi)的所有變化涵括在本申請內(nèi)。不應(yīng)將權(quán)利要求中的任何附圖標(biāo)記視為限制所涉及的權(quán)利要求。此夕卜,顯然“包括”一詞不排除其他單元或步驟,單數(shù)不排除復(fù)數(shù)。裝置權(quán)利要求中陳述的多個單元或裝置也可以由一個單元或裝置通過軟件或者硬件來實(shí)現(xiàn)。第一,第二等詞語用來表示名稱,而并不表示任何特定的順序。
【主權(quán)項(xiàng)】
1.一種對用于圖片識別的卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練的方法,包括: 根據(jù)用于圖片識別的卷積神經(jīng)網(wǎng)絡(luò)的參數(shù)信息初始化同一 GHJ上所述卷積神經(jīng)網(wǎng)絡(luò)的多個網(wǎng)絡(luò); 將所述卷積神經(jīng)網(wǎng)絡(luò)所對應(yīng)的訓(xùn)練圖片數(shù)據(jù)分配至所述多個網(wǎng)絡(luò); 對所述多個網(wǎng)絡(luò)按所分配的所述訓(xùn)練圖片數(shù)據(jù)進(jìn)行并行訓(xùn)練處理; 根據(jù)所述網(wǎng)絡(luò)經(jīng)訓(xùn)練處理后的誤差信息更新所述卷積神經(jīng)網(wǎng)絡(luò)的參數(shù)信息。2.根據(jù)權(quán)利要求1所述的方法,其中,所述多個網(wǎng)絡(luò)中每一個都獨(dú)占所述GHJ中的一個硬件隊(duì)列; 其中,所述將所述卷積神經(jīng)網(wǎng)絡(luò)所對應(yīng)的訓(xùn)練圖片數(shù)據(jù)分配至所述多個網(wǎng)絡(luò)包括: 將所述卷積神經(jīng)網(wǎng)絡(luò)所對應(yīng)的訓(xùn)練圖片數(shù)據(jù)經(jīng)所述硬件隊(duì)列分配至所述多個網(wǎng)絡(luò)。3.根據(jù)權(quán)利要求1所述的方法,其中,所述將所述卷積神經(jīng)網(wǎng)絡(luò)所對應(yīng)的訓(xùn)練圖片數(shù)據(jù)分配至所述多個網(wǎng)絡(luò)包括: 將所述卷積神經(jīng)網(wǎng)絡(luò)所對應(yīng)的訓(xùn)練圖片數(shù)據(jù)按所述多個網(wǎng)絡(luò)的數(shù)量分成多個訓(xùn)練圖片子集; 將每個訓(xùn)練圖片子集傳輸至對應(yīng)的所述網(wǎng)絡(luò)。4.根據(jù)權(quán)利要求3所述的方法,其中,任兩個所述訓(xùn)練圖片子集中的圖片數(shù)量的差值低于預(yù)定的圖片分配閾值。5.根據(jù)權(quán)利要求1至4中任一項(xiàng)所述的方法,其中,所述網(wǎng)絡(luò)包括多個計(jì)算層; 其中,所述對所述多個網(wǎng)絡(luò)按所分配的所述訓(xùn)練圖片數(shù)據(jù)進(jìn)行并行訓(xùn)練處理包括: 對所述多個網(wǎng)絡(luò)按所分配的所述訓(xùn)練圖片數(shù)據(jù)進(jìn)行并行訓(xùn)練處理,其中,所述多個網(wǎng)絡(luò)的訓(xùn)練處理按所述計(jì)算層保持同步。6.根據(jù)權(quán)利要求5所述的方法,其中,所述對所述多個網(wǎng)絡(luò)按所分配的所述訓(xùn)練圖片數(shù)據(jù)進(jìn)行并行訓(xùn)練處理還包括: 在至少一個所述計(jì)算層中將所述多個網(wǎng)絡(luò)的訓(xùn)練處理合并進(jìn)行。7.根據(jù)權(quán)利要求5所述的方法,其中,所述根據(jù)所述網(wǎng)絡(luò)經(jīng)訓(xùn)練處理后的誤差信息更新所述卷積神經(jīng)網(wǎng)絡(luò)的參數(shù)信息包括: 根據(jù)所述網(wǎng)絡(luò)在每一所述計(jì)算層中的誤差信息,確定所述所述網(wǎng)絡(luò)經(jīng)訓(xùn)練處理后的誤差?目息; 根據(jù)所述網(wǎng)絡(luò)經(jīng)訓(xùn)練處理后的誤差信息更新所述卷積神經(jīng)網(wǎng)絡(luò)的參數(shù)信息。8.根據(jù)權(quán)利要求5所述的方法,其中,所述對所述多個網(wǎng)絡(luò)按所分配的所述訓(xùn)練圖片數(shù)據(jù)進(jìn)行并行訓(xùn)練處理還包括: 根據(jù)所述多個網(wǎng)絡(luò)的訓(xùn)練處理過程中所述GPU的利用率,確定所述多個網(wǎng)絡(luò)在下一個所述計(jì)算層中的訓(xùn)練處理方式。9.根據(jù)權(quán)利要求1所述的方法,其中,所述多個網(wǎng)絡(luò)的數(shù)量信息與所述GPU所支持的獨(dú)立工作流的數(shù)量相適應(yīng)。10.根據(jù)權(quán)利要求1所述的方法,其中,所述訓(xùn)練圖片數(shù)據(jù)中的圖片滿足單通道像素尺寸小于等于32*32。11.根據(jù)權(quán)利要求1所述的方法,其中,所述方法還包括: 向?qū)?yīng)參數(shù)服務(wù)器上傳所述卷積神經(jīng)網(wǎng)絡(luò)的參數(shù)信息; 接收所述參數(shù)服務(wù)器返回的、基于不同GPU上傳的所述卷積神經(jīng)網(wǎng)絡(luò)的參數(shù)信息所更新的所述卷積神經(jīng)網(wǎng)絡(luò)的參數(shù)信息。12.—種對用于圖片識別的卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練的設(shè)備,其中,該設(shè)備包括: 第一裝置,用于根據(jù)用于圖片識別的卷積神經(jīng)網(wǎng)絡(luò)的參數(shù)信息初始化同一GPU上所述卷積神經(jīng)網(wǎng)絡(luò)的多個網(wǎng)絡(luò); 第二裝置,用于將所述卷積神經(jīng)網(wǎng)絡(luò)所對應(yīng)的訓(xùn)練圖片數(shù)據(jù)分配至所述多個網(wǎng)絡(luò); 第三裝置,用于對所述多個網(wǎng)絡(luò)按所分配的所述訓(xùn)練圖片數(shù)據(jù)進(jìn)行并行訓(xùn)練處理; 第四裝置,用于根據(jù)所述網(wǎng)絡(luò)經(jīng)訓(xùn)練處理后的誤差信息更新所述卷積神經(jīng)網(wǎng)絡(luò)的參數(shù)?目息O13.根據(jù)權(quán)利要求12所述的設(shè)備,其中,所述多個網(wǎng)絡(luò)中每一個都獨(dú)占所述GPU中的一個硬件隊(duì)列; 其中,所述第二裝置用于: 將所述卷積神經(jīng)網(wǎng)絡(luò)所對應(yīng)的訓(xùn)練圖片數(shù)據(jù)經(jīng)所述硬件隊(duì)列分配至所述多個網(wǎng)絡(luò)。14.根據(jù)權(quán)利要求12所述的設(shè)備,其中,所述第二裝置用于: 將所述卷積神經(jīng)網(wǎng)絡(luò)所對應(yīng)的訓(xùn)練圖片數(shù)據(jù)按所述多個網(wǎng)絡(luò)的數(shù)量分成多個訓(xùn)練圖片子集; 將每個訓(xùn)練圖片子集傳輸至對應(yīng)的所述網(wǎng)絡(luò)。15.根據(jù)權(quán)利要求14所述的設(shè)備,其中,任兩個所述訓(xùn)練圖片子集中的圖片數(shù)量的差值低于預(yù)定的圖片分配閾值。16.根據(jù)權(quán)利要求12至15中任一項(xiàng)所述的設(shè)備,其中,所述網(wǎng)絡(luò)包括多個計(jì)算層; 其中,所述第三裝置用于: 對所述多個網(wǎng)絡(luò)按所分配的所述訓(xùn)練圖片數(shù)據(jù)進(jìn)行并行訓(xùn)練處理,其中,所述多個網(wǎng)絡(luò)的訓(xùn)練處理按所述計(jì)算層保持同步。17.根據(jù)權(quán)利要求16所述的設(shè)備,其中,所述第三裝置還用于: 在至少一個所述計(jì)算層中將所述多個網(wǎng)絡(luò)的訓(xùn)練處理合并進(jìn)行。18.根據(jù)權(quán)利要求16所述的設(shè)備,其中,所述第四裝置用于: 根據(jù)所述網(wǎng)絡(luò)在每一所述計(jì)算層中的誤差信息,確定所述所述網(wǎng)絡(luò)經(jīng)訓(xùn)練處理后的誤差?目息; 根據(jù)所述網(wǎng)絡(luò)經(jīng)訓(xùn)練處理后的誤差信息更新所述卷積神經(jīng)網(wǎng)絡(luò)的參數(shù)信息。19.根據(jù)權(quán)利要求16所述的設(shè)備,其中,所述第三裝置還用于: 根據(jù)所述多個網(wǎng)絡(luò)的訓(xùn)練處理過程中所述GPU的利用率,確定所述多個網(wǎng)絡(luò)在下一個所述計(jì)算層中的訓(xùn)練處理方式。20.根據(jù)權(quán)利要求12所述的設(shè)備,其中,所述多個網(wǎng)絡(luò)的數(shù)量信息與所述GHJ所支持的獨(dú)立工作流的數(shù)量相適應(yīng)。21.根據(jù)權(quán)利要求12所述的設(shè)備,其中,所述訓(xùn)練圖片數(shù)據(jù)中的圖片滿足單通道像素尺寸小于等于32*32。22.根據(jù)權(quán)利要求12所述的設(shè)備,其中,所述設(shè)備還包括: 第五裝置,用于向?qū)?yīng)參數(shù)服務(wù)器上傳所述卷積神經(jīng)網(wǎng)絡(luò)的參數(shù)信息; 第六裝置,用于接收所述參數(shù)服務(wù)器返回的、基于不同GPU上傳的所述卷積神經(jīng)網(wǎng)絡(luò)的參數(shù)信息所更新的所述卷積神經(jīng)網(wǎng)絡(luò)的參數(shù)信息。
【文檔編號】G06T1/20GK106056529SQ201610203216
【公開日】2016年10月26日
【申請日】2016年4月1日 公開號201610203216.7, CN 106056529 A, CN 106056529A, CN 201610203216, CN-A-106056529, CN106056529 A, CN106056529A, CN201610203216, CN201610203216.7
【發(fā)明人】王琤, 賈喆
【申請人】阿里巴巴集團(tuán)控股有限公司