[發(fā)明專利]一種基于多GPU的BPNN訓練方法和裝置有效
| 申請?zhí)枺?/td> | 201310054733.9 | 申請日: | 2013-02-20 |
| 公開(公告)號: | CN103996069B | 公開(公告)日: | 2018-04-03 |
| 發(fā)明(設計)人: | 歐陽劍;王勇 | 申請(專利權(quán))人: | 百度在線網(wǎng)絡技術(shù)(北京)有限公司 |
| 主分類號: | G06N3/08 | 分類號: | G06N3/08 |
| 代理公司: | 北京鴻德海業(yè)知識產(chǎn)權(quán)代理事務所(普通合伙)11412 | 代理人: | 袁媛 |
| 地址: | 100085 北京*** | 國省代碼: | 北京;11 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 一種 基于 gpu bpnn 訓練 方法 裝置 | ||
【技術(shù)領(lǐng)域】
本發(fā)明涉及神經(jīng)網(wǎng)絡訓練技術(shù),尤其涉及一種基于多GPU的BPNN訓練方法和裝置。
【背景技術(shù)】
BPNN(Back-Propagation Nueral Networks)反向傳播神經(jīng)網(wǎng)絡是1986年由Rumelhart和McCelland為首的科學家小組提出的一種按誤差逆?zhèn)鞑ニ惴ㄓ柧毜亩鄬忧梆伨W(wǎng)絡,是目前應用最廣泛的神經(jīng)網(wǎng)絡模型之一。
BPNN模型拓撲結(jié)構(gòu)包括輸入層(input)、隱層(hide layer)和輸出層(output layer)。輸入層負責接收來自外界的輸入數(shù)據(jù),并傳遞給隱層;隱層是內(nèi)部信息處理層,負責數(shù)據(jù)處理,隱層可以設計為單隱層或者多隱層結(jié)構(gòu);最后一層隱層傳遞到輸出層各神經(jīng)元的數(shù)據(jù),經(jīng)進一步處理后,完成一次學習的正向傳播處理過程,由輸出層向外界輸出信息處理結(jié)果。當實際輸出與期望輸出不符時,進入誤差的反向傳播階段。誤差通過輸出層,按誤差梯度下降的方式修正各層權(quán)值,向隱層、輸入層逐層反傳。周而復始的數(shù)據(jù)正向傳播和誤差反向傳播過程,是各層權(quán)值不斷調(diào)整的過程,也是神經(jīng)網(wǎng)絡學習訓練的過程。
BPNN訓練過程的復雜度,與BPNN的規(guī)模和用于訓練的數(shù)據(jù)規(guī)模有關(guān)。通常,商業(yè)或工業(yè)應用中的BPNN的規(guī)模較大,且用于訓練的數(shù)據(jù)量也非常之大,傳統(tǒng)的單機CPU已無法滿足BPNN的訓練需求。隨著GPU計算的通用化,利用GPU進行BPNN的訓練成為一種有效的加速BPNN訓練過程的手段。然而,隨著BPNN規(guī)模的不斷增大,單GPU也已經(jīng)無法滿足訓練需求,基于多GPU的BPNN訓練成為研究熱點。
目前,現(xiàn)有的多GPU的BPNN訓練方法通常是在每個GPU上保存一個各層初始權(quán)重相同的BPNN,每次訓練時將輸入數(shù)據(jù)分為多份,每個GPU分別針對一份數(shù)據(jù)進行訓練,即每個GPU針對一份數(shù)據(jù)進行BPNN的正向計算、反向誤差計算和權(quán)重更新。在所有GPU完成各自的計算后,同步各個GPU所保存的BPNN的各層的權(quán)值,使得每個GPU的BPNN都獲得完整的權(quán)重值,進行下一次訓練。
然而,上述這樣多GPU的BPNN訓練方法中在同步GPU的BPNN之間的同步權(quán)重數(shù)據(jù)時存在較大的開銷,大規(guī)模BPNN的權(quán)重值數(shù)據(jù)量可達數(shù)百兆,在多個GPU之間同步該些BPNN的權(quán)重值時的通信用時開銷可達數(shù)百毫秒,導致利用多GPU對BPNN進行訓練的效率低下,而單個GPU上訓練過程通常只需耗時幾十毫秒,可見,由于多個GPU之間數(shù)據(jù)同步開銷較大,導致利用多GPU對BPNN進行訓練的效率低下,有時甚至不如利用單GPU進行BPNN的訓練。
【發(fā)明內(nèi)容】
本發(fā)明提供了一種基于多GPU的BPNN訓練方法和裝置,能夠減少多GPU的BPNN訓練時的數(shù)據(jù)同步開銷,提高多GPU的BPNN訓練效率。
具體技術(shù)方案如下:
一種基于多圖形處理器GPU的反向傳播神經(jīng)網(wǎng)絡BPNN訓練方法,該方法包括:
S1、控制各GPU進行BPNN的正向計算,并在各GPU間同步正向計算輸出;
S2、控制各GPU進行BPNN的反向誤差計算,并在各GPU間同步反向誤差計算輸出;
S3、控制各GPU根據(jù)所述同步得到的正向計算輸出與所述同步得到的反向誤差計算輸出更新BPNN的權(quán)重。
根據(jù)本發(fā)明一優(yōu)選實施例,所述步驟S1具體包括:
控制各GPU進行正向計算,針對每一層執(zhí)行:在BPNN的當前層正向計算結(jié)束后將正向計算輸出傳遞至下一層的同時,在各GPU之間同步當前層的正向計算輸出。
根據(jù)本發(fā)明一優(yōu)選實施例,所述步驟S2具體包括:
根據(jù)BPNN正向輸出數(shù)據(jù)與預期值的差異,控制各GPU進行反向誤差計算,針對每一層執(zhí)行:在BPNN的當前層反向誤差計算結(jié)束后將反向誤差計算輸出傳遞至下一層的同時,在各GPU之間同步當前層的反向誤差計算輸出。
根據(jù)本發(fā)明一優(yōu)選實施例,調(diào)用GPU之間的PCI-E總線在各GPU之間同步所述正向計算輸出并保存在GPU內(nèi)存中。
根據(jù)本發(fā)明一優(yōu)選實施例,調(diào)用GPU之間的PCI-E總線在各GPU之間同步所述反向誤差計算輸出并保存在GPU內(nèi)存中
一種基于多圖形處理器GPU的反向傳播神經(jīng)網(wǎng)絡BPNN訓練裝置,該裝置包括:
正向計算單元,用于控制各GPU進行BPNN的正向計算,并在各GPU間同步正向計算輸出;
反向誤差計算單元,用于控制各GPU進行BPNN的反向誤差計算,并在各GPU間同步反向誤差計算輸出;
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于百度在線網(wǎng)絡技術(shù)(北京)有限公司,未經(jīng)百度在線網(wǎng)絡技術(shù)(北京)有限公司許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201310054733.9/2.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。





