本申請(qǐng)涉及信息技術(shù)領(lǐng)域,特別是涉及一種類alexnet網(wǎng)絡(luò)的模型訓(xùn)練方法和一種類alexnet網(wǎng)絡(luò)的模型訓(xùn)練裝置。
背景技術(shù):
人工智能(artificialintelligence)是研究、開發(fā)用于模擬、延伸和擴(kuò)展人的智能的理論、方法、技術(shù)及應(yīng)用系統(tǒng)的一門新的技術(shù)科學(xué),它企圖了解智能的實(shí)質(zhì),并生產(chǎn)出一種新的能以人類智能相似的方式做出反應(yīng)的智能機(jī)器,該領(lǐng)域的研究包括機(jī)器人、語言識(shí)別、圖像識(shí)別、自然語言處理和專家系統(tǒng)等。人工智能從誕生以來,理論和技術(shù)日益成熟,應(yīng)用領(lǐng)域也不斷擴(kuò)大。近年來,深度學(xué)習(xí)(deeplearning)直接嘗試解決抽象認(rèn)知的難題,并取得了突破性的進(jìn)展。深度學(xué)習(xí)引爆的這場革命,將人工智能帶上了一個(gè)新的臺(tái)階,不僅學(xué)術(shù)意義巨大,而且實(shí)用性很強(qiáng)。
深度學(xué)習(xí)的動(dòng)機(jī)在于建立、模擬人腦進(jìn)行分析學(xué)習(xí)的神經(jīng)網(wǎng)絡(luò),它模仿人腦的機(jī)制來解釋數(shù)據(jù),例如圖像,聲音和文本。通常,深度學(xué)習(xí)是通過建立相應(yīng)的網(wǎng)絡(luò)模型,采用模型訓(xùn)練的方式來進(jìn)行的。根據(jù)不同的學(xué)習(xí)框架建立的學(xué)習(xí)模型很是不同,例如,卷積神經(jīng)網(wǎng)絡(luò)(convolutionalneuralnetworks,簡稱cnns)就是一種深度的監(jiān)督學(xué)習(xí)下的機(jī)器學(xué)習(xí)模型,其中,alexnet網(wǎng)絡(luò)又是開發(fā)者經(jīng)常使用的一種經(jīng)典的卷積神經(jīng)網(wǎng)絡(luò)。
如圖1所示,是一種alexnet網(wǎng)絡(luò)的結(jié)構(gòu)示例圖。在alexnet網(wǎng)絡(luò)中,比較重要的兩種層類型為卷積層convolution(即圖1中convolution1至pool5部分)和全連接層innerproduct(即圖1中innerproduct6至loss層部分)。在alexnet網(wǎng)絡(luò)中進(jìn)行一次模型訓(xùn)練的過程可以描述如下:
(1)先將數(shù)據(jù)從data層正向傳播到top層,此過程途中先經(jīng)過卷積層部分,再經(jīng)過全連接層部分;
(2)在傳播到top層后計(jì)算損失;
(3)將損失從top層依次反向傳播到data層,并在傳播過程中計(jì)算梯 度值,最后完成連接權(quán)重的更新,這一過程途中先經(jīng)過全連接層部分,再經(jīng)過卷積層部分。
在alexnet網(wǎng)絡(luò)中,無論是正向傳播過程還是反向傳播過程,卷積層部分都會(huì)擁有非常大的計(jì)算量,幾乎占了整個(gè)網(wǎng)絡(luò)的計(jì)算時(shí)間80%以上,但卷積層需要更新的參數(shù)量卻非常小,只占整個(gè)網(wǎng)絡(luò)參數(shù)的10%;而全連接層部分的情況則與卷積層完全相反,全連接層部分擁有整個(gè)網(wǎng)絡(luò)90%的待更新參數(shù),但計(jì)算時(shí)間卻只占了整個(gè)網(wǎng)絡(luò)的20%。
在單機(jī)多卡(即一臺(tái)裝有多個(gè)圖形處理單元gpu的計(jì)算機(jī))環(huán)境下,在進(jìn)行模型訓(xùn)練時(shí),為了能夠得到無損的訓(xùn)練結(jié)果,必須在每個(gè)gpu上都保持一份全量的模型,并在兩個(gè)模型上同時(shí)進(jìn)行訓(xùn)練。以兩卡(兩個(gè)圖形處理單元gpu)為例,可以將兩張卡分為主卡和從卡,如圖2所示,是已有技術(shù)中主卡與從卡的工作原理圖。在每一輪訓(xùn)練結(jié)束后,需要將從卡上的模型計(jì)算出來的梯度值發(fā)送到主卡模型上,并由主卡在計(jì)算梯度值的平均值后更新參數(shù),最后將主卡上最新的模型廣播發(fā)送到從卡上,才能繼續(xù)進(jìn)行下一次的訓(xùn)練。已有技術(shù)中一般是先對(duì)所有層計(jì)算出全部的梯度值之后,將得到的所有層的梯度值發(fā)送到主卡上求和平均并更新模型,即必須先進(jìn)行全部的計(jì)算之后才能進(jìn)行通信,在時(shí)間上,計(jì)算和通信具有嚴(yán)格的先后順序。
因此,按照已有技術(shù)首先計(jì)算出全連接層的梯度值,并在將全連接層的梯度值匯總到主卡上之后,再計(jì)算卷積層的梯度值,則整個(gè)過程所耗費(fèi)的時(shí)間將會(huì)非常多,嚴(yán)重影響模型訓(xùn)練的運(yùn)行效率。
技術(shù)實(shí)現(xiàn)要素:
鑒于上述問題,提出了本申請(qǐng)實(shí)施例以便提供一種克服上述問題或者至少部分地解決上述問題的一種類alexnet網(wǎng)絡(luò)的模型訓(xùn)練方法和相應(yīng)的一種類alexnet網(wǎng)絡(luò)的模型訓(xùn)練裝置。
為了解決上述問題,本申請(qǐng)公開了一種類alexnet網(wǎng)絡(luò)的模型訓(xùn)練方法,包括:
采用第一圖形處理單元gpu計(jì)算在類alexnet網(wǎng)絡(luò)下的第一梯度值和第 二梯度值;
接收第二圖形處理單元gpu發(fā)送的在所述類alexnet網(wǎng)絡(luò)下的第三梯度值;
依據(jù)所述第一梯度值和第三梯度值計(jì)算所述類alexnet網(wǎng)絡(luò)的第一模型參數(shù);
接收所述第二圖形處理單元gpu發(fā)送的在所述類alexnet網(wǎng)絡(luò)下的第四梯度值;
依據(jù)所述第二梯度值和第四梯度值計(jì)算所述類alexnet網(wǎng)絡(luò)的第二模型參數(shù);
采用所述第一模型參數(shù)和第二模型參數(shù)訓(xùn)練所述類alexnet網(wǎng)絡(luò)的模型。
可選地,所述類alexnet網(wǎng)絡(luò)由全連接層和卷積層組成,所述采用第一圖形處理單元gpu計(jì)算在類alexnet網(wǎng)絡(luò)下的第一梯度值和第二梯度值的步驟包括:
采用第一圖形處理單元gpu計(jì)算在所述全連接層下的第一梯度值和在所述卷積層下的第二梯度值。
可選地,所述第一圖形處理單元gpu包括第一計(jì)算隊(duì)列,所述采用第一圖形處理單元gpu計(jì)算在所述全連接層下的第一梯度值和在所述卷積層下的第二梯度值的步驟包括:
采用第一計(jì)算隊(duì)列計(jì)算在所述全連接層下的第一梯度值和在所述卷積層下的第二梯度值。
可選地,所述第一圖形處理單元gpu還包括第一通信隊(duì)列,所述第二圖形處理單元gpu包括第二通信隊(duì)列,所述接收第二圖形處理單元gpu發(fā)送的在所述類alexnet網(wǎng)絡(luò)下的第三梯度值的步驟包括:
采用第一通信隊(duì)列接收第二通信隊(duì)列發(fā)送的第三梯度值;
所述接收所述第二圖形處理單元gpu發(fā)送的在所述類alexnet網(wǎng)絡(luò)下的第四梯度值的步驟包括:
采用第一通信隊(duì)列接收第二通信隊(duì)列發(fā)送的第四梯度值。
可選地,所述第二圖形處理單元還包括第二計(jì)算隊(duì)列,所述第三梯度值和所述第四梯度值分別通過如下步驟獲得:
采用第二計(jì)算隊(duì)列計(jì)算在所述全連接層下的第三梯度值;以及,
采用第二計(jì)算隊(duì)列計(jì)算在所述卷積層下的第四梯度值。
可選地,所述依據(jù)所述第一梯度值和第三梯度值計(jì)算所述類alexnet網(wǎng)絡(luò)的第一模型參數(shù)的步驟包括:
計(jì)算所述第一梯度值和第三梯度值的平均值,獲得所述類alexnet網(wǎng)絡(luò)的第一模型參數(shù)。
可選地,所述采用所述第二梯度值和第四梯度值計(jì)算所述類alexnet網(wǎng)絡(luò)的第二模型參數(shù)的步驟包括:
計(jì)算所述第二梯度值和第四梯度值的平均值,獲得所述類alexnet網(wǎng)絡(luò)的第二模型參數(shù)。
可選地,在采用第一圖形處理單元gpu計(jì)算在類alexnet網(wǎng)絡(luò)下的第一梯度值和第二梯度值的步驟前,還包括:
判斷網(wǎng)絡(luò)是否為類alexnet網(wǎng)絡(luò)。
可選地,所述網(wǎng)絡(luò)包括m個(gè)結(jié)構(gòu)層,所述判斷網(wǎng)絡(luò)是否為類alexnet網(wǎng)絡(luò)的步驟包括:
對(duì)所述網(wǎng)絡(luò)進(jìn)行預(yù)訓(xùn)練,獲得每個(gè)結(jié)構(gòu)層的計(jì)算時(shí)間和參數(shù)量;
根據(jù)所述計(jì)算時(shí)間和參數(shù)量,獲得所述網(wǎng)絡(luò)的計(jì)算總時(shí)間和總參數(shù)量;
按照預(yù)設(shè)傳輸順序,逐層累加所述m個(gè)結(jié)構(gòu)層的計(jì)算時(shí)間,分別獲得截至第n層的計(jì)算時(shí)間之和;
當(dāng)所述截至第p層的計(jì)算時(shí)間之和與所述計(jì)算總時(shí)間的比值滿足第一預(yù)設(shè)條件時(shí),累加剩余m-p層的參數(shù)量,獲得所述剩余m-p層的參數(shù)量之和;
判斷所述剩余m-p層的參數(shù)量之和與所述總參數(shù)量的比值是否滿足第二預(yù)設(shè)條件;
若是,則將所述網(wǎng)絡(luò)劃分為類alexnet網(wǎng)絡(luò)。
可選地,所述將所述網(wǎng)絡(luò)劃分為類alexnet網(wǎng)絡(luò)的步驟包括:
將所述網(wǎng)絡(luò)的前p層劃分為類alexnet網(wǎng)絡(luò)的全連接層;
將所述剩余m-p層劃分為類alexnet網(wǎng)絡(luò)的卷積層。
為了解決上述問題,本申請(qǐng)還公開了一種類alexnet網(wǎng)絡(luò)的模型訓(xùn)練裝置,包括:
第一計(jì)算模塊,用于采用第一圖形處理單元gpu計(jì)算在類alexnet網(wǎng)絡(luò)下的第一梯度值和第二梯度值;
第一接收模塊,用于接收第二圖形處理單元gpu發(fā)送的在所述類alexnet網(wǎng)絡(luò)下的第三梯度值;
第二計(jì)算模塊,用于依據(jù)所述第一梯度值和第三梯度值計(jì)算所述類alexnet網(wǎng)絡(luò)的第一模型參數(shù);
第二接收模塊,用于接收所述第二圖形處理單元gpu發(fā)送的在所述類alexnet網(wǎng)絡(luò)下的第四梯度值;
第三計(jì)算模塊,用于依據(jù)所述第二梯度值和第四梯度值計(jì)算所述類alexnet網(wǎng)絡(luò)的第二模型參數(shù);
訓(xùn)練模塊,用于采用所述第一模型參數(shù)和第二模型參數(shù)訓(xùn)練所述類alexnet網(wǎng)絡(luò)的模型。
可選地,所述類alexnet網(wǎng)絡(luò)由全連接層和卷積層組成,所述第一計(jì)算模塊包括:
第一計(jì)算子模塊,用于采用第一圖形處理單元gpu計(jì)算在所述全連接層下的第一梯度值和在所述卷積層下的第二梯度值。
可選地,所述第一圖形處理單元gpu包括第一計(jì)算隊(duì)列,所述第一計(jì)算子模塊包括:
第一計(jì)算單元,用于采用第一計(jì)算隊(duì)列計(jì)算在所述全連接層下的第一梯度值和在所述卷積層下的第二梯度值。
可選地,所述第一圖形處理單元gpu還包括第一通信隊(duì)列,所述第二圖形處理單元gpu包括第二通信隊(duì)列,所述第一接收模塊包括:
第一接收子模塊,用于采用第一通信隊(duì)列接收第二通信隊(duì)列發(fā)送的第三梯度值;
所述第二接收模塊包括:
第二接收子模塊,用于采用第一通信隊(duì)列接收第二通信隊(duì)列發(fā)送的第四梯度值。
可選地,所述第二圖形處理單元還包括第二計(jì)算隊(duì)列,所述第三梯度值和所述第四梯度值分別通過如下模塊獲得:
第四計(jì)算模塊,用于采用第二計(jì)算隊(duì)列計(jì)算在所述全連接層下的第三梯度值;以及,
第五計(jì)算模塊,用于采用第二計(jì)算隊(duì)列計(jì)算在所述卷積層下的第四梯度值。
可選地,所述第二計(jì)算模塊包括:
第一模型參數(shù)計(jì)算子模塊,用于計(jì)算所述第一梯度值和第三梯度值的平均值,獲得所述類alexnet網(wǎng)絡(luò)的第一模型參數(shù)。
可選地,所述第三計(jì)算模塊包括:
第二模型參數(shù)計(jì)算子模塊,用于計(jì)算所述第二梯度值和第四梯度值的平均值,獲得第二模型參數(shù)。
可選地,所述裝置還包括:
判斷模塊,用于判斷網(wǎng)絡(luò)是否為類alexnet網(wǎng)絡(luò)。
可選地,所述網(wǎng)絡(luò)包括m個(gè)結(jié)構(gòu)層,所述判斷模塊包括:
計(jì)算時(shí)間和參數(shù)量獲得子模塊,用于對(duì)所述網(wǎng)絡(luò)進(jìn)行預(yù)訓(xùn)練,獲得每個(gè)結(jié)構(gòu)層的計(jì)算時(shí)間和參數(shù)量;
計(jì)算總時(shí)間和總參數(shù)量獲得子模塊,用于根據(jù)所述計(jì)算時(shí)間和參數(shù)量,獲得所述網(wǎng)絡(luò)的計(jì)算總時(shí)間和總參數(shù)量;
計(jì)算時(shí)間之和獲得子模塊,用于按照預(yù)設(shè)傳輸順序,逐層累加所述m個(gè)結(jié)構(gòu)層的計(jì)算時(shí)間,分別獲得截至第p層的計(jì)算時(shí)間之和;
參數(shù)量之和獲得子模塊,用于在所述截至第p層的計(jì)算時(shí)間之和與所述計(jì)算總時(shí)間的比值滿足第一預(yù)設(shè)條件時(shí),累加剩余m-p層的參數(shù)量,獲得所述剩余m-p層的參數(shù)量之和;
判斷子模塊,用于判斷所述剩余m-p層的參數(shù)量之和與所述總參數(shù)量的 比值是否滿足第二預(yù)設(shè)條件;
劃分子模塊,用于在滿足第二預(yù)設(shè)條件時(shí),將所述網(wǎng)絡(luò)劃分為類alexnet網(wǎng)絡(luò)。
可選地,所述劃分子模塊包括:
全連接層劃分單元,用于將所述網(wǎng)絡(luò)的前p層劃分為類alexnet網(wǎng)絡(luò)的全連接層;
卷積層劃分單元,用于將所述剩余m-p層劃分為類alexnet網(wǎng)絡(luò)的卷積層。
與背景技術(shù)相比,本申請(qǐng)實(shí)施例包括以下優(yōu)點(diǎn):
本申請(qǐng)實(shí)施例通過分別在第一圖形單元gpu(主卡)和第二圖形單元gpu(從卡)上構(gòu)建出相應(yīng)的計(jì)算隊(duì)列和通信隊(duì)列,采用計(jì)算隊(duì)列執(zhí)行計(jì)算過程,采用通信隊(duì)列進(jìn)行數(shù)據(jù)通信,使計(jì)算和通信兩個(gè)過程分開進(jìn)行,并進(jìn)一步使類alexnet網(wǎng)絡(luò)的卷積層的計(jì)算和全連接參數(shù)通信并行,有效地減少了模型訓(xùn)練過程耗費(fèi)的時(shí)間,提高了模型訓(xùn)練的運(yùn)行效率。
其次,在本申請(qǐng)實(shí)施例中,在采用某一網(wǎng)絡(luò)進(jìn)行模型訓(xùn)練前,還可以對(duì)所述網(wǎng)絡(luò)進(jìn)行預(yù)訓(xùn)練,通過對(duì)獲得時(shí)間參數(shù)進(jìn)行分析,以判斷所述網(wǎng)絡(luò)是否屬于類alexnet網(wǎng)絡(luò)。
附圖說明
圖1是一種alexnet網(wǎng)絡(luò)的結(jié)構(gòu)示例圖;
圖2是已有技術(shù)中主卡與從卡的工作原理圖;
圖3是本申請(qǐng)的一種類alexnet網(wǎng)絡(luò)的模型訓(xùn)練方法實(shí)施例一的步驟流程圖;
圖4是本申請(qǐng)的一種類alexnet網(wǎng)絡(luò)的模型訓(xùn)練方法實(shí)施例一的工作原理圖;
圖5是本申請(qǐng)的一種類alexnet網(wǎng)絡(luò)的模型訓(xùn)練方法實(shí)施例二的步驟流程圖;
圖6是本申請(qǐng)的一種類alexnet網(wǎng)絡(luò)的模型訓(xùn)練方法實(shí)施例二的數(shù)據(jù)反 向傳播計(jì)算時(shí)間和參數(shù)量統(tǒng)計(jì)圖;
圖7是本申請(qǐng)的判斷網(wǎng)絡(luò)是否為類alexnet網(wǎng)絡(luò)的算法流程圖;
圖8是本申請(qǐng)的一種類alexnet網(wǎng)絡(luò)的模型訓(xùn)練裝置實(shí)施例的結(jié)構(gòu)框圖。
具體實(shí)施方式
為使本申請(qǐng)的上述目的、特征和優(yōu)點(diǎn)能夠更加明顯易懂,下面結(jié)合附圖和具體實(shí)施方式對(duì)本申請(qǐng)作進(jìn)一步詳細(xì)的說明。
參照?qǐng)D3,示出了本申請(qǐng)的一種類alexnet網(wǎng)絡(luò)的模型訓(xùn)練方法實(shí)施例一的步驟流程圖,具體可以包括如下步驟:
步驟301,采用第一圖形處理單元gpu計(jì)算在類alexnet網(wǎng)絡(luò)下的第一梯度值和第二梯度值;
在alexnet網(wǎng)絡(luò)中,無論是正向傳播過程還是反向傳播過程,卷積層部分都會(huì)擁有非常大的計(jì)算量,幾乎占了整個(gè)網(wǎng)絡(luò)的計(jì)算時(shí)間80%以上,但卷積層需要更新的參數(shù)量卻非常小,只占整個(gè)網(wǎng)絡(luò)參數(shù)的10%;而全連接層部分的情況則與卷積層完全相反,全連接層部分擁有整個(gè)網(wǎng)絡(luò)90%的待更新參數(shù),但計(jì)算時(shí)間卻只占了整個(gè)網(wǎng)絡(luò)的20%。在本申請(qǐng)實(shí)施例中,可以將具有上述特點(diǎn),并且在數(shù)據(jù)的正向傳播過程中先經(jīng)過卷積層部分,然后才經(jīng)過全連接層部分的網(wǎng)絡(luò),稱為類alexnet網(wǎng)絡(luò)。所述類alexnet網(wǎng)絡(luò)可以由全連接層和卷積層組成。
圖形處理單元gpu(graphicsprocessingunit)又稱顯示核心、視覺處理器、顯示芯片等,是一種專門在個(gè)人電腦、工作站、游戲機(jī)和一些移動(dòng)設(shè)備(如平板電腦、智能手機(jī)等)上進(jìn)行圖像運(yùn)算工作的微處理器,常用于高性能計(jì)算,具有高并發(fā)處理數(shù)據(jù)的特性。在本申請(qǐng)實(shí)施例中,第一圖形處理單元gpu可以看做是單機(jī)多卡環(huán)境下中主卡,第二圖形處理單元gpu可以看做是單機(jī)多卡環(huán)境下中從卡。
在初始化時(shí),主卡與從卡兩張卡必須持有相同的網(wǎng)絡(luò)結(jié)構(gòu),因此在start之后,主卡需要將該卡的網(wǎng)絡(luò)結(jié)構(gòu)廣播到從卡上,而從卡通過receivemodel過程接收網(wǎng)絡(luò)結(jié)構(gòu),使得兩張卡保持一致。然后兩張卡開始執(zhí)行相同的行為, 目的是進(jìn)行前向傳播,計(jì)算loss值。前向傳播顧名思義就是從第一層向最后一層計(jì)算的過程。
具體地,前向傳播的過程是按照?qǐng)D1中alexnet網(wǎng)絡(luò)中每層和每層之間的箭頭所指方向進(jìn)行的。例如從data傳播到convolusion1,再到relu1...一直到最后的loss層。這時(shí)loss層會(huì)得出一個(gè)loss值,該值被稱為損失值,而后一過程反向傳播能夠進(jìn)行的先決條件是需要得出loss值。對(duì)于前向傳播過程來說,先經(jīng)過卷積層,后經(jīng)過全連接層。
然后,進(jìn)行后向傳播,先經(jīng)過全連接層,后經(jīng)過卷積層,并相應(yīng)地計(jì)算各層的梯度值。
梯度是一個(gè)數(shù)學(xué)概念,在處理分類問題或回歸問題時(shí),在模型訓(xùn)練的過程中,可以用損失值函數(shù)loss來作為評(píng)估分類是否精準(zhǔn)或者回歸是否準(zhǔn)確。一般情況下,訓(xùn)練得比較好的模型的損失值loss都比較低,而所述loss值又與神經(jīng)網(wǎng)絡(luò)的參數(shù)有關(guān),如果所述參數(shù)符合應(yīng)用場景的要求,那么loss值就會(huì)比較低。如果將網(wǎng)絡(luò)的所有模型參數(shù)組成w向量,可以得到loss值是與w向量有關(guān)的,通常,好的w向量能夠使loss值降低。因此,問題可以歸結(jié)為如何尋找到好的w向量?這需要進(jìn)行訓(xùn)練,讓模型自己去找。模型必須找到能夠使得loss值下降的正確的方向,而梯度這個(gè)數(shù)學(xué)量就是代表了loss值下降的最快的方向。只要每次讓w向量按照梯度這個(gè)方向更新一步,那么loss值就會(huì)減少一些。這就是梯度的作用。
具體地,梯度的計(jì)算是根據(jù)loss值關(guān)于各個(gè)w向量的偏微分求出來的,而求偏微分的過程就是在數(shù)據(jù)的反向傳播的過程中進(jìn)行的。
在本申請(qǐng)實(shí)施例中,所述第一梯度值即為全連接層梯度,所述第二梯度值即為卷積層梯度。
因此,所述采用第一圖形處理單元gpu計(jì)算在類alexnet網(wǎng)絡(luò)下的第一梯度值和第二梯度值的步驟具體可以包括如下子步驟:
子步驟3011,采用第一圖形處理單元gpu計(jì)算在所述全連接層下的第一梯度值和在所述卷積層下的第二梯度值。
通常,在gpu中可以有多個(gè)不同的操作隊(duì)列,即cuda流,并且該隊(duì) 列中的操作可以按照添加到隊(duì)列的先后順序執(zhí)行,不同流間的操作可以并行執(zhí)行。cuda是一種由nvidia推出的通用并行計(jì)算架構(gòu),該架構(gòu)使gpu能夠解決復(fù)雜的計(jì)算問題,并使得在計(jì)算機(jī)上實(shí)現(xiàn)gpu編程成為可能。
在本申請(qǐng)實(shí)施例中,所述第一圖形處理單元gpu即主卡上可以包括有第一計(jì)算隊(duì)列和第一通信隊(duì)列,所述第二圖形處理單元gpu即從卡上可以包括有第二計(jì)算隊(duì)列和第二通信隊(duì)列,所述第一計(jì)算隊(duì)列、第一通信隊(duì)列、第二計(jì)算隊(duì)列和第二通信隊(duì)列均是cuda流,其中,第一計(jì)算隊(duì)列和第二計(jì)算隊(duì)列可以用于計(jì)算,而第一通信隊(duì)列和第二通信隊(duì)列可以用于通信,以使主卡和從卡的計(jì)算和通信分開,實(shí)現(xiàn)并行處理。
在本申請(qǐng)的一種優(yōu)選實(shí)施例中,所述采用第一圖形處理單元gpu計(jì)算在所述全連接層下的第一梯度值和在所述卷積層下的第二梯度值的子步驟可以進(jìn)一步包括:
采用第一計(jì)算隊(duì)列計(jì)算在所述全連接層下的第一梯度值和在所述卷積層下的第二梯度值。
在具體實(shí)現(xiàn)中,在計(jì)算全連接層下的第一梯度值時(shí),該過程只是反向傳播的前半部分。反向傳播的完整過程是從loss層開始(最后一層),按照箭頭相反的方向逐層傳播。例如從loss層傳播到innerproduce8,再到drop7...,一直到convolution1。而計(jì)算第一梯度值的過程只是包含圖中從loss層傳播到innerproduct6的過程。在全連接層相關(guān)層的反向傳播的過程中,每反向傳播一層就會(huì)對(duì)有參數(shù)的層計(jì)算出該層的梯度值(有些層不會(huì)計(jì)算出梯度,因?yàn)樵搶硬]有參數(shù),比如loss層,drop層,relu層,只有innerproduct層才會(huì)計(jì)算出梯度)并存儲(chǔ)在該層中。這一過程計(jì)算出來的梯度參數(shù)會(huì)非常非常多,但是整個(gè)計(jì)算過程卻非常迅速,這是這一過程的特點(diǎn)。
在計(jì)算卷積層的第二梯度值時(shí),該過程只是反向傳播的后半部分,即從pool5傳播到convolution1的過程。在卷積層相關(guān)層的反向傳播的過程中,每反向傳播一層就會(huì)對(duì)有參數(shù)的層會(huì)計(jì)算出該層的梯度(有些層不會(huì)計(jì)算出梯度,因?yàn)樵搶硬]有參數(shù),比如relu層,norm層,pool層,只有convolution層才會(huì)計(jì)算出梯度)并存儲(chǔ)在該層中。這一過程計(jì)算出來的梯度參數(shù)會(huì)非常 非常少,但是整個(gè)計(jì)算過程會(huì)非常慢,這是這一過程的特點(diǎn)。
步驟302,接收第二圖形處理單元gpu發(fā)送的在所述類alexnet網(wǎng)絡(luò)下的第三梯度值;
在本申請(qǐng)實(shí)施例中,所述第三梯度值具體可以通過如下步驟獲得:
采用第二計(jì)算隊(duì)列計(jì)算在所述全連接層下的第三梯度值。
在具體實(shí)現(xiàn)中,所述第二圖形處理單元gpu即從卡上的第二計(jì)算隊(duì)列計(jì)算所述全連接層下的第三梯度值的過程,與主卡上的第一計(jì)算隊(duì)列計(jì)算第一梯度值同時(shí)并行進(jìn)行。
在本申請(qǐng)實(shí)施例中,所述接收第二圖形處理單元gpu發(fā)送的在所述類alexnet網(wǎng)絡(luò)下的第三梯度值的步驟具體可以包括如下子步驟:
子步驟3021,采用第一通信隊(duì)列接收第二通信隊(duì)列發(fā)送的第三梯度值。
在本申請(qǐng)實(shí)施例中,為了將主卡與從卡的計(jì)算與通信過程區(qū)分開,可以采用計(jì)算隊(duì)列執(zhí)行相應(yīng)的計(jì)算過程,采用通信隊(duì)列執(zhí)行相應(yīng)的數(shù)據(jù)發(fā)送與接收,因此,可以采用第一通信隊(duì)列來接收第二通信隊(duì)列發(fā)送的第三梯度值。
在具體實(shí)現(xiàn)中,可以利用流并行的方式,將卷積層的計(jì)算和全連接層的參數(shù)通信并行執(zhí)行,即在主卡采用第一計(jì)算隊(duì)列計(jì)算所述第二梯度值時(shí),采用第一通信隊(duì)列接收第二通信隊(duì)列發(fā)送的第三梯度值,使計(jì)算和通信的過程獲得時(shí)間上的重疊,二者互不干擾。
步驟303,依據(jù)所述第一梯度值和第三梯度值計(jì)算所述類alexnet網(wǎng)絡(luò)的第一模型參數(shù);
所述第一梯度值與第三梯度值分別是主卡和從卡計(jì)算的所述類alexnet網(wǎng)絡(luò)的全連接層的梯度,因此,當(dāng)從卡的數(shù)據(jù)匯總到主卡上后,需要根據(jù)主卡和從卡的數(shù)據(jù)對(duì)全連接層的數(shù)據(jù)進(jìn)行更新。
在本申請(qǐng)的一種優(yōu)選實(shí)施例中,所述依據(jù)所述第一梯度值和第三梯度值計(jì)算所述類alexnet網(wǎng)絡(luò)的第一模型參數(shù)的步驟具體可以包括如下子步驟:
子步驟3031,計(jì)算所述第一梯度值和第三梯度值的平均值,獲得所述類alexnet網(wǎng)絡(luò)的第一模型參數(shù)。
所述第一模型參數(shù)即為更新后的全連接層梯度。
步驟304,接收所述第二圖形處理單元gpu發(fā)送的在所述類alexnet網(wǎng)絡(luò)下的第四梯度值;
在本申請(qǐng)實(shí)施例中,所述第四梯度值具體可以通過如下步驟獲得:
采用第二計(jì)算隊(duì)列計(jì)算在所述卷積層下的第四梯度值。
在具體實(shí)現(xiàn)中,所述第二圖形處理單元gpu即從卡上的第二計(jì)算隊(duì)列計(jì)算所述卷積層下的第四梯度值的過程,與主卡上的第一計(jì)算隊(duì)列計(jì)算第二梯度值同時(shí)并行進(jìn)行。
在本申請(qǐng)實(shí)施例中,所述接收第二圖形處理單元gpu發(fā)送的在所述類alexnet網(wǎng)絡(luò)下的第四梯度值的步驟具體可以包括如下子步驟:
子步驟3041,采用第一通信隊(duì)列接收第二通信隊(duì)列發(fā)送的第四梯度值。
在本申請(qǐng)實(shí)施例中,為了將主卡與從卡的計(jì)算與通信過程區(qū)分開,可以采用計(jì)算隊(duì)列執(zhí)行相應(yīng)的計(jì)算過程,采用通信隊(duì)列執(zhí)行相應(yīng)的數(shù)據(jù)發(fā)送與接收,因此,可以采用第一通信隊(duì)列來接收第二通信隊(duì)列發(fā)送的第四梯度值。
步驟305,依據(jù)所述第二梯度值和第四梯度值計(jì)算所述類alexnet網(wǎng)絡(luò)的第二模型參數(shù);
所述第二梯度值與第四梯度值分別是主卡和從卡計(jì)算的所述類alexnet網(wǎng)絡(luò)的卷積層的梯度,因此,當(dāng)從卡的數(shù)據(jù)匯總到主卡上后,需要根據(jù)主卡和從卡的數(shù)據(jù)對(duì)卷積層的數(shù)據(jù)進(jìn)行更新。
在本申請(qǐng)的一種優(yōu)選實(shí)施例中,所述依據(jù)所述第二梯度值和第四梯度值計(jì)算所述類alexnet網(wǎng)絡(luò)的第二模型參數(shù)的步驟具體可以包括如下子步驟:
子步驟3051,計(jì)算所述第二梯度值和第四梯度值的平均值,獲得所述類alexnet網(wǎng)絡(luò)的第二模型參數(shù)。
所述第二模型參數(shù)即為更新后的卷積層梯度。
步驟306,采用所述第一模型參數(shù)和第二模型參數(shù)訓(xùn)練所述類alexnet網(wǎng)絡(luò)的模型。
在本申請(qǐng)實(shí)施例中,當(dāng)分別獲得所述第一模型參數(shù)和第二模型參數(shù)后,主卡可以針對(duì)所述第一模型參數(shù)和第二模型參數(shù)對(duì)自身的模型參數(shù)進(jìn)行更新,以獲得新的訓(xùn)練模型。
在已有技術(shù)中,在alexnet網(wǎng)絡(luò)下進(jìn)行模型訓(xùn)練時(shí),每一輪的計(jì)算均為依次進(jìn)行發(fā)送/接收模型、forward前向傳播、backward反向傳播,接收/發(fā)送梯度值、參數(shù)更新。假設(shè)forward前向傳播的過程時(shí)間為a,backward反向傳播的過程中涉及到全連接層的計(jì)算時(shí)間為b,涉及到卷積層的計(jì)算時(shí)間為c,發(fā)送/接收全連接層梯度值的時(shí)間為m,發(fā)送/接收卷積層梯度值的時(shí)間為n,那么按照已有技術(shù)完成整個(gè)過程的總時(shí)間t1為:
t1=a+b+c+m+n,其中c>>b,m>>n
而采用本申請(qǐng)實(shí)施例的方法,利用流并行方式將反向傳播過程中,卷積層的計(jì)算和全連接參數(shù)通信并行起來后,總時(shí)間t2為:
t2=a+b+max(c,m)+n
由于t1-t2=c+m-max(c,m)>0,所以:t1>t2
由上式可知,利用流并行方式將通信和計(jì)算并行來優(yōu)化類alexnet網(wǎng)絡(luò)的方案可以有效減少整個(gè)過程耗費(fèi)的時(shí)間。
在本申請(qǐng)實(shí)施例中,通過分別在第一圖形單元gpu(主卡)和第二圖形單元gpu(從卡)上構(gòu)建出相應(yīng)的計(jì)算隊(duì)列和通信隊(duì)列,采用計(jì)算隊(duì)列執(zhí)行計(jì)算過程,采用通信隊(duì)列進(jìn)行數(shù)據(jù)通信,使計(jì)算和通信兩個(gè)過程分開進(jìn)行,并進(jìn)一步使類alexnet網(wǎng)絡(luò)的卷積層的計(jì)算和全連接參數(shù)通信并行,有效地減少了模型訓(xùn)練過程耗費(fèi)的時(shí)間,提高了模型訓(xùn)練的運(yùn)行效率。
參照?qǐng)D5,示出了本申請(qǐng)的一種類alexnet網(wǎng)絡(luò)的模型訓(xùn)練方法實(shí)施例二的步驟流程圖,具體可以包括如下步驟:
步驟501,判斷網(wǎng)絡(luò)是否為類alexnet網(wǎng)絡(luò);
通常,如果將網(wǎng)絡(luò)一般化并分為兩部分,分別稱為m和n,且在反向傳播時(shí)先進(jìn)行m部分計(jì)算,后進(jìn)行n部分計(jì)算,那么如果m部分的計(jì)算量占據(jù)整個(gè)時(shí)間的很小一部分,而所有用的參數(shù)占據(jù)所有參數(shù)量的很大一部分,并且n部分具有和m相反的特性,那么可以將稱此種網(wǎng)絡(luò)看作為類alexnet網(wǎng)絡(luò)。
在本申請(qǐng)實(shí)施例中,對(duì)于包括有m個(gè)結(jié)構(gòu)層的某一網(wǎng)絡(luò),可以首先判斷 該網(wǎng)絡(luò)是否為類alexnet網(wǎng)絡(luò)。
在本申請(qǐng)的一種優(yōu)選實(shí)施例中,所述判斷網(wǎng)絡(luò)是否為類alexnet網(wǎng)絡(luò)的步驟具體可以包括如下子步驟:
子步驟5011,對(duì)所述網(wǎng)絡(luò)進(jìn)行預(yù)訓(xùn)練,獲得每個(gè)結(jié)構(gòu)層的計(jì)算時(shí)間和參數(shù)量;
子步驟5012,根據(jù)所述計(jì)算時(shí)間和參數(shù)量,獲得所述網(wǎng)絡(luò)的計(jì)算總時(shí)間和總參數(shù)量;
子步驟5013,按照預(yù)設(shè)傳輸順序,逐層累加所述m個(gè)結(jié)構(gòu)層的計(jì)算時(shí)間,分別獲得截至第p層的計(jì)算時(shí)間之和;
子步驟5014,當(dāng)所述截至第p層的計(jì)算時(shí)間之和與所述計(jì)算總時(shí)間的比值滿足第一預(yù)設(shè)條件時(shí),累加剩余m-p層的參數(shù)量,獲得所述剩余m-p層的參數(shù)量之和;
子步驟5015,判斷所述剩余m-p層的參數(shù)量之和與所述總參數(shù)量的比值是否滿足第二預(yù)設(shè)條件;
在本申請(qǐng)實(shí)施例中,可以利用計(jì)算機(jī)去判斷當(dāng)前網(wǎng)絡(luò)是否屬于類alexnet網(wǎng)絡(luò),即可以通過預(yù)訓(xùn)練獲取到的時(shí)間參數(shù)進(jìn)行分析。
首先,對(duì)所述網(wǎng)絡(luò)進(jìn)行預(yù)訓(xùn)練,可以獲得每個(gè)結(jié)構(gòu)層的計(jì)算時(shí)間和參數(shù)量;然后根據(jù)所述計(jì)算時(shí)間和參數(shù)量,能夠獲得所述網(wǎng)絡(luò)的計(jì)算總時(shí)間和總參數(shù)量;按照預(yù)設(shè)傳輸順序(一般地,所述預(yù)設(shè)傳輸順序可以是反向傳輸方向,即從所述網(wǎng)絡(luò)的最后一層傳輸至第一層的過程),逐層累加所述m個(gè)結(jié)構(gòu)層的計(jì)算時(shí)間,分別獲得截至第p層的計(jì)算時(shí)間之和;當(dāng)所述截至第p層的計(jì)算時(shí)間之和與所述計(jì)算總時(shí)間的比值滿足第一預(yù)設(shè)條件時(shí),累加剩余m-p層的參數(shù)量,獲得所述剩余m-p層的參數(shù)量之和;最后判斷所述剩余m-n層的參數(shù)量之和與所述總參數(shù)量的比值是否滿足第二預(yù)設(shè)條件。
通常,由于alexnet網(wǎng)絡(luò)的特點(diǎn)在于計(jì)算量大的部分參數(shù)量小,而計(jì)算量小的部分參數(shù)量卻很大,因此,本領(lǐng)域技術(shù)人員可以據(jù)此設(shè)置第一預(yù)設(shè)條件和第二預(yù)設(shè)條件的具體數(shù)值,本申請(qǐng)對(duì)所述數(shù)值不作具體限定。
具體地,可以把預(yù)訓(xùn)練的網(wǎng)絡(luò)分為兩個(gè)部分,即m部分和n部分,那 么問題就可以劃歸為如何選取分割m和n的分界點(diǎn)。進(jìn)一步地,所述分界點(diǎn)的選取過程可以按照如下方式進(jìn)行:將該網(wǎng)絡(luò)在訓(xùn)練前進(jìn)行若干次預(yù)訓(xùn)練過程,并計(jì)算每次運(yùn)行時(shí)每個(gè)層進(jìn)行反向傳播時(shí)的計(jì)算時(shí)間和擁有的參數(shù)量。然后,將所有層的反向傳播時(shí)間累加和記為t,所有層所擁有的參數(shù)量記為v,以反向傳播的起始層為起點(diǎn),不斷累加下一層的計(jì)算時(shí)間,并記為t。當(dāng)t/t>0.1時(shí)停止累加,并將當(dāng)前層記為第p層。將從第p層到反向傳播的最后一層所擁有的參數(shù)量總和記為v,若此時(shí)v/v<0.1,那么可以認(rèn)為此網(wǎng)絡(luò)類型為類alexnet網(wǎng)絡(luò),可以繼續(xù)執(zhí)行子步驟5016,若v/v>0.1,則可以認(rèn)為此網(wǎng)絡(luò)并不是類alexnet網(wǎng)絡(luò)。
子步驟5016,將所述網(wǎng)絡(luò)劃分為類alexnet網(wǎng)絡(luò)。
在本申請(qǐng)的一種優(yōu)選實(shí)施例中,所述將所述網(wǎng)絡(luò)劃分為類alexnet網(wǎng)絡(luò)的子步驟可以進(jìn)一步包括:
將所述網(wǎng)絡(luò)的前p層劃分為類alexnet網(wǎng)絡(luò)的全連接層;
將所述剩余m-p層劃分為類alexnet網(wǎng)絡(luò)的卷積層。
當(dāng)所述網(wǎng)絡(luò)被確認(rèn)為屬于類alexnet網(wǎng)絡(luò)時(shí),可以根據(jù)獲得的分解點(diǎn),即子步驟5011-5015中獲得的第p層,將所述網(wǎng)絡(luò)具體劃分為全連接層部分和卷積層部分。
參照?qǐng)D6,是本申請(qǐng)的一種的數(shù)據(jù)反向傳播計(jì)算時(shí)間和參數(shù)量統(tǒng)計(jì)圖,圖中橫坐標(biāo)為層數(shù),左部分為反向傳播每一層的計(jì)算時(shí)間統(tǒng)計(jì),縱坐標(biāo)單位為ms,右部分為每層所擁有的的參數(shù)量,單位為字節(jié)。從反向傳播的起始層開始到上文計(jì)算出來的第p層之間的所有層計(jì)算時(shí)間之和為整個(gè)反向傳播總時(shí)間的10%,而此時(shí)如果從第p層到反向傳播的最后一層之間的所有層所擁有的參數(shù)量之和占據(jù)總參數(shù)量的10%左右,從而可以說明從反向傳播的第一層到第p層具有90%的參數(shù)量。進(jìn)而可以認(rèn)定,從反向傳播的最后一層到第p層的部分為m,即全連接層,而從第p層到反向傳播的第一層的部分為n,即卷積層部分。上述判斷過程可以通過如圖7所示的算法流程圖表示。
步驟502,采用第一計(jì)算隊(duì)列計(jì)算在所述全連接層下的第一梯度值和在所述卷積層下的第二梯度值;
在本申請(qǐng)實(shí)施例中,可以分別在第一圖形處理單元gpu即主卡,和第二圖形處理單元gpu即從卡上分別構(gòu)建出計(jì)算隊(duì)列和通信隊(duì)列。具體地,可以在主卡上構(gòu)建第一計(jì)算隊(duì)列和第一通信隊(duì)列,在從卡上構(gòu)建第二計(jì)算隊(duì)列和第二通信隊(duì)列,由第一計(jì)算隊(duì)列和第二計(jì)算隊(duì)列執(zhí)行相應(yīng)的計(jì)算過程,由第一通信隊(duì)列和第二通信隊(duì)列執(zhí)行相應(yīng)的通信過程,以獲得時(shí)間上的疊加。
因此,在本申請(qǐng)實(shí)施例中,可以采用第一計(jì)算隊(duì)列計(jì)算在所述全連接層下的第一梯度值和在所述卷積層下的第二梯度值。
在具體實(shí)現(xiàn)中,在計(jì)算全連接層下的第一梯度值時(shí),該過程只是反向傳播的前半部分。反向傳播的完整過程是從loss層開始(最后一層),按照箭頭相反的方向逐層傳播。例如從loss層傳播到innerproduce8,再到drop7...,一直到convolution1。而計(jì)算第一梯度值的過程只是包含圖中從loss層傳播到innerproduct6的過程。在全連接層相關(guān)層的反向傳播的過程中,每反向傳播一層就會(huì)對(duì)有參數(shù)的層計(jì)算出該層的梯度值(有些層不會(huì)計(jì)算出梯度,因?yàn)樵搶硬]有參數(shù),比如loss層,drop層,relu層,只有innerproduct層才會(huì)計(jì)算出梯度)并存儲(chǔ)在該層中。這一過程計(jì)算出來的梯度參數(shù)會(huì)非常非常多,但是整個(gè)計(jì)算過程卻非常迅速,這是這一過程的特點(diǎn)。
在計(jì)算卷積層的第二梯度值時(shí),該過程只是反向傳播的后半部分,即從pool5傳播到convolution1的過程。在卷積層相關(guān)層的反向傳播的過程中,每反向傳播一層就會(huì)對(duì)有參數(shù)的層會(huì)計(jì)算出該層的梯度(有些層不會(huì)計(jì)算出梯度,因?yàn)樵搶硬]有參數(shù),比如relu層,norm層,pool層,只有convolution層才會(huì)計(jì)算出梯度)并存儲(chǔ)在該層中。這一過程計(jì)算出來的梯度參數(shù)會(huì)非常非常少,但是整個(gè)計(jì)算過程會(huì)非常慢,這是這一過程的特點(diǎn)。
步驟503,采用第一通信隊(duì)列接收第二通信隊(duì)列發(fā)送的第三梯度值;
在本申請(qǐng)實(shí)施例中,所述第三梯度值可以是通過第二圖形處理單元gpu即從卡上的第二計(jì)算隊(duì)列計(jì)算獲得的,計(jì)算第三梯度值的過程,與主卡上的第一計(jì)算隊(duì)列計(jì)算第一梯度值同時(shí)并行進(jìn)行。
在本申請(qǐng)實(shí)施例中,由于主卡與從卡的計(jì)算與通信過程分開進(jìn)行,計(jì)算 隊(duì)列執(zhí)行相應(yīng)的計(jì)算過程,通信隊(duì)列執(zhí)行相應(yīng)的數(shù)據(jù)發(fā)送與接收,因此,可以采用第一通信隊(duì)列來接收第二通信隊(duì)列發(fā)送的第三梯度值。
在具體實(shí)現(xiàn)中,可以利用流并行的方式,將卷積層的計(jì)算和全連接層的參數(shù)通信并行執(zhí)行,即在主卡采用第一計(jì)算隊(duì)列計(jì)算所述第二梯度值時(shí),采用第一通信隊(duì)列接收第二通信隊(duì)列發(fā)送的第三梯度值,使計(jì)算和通信的過程獲得時(shí)間上的重疊,二者互不干擾。
步驟504,計(jì)算所述第一梯度值和第三梯度值的平均值,獲得所述類alexnet網(wǎng)絡(luò)的第一模型參數(shù);
在本申請(qǐng)實(shí)施例中,所述第一梯度值與第三梯度值分別是主卡和從卡計(jì)算的所述類alexnet網(wǎng)絡(luò)的全連接層的梯度,因此,當(dāng)從卡的數(shù)據(jù)匯總到主卡上后,需要根據(jù)主卡和從卡的數(shù)據(jù)對(duì)全連接層的數(shù)據(jù)進(jìn)行更新。在具體實(shí)現(xiàn)中,可以將所述第一梯度值和第三梯度值相加求平均值,以獲得第一模型參數(shù),所述第一模型參數(shù)即為更新后的全連接層梯度。
步驟505,采用第一通信隊(duì)列接收第二通信隊(duì)列發(fā)送的第四梯度值;
在本申請(qǐng)實(shí)施例中,所述第四梯度值可以采用第二計(jì)算隊(duì)列計(jì)算獲得,然后可以采用第二通信隊(duì)列將第四梯度值發(fā)送至主卡。
在具體實(shí)現(xiàn)中,所述第二圖形處理單元gpu即從卡上的第二計(jì)算隊(duì)列計(jì)算所述卷積層下的第四梯度值的過程,與主卡上的第一計(jì)算隊(duì)列計(jì)算第二梯度值同時(shí)并行進(jìn)行。
步驟506,計(jì)算所述第二梯度值和第四梯度值的平均值,獲得所述類alexnet網(wǎng)絡(luò)的第二模型參數(shù);
在具體實(shí)現(xiàn)中,可以將所述第二梯度值和第四梯度值相加求平均值,以獲得第二模型參數(shù),所述第二模型參數(shù)即為更新后的卷積層梯度。
步驟507,采用所述第一模型參數(shù)和第二模型參數(shù)訓(xùn)練所述類alexnet網(wǎng)絡(luò)的模型。
在本申請(qǐng)實(shí)施例中,在采用某一網(wǎng)絡(luò)進(jìn)行模型訓(xùn)練前,可以對(duì)所述網(wǎng)絡(luò)進(jìn)行預(yù)訓(xùn)練,通過對(duì)獲得時(shí)間參數(shù)進(jìn)行分析,以判斷所述網(wǎng)絡(luò)是否屬于類alexnet網(wǎng)絡(luò)。
為了便于理解,請(qǐng)參照?qǐng)D4,下面以一個(gè)完整的示例對(duì)本申請(qǐng)實(shí)施例的主卡與從卡的計(jì)算和通信過程作一說明:
1、主卡的broadcastmodel和從卡的receivemodel:主卡的broadcastmodel是將主卡的模型發(fā)送到從卡上,而從卡的receivemodel是負(fù)責(zé)接收主卡的模型。這一過程是為了讓兩張卡都保留有相同的alexnet網(wǎng)絡(luò)結(jié)構(gòu)。之所以要將梯度發(fā)送到主卡上再更新,是因?yàn)樵谀P陀?xùn)練時(shí)只會(huì)更新主卡的模型,而不管從卡。因?yàn)樵诘诙唂orward開始前,需要將主卡的模型廣播到從卡上。因此,可以始終以主卡模型為基礎(chǔ)。
2、主卡的forward過程和從卡的forward過程:該過程兩張卡的行為相同,屬于前向傳播,是按照?qǐng)D1中alexnet網(wǎng)絡(luò)中每層和每層之間的箭頭所指方向進(jìn)行。例如從data傳播到convolusion1,再到relu1...,一直到最后的loss層。這時(shí)loss層會(huì)得出一個(gè)loss值,該值被稱為損失值,而后一過程backward(反向傳播)能夠進(jìn)行的先決條件是需要得出loss值,因此必須先進(jìn)行forward,后進(jìn)行backward。對(duì)于forward過程來說,先經(jīng)過的是卷積層相關(guān)層,后經(jīng)過的是全連接層相關(guān)層。每一層的計(jì)算方式均有些區(qū)別,這是由于各層的計(jì)算公式不同所致。
3、主卡和從卡的backwardforinnerproduct過程:該過程兩張卡的行為相同,該過程只是backward完整的前半部分。backward完整過程是從loss層開始(即最后一層),按照?qǐng)D1中箭頭相反的方向逐層傳播。例如從loss傳播到innerproduce8,再到drop7...,一直到convolution1。而backwardforinnerproduct過程只是包含圖1中全連接層部分的反向傳播。即從loss傳播到innerproduct6的過程。所以,backwardforinnerproduct這一過程是全連接層相關(guān)層的反向傳播過程。在全連接層相關(guān)層的反向傳播的過程中,每反向傳播一層就會(huì)對(duì)有參數(shù)的層會(huì)計(jì)算出該層的梯度(有些層不會(huì)計(jì)算出梯度,因?yàn)樵搶硬]有參數(shù),比如loss層,drop層,relu層,只有innerproduct層才會(huì)計(jì)算出梯度)并存儲(chǔ)在該層中。這一過程計(jì)算出來的梯度參數(shù)會(huì)非常非常多,但是整個(gè)計(jì)算過程卻非常迅速,這是這一過程的特點(diǎn)。
4、主卡和從卡的backwardforconvolution過程:該過程兩張卡的行為相同,該過程只是backward完整的后半部分。而backwardforconvolution過程只是包含圖1中卷積層部分的反向傳播。即從pool5傳播到convolution1的過程。所以,backwardforconvolution這一過程是卷積層相關(guān)層的反向傳播過程。在卷積層相關(guān)層的反向傳播的過程中,每反向傳播一層就會(huì)對(duì)有參數(shù)的層會(huì)計(jì)算出該層的梯度(有些層不會(huì)計(jì)算出梯度,因?yàn)樵搶硬]有參數(shù),比如relu層,norm層,pool層,只有convolution層才會(huì)計(jì)算出梯度)并存儲(chǔ)在該層中。這一過程計(jì)算出來的梯度參數(shù)會(huì)非常非常少,但是整個(gè)計(jì)算過程會(huì)非常慢,這是這一過程的特點(diǎn)。
5、主卡和從卡部分的第一個(gè)過程receiveinnerproductgradients和sendinnerproductgradients:這兩個(gè)過程是梯度的發(fā)送與接收過程。該過程在主卡上是receive過程。即接收從卡計(jì)算出來的梯度,在從卡上是send過程,即發(fā)送計(jì)算的梯度的過程。這兩個(gè)過程在各自的卡上都是跟在backwardforinnerproduct過程之后,代表該過程必須等待backwardforinnerproduct之后才能進(jìn)行,但該過程是處在通信隊(duì)列中的過程,而計(jì)算過程處在計(jì)算隊(duì)列中,所以其與backwardforconvolution同時(shí)并行執(zhí)行。
6、主卡和從卡部分的第二個(gè)過程updateinnerproductgradients過程:這兩個(gè)過程是更新全連接層梯度的過程。但是兩張卡的行為不一樣,主卡是對(duì)全連接層梯度取平均的過程,而從卡這個(gè)過程是個(gè)空過程,即不執(zhí)行任何行為。但該過程是處在通信隊(duì)列中的過程,與backwardforconvolution同時(shí)并行執(zhí)行
7、主卡和從卡部分的第三個(gè)過程receiveconvolutiongradients和sendconvolutiongradients過程:即主卡接收從卡發(fā)送的卷積層梯度參數(shù),而從卡向主卡發(fā)送卷積層梯度參數(shù)的過程。雖然該過程處在通信隊(duì)列中,但是它與計(jì)算隊(duì)列的backwardforconvolution有依賴關(guān)系,因此這一過程必須要等待backwardforconvolution和updateinnerproductgradients完成之后才能執(zhí)行。
8、主卡和從卡的updateconvolutiongradients過程:這兩個(gè)過程是對(duì)卷 積層梯度取平均的過程。但是兩張卡的行為不一樣,主卡是對(duì)卷積層梯度取平均的過程,而從卡這個(gè)過程是個(gè)空過程,即不執(zhí)行任何行為。
需要說明的是,對(duì)于方法實(shí)施例,為了簡單描述,故將其都表述為一系列的動(dòng)作組合,但是本領(lǐng)域技術(shù)人員應(yīng)該知悉,本申請(qǐng)實(shí)施例并不受所描述的動(dòng)作順序的限制,因?yàn)橐罁?jù)本申請(qǐng)實(shí)施例,某些步驟可以采用其他順序或者同時(shí)進(jìn)行。其次,本領(lǐng)域技術(shù)人員也應(yīng)該知悉,說明書中所描述的實(shí)施例均屬于優(yōu)選實(shí)施例,所涉及的動(dòng)作并不一定是本申請(qǐng)實(shí)施例所必須的。
參照?qǐng)D8,示出了本申請(qǐng)的一種類alexnet網(wǎng)絡(luò)的模型訓(xùn)練裝置實(shí)施例的結(jié)構(gòu)框圖,具體可以包括如下模塊:
第一計(jì)算模塊801,用于采用第一圖形處理單元gpu計(jì)算在類alexnet網(wǎng)絡(luò)下的第一梯度值和第二梯度值;
第一接收模塊802,用于接收第二圖形處理單元gpu發(fā)送的在所述類alexnet網(wǎng)絡(luò)下的第三梯度值;
第二計(jì)算模塊803,用于依據(jù)所述第一梯度值和第三梯度值計(jì)算所述類alexnet網(wǎng)絡(luò)的第一模型參數(shù);
第二接收模塊804,用于接收所述第二圖形處理單元gpu發(fā)送的在所述類alexnet網(wǎng)絡(luò)下的第四梯度值;
第三計(jì)算模塊805,用于依據(jù)所述第二梯度值和第四梯度值計(jì)算所述類alexnet網(wǎng)絡(luò)的第二模型參數(shù);
訓(xùn)練模塊806,用于采用所述第一模型參數(shù)和第二模型參數(shù)訓(xùn)練所述類alexnet網(wǎng)絡(luò)的模型。
在本申請(qǐng)實(shí)施例中,所述類alexnet網(wǎng)絡(luò)可以由全連接層和卷積層組成,所述第一計(jì)算模塊801具體可以包括如下子模塊:
第一計(jì)算子模塊8011,用于采用第一圖形處理單元gpu計(jì)算在所述全連接層下的第一梯度值和在所述卷積層下的第二梯度值。
在本申請(qǐng)實(shí)施例中,所述第一圖形處理單元gpu可以包括有第一計(jì)算 隊(duì)列,所述第一計(jì)算子模塊8011具體可以包括如下單元:
第一計(jì)算單元8011a,用于采用第一計(jì)算隊(duì)列計(jì)算在所述全連接層下的第一梯度值和在所述卷積層下的第二梯度值。
在本申請(qǐng)實(shí)施例中,所述第一圖形處理單元gpu還可以包括有第一通信隊(duì)列,所述第二圖形處理單元gpu可以包括有第二通信隊(duì)列,所述第一接收模塊802具體可以包括如下子模塊:
第一接收子模塊8021,用于采用第一通信隊(duì)列接收第二通信隊(duì)列發(fā)送的第三梯度值;
所述第二接收模塊804具體可以包括如下子模塊:
第二接收子模塊8041,用于采用第一通信隊(duì)列接收第二通信隊(duì)列發(fā)送的第四梯度值。
在本申請(qǐng)實(shí)施例中,所述第二圖形處理單元還可以包括有第二計(jì)算隊(duì)列,所述第三梯度值和所述第四梯度值可以分別通過如下模塊獲得:
第四計(jì)算模塊807,用于采用第二計(jì)算隊(duì)列計(jì)算在所述全連接層下的第三梯度值;以及,
第五計(jì)算模塊808,用于采用第二計(jì)算隊(duì)列計(jì)算在所述卷積層下的第四梯度值。
在本申請(qǐng)實(shí)施例中,所述第二計(jì)算模塊803具體可以包括如下子模塊:
第一模型參數(shù)計(jì)算子模塊8031,用于計(jì)算所述第一梯度值和第三梯度值的平均值,獲得所述類alexnet網(wǎng)絡(luò)的第一模型參數(shù)。
在本申請(qǐng)實(shí)施例中,所述第三計(jì)算模塊805具體可以包括如下子模塊:
第二模型參數(shù)計(jì)算子模塊8051,用于計(jì)算所述第二梯度值和第四梯度值的平均值,獲得第二模型參數(shù)。
在本申請(qǐng)實(shí)施例中,所述裝置還可以包括如下模塊:
判斷模塊808,用于判斷網(wǎng)絡(luò)是否為類alexnet網(wǎng)絡(luò)。
在本申請(qǐng)實(shí)施例中,所述網(wǎng)絡(luò)可以包括有m個(gè)結(jié)構(gòu)層,所述判斷模塊808具體可以包括如下子模塊:
計(jì)算時(shí)間和參數(shù)量獲得子模塊8081,用于對(duì)所述網(wǎng)絡(luò)進(jìn)行預(yù)訓(xùn)練,獲得 每個(gè)結(jié)構(gòu)層的計(jì)算時(shí)間和參數(shù)量;
計(jì)算總時(shí)間和總參數(shù)量獲得子模塊8082,用于根據(jù)所述計(jì)算時(shí)間和參數(shù)量,獲得所述網(wǎng)絡(luò)的計(jì)算總時(shí)間和總參數(shù)量;
計(jì)算時(shí)間之和獲得子模塊8083,用于按照預(yù)設(shè)傳輸順序,逐層累加所述m個(gè)結(jié)構(gòu)層的計(jì)算時(shí)間,分別獲得截至第p層的計(jì)算時(shí)間之和;
參數(shù)量之和獲得子模塊8084,用于在所述截至第p層的計(jì)算時(shí)間之和與所述計(jì)算總時(shí)間的比值滿足第一預(yù)設(shè)條件時(shí),累加剩余m-p層的參數(shù)量,獲得所述剩余m-p層的參數(shù)量之和;
判斷子模塊8085,用于判斷所述剩余m-p層的參數(shù)量之和與所述總參數(shù)量的比值是否滿足第二預(yù)設(shè)條件;
劃分子模塊8086,用于在滿足第二預(yù)設(shè)條件時(shí),將所述網(wǎng)絡(luò)劃分為類alexnet網(wǎng)絡(luò)。
在本申請(qǐng)實(shí)施例中,所述劃分子模塊8086具體可以包括如下單元:
全連接層劃分單元8086a,用于將所述網(wǎng)絡(luò)的前p層劃分為類alexnet網(wǎng)絡(luò)的全連接層;
卷積層劃分單元8086b,用于將所述剩余m-p層劃分為類alexnet網(wǎng)絡(luò)的卷積層。
對(duì)于裝置實(shí)施例而言,由于其與方法實(shí)施例基本相似,所以描述的比較簡單,相關(guān)之處參見方法實(shí)施例的部分說明即可。
本說明書中的各個(gè)實(shí)施例均采用遞進(jìn)的方式描述,每個(gè)實(shí)施例重點(diǎn)說明的都是與其他實(shí)施例的不同之處,各個(gè)實(shí)施例之間相同相似的部分互相參見即可。
本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本申請(qǐng)實(shí)施例的實(shí)施例可提供為方法、裝置、或計(jì)算機(jī)程序產(chǎn)品。因此,本申請(qǐng)實(shí)施例可采用完全硬件實(shí)施例、完全軟件實(shí)施例、或結(jié)合軟件和硬件方面的實(shí)施例的形式。而且,本申請(qǐng)實(shí)施例可采用在一個(gè)或多個(gè)其中包含有計(jì)算機(jī)可用程序代碼的計(jì)算機(jī)可用存儲(chǔ)介 質(zhì)(包括但不限于磁盤存儲(chǔ)器、cd-rom、光學(xué)存儲(chǔ)器等)上實(shí)施的計(jì)算機(jī)程序產(chǎn)品的形式。
在一個(gè)典型的配置中,所述計(jì)算機(jī)設(shè)備包括一個(gè)或多個(gè)處理器(cpu)、輸入/輸出接口、網(wǎng)絡(luò)接口和內(nèi)存。內(nèi)存可能包括計(jì)算機(jī)可讀介質(zhì)中的非永久性存儲(chǔ)器,隨機(jī)存取存儲(chǔ)器(ram)和/或非易失性內(nèi)存等形式,如只讀存儲(chǔ)器(rom)或閃存(flashram)。內(nèi)存是計(jì)算機(jī)可讀介質(zhì)的示例。計(jì)算機(jī)可讀介質(zhì)包括永久性和非永久性、可移動(dòng)和非可移動(dòng)媒體可以由任何方法或技術(shù)來實(shí)現(xiàn)信息存儲(chǔ)。信息可以是計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序的模塊或其他數(shù)據(jù)。計(jì)算機(jī)的存儲(chǔ)介質(zhì)的例子包括,但不限于相變內(nèi)存(pram)、靜態(tài)隨機(jī)存取存儲(chǔ)器(sram)、動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(dram)、其他類型的隨機(jī)存取存儲(chǔ)器(ram)、只讀存儲(chǔ)器(rom)、電可擦除可編程只讀存儲(chǔ)器(eeprom)、快閃記憶體或其他內(nèi)存技術(shù)、只讀光盤只讀存儲(chǔ)器(cd-rom)、數(shù)字多功能光盤(dvd)或其他光學(xué)存儲(chǔ)、磁盒式磁帶,磁帶磁磁盤存儲(chǔ)或其他磁性存儲(chǔ)設(shè)備或任何其他非傳輸介質(zhì),可用于存儲(chǔ)可以被計(jì)算設(shè)備訪問的信息。按照本文中的界定,計(jì)算機(jī)可讀介質(zhì)不包括非持續(xù)性的電腦可讀媒體(transitorymedia),如調(diào)制的數(shù)據(jù)信號(hào)和載波。
本申請(qǐng)實(shí)施例是參照根據(jù)本申請(qǐng)實(shí)施例的方法、終端設(shè)備(系統(tǒng))、和計(jì)算機(jī)程序產(chǎn)品的流程圖和/或方框圖來描述的。應(yīng)理解可由計(jì)算機(jī)程序指令實(shí)現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計(jì)算機(jī)程序指令到通用計(jì)算機(jī)、專用計(jì)算機(jī)、嵌入式處理機(jī)或其他可編程數(shù)據(jù)處理終端設(shè)備的處理器以產(chǎn)生一個(gè)機(jī)器,使得通過計(jì)算機(jī)或其他可編程數(shù)據(jù)處理終端設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的裝置。
這些計(jì)算機(jī)程序指令也可存儲(chǔ)在能引導(dǎo)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理終端設(shè)備以特定方式工作的計(jì)算機(jī)可讀存儲(chǔ)器中,使得存儲(chǔ)在該計(jì)算機(jī)可讀存儲(chǔ)器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實(shí)現(xiàn)在流程圖一個(gè) 流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能。
這些計(jì)算機(jī)程序指令也可裝載到計(jì)算機(jī)或其他可編程數(shù)據(jù)處理終端設(shè)備上,使得在計(jì)算機(jī)或其他可編程終端設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的處理,從而在計(jì)算機(jī)或其他可編程終端設(shè)備上執(zhí)行的指令提供用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的步驟。
盡管已描述了本申請(qǐng)實(shí)施例的優(yōu)選實(shí)施例,但本領(lǐng)域內(nèi)的技術(shù)人員一旦得知了基本創(chuàng)造性概念,則可對(duì)這些實(shí)施例做出另外的變更和修改。所以,所附權(quán)利要求意欲解釋為包括優(yōu)選實(shí)施例以及落入本申請(qǐng)實(shí)施例范圍的所有變更和修改。
最后,還需要說明的是,在本文中,諸如第一和第二等之類的關(guān)系術(shù)語僅僅用來將一個(gè)實(shí)體或者操作與另一個(gè)實(shí)體或操作區(qū)分開來,而不一定要求或者暗示這些實(shí)體或操作之間存在任何這種實(shí)際的關(guān)系或者順序。而且,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者終端設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者終端設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個(gè)......”限定的要素,并不排除在包括所述要素的過程、方法、物品或者終端設(shè)備中還存在另外的相同要素。
以上對(duì)本申請(qǐng)所提供的一種類alexnet網(wǎng)絡(luò)的模型訓(xùn)練方法和一種類alexnet網(wǎng)絡(luò)的模型訓(xùn)練裝置,進(jìn)行了詳細(xì)介紹,本文中應(yīng)用了具體個(gè)例對(duì)本申請(qǐng)的原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施例的說明只是用于幫助理解本申請(qǐng)的方法及其核心思想;同時(shí),對(duì)于本領(lǐng)域的一般技術(shù)人員,依據(jù)本申請(qǐng)的思想,在具體實(shí)施方式及應(yīng)用范圍上均會(huì)有改變之處,綜上所述,本說明書內(nèi)容不應(yīng)理解為對(duì)本申請(qǐng)的限制。