本發(fā)明涉及人工智能,尤其涉及一種基于神經(jīng)網(wǎng)絡(luò)的自適應(yīng)重計算和負載劃分的方法。
背景技術(shù):
1、近年來,受益于計算機軟硬件技術(shù)的提升,人工智能(artificial?intelligence,ai)技術(shù),特別是其中的深度學(xué)習(xí)(deep?learning,dl)技術(shù)得到了飛速發(fā)展,并且在諸多領(lǐng)域取得了驚人的成果。深度神經(jīng)網(wǎng)絡(luò)(deep?neural?network,dnn)作為深度學(xué)習(xí)的核心技術(shù),其發(fā)展對現(xiàn)代人工智能技術(shù)能力的提升起著至關(guān)重要的作用。
2、然而,目前前沿的深度神經(jīng)網(wǎng)絡(luò)算法通常采用大量訓(xùn)練數(shù)據(jù)與復(fù)雜分層模型結(jié)構(gòu)相結(jié)合的方式來進一步提升深度神經(jīng)網(wǎng)絡(luò)在各種應(yīng)用領(lǐng)域的綜合性能,以至于單設(shè)備難以滿足深度神經(jīng)網(wǎng)絡(luò)的計算和存儲需求。在訓(xùn)練大模型時,業(yè)界通常需要采用經(jīng)過精心設(shè)計的神經(jīng)網(wǎng)絡(luò)并行訓(xùn)練策略,但一個高效的并行策略需要依據(jù)專家經(jīng)驗消耗大量時間和精力來設(shè)計和調(diào)試。因此如何對特定網(wǎng)絡(luò)在指定的硬件拓撲上自適應(yīng)地采取合適的并行訓(xùn)練策略也成為了近年來學(xué)術(shù)界和工業(yè)界的研究熱點。
技術(shù)實現(xiàn)思路
1、本發(fā)明描述一種基于自適應(yīng)重計算和負載劃分的并行訓(xùn)練方法、裝置、設(shè)備及計算機可讀介質(zhì),可以解決上述技術(shù)問題。
2、根據(jù)第一方面,提供一種基于自適應(yīng)重計算和負載劃分的并行訓(xùn)練方法,該方法包括:
3、將深度學(xué)習(xí)框架中的動態(tài)計算圖轉(zhuǎn)換為靜態(tài)計算圖;具體地,靜態(tài)計算圖具有固定的數(shù)據(jù)結(jié)構(gòu);
4、對計算圖中的算子集合依照依賴關(guān)系進行拓撲排序構(gòu)建計算序列,并對計算序列進行劃分,生成計算子圖;其中,算子是構(gòu)建計算圖的基本塊,并用于執(zhí)行計算任務(wù);
5、根據(jù)算子的計算時間、算子的轉(zhuǎn)移代價以及約束條件,以構(gòu)建混合整數(shù)規(guī)劃模型;具體地,混合整數(shù)規(guī)劃模型中算子的計算時間反映并行訓(xùn)練和顯存優(yōu)化的計算性能,算子的轉(zhuǎn)移代價反映硬件的通信性能;
6、使用求解器對混合整數(shù)規(guī)劃模型中算子的調(diào)度優(yōu)化問題進行求解,以生成顯存優(yōu)化策略;
7、針對生成的顯存優(yōu)化策略,進行各個計算子圖的執(zhí)行時間的評估,并計算得出負載均衡率;
8、根據(jù)負載均衡率的計算結(jié)果確定出最終劃分的計算子圖;并利用最終劃分的計算子圖進行并行訓(xùn)練。
9、在一些實施例中,在對計算序列進行劃分之后,還對計算序列進行微調(diào),其微調(diào)方法具體包括:
10、對于計算序列中的每一個算子,檢查其后繼和前驅(qū)節(jié)點所在的劃分結(jié)果是否與本節(jié)點相同;
11、如果劃分結(jié)果不同,則嘗試移動算子及其拓撲排序之前或之后的算子到對應(yīng)分區(qū)所在的子序列,判斷是否能夠在保持計算負載均衡的前提下減少通信量;
12、如果劃分結(jié)果相同,則將該算子移動到對應(yīng)的劃分區(qū)域。
13、在一些實施例中,分析算子的計算時間的方法具體包括:
14、采取多次迭代取均值的方式獲取算子的真實計算時間;其中,在反向計算過程中,如果采用了重計算技術(shù),則在誤差反向傳播過程中需要將對應(yīng)算子的前向計算過程重新執(zhí)行一遍。
15、在一些實施例中,獲取算子的轉(zhuǎn)移代價的方法,具體包括:
16、根據(jù)計算算子對應(yīng)的數(shù)據(jù)維度來計算出算子占用的空間;
17、將算子的數(shù)據(jù)大小除以理論的pci-e帶寬,得到算子轉(zhuǎn)移代價。
18、在一些實施例中,約束條件包括:算子可計算約束、算子結(jié)果顯存存儲約束、算子結(jié)果內(nèi)存存儲約束、算子換入約束、算子換出約束、計算圖執(zhí)行約束、重計算執(zhí)行約束、顯存容量約束條件;具體地,如果當(dāng)前顯存容量限制下沒有可行解,則對顯存容量上限進行調(diào)整,繼續(xù)生成顯存優(yōu)化策略。
19、在一些實施例中,計算負載均衡率的計算方法為:
20、
21、其中,tmax為子圖計算的最長時間,tmin為子圖計算的最短時間。
22、根據(jù)第二方面,提供一種基于自適應(yīng)重計算和負載劃分的并行訓(xùn)練裝置,包括:
23、計算圖數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換模塊,用于將深度學(xué)習(xí)框架的動態(tài)計算圖轉(zhuǎn)換為靜態(tài)計算圖;
24、計算圖劃分模塊,用于對計算圖進行劃分;
25、混合整數(shù)規(guī)劃模型生成模塊,根據(jù)算子的計算時間、算子的轉(zhuǎn)移代價以及約束條件,以構(gòu)建混合整數(shù)規(guī)劃模型;
26、顯存優(yōu)化策略生成模塊,用于對優(yōu)化問題求解,生成顯存優(yōu)化策略;
27、負載均衡率計算模塊,用于針對已獲得的顯存優(yōu)化策略,進行各個計算子圖的執(zhí)行時間的評估,并計算負載均衡率。
28、根據(jù)第三方面,提供一種電子設(shè)備,包括存儲器、處理器,所述存儲器上存儲有可在所述處理器上運行的計算機程序,其特征在于,所述處理器執(zhí)行所述計算機程序時實現(xiàn)如第一方面中任一所述的方法。
29、根據(jù)第四方面,一種具有處理器可執(zhí)行的非易失的程序代碼的計算機可讀介質(zhì),其特征在于,所述程序代碼使所述處理器執(zhí)行如第一方面中任一所述的方法。
30、本發(fā)明提供一種基于自適應(yīng)重計算和負載劃分的并行訓(xùn)練方法、裝置、設(shè)備及計算機可讀介質(zhì)。調(diào)度策略的目標是最大限度地減少了計算或執(zhí)行時間,同時保證神經(jīng)網(wǎng)絡(luò)在計算過程中的顯存消耗不會超過設(shè)備顯存限制。本文根據(jù)算子的計算時間和算子的轉(zhuǎn)移代價,將上述問題轉(zhuǎn)化為一個整數(shù)規(guī)劃問題,并利用標準的線性規(guī)劃商業(yè)或開源求解器進行求解,生成顯存優(yōu)化策略,針對生成的顯存優(yōu)化策略,進行各個計算子圖的執(zhí)行時間的評估,并計算得出負載均衡率,根據(jù)負載均衡率的大小來判定是否繼續(xù)對計算子圖進行劃分。通過本發(fā)明提供的方法可以尋找到最終的算子執(zhí)行序列,使得計算圖的運行時峰值顯存消耗在給定的限制內(nèi),并且最小化神經(jīng)網(wǎng)絡(luò)模型的訓(xùn)練時間。
1.一種基于自適應(yīng)重計算和負載劃分的并行訓(xùn)練方法,其特征在于,所述方法包括:
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,在對計算序列進行劃分之后,還對計算序列進行微調(diào),其微調(diào)方法具體包括:
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,分析算子的計算時間的方法具體包括:
4.根據(jù)權(quán)利要求1所述的方法,其特征在于,獲取算子的轉(zhuǎn)移代價的方法,具體包括:
5.根據(jù)權(quán)利要求1所述的方法,其特征在于,其約束條件包括:算子可計算約束、算子結(jié)果顯存存儲約束、算子結(jié)果內(nèi)存存儲約束、算子換入約束、算子換出約束、計算圖執(zhí)行約束、重計算執(zhí)行約束、顯存容量約束條件;具體地,如果當(dāng)前顯存容量限制下沒有可行解,則對顯存容量上限進行調(diào)整,繼續(xù)生成顯存優(yōu)化策略。
6.根據(jù)權(quán)利要求1所述的方法,其特征在于,計算負載均衡率的計算方法為:
7.一種基于自適應(yīng)重計算和負載劃分的并行訓(xùn)練裝置,其特征在于,通過如權(quán)利要求1所述的方法進行自適應(yīng)重計算和負載劃分的并行訓(xùn)練,所述裝置包括:
8.一種電子設(shè)備,包括存儲器、處理器,所述存儲器上存儲有可在所述處理器上運行的計算機程序,其特征在于,所述處理器執(zhí)行所述計算機程序時實現(xiàn)上述權(quán)利要求1至6任一項所述的方法。
9.一種具有處理器可執(zhí)行的非易失的程序代碼的計算機可讀介質(zhì),其特征在于,所述程序代碼使所述處理器執(zhí)行所述權(quán)利要求1至6任一項所述方法。