本發(fā)明屬于計(jì)算機(jī)信息處理領(lǐng)域,具體涉及一種基于國產(chǎn)眾核處理器的深度學(xué)習(xí)算法實(shí)現(xiàn)方法與平臺。
背景技術(shù):
深度學(xué)習(xí)算法是通過學(xué)習(xí)一種深層非線性網(wǎng)絡(luò)結(jié)構(gòu),實(shí)現(xiàn)復(fù)雜函數(shù)逼近,表征輸入數(shù)據(jù)分布是表示,并展現(xiàn)強(qiáng)大的從少數(shù)樣本集中學(xué)習(xí)數(shù)據(jù)集本質(zhì)特征的能力。深度學(xué)習(xí)的實(shí)質(zhì),是通過構(gòu)建具有多隱層的機(jī)器學(xué)習(xí)模型和海量的數(shù)據(jù)訓(xùn)練,來學(xué)習(xí)更有用的特征,從而最終提升分類或預(yù)測的準(zhǔn)確性。
申威國產(chǎn)眾核處理器,是完全國產(chǎn)化的用于高性能并行計(jì)算的眾核處理器,其主核為運(yùn)算控制核心,其功能與通用的處理器相似,可執(zhí)行通用處理器的工作;從核為計(jì)算核心,主要負(fù)責(zé)運(yùn)算,作用類似于協(xié)處理器。
mpi(messagepassinginterface)是目前國際上最流行的并行編程環(huán)境之一,尤其是分布式存儲的可縮放并行計(jì)算機(jī)和工作站網(wǎng)絡(luò)以及機(jī)群的一種編程范例。其具有可移植性和易用性,有完備的異步通信功能,有正式和詳細(xì)的精確定義。
鑒于在深度學(xué)習(xí)領(lǐng)域,算法的深度、復(fù)雜程度逐漸增加,以及訓(xùn)練過程中要處理的數(shù)據(jù)量十分龐大,深度學(xué)習(xí)的發(fā)展與應(yīng)用需要強(qiáng)大的計(jì)算能力做支撐。若僅僅使用普通的處理器進(jìn)行模型訓(xùn)練,需要耗費(fèi)非常長的時間,或搭建非常大規(guī)模的集群,操作繁瑣冗余。
因此,提供一種基于國產(chǎn)眾核處理器的深度學(xué)習(xí)算法實(shí)現(xiàn)方法與平臺,是十分必要的。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的在于解決上述現(xiàn)有技術(shù)中存在的普通處理器進(jìn)行模型訓(xùn)練耗時長、搭建復(fù)雜等難題,提供一種基于國產(chǎn)眾核處理器的深度學(xué)習(xí)算法實(shí)現(xiàn)方法與平臺。
本發(fā)明是通過以下技術(shù)方案實(shí)現(xiàn)的:
一種基于國產(chǎn)眾核處理器的深度學(xué)習(xí)算法實(shí)現(xiàn)方法,深度學(xué)習(xí)算法的數(shù)據(jù)并行方式通過主從模式完成,包括以下步驟
s1:將網(wǎng)絡(luò)模型復(fù)制成n份,訓(xùn)練樣本均分成n份;
s2:第i份網(wǎng)絡(luò)模型利用第i個訓(xùn)練樣本子集做迭代訓(xùn)練;
s3:每次迭代完成時,將參數(shù)梯度上傳至參數(shù)服務(wù)器;
s4:下次迭代開始前從參數(shù)服務(wù)器下載參數(shù)集作為本次迭代的初始參數(shù);
深度學(xué)習(xí)模型訓(xùn)練的過程需要大量的數(shù)據(jù)處理,本方案采取數(shù)據(jù)并行的方式,將資源池中的所有訓(xùn)練數(shù)據(jù)分片,將這些數(shù)據(jù)分別分配給不同的計(jì)算進(jìn)程進(jìn)行訓(xùn)練。在數(shù)據(jù)分片訓(xùn)練完成后,需要對權(quán)重進(jìn)行同步規(guī)約操作,然后將規(guī)約后的權(quán)重發(fā)送給各進(jìn)程,以便訓(xùn)練其他數(shù)據(jù)分片。
作為優(yōu)選,集群中的其他計(jì)算資源負(fù)責(zé)不同數(shù)據(jù)分片的訓(xùn)練工作,計(jì)算出參數(shù)封信的梯度,傳送給參數(shù)服務(wù)器更新模型參數(shù)。
作為優(yōu)選,所述參數(shù)服務(wù)器由單個核組構(gòu)成,負(fù)責(zé)merge操作。
上述的深度學(xué)習(xí)算法實(shí)現(xiàn)方法中,其深度學(xué)習(xí)算法核組間并行方式是由單個訓(xùn)練進(jìn)程控制單個核組的計(jì)算,核組之間的信息交互通過mpi信息傳遞接口實(shí)現(xiàn)。
針對國產(chǎn)眾核平臺的硬件架構(gòu)以及每個核組都有獨(dú)立的操作系統(tǒng)這一特點(diǎn),核組之間的并行通過mpi實(shí)現(xiàn)。
作為優(yōu)選,所述mpi主進(jìn)程控制參數(shù)服務(wù)器,其他計(jì)算核組由mpi從進(jìn)程控制。
作為優(yōu)選所述mpi的設(shè)計(jì)方式為各進(jìn)程同步執(zhí)行或不同進(jìn)程異步執(zhí)行。
其中,同步執(zhí)行是指:每個計(jì)算進(jìn)程讀取一道數(shù)據(jù)進(jìn)行訓(xùn)練,在權(quán)重更新階段,所有的進(jìn)程都要將各自計(jì)算的梯度發(fā)送給參數(shù)服務(wù)器(主進(jìn)程),參數(shù)服務(wù)器將各計(jì)算進(jìn)程發(fā)來的梯度進(jìn)行規(guī)約更新,然后將更新后的值同時發(fā)送給各計(jì)算進(jìn)程,以便各進(jìn)程處理下一批樣本。各進(jìn)程同步執(zhí)行時,各進(jìn)程之間每次訓(xùn)練之前的權(quán)重和偏置是相同的。
異步執(zhí)行是指:每個進(jìn)程讀取一個分片的數(shù)據(jù)樣本進(jìn)行訓(xùn)練,將其計(jì)算的梯度交由參數(shù)服務(wù)器進(jìn)行merge更新,然后參數(shù)服務(wù)器立即將更新后的值發(fā)送給此計(jì)算進(jìn)程,此計(jì)算進(jìn)程利用更新后的值訓(xùn)練下一個數(shù)據(jù)分片樣本。異步執(zhí)行時,每一個數(shù)據(jù)分片樣本訓(xùn)練之前的權(quán)重與偏置都是不一樣的。
同步執(zhí)行往往會導(dǎo)致當(dāng)進(jìn)程的數(shù)量變大時,收斂的速度越來越慢,基于此提出了計(jì)算進(jìn)程之間異步執(zhí)行的方案以加快收斂速度。
上述的深度學(xué)習(xí)算法實(shí)現(xiàn)方法中,其深度學(xué)習(xí)算法核組內(nèi)數(shù)據(jù)并行是通過國產(chǎn)眾核處理器中眾核的核心數(shù)目并行加速熱點(diǎn)函數(shù)的數(shù)據(jù)并行來實(shí)現(xiàn)的。
根據(jù)深度學(xué)習(xí)算法分析情況可知,深度算法中矩陣乘法、向量計(jì)算及激活函數(shù)的計(jì)算均是熱點(diǎn)且滿足數(shù)據(jù)并行的條件,適合應(yīng)用共享的多線程編程模式實(shí)現(xiàn)并行。而國產(chǎn)眾核處理器的每個核組中都有1個主核和64個從核,可以利用國產(chǎn)處理器中眾核的核心數(shù)目并行加速熱點(diǎn)函數(shù)的數(shù)據(jù)并行從而實(shí)現(xiàn)從核間的并行,本方案可以采用國產(chǎn)眾核平臺上的加速線程庫(athread庫)也可以采用openacc并行編程的方式完成從核上的多線程的計(jì)算。對于矩陣向量計(jì)算,可直接調(diào)用blas庫完成加速。
一種基于上述深度學(xué)習(xí)算法的實(shí)現(xiàn)平臺,包括硬件集群平臺,所述硬件集群平臺的各節(jié)點(diǎn)內(nèi)配置相同,計(jì)算節(jié)點(diǎn)內(nèi)采用核心數(shù)量及主頻相同的國產(chǎn)眾核處理器。
作為優(yōu)選,所述國產(chǎn)眾核處理器主存中存放的從核常用變量傳輸至從核局存中。
主核上定義的變量存放在主存中,無論是主核還是從核調(diào)用這些變量數(shù)據(jù)都需要直接訪問主存。而從核訪問主存的延遲比較高。若從核程序頻繁地訪問主存會導(dǎo)致很大的性能損耗。而國產(chǎn)眾核平臺上每個從核配有64k的局存,局存為每個從核所私有,訪存速度快。因此,將主存中存放的從核常用變量首先傳入從核局存中供從核私有,從而提高從核的訪存速度。
作為優(yōu)選,其中計(jì)算節(jié)點(diǎn)的互聯(lián)、數(shù)據(jù)的傳輸采用萬兆以太或infiniband高度互聯(lián)網(wǎng)絡(luò)。由于平臺緩存的大小為64k,遠(yuǎn)小于intel平臺上的緩存,當(dāng)計(jì)算的數(shù)組過大時,會帶來很大的訪存壓力,因此需要根據(jù)平臺上的緩存的大小將數(shù)組分段處理以減小cache過小造成的訪存脫靶問題。
在硬件集群平臺中,每個眾核節(jié)點(diǎn)配置內(nèi)存保持一致,采用同樣類型、大小的ddr內(nèi)存,避免內(nèi)存讀寫速度差別造成的處理能力差距懸殊,導(dǎo)致整個節(jié)點(diǎn)處理能力低下。同時,計(jì)算節(jié)點(diǎn)內(nèi)采用的國產(chǎn)眾核處理器芯片相同,保證每個處理器芯片內(nèi)的核心數(shù)量以及主頻相同。此外,進(jìn)程間的通信對節(jié)點(diǎn)間互聯(lián)網(wǎng)絡(luò)的要求較高,因此,計(jì)算節(jié)點(diǎn)的互聯(lián)采用萬兆以太或infiniband高速互聯(lián)網(wǎng)絡(luò),為避免由于帶寬不一致信息阻塞,網(wǎng)絡(luò)交換機(jī)采用全交換的方式。
與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果是:
本發(fā)明的目的在于加速深度學(xué)習(xí)領(lǐng)域模型訓(xùn)練的速度,充分利用國產(chǎn)眾核平臺硬件資源,提高計(jì)算性能、降低能耗,從而減少模型訓(xùn)練的成本。本發(fā)明涉及了硬件架構(gòu)的搭建以及并行算法的設(shè)計(jì)與實(shí)現(xiàn),其中利用mpi實(shí)現(xiàn)了核組之間任務(wù)的分配及消息傳遞,利用國產(chǎn)眾核處理器的計(jì)算核心實(shí)現(xiàn)深度學(xué)習(xí)算法模型訓(xùn)練的并行加速。此方案,充分利用硬件資源,大大縮短了對稱正定線性方程組的求解時間,降低計(jì)算能耗,從而減少了機(jī)房構(gòu)建、管理及運(yùn)維成本。
此外,本發(fā)明方法原理可靠,步驟簡單,具有非常廣泛的應(yīng)用前景。
由此可見,本發(fā)明與現(xiàn)有技術(shù)相比,具有突出的實(shí)質(zhì)性特點(diǎn)和顯著地進(jìn)步,其實(shí)施的有益效果也是顯而易見的。
附圖說明
圖1是本發(fā)明提供的一種基于國產(chǎn)眾核處理器的深度學(xué)習(xí)算法實(shí)現(xiàn)方法中深度學(xué)習(xí)數(shù)據(jù)并行示意圖。
圖2是本發(fā)明提供的一種基于國產(chǎn)眾核處理器的深度學(xué)習(xí)算法實(shí)現(xiàn)方法中深度學(xué)習(xí)數(shù)據(jù)并行主從模式示意圖。
圖3是本發(fā)明提供的一種基于國產(chǎn)眾核處理器的深度學(xué)習(xí)算法實(shí)現(xiàn)方法中核組間數(shù)據(jù)并行方式示意圖。
圖4是本發(fā)明提供的一種基于國產(chǎn)眾核處理器的深度學(xué)習(xí)算法實(shí)現(xiàn)方法中核組內(nèi)數(shù)據(jù)并行方式示意圖。
具體實(shí)施方式
下面結(jié)合附圖對本發(fā)明作進(jìn)一步詳細(xì)描述:
如圖1至2所示,本發(fā)明提供的一種基于國產(chǎn)眾核處理器的深度學(xué)習(xí)算法實(shí)現(xiàn)方法,其深度學(xué)習(xí)算法的數(shù)據(jù)并行方式通過主從模式完成,包括以下步驟
s1:將網(wǎng)絡(luò)模型復(fù)制成n份,訓(xùn)練樣本均分成n份;
s2:第i份網(wǎng)絡(luò)模型利用第i個訓(xùn)練樣本子集做迭代訓(xùn)練;
s3:每次迭代完成時,將參數(shù)梯度上傳至參數(shù)服務(wù)器;
s4:下次迭代開始前從參數(shù)服務(wù)器下載參數(shù)集作為本次迭代的初始參數(shù);
深度學(xué)習(xí)模型訓(xùn)練的過程需要大量的數(shù)據(jù)處理,本方案采取數(shù)據(jù)并行的方式,將資源池中的所有訓(xùn)練數(shù)據(jù)分片,將這些數(shù)據(jù)分別分配給不同的計(jì)算進(jìn)程進(jìn)行訓(xùn)練。在數(shù)據(jù)分片訓(xùn)練完成后,需要對權(quán)重進(jìn)行同步規(guī)約操作,然后將規(guī)約后的權(quán)重發(fā)送給各進(jìn)程,以便訓(xùn)練其他數(shù)據(jù)分片。在訓(xùn)練的過程中,多個訓(xùn)練過程相互獨(dú)立訓(xùn)練的結(jié)果,即模型的變化量δw需要匯報給參數(shù)服務(wù)器,由參數(shù)服務(wù)器負(fù)責(zé)更新為最新的模型w’=w–ηδw,然后再將最新的模型w’分發(fā)給訓(xùn)練程序,以便從新的起點(diǎn)開始訓(xùn)練。
在本實(shí)施例中,集群中的其他計(jì)算資源負(fù)責(zé)不同數(shù)據(jù)分片的訓(xùn)練工作,計(jì)算出參數(shù)封信的梯度,傳送給參數(shù)服務(wù)器更新模型參數(shù)。
在本實(shí)施例中,所述參數(shù)服務(wù)器由單個核組構(gòu)成,負(fù)責(zé)merge操作。
如圖3所示,上述的深度學(xué)習(xí)算法實(shí)現(xiàn)方法中,其深度學(xué)習(xí)算法核組間并行方式是由單個訓(xùn)練進(jìn)程控制單個核組的計(jì)算,核組之間的信息交互通過mpi信息傳遞接口實(shí)現(xiàn)。
針對國產(chǎn)眾核平臺的硬件架構(gòu)以及每個核組都有獨(dú)立的操作系統(tǒng)這一特點(diǎn),核組之間的并行通過mpi實(shí)現(xiàn)。
在本實(shí)施例中,所述mpi主進(jìn)程控制參數(shù)服務(wù)器,其他計(jì)算核組由mpi從進(jìn)程控制。
在本實(shí)施例中,所述mpi的設(shè)計(jì)方式為不同進(jìn)程異步執(zhí)行,在本發(fā)明的其他實(shí)施例中也可采用各進(jìn)程同步執(zhí)行的方式。
異步執(zhí)行是指:每個進(jìn)程讀取一個分片的數(shù)據(jù)樣本進(jìn)行訓(xùn)練,將其計(jì)算的梯度交由參數(shù)服務(wù)器進(jìn)行merge更新,然后參數(shù)服務(wù)器立即將更新后的值發(fā)送給此計(jì)算進(jìn)程,此計(jì)算進(jìn)程利用更新后的值訓(xùn)練下一個數(shù)據(jù)分片樣本。異步執(zhí)行時,每一個數(shù)據(jù)分片樣本訓(xùn)練之前的權(quán)重與偏置都是不一樣的。
同步執(zhí)行是指:每個計(jì)算進(jìn)程讀取一道數(shù)據(jù)進(jìn)行訓(xùn)練,在權(quán)重更新階段,所有的進(jìn)程都要將各自計(jì)算的梯度發(fā)送給參數(shù)服務(wù)器(主進(jìn)程),參數(shù)服務(wù)器將各計(jì)算進(jìn)程發(fā)來的梯度進(jìn)行規(guī)約更新,然后將更新后的值同時發(fā)送給各計(jì)算進(jìn)程,以便各進(jìn)程處理下一批樣本。各進(jìn)程同步執(zhí)行時,各進(jìn)程之間每次訓(xùn)練之前的權(quán)重和偏置是相同的。
同步執(zhí)行往往會導(dǎo)致當(dāng)進(jìn)程的數(shù)量變大時,收斂的速度越來越慢,基于此提出了計(jì)算進(jìn)程之間異步執(zhí)行的方案以加快收斂速度。
如圖4所示,上述的深度學(xué)習(xí)算法實(shí)現(xiàn)方法中,其深度學(xué)習(xí)算法核組內(nèi)數(shù)據(jù)并行是通過國產(chǎn)眾核處理器中眾核的核心數(shù)目并行加速熱點(diǎn)函數(shù)的數(shù)據(jù)并行來實(shí)現(xiàn)的。
根據(jù)深度學(xué)習(xí)算法分析情況可知,深度算法中矩陣乘法、向量計(jì)算及激活函數(shù)的計(jì)算均是熱點(diǎn)且滿足數(shù)據(jù)并行的條件,適合應(yīng)用共享的多線程編程模式實(shí)現(xiàn)并行。而國產(chǎn)眾核處理器的每個核組中都有1個主核和64個從核,可以利用國產(chǎn)處理器中眾核的核心數(shù)目并行加速熱點(diǎn)函數(shù)的數(shù)據(jù)并行從而實(shí)現(xiàn)從核間的并行,本方案可以采用國產(chǎn)眾核平臺上的加速線程庫(athread庫)也可以采用openacc并行編程的方式完成從核上的多線程的計(jì)算。對于矩陣向量計(jì)算,可直接調(diào)用blas庫完成加速。
一種基于上述深度學(xué)習(xí)算法的實(shí)現(xiàn)平臺,包括硬件集群平臺,所述硬件集群平臺的各節(jié)點(diǎn)內(nèi)配置相同,計(jì)算節(jié)點(diǎn)內(nèi)采用核心數(shù)量及主頻相同的國產(chǎn)眾核處理器。
作為優(yōu)選,所述國產(chǎn)眾核處理器主存中存放的從核常用變量傳輸至從核局存中。
主核上定義的變量存放在主存中,無論是主核還是從核調(diào)用這些變量數(shù)據(jù)都需要直接訪問主存。而從核訪問主存的延遲比較高。若從核程序頻繁地訪問主存會導(dǎo)致很大的性能損耗。而國產(chǎn)眾核平臺上每個從核配有64k的局存,局存為每個從核所私有,訪存速度快。因此,將主存中存放的從核常用變量首先傳入從核局存中供從核私有,從而提高從核的訪存速度。
作為優(yōu)選,其中計(jì)算節(jié)點(diǎn)的互聯(lián)、數(shù)據(jù)的傳輸采用萬兆以太或infiniband高度互聯(lián)網(wǎng)絡(luò)。由于平臺緩存的大小為64k,遠(yuǎn)小于intel平臺上的緩存,當(dāng)計(jì)算的數(shù)組過大時,會帶來很大的訪存壓力,因此需要根據(jù)平臺上的緩存的大小將數(shù)組分段處理以減小cache過小造成的訪存脫靶問題。
在硬件集群平臺中,每個眾核節(jié)點(diǎn)配置內(nèi)存保持一致,采用同樣類型、大小的ddr內(nèi)存,避免內(nèi)存讀寫速度差別造成的處理能力差距懸殊,導(dǎo)致整個節(jié)點(diǎn)處理能力低下。同時,計(jì)算節(jié)點(diǎn)內(nèi)采用的國產(chǎn)眾核處理器芯片相同,保證每個處理器芯片內(nèi)的核心數(shù)量以及主頻相同。此外,進(jìn)程間的通信對節(jié)點(diǎn)間互聯(lián)網(wǎng)絡(luò)的要求較高,因此,計(jì)算節(jié)點(diǎn)的互聯(lián)采用萬兆以太或infiniband高速互聯(lián)網(wǎng)絡(luò),為避免由于帶寬不一致信息阻塞,網(wǎng)絡(luò)交換機(jī)采用全交換的方式。
本發(fā)明涉及了硬件架構(gòu)的搭建以及并行算法的設(shè)計(jì)與實(shí)現(xiàn),其中利用mpi實(shí)現(xiàn)了核組之間任務(wù)的分配及消息傳遞,利用國產(chǎn)眾核處理器的計(jì)算核心實(shí)現(xiàn)深度學(xué)習(xí)算法模型訓(xùn)練的并行加速。此方案,充分利用硬件資源,大大縮短了對稱正定線性方程組的求解時間,降低計(jì)算能耗,從而減少了機(jī)房構(gòu)建、管理及運(yùn)維成本。
上述技術(shù)方案只是本發(fā)明的一種實(shí)施方式,對于本領(lǐng)域內(nèi)的技術(shù)人員而言,在本發(fā)明公開了應(yīng)用方法和原理的基礎(chǔ)上,很容易做出各種類型的改進(jìn)或變形,而不僅限于本發(fā)明上述具體實(shí)施方式所描述的方法,因此前面描述的方式只是優(yōu)選的,而并不具有限制性的意義。