本技術(shù)涉及人工智能(artificial?intelligence,ai),尤其涉及一種故障處理方法、裝置、調(diào)度器、芯片、計算機(jī)可讀存儲介質(zhì)以及計算機(jī)程序產(chǎn)品。
背景技術(shù):
1、隨著ai技術(shù)的不斷發(fā)展,越來越多的行業(yè)和領(lǐng)域采用ai模型(為了便于描述,有些情況下也簡稱為模型)實現(xiàn)業(yè)務(wù)的智能化、自動化。例如,電子商務(wù)行業(yè)中,越來越多商家采用基于ai模型構(gòu)建的ai客服代替人工客服,提供售前、售后咨詢服務(wù)。又例如,社交網(wǎng)絡(luò)中,平臺采用ai模型代替人工審核用戶發(fā)布的內(nèi)容,以節(jié)省人力成本。
2、ai模型是指基于ai技術(shù)構(gòu)建的、用于對未知數(shù)據(jù)進(jìn)行預(yù)測的數(shù)學(xué)模型。例如,ai模型可以是基于神經(jīng)網(wǎng)絡(luò)構(gòu)建的目標(biāo)檢測模型、圖像分類模型。ai模型通常需要通過大量數(shù)據(jù)進(jìn)行訓(xùn)練。為了提高ai模型的訓(xùn)練效率,分布式訓(xùn)練方法應(yīng)運而生。
3、分布式訓(xùn)練方法是將訓(xùn)練任務(wù)分散到多個訓(xùn)練節(jié)點執(zhí)行,多個訓(xùn)練節(jié)點并行訓(xùn)練模型。其中,執(zhí)行訓(xùn)練任務(wù)是利用數(shù)據(jù)集訓(xùn)練模型,獲得模型的參數(shù)(例如為權(quán)重)的過程。多個訓(xùn)練節(jié)點可以采用同步更新機(jī)制更新模型的參數(shù)。同步更新機(jī)制是指將各個訓(xùn)練節(jié)點獲得的梯度進(jìn)行累加計算均值,基于該均值更新模型的參數(shù)。當(dāng)個別訓(xùn)練節(jié)點、訓(xùn)練算法或者網(wǎng)絡(luò)出現(xiàn)故障時,整個分布式訓(xùn)練任務(wù)就會中斷。隨著訓(xùn)練節(jié)點的增加,中斷可能性越來越高,因此,需要提供一種故障處理機(jī)制,以便恢復(fù)訓(xùn)練任務(wù)。
4、目前,業(yè)界主流的故障處理方案需要較長時間恢復(fù)訓(xùn)練任務(wù),效率較低,難以滿足業(yè)務(wù)需求。
技術(shù)實現(xiàn)思路
1、本技術(shù)提供了一種故障處理方法。該方法支持在發(fā)生故障時,設(shè)備側(cè)的第二芯片停止執(zhí)行第二子任務(wù),主機(jī)側(cè)的第一芯片可以不停止執(zhí)行第二子任務(wù)。如此可以復(fù)用主機(jī)側(cè)第一子任務(wù)的執(zhí)行結(jié)果恢復(fù)訓(xùn)練任務(wù),縮短了恢復(fù)訓(xùn)練任務(wù)的時間,提高了恢復(fù)訓(xùn)練任務(wù)的效率。本技術(shù)還提供了上述處理方法對應(yīng)的裝置、調(diào)度器、芯片、訓(xùn)練系統(tǒng)、計算機(jī)可讀存儲介質(zhì)以及計算機(jī)程序產(chǎn)品。
2、第一方面,本技術(shù)提供一種故障處理方法。該方法應(yīng)用于訓(xùn)練系統(tǒng)。訓(xùn)練系統(tǒng)包括主機(jī)側(cè)的第一芯片和設(shè)備側(cè)的多個第二芯片,第一芯片和多個第二芯片用于協(xié)同執(zhí)行訓(xùn)練任務(wù)。訓(xùn)練任務(wù)包括第一子任務(wù)和多個第二子任務(wù),第二子任務(wù)的執(zhí)行依賴于第一子任務(wù)的執(zhí)行結(jié)果。
3、具體地,第一芯片執(zhí)行第一子任務(wù),當(dāng)發(fā)生故障,第一芯片在所述設(shè)備側(cè)狀態(tài)正常的第二芯片停止執(zhí)行第二子任務(wù)之前保存故障文件。然后第一芯片向設(shè)備側(cè)重調(diào)度的芯片同步所述故障文件,以便于重調(diào)度的芯片繼續(xù)執(zhí)行第二子任務(wù)。
4、該方法中,當(dāng)發(fā)生故障時,設(shè)備側(cè)的第二芯片可以停止執(zhí)行第二子任務(wù),主機(jī)側(cè)的第一芯片可以不停止執(zhí)行第一子任務(wù)。如此可以復(fù)用主機(jī)側(cè)第一子任務(wù)的執(zhí)行結(jié)果(例如是編譯結(jié)果,包括但不限于計算圖的編譯結(jié)果),恢復(fù)訓(xùn)練任務(wù),縮短了恢復(fù)訓(xùn)練任務(wù)的時間,提高了恢復(fù)訓(xùn)練任務(wù)的效率。
5、在一些可能的實現(xiàn)方式中,所述故障包括可恢復(fù)的芯片故障或不可恢復(fù)的節(jié)點故障。該方法支持根據(jù)不同故障類型實現(xiàn)細(xì)粒度的恢復(fù)方案,基于該細(xì)粒度的恢復(fù)方案可以盡可能地提升恢復(fù)訓(xùn)練任務(wù)的效率。
6、在一些可能的實現(xiàn)方式中,故障為可恢復(fù)的芯片故障,設(shè)備側(cè)重調(diào)度的芯片包括復(fù)位后狀態(tài)恢復(fù)正常的第二芯片。如此可以實現(xiàn)在原節(jié)點恢復(fù)訓(xùn)練任務(wù),無需額外申請新的節(jié)點資源,提高資源利用率。
7、在一些可能的實現(xiàn)方式中,訓(xùn)練系統(tǒng)包括訓(xùn)練節(jié)點,訓(xùn)練節(jié)點包括第一芯片和多個第二芯片,即訓(xùn)練系統(tǒng)可以是單機(jī)多卡架構(gòu)。故障為多個第二芯片中的目標(biāo)芯片故障?;诖?,第一芯片向設(shè)備側(cè)重調(diào)度的芯片同步所述故障文件時,可以向復(fù)位后狀態(tài)恢復(fù)正常的目標(biāo)芯片同步故障文件。如此實現(xiàn)了單個訓(xùn)練節(jié)點發(fā)生可恢復(fù)的芯片故障時,在原節(jié)點恢復(fù)訓(xùn)練任務(wù)。
8、在一些可能的實現(xiàn)方式中,故障為不可恢復(fù)的節(jié)點故障,設(shè)備側(cè)重調(diào)度的芯片包括新加入的第三芯片。如此可以實現(xiàn)在新節(jié)點恢復(fù)訓(xùn)練任務(wù),以盡可能縮短訓(xùn)練任務(wù)的中斷時間,提高訓(xùn)練任務(wù)的恢復(fù)效率。
9、在一些可能的實現(xiàn)方式中,訓(xùn)練系統(tǒng)包括第一訓(xùn)練節(jié)點和第二訓(xùn)練節(jié)點,每個訓(xùn)練節(jié)點包括至少一個第一芯片和至少一個第二芯片。即訓(xùn)練系統(tǒng)可以是多機(jī)多卡架構(gòu)。其中,第一訓(xùn)練節(jié)點發(fā)生不可恢復(fù)的節(jié)點故障,第三芯片歸屬于新加入的第三訓(xùn)練節(jié)點。相應(yīng)地,第一訓(xùn)練節(jié)點的第一芯片可以保存第一子任務(wù)的執(zhí)行結(jié)果,第三訓(xùn)練節(jié)點的第一芯片可以加載第一子任務(wù)的執(zhí)行結(jié)果。
10、該方法通過對第一子任務(wù)的執(zhí)行結(jié)果進(jìn)行緩存,然后在新節(jié)點加載緩存的執(zhí)行結(jié)果,從而實現(xiàn)執(zhí)行結(jié)果的復(fù)用,由此可以提高了恢復(fù)訓(xùn)練任務(wù)的效率。
11、在一些可能的實現(xiàn)方式中,第一子任務(wù)可以是編譯子任務(wù)(例如是編譯計算圖)。第一芯片不停止執(zhí)行第一子任務(wù),可以實現(xiàn)免編譯,或者第一訓(xùn)練節(jié)點的第一芯片緩存編譯結(jié)果,新加入的第三訓(xùn)練節(jié)點的第一芯片加載第一訓(xùn)練節(jié)點的第一芯片緩存的編譯結(jié)果,可以實現(xiàn)復(fù)用編譯結(jié)果。如此,縮短了恢復(fù)訓(xùn)練任務(wù)的時間,提高了恢復(fù)訓(xùn)練任務(wù)的效率。
12、在一些可能的實現(xiàn)方式中,第一芯片可以從內(nèi)存獲取所述故障文件,通過集群通信接口向所述設(shè)備側(cè)重調(diào)度的芯片同步所述故障文件。如此無需重新反序列化,縮短同步時間,提高故障恢復(fù)效率。
13、在一些可能的實現(xiàn)方式中,子任務(wù)以進(jìn)程或線程方式執(zhí)行。本技術(shù)的故障處理方法可以實現(xiàn)設(shè)備側(cè)的進(jìn)程或線程退出,主機(jī)側(cè)的進(jìn)程或線程可以不退出,主機(jī)側(cè)無需重新申請資源,以重復(fù)執(zhí)行相同的子任務(wù),進(jìn)一步縮短了恢復(fù)訓(xùn)練任務(wù)的時間,提高了恢復(fù)訓(xùn)練任務(wù)的效率。
14、第二方面,本技術(shù)提供一種故障處理方法。該方法應(yīng)用于調(diào)度器,所述調(diào)度器用于訓(xùn)練系統(tǒng)發(fā)生故障時進(jìn)行故障處理,所述訓(xùn)練系統(tǒng)包括主機(jī)側(cè)的第一芯片和設(shè)備側(cè)的多個第二芯片,所述第一芯片和所述多個第二芯片用于協(xié)同執(zhí)行訓(xùn)練任務(wù),所述訓(xùn)練任務(wù)包括第一子任務(wù)和多個第二子任務(wù),所述第二子任務(wù)的執(zhí)行依賴于所述第一子任務(wù)的執(zhí)行結(jié)果,所述方法包括:
15、對所述訓(xùn)練系統(tǒng)進(jìn)行故障檢測;
16、當(dāng)檢測到發(fā)生故障,通知所述第一芯片在所述設(shè)備側(cè)狀態(tài)正常的第二芯片停止執(zhí)行所述第二子任務(wù)之前保存故障文件,所述故障文件用于被所述第一芯片同步至所述設(shè)備側(cè)重調(diào)度的芯片。
17、該方法在調(diào)度器檢測到發(fā)生故障時,通知第一芯片在設(shè)備側(cè)狀態(tài)正常的第二芯片停止執(zhí)行第二子任務(wù)之前保存故障文件,設(shè)備側(cè)的第二芯片可以停止執(zhí)行第二子任務(wù),主機(jī)側(cè)的第一芯片可以不停止執(zhí)行第二子任務(wù)。如此可以復(fù)用主機(jī)側(cè)第一子任務(wù)的執(zhí)行結(jié)果來恢復(fù)訓(xùn)練任務(wù),縮短了恢復(fù)訓(xùn)練任務(wù)的時間,提高了恢復(fù)訓(xùn)練任務(wù)的效率。
18、在一些可能的實現(xiàn)方式中,故障為可恢復(fù)的芯片故障,調(diào)度器還可以對所述設(shè)備側(cè)的故障芯片進(jìn)行復(fù)位。設(shè)備側(cè)重調(diào)度的芯片包括復(fù)位后狀態(tài)恢復(fù)正常的第二芯片。該方法支持根據(jù)不同故障類型實現(xiàn)細(xì)粒度的恢復(fù)方案。對于可恢復(fù)的芯片故障,可以在線進(jìn)行熱復(fù)位來恢復(fù),并通過正常芯片同步故障文件進(jìn)行訓(xùn)練狀態(tài)的恢復(fù)。
19、在一些可能的實現(xiàn)方式中,訓(xùn)練系統(tǒng)包括訓(xùn)練節(jié)點,訓(xùn)練節(jié)點包括第一芯片和多個第二芯片。故障為多個第二芯片中的目標(biāo)芯片故障,故障文件用于被第一芯片同步至復(fù)位后狀態(tài)恢復(fù)正常的所述目標(biāo)芯片。如此實現(xiàn)了單個訓(xùn)練節(jié)點發(fā)生可恢復(fù)的芯片故障時,在原節(jié)點恢復(fù)訓(xùn)練任務(wù)。
20、在一些可能的實現(xiàn)方式中,故障為不可恢復(fù)的節(jié)點故障,設(shè)備側(cè)重調(diào)度的芯片包括新加入的第三芯片。相應(yīng)地,調(diào)度器還可以向狀態(tài)正常的第二芯片同步新加入的第三芯片的信息。如此可以為第二芯片、第二芯片之間建鏈提供幫助,進(jìn)而為恢復(fù)訓(xùn)練任務(wù)提供幫助。
21、在一些可能的實現(xiàn)方式中,訓(xùn)練系統(tǒng)包括第一訓(xùn)練節(jié)點和第二訓(xùn)練節(jié)點,每個訓(xùn)練節(jié)點包括至少一個第一芯片和至少一個第二芯片。所述第一訓(xùn)練節(jié)點發(fā)生所述不可恢復(fù)的節(jié)點故障。相應(yīng)地,調(diào)度器可以向第二訓(xùn)練節(jié)點中的至少一個第二芯片同步所述第三芯片的信息,所述第三芯片的信息包括所述第三芯片所歸屬的第三訓(xùn)練節(jié)點的地址信息、資源配置信息中的至少一項。
22、該方法通過向第二訓(xùn)練節(jié)點中的至少一個第二芯片同步第三芯片的地址、資源配置等信息,可以使得第三芯片盡快恢復(fù)執(zhí)行第二子任務(wù),提高訓(xùn)練任務(wù)恢復(fù)效率。
23、在一些可能的實現(xiàn)方式中,所述子任務(wù)以進(jìn)程或線程方式執(zhí)行。該方法可以實現(xiàn)設(shè)備側(cè)的進(jìn)程或線程退出,主機(jī)側(cè)的進(jìn)程或線程可以不退出,主機(jī)側(cè)無需重新申請資源,以重復(fù)執(zhí)行相同的子任務(wù),進(jìn)一步縮短了恢復(fù)訓(xùn)練任務(wù)的時間,提高了恢復(fù)訓(xùn)練任務(wù)的效率。
24、第三方面,本技術(shù)提供一種故障處理裝置。所述裝置部署于訓(xùn)練系統(tǒng)的主機(jī)側(cè)的第一芯片,所述第一芯片和所述訓(xùn)練系統(tǒng)的設(shè)備側(cè)的多個第二芯片用于協(xié)同執(zhí)行訓(xùn)練任務(wù),所述訓(xùn)練任務(wù)包括第一子任務(wù)和多個第二子任務(wù),所述第二子任務(wù)的執(zhí)行依賴于所述第一子任務(wù)的執(zhí)行結(jié)果,所述裝置包括:
25、任務(wù)執(zhí)行模塊,用于執(zhí)行所述第一子任務(wù);
26、文件保存模塊,用于當(dāng)發(fā)生故障,所述第一芯片在所述設(shè)備側(cè)狀態(tài)正常的第二芯片停止執(zhí)行所述第二子任務(wù)之前保存故障文件;
27、文件同步模塊,用于向所述設(shè)備側(cè)重調(diào)度的芯片同步所述故障文件,以便于所述重調(diào)度的芯片繼續(xù)執(zhí)行所述第二子任務(wù)。
28、在一些可能的實現(xiàn)方式中,所述故障包括可恢復(fù)的芯片故障或不可恢復(fù)的節(jié)點故障。
29、在一些可能的實現(xiàn)方式中,所述故障為可恢復(fù)的芯片故障,所述設(shè)備側(cè)重調(diào)度的芯片包括復(fù)位后狀態(tài)恢復(fù)正常的第二芯片。
30、在一些可能的實現(xiàn)方式中,所述訓(xùn)練系統(tǒng)包括訓(xùn)練節(jié)點,所述訓(xùn)練節(jié)點包括第一芯片和多個第二芯片,所述故障為所述多個第二芯片中的目標(biāo)芯片故障;
31、所述文件同步模塊具體用于:
32、向復(fù)位后狀態(tài)恢復(fù)正常的所述目標(biāo)芯片同步所述故障文件。
33、在一些可能的實現(xiàn)方式中,所述故障為不可恢復(fù)的節(jié)點故障,所述設(shè)備側(cè)重調(diào)度的芯片包括新加入的第三芯片。
34、在一些可能的實現(xiàn)方式中,所述訓(xùn)練系統(tǒng)包括第一訓(xùn)練節(jié)點和第二訓(xùn)練節(jié)點,每個訓(xùn)練節(jié)點包括至少一個第一芯片和至少一個第二芯片,所述第一訓(xùn)練節(jié)點發(fā)生所述不可恢復(fù)的節(jié)點故障,所述第三芯片歸屬于新加入的第三訓(xùn)練節(jié)點,所述裝置還包括部署于所述第一訓(xùn)練節(jié)點中第一芯片的執(zhí)行結(jié)果保存模塊和部署于所述第三訓(xùn)練節(jié)點中第一芯片的執(zhí)行結(jié)果加載模塊;
35、所述執(zhí)行結(jié)果保存模塊,用于保存所述第一子任務(wù)的執(zhí)行結(jié)果;
36、所述執(zhí)行結(jié)果加載模塊,用于加載所述第一子任務(wù)的執(zhí)行結(jié)果。
37、在一些可能的實現(xiàn)方式中,所述文件同步模塊具體用于:
38、從內(nèi)存獲取所述故障文件,通過集群通信接口向所述設(shè)備側(cè)重調(diào)度的芯片同步所述故障文件。
39、在一些可能的實現(xiàn)方式中,所述子任務(wù)以進(jìn)程或線程方式執(zhí)行。
40、第四方面,本技術(shù)提供一種調(diào)度器。所述調(diào)度器用于訓(xùn)練系統(tǒng)發(fā)生故障時進(jìn)行故障處理,所述訓(xùn)練系統(tǒng)包括主機(jī)側(cè)的第一芯片和設(shè)備側(cè)的多個第二芯片,所述第一芯片和所述多個第二芯片用于協(xié)同執(zhí)行訓(xùn)練任務(wù),所述訓(xùn)練任務(wù)包括第一子任務(wù)和多個第二子任務(wù),所述第二子任務(wù)的執(zhí)行依賴于所述第一子任務(wù)的執(zhí)行結(jié)果,所述調(diào)度器包括:
41、故障檢測模塊,用于對所述訓(xùn)練系統(tǒng)進(jìn)行故障檢測;
42、通知模塊,用于當(dāng)檢測到發(fā)生故障,通知所述第一芯片在所述設(shè)備側(cè)狀態(tài)正常的第二芯片停止執(zhí)行所述第二子任務(wù)之前保存故障文件,所述故障文件用于被所述第一芯片同步至所述設(shè)備側(cè)重調(diào)度的芯片。
43、在一些可能的實現(xiàn)方式中,所述故障為可恢復(fù)的芯片故障,所述調(diào)度器還包括:
44、復(fù)位模塊,用于對所述設(shè)備側(cè)的故障芯片進(jìn)行復(fù)位;
45、所述設(shè)備側(cè)重調(diào)度的芯片包括復(fù)位后狀態(tài)恢復(fù)正常的第二芯片。
46、在一些可能的實現(xiàn)方式中,所述訓(xùn)練系統(tǒng)包括訓(xùn)練節(jié)點,所述訓(xùn)練節(jié)點包括第一芯片和多個第二芯片,所述故障為所述多個第二芯片中的目標(biāo)芯片故障,所述故障文件用于被所述第一芯片同步至復(fù)位后狀態(tài)恢復(fù)正常的所述目標(biāo)芯片。
47、在一些可能的實現(xiàn)方式中,所述故障為不可恢復(fù)的節(jié)點故障,所述設(shè)備側(cè)重調(diào)度的芯片包括新加入的第三芯片,所述調(diào)度器還包括:
48、同步模塊,用于向所述狀態(tài)正常的第二芯片同步新加入的第三芯片的信息。
49、在一些可能的實現(xiàn)方式中,所述訓(xùn)練系統(tǒng)包括第一訓(xùn)練節(jié)點和第二訓(xùn)練節(jié)點,每個訓(xùn)練節(jié)點包括至少一個第一芯片和至少一個第二芯片,所述第一訓(xùn)練節(jié)點發(fā)生所述不可恢復(fù)的節(jié)點故障;
50、所述同步模塊具體用于:
51、向所述第二訓(xùn)練節(jié)點中的至少一個第二芯片同步所述第三芯片的信息,所述第三芯片的信息包括所述第三芯片所歸屬的第三訓(xùn)練節(jié)點的地址信息、資源配置信息中的至少一項。
52、在一些可能的實現(xiàn)方式中,所述子任務(wù)以進(jìn)程或線程方式執(zhí)行。
53、第五方面,本技術(shù)提供一種芯片。所述芯片包括處理器和存儲器。所述處理器、所述存儲器進(jìn)行相互的通信。所述處理器用于執(zhí)行所述存儲器中存儲的指令,以使得芯片執(zhí)行如第一方面或第一方面的任一種實現(xiàn)方式所述的故障處理方法。
54、第六方面,本技術(shù)提供一種調(diào)度器。所述調(diào)度器包括處理器和存儲器,所述存儲器中存儲有計算機(jī)可讀指令;所述處理器執(zhí)行所述計算機(jī)可讀指令,以使得調(diào)度器執(zhí)行如第一方面或第一方面的任一種實現(xiàn)方式所述的故障處理方法。
55、第七方面,本技術(shù)提供一種訓(xùn)練系統(tǒng)。所述訓(xùn)練系統(tǒng)包括主機(jī)側(cè)的第一芯片和設(shè)備側(cè)的多個第二芯片。第一芯片用于執(zhí)行計算機(jī)可讀指令,以執(zhí)行如第一方面或第一方面的任一種實現(xiàn)方式所述的故障處理方法。
56、第八方面,本技術(shù)提供一種計算機(jī)可讀存儲介質(zhì),所述計算機(jī)可讀存儲介質(zhì)中存儲有指令,所述指令指示計算設(shè)備或計算設(shè)備集群執(zhí)行上述第一方面或第一方面的任一種實現(xiàn)方式所述的故障處理方法方法。
57、第九方面,本技術(shù)提供了一種包含指令的計算機(jī)程序產(chǎn)品,當(dāng)其在計算設(shè)備或計算設(shè)備集群上運行時,使得計算設(shè)備或計算設(shè)備集群執(zhí)行上述第一方面或第一方面的任一種實現(xiàn)方式所述的故障處理方法方法。
58、本技術(shù)在上述各方面提供的實現(xiàn)方式的基礎(chǔ)上,還可以進(jìn)行進(jìn)一步組合以提供更多實現(xiàn)方式。