本發(fā)明涉及分布式計(jì)算系統(tǒng)領(lǐng)域,特別涉及一種分布式計(jì)算系統(tǒng)的訓(xùn)練方法、裝置、程序產(chǎn)品及介質(zhì)。
背景技術(shù):
1、隨著對(duì)訓(xùn)練數(shù)據(jù)規(guī)模和模型參數(shù)的不斷探索,深度學(xué)習(xí)模型在計(jì)算機(jī)視覺、自然語言處理和自動(dòng)駕駛等領(lǐng)域得到了廣泛應(yīng)用。然而,單機(jī)訓(xùn)練的內(nèi)存和計(jì)算能力常常無法滿足需求,因此,基于多機(jī)多卡的分布式訓(xùn)練模式成為主流策略。這種模式通過多個(gè)計(jì)算工作者協(xié)同合作,加速模型訓(xùn)練。
2、盡管許多優(yōu)秀的分布式深度學(xué)習(xí)框架已被提出,它們通常假設(shè)計(jì)算節(jié)點(diǎn)是同構(gòu)的,即性能和硬件特性相同。然而,實(shí)際訓(xùn)練場景中,各計(jì)算節(jié)點(diǎn)表現(xiàn)出顯著的異構(gòu)性,導(dǎo)致計(jì)算能力、內(nèi)存能力和硬件特性差異明顯。這種異構(gòu)性不僅影響計(jì)算能力,還涉及計(jì)算節(jié)點(diǎn)間的通信帶寬差異,尤其是在不同網(wǎng)絡(luò)設(shè)備和層級(jí)中,通信效率往往低下。
3、傳統(tǒng)的整體同步訓(xùn)練方法要求所有異構(gòu)的計(jì)算節(jié)點(diǎn)保持相同的迭代步調(diào),導(dǎo)致速度較快的計(jì)算節(jié)點(diǎn)需等待較慢的計(jì)算節(jié)點(diǎn),這種“拖累者效應(yīng)”使訓(xùn)練過程受到最慢節(jié)點(diǎn)的制約,顯著降低訓(xùn)練速度??梢?,異構(gòu)的計(jì)算節(jié)點(diǎn)的性能差異通常會(huì)造成資源閑置,且異構(gòu)的計(jì)算節(jié)點(diǎn)之間的頻繁通信也會(huì)降低訓(xùn)練效率。在處理這種訓(xùn)練過程時(shí),計(jì)算節(jié)點(diǎn)(也即實(shí)體硬件設(shè)備,如服務(wù)器或服務(wù)器中的cpu(central?processing?unit,中央處理器)/gpu(graphics?processing?unit,圖形處理器))面臨資源利用不均衡和效率低下的問題。此外,較快的計(jì)算節(jié)點(diǎn)在等待時(shí)無法有效降低功耗,可能導(dǎo)致額外的功耗和熱量產(chǎn)生,從而增加硬件負(fù)擔(dān),影響長期穩(wěn)定性和可靠性。同時(shí),頻繁的數(shù)據(jù)傳輸和冗余交換增加了網(wǎng)絡(luò)帶寬的占用和延遲,進(jìn)一步增大了計(jì)算節(jié)點(diǎn)的通信開銷。
4、因此,需要提出一種面向異構(gòu)分布式計(jì)算系統(tǒng)的優(yōu)化方案,該方案應(yīng)充分考慮各節(jié)點(diǎn)的性能差異,同時(shí)考慮異構(gòu)的計(jì)算節(jié)點(diǎn)的計(jì)算與通信能力,以提升計(jì)算節(jié)點(diǎn)的資源利用率和運(yùn)行效率,減小計(jì)算節(jié)點(diǎn)的通信開銷。
技術(shù)實(shí)現(xiàn)思路
1、本發(fā)明的目的是提供一種分布式計(jì)算系統(tǒng)的訓(xùn)練方法、裝置、程序產(chǎn)品及介質(zhì),不僅優(yōu)化了訓(xùn)練過程的整體效率,還避免了計(jì)算節(jié)點(diǎn)之間的相互等待,計(jì)算節(jié)點(diǎn)在運(yùn)行此訓(xùn)練過程時(shí),降低了功耗和熱量產(chǎn)生,也降低了通信開銷,從而提高了計(jì)算節(jié)點(diǎn)的長期穩(wěn)定性和可靠性。
2、一方面,本技術(shù)提供了一種分布式計(jì)算系統(tǒng)的訓(xùn)練方法,應(yīng)用于分布式計(jì)算系統(tǒng),所述分布式計(jì)算系統(tǒng)包括多個(gè)異構(gòu)的計(jì)算節(jié)點(diǎn),所述分布式計(jì)算系統(tǒng)的訓(xùn)練方法包括:獲取每個(gè)所述計(jì)算節(jié)點(diǎn)的計(jì)算能力;根據(jù)每個(gè)所述計(jì)算節(jié)點(diǎn)的計(jì)算能力為每個(gè)所述計(jì)算節(jié)點(diǎn)分配目標(biāo)模型的訓(xùn)練任務(wù),所述訓(xùn)練任務(wù)的任務(wù)量與所述計(jì)算能力呈正相關(guān);確定每個(gè)所述計(jì)算節(jié)點(diǎn)執(zhí)行和自身對(duì)應(yīng)的訓(xùn)練任務(wù)的單次迭代時(shí)長;根據(jù)每個(gè)所述計(jì)算節(jié)點(diǎn)對(duì)應(yīng)的單次迭代時(shí)長確定每個(gè)所述計(jì)算節(jié)點(diǎn)在通信間隔時(shí)間內(nèi)的迭代次數(shù);每隔所述通信間隔時(shí)間,獲取每個(gè)所述計(jì)算節(jié)點(diǎn)完成各自迭代次數(shù)后的局部模型參數(shù),并根據(jù)全部所述局部模型參數(shù)確定全局模型參數(shù),直至滿足迭代結(jié)束條件。
3、其中,獲取每個(gè)所述計(jì)算節(jié)點(diǎn)的計(jì)算能力,包括:獲取每個(gè)所述計(jì)算節(jié)點(diǎn)的性能指標(biāo)參數(shù);根據(jù)所述性能指標(biāo)參數(shù)確定每個(gè)所述計(jì)算節(jié)點(diǎn)的第一能力參數(shù);控制每個(gè)所述計(jì)算節(jié)點(diǎn)執(zhí)行預(yù)設(shè)測試任務(wù),并根據(jù)每個(gè)所述計(jì)算節(jié)點(diǎn)執(zhí)行所述預(yù)設(shè)測試任務(wù)的測試結(jié)果確定第二能力參數(shù);根據(jù)每個(gè)所述計(jì)算節(jié)點(diǎn)對(duì)應(yīng)的所述第一能力參數(shù)和所述第二能力參數(shù),確定每個(gè)所述計(jì)算節(jié)點(diǎn)的計(jì)算能力。
4、其中,所述性能指標(biāo)參數(shù)包括浮點(diǎn)運(yùn)算性能、內(nèi)存帶寬、內(nèi)存延遲、輸入/輸出吞吐率、錯(cuò)誤率及單位能效中的一種或多種的組合;根據(jù)所述性能指標(biāo)參數(shù)確定每個(gè)所述計(jì)算節(jié)點(diǎn)的第一能力參數(shù),包括:獲取所述浮點(diǎn)運(yùn)算性能、所述內(nèi)存帶寬、所述內(nèi)存延遲、所述輸入/輸出吞吐率、所述錯(cuò)誤率分別對(duì)應(yīng)的權(quán)重系數(shù);根據(jù)所述浮點(diǎn)運(yùn)算性能、所述內(nèi)存帶寬、所述內(nèi)存延遲、所述輸入/輸出吞吐率、所述錯(cuò)誤率分別對(duì)應(yīng)的權(quán)重系數(shù)、所述單位能效,確定所述第一能力參數(shù);所述第一能力參數(shù)與所述浮點(diǎn)運(yùn)算性能、所述內(nèi)存帶寬、所述輸入/輸出吞吐率、所述單位能效呈正相關(guān),所述第一能力參數(shù)與所述內(nèi)存延遲和所述錯(cuò)誤率呈負(fù)相關(guān)。
5、其中,根據(jù)所述浮點(diǎn)運(yùn)算性能、所述內(nèi)存帶寬、所述內(nèi)存延遲、所述輸入/輸出吞吐率、所述錯(cuò)誤率分別對(duì)應(yīng)的權(quán)重系數(shù)、所述單位能效,確定所述第一能力參數(shù),包括:根據(jù)計(jì)算所述第一能力參數(shù);com1為所述第一能力參數(shù),c為所述浮點(diǎn)運(yùn)算性能,為所述浮點(diǎn)運(yùn)算性能的權(quán)重,m為所述內(nèi)存帶寬,為所述內(nèi)存帶寬的權(quán)重,io為所述輸入/輸出吞吐率,為所述輸入/輸出吞吐率的權(quán)重,d為所述內(nèi)存延遲,為所述內(nèi)存延遲的權(quán)重,et為所述錯(cuò)誤率,為所述錯(cuò)誤率的權(quán)重,w為所述單位能效。
6、其中,控制每個(gè)所述計(jì)算節(jié)點(diǎn)執(zhí)行預(yù)設(shè)測試任務(wù),并根據(jù)每個(gè)所述計(jì)算節(jié)點(diǎn)執(zhí)行所述預(yù)設(shè)測試任務(wù)的測試結(jié)果確定第二能力參數(shù),包括:控制每個(gè)所述計(jì)算節(jié)點(diǎn)執(zhí)行多次預(yù)設(shè)測試任務(wù);統(tǒng)計(jì)所述計(jì)算節(jié)點(diǎn)執(zhí)行多次所述預(yù)設(shè)測試任務(wù)的運(yùn)行時(shí)長和分類精度;根據(jù)所述運(yùn)行時(shí)長和所述分類精度確定每個(gè)所述計(jì)算節(jié)點(diǎn)的單位精度,所述單位精度為所述第二能力參數(shù)。
7、其中,根據(jù)每個(gè)所述計(jì)算節(jié)點(diǎn)的計(jì)算能力為每個(gè)所述計(jì)算節(jié)點(diǎn)分配目標(biāo)模型的訓(xùn)練任務(wù),包括:根據(jù)每個(gè)所述計(jì)算節(jié)點(diǎn)的計(jì)算能力確定每個(gè)所述計(jì)算節(jié)點(diǎn)的能力占比;根據(jù)每個(gè)所述計(jì)算節(jié)點(diǎn)的能力占比及所述目標(biāo)模型的初始化樣本容量,確定分配給每個(gè)所述計(jì)算節(jié)點(diǎn)的樣本容量。
8、其中,還包括:獲取當(dāng)前的網(wǎng)絡(luò)狀態(tài)參數(shù),根據(jù)當(dāng)前的所述網(wǎng)絡(luò)狀態(tài)參數(shù)實(shí)時(shí)調(diào)整所述通信間隔時(shí)間。
9、其中,獲取當(dāng)前的網(wǎng)絡(luò)狀態(tài)參數(shù),包括:監(jiān)測當(dāng)前網(wǎng)絡(luò)的網(wǎng)絡(luò)延遲和/或丟包率,根據(jù)所述網(wǎng)絡(luò)延遲和/或所述丟包率確定當(dāng)前的網(wǎng)絡(luò)擁塞程度,所述網(wǎng)絡(luò)狀態(tài)參數(shù)包括所述網(wǎng)絡(luò)擁塞程度。
10、其中,還包括:獲取每個(gè)所述訓(xùn)練任務(wù)的優(yōu)先級(jí);根據(jù)當(dāng)前的所述網(wǎng)絡(luò)狀態(tài)參數(shù)實(shí)時(shí)調(diào)整所述通信間隔時(shí)間,包括:根據(jù)當(dāng)前的所述網(wǎng)絡(luò)狀態(tài)參數(shù)、每個(gè)所述訓(xùn)練任務(wù)的所述優(yōu)先級(jí)實(shí)時(shí)調(diào)整所述通信間隔時(shí)間。
11、其中,所述網(wǎng)絡(luò)狀態(tài)參數(shù)為網(wǎng)絡(luò)擁塞程度,根據(jù)當(dāng)前的所述網(wǎng)絡(luò)狀態(tài)參數(shù)、每個(gè)所述訓(xùn)練任務(wù)的所述優(yōu)先級(jí)實(shí)時(shí)調(diào)整所述通信間隔時(shí)間,包括:根據(jù)cit=cit0/(1+ncd+dtp)計(jì)算目標(biāo)通信間隔時(shí)間,并將所述通信間隔時(shí)間更新為所述目標(biāo)通信間隔時(shí)間;cit為所述目標(biāo)通信間隔時(shí)間,cit0為更新前的初始通信間隔時(shí)間,ncd為所述網(wǎng)絡(luò)擁塞程度,dtp為所述優(yōu)先級(jí)。
12、其中,獲取每個(gè)所述訓(xùn)練任務(wù)的優(yōu)先級(jí),包括:獲取每個(gè)所述訓(xùn)練任務(wù)的第一權(quán)重、第一評(píng)分、第二權(quán)重和第二評(píng)分,所述第一權(quán)重和所述第一評(píng)分用于表征所述訓(xùn)練任務(wù)的重要程度,所述第二權(quán)重和所述第二評(píng)分用于表征所述訓(xùn)練任務(wù)的緊迫程度;根據(jù)每個(gè)所述訓(xùn)練任務(wù)對(duì)應(yīng)的所述第一權(quán)重、所述第一評(píng)分、所述第二權(quán)重和所述第二評(píng)分,確定每個(gè)所述訓(xùn)練任務(wù)的優(yōu)先級(jí)。
13、其中,根據(jù)每個(gè)所述訓(xùn)練任務(wù)對(duì)應(yīng)的所述第一權(quán)重、所述第一評(píng)分、所述第二權(quán)重和所述第二評(píng)分,確定每個(gè)所述訓(xùn)練任務(wù)的優(yōu)先級(jí),包括:根據(jù)dtp=wi·is+wu·us計(jì)算每個(gè)所述訓(xùn)練任務(wù)的優(yōu)先級(jí);dtp為所述優(yōu)先級(jí),wi為所述第一權(quán)重,is為所述第一評(píng)分,wu為所述第二權(quán)重,us為所述第二評(píng)分。
14、另一方面,本技術(shù)提供了一種分布式計(jì)算系統(tǒng)的訓(xùn)練裝置,包括:存儲(chǔ)器,用于存儲(chǔ)計(jì)算機(jī)程序;處理器,用于在執(zhí)行計(jì)算機(jī)程序時(shí),實(shí)現(xiàn)上述所述的分布式計(jì)算系統(tǒng)的訓(xùn)練方法的步驟。
15、另一方面,本技術(shù)提供了一種計(jì)算機(jī)程序產(chǎn)品,包括計(jì)算機(jī)程序/指令,該計(jì)算機(jī)程序/指令被處理器執(zhí)行時(shí)實(shí)現(xiàn)上述所述分布式計(jì)算系統(tǒng)的訓(xùn)練方法的步驟。
16、另一方面,本技術(shù)提供了一種非易失性存儲(chǔ)介質(zhì),所述非易失性存儲(chǔ)介質(zhì)上存儲(chǔ)有計(jì)算機(jī)程序,所述計(jì)算機(jī)程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)上述所述的分布式計(jì)算系統(tǒng)的訓(xùn)練方法的步驟。
17、本發(fā)明提供了一種分布式計(jì)算系統(tǒng)的訓(xùn)練方法、裝置、程序產(chǎn)品及介質(zhì),用于解決異構(gòu)計(jì)算節(jié)點(diǎn)性能差異和通信效率低下的問題。該方案通過充分考慮每個(gè)計(jì)算節(jié)點(diǎn)的計(jì)算能力,實(shí)現(xiàn)了任務(wù)的動(dòng)態(tài)分配和迭代優(yōu)化;具體而言,通過獲取每個(gè)計(jì)算節(jié)點(diǎn)的計(jì)算能力并為其分配與之相匹配的訓(xùn)練任務(wù),避免了資源閑置和效率低下的問題;確定單次迭代時(shí)長并根據(jù)此調(diào)整通信間隔內(nèi)的迭代次數(shù),使得各計(jì)算節(jié)點(diǎn)可以在合適的時(shí)機(jī)進(jìn)行數(shù)據(jù)交換,減少了頻繁通信帶來的網(wǎng)絡(luò)帶寬占用和延遲,不僅優(yōu)化了訓(xùn)練過程的整體效率,還避免了計(jì)算節(jié)點(diǎn)之間的相互等待,硬件設(shè)備在運(yùn)行此訓(xùn)練過程時(shí),降低了功耗和熱量產(chǎn)生,也降低了通信開銷,從而提高了硬件設(shè)備的長期穩(wěn)定性和可靠性。