本說明書涉及計算機,尤其涉及一種模型訓練和業(yè)務(wù)執(zhí)行方法、裝置、存儲介質(zhì)及設(shè)備。
背景技術(shù):
1、隨著人工智能技術(shù)的飛速發(fā)展,基于transformer的大型語言模型(largelanguage?models,?llms)作為自然語言處理領(lǐng)域的一項重要技術(shù),正逐步改變著人機交互和信息處理的方式。這些模型通過深度學習和大數(shù)據(jù)訓練,能夠理解和生成自然語言文本,從而在眾多應(yīng)用場景中展現(xiàn)出巨大的潛力和價值。
2、然而,盡管大型語言模型在性能上取得了顯著進步,但其龐大的參數(shù)規(guī)模和計算需求也為模型的訓練過程帶來了巨大挑戰(zhàn)。在對大語言模型進行訓練的過程中,圖形處理器(graphics?processing?unit,gpu)開銷會隨著樣本數(shù)據(jù)長度的增加而增加,導致模型訓練出現(xiàn)顯存不足的問題,嚴重影響模型訓練的整體效率。
3、因此,如何避免模型訓練過程中顯存不足的問題,保證模型訓練的整體效率,是一個亟待解決的問題。
技術(shù)實現(xiàn)思路
1、本說明書提供一種模型訓練和業(yè)務(wù)執(zhí)行方法、裝置、存儲介質(zhì)及設(shè)備,以部分的解決現(xiàn)有技術(shù)存在的上述問題。
2、本說明書采用下述技術(shù)方案:
3、本說明書提供了一種模型訓練方法,包括:
4、接收針對目標模型的訓練請求,并根據(jù)所述訓練請求獲取樣本數(shù)據(jù),其中,所述目標模型中包含有若干個結(jié)構(gòu)相同的子層,所述目標模型為大語言模型;
5、根據(jù)預設(shè)的數(shù)據(jù)并行維度和序列并行維度將所述樣本數(shù)據(jù)切分為多個子樣本,并將各子樣本分配到不同的圖形處理器gpu上;
6、針對每個gpu,在將分配到該gpu上的子樣本輸入部署在該gpu上的目標模型后,確定針對分配到該gpu上的子樣本的預測結(jié)果,以及,確定所述目標模型中的每一個子層所對應(yīng)的激活值并存儲,其中,針對每個子層,若該子層對應(yīng)的層級小于指定層級,則將該子層對應(yīng)的激活值存儲到中央處理器cpu中,并在gpu中將該子層對應(yīng)的激活值進行刪除;
7、根據(jù)所述預測結(jié)果,確定目標模型的損失值,并根據(jù)所述損失值以及所述每個子層所對應(yīng)的激活值,對目標模型進行訓練。
8、可選地,在根據(jù)所述訓練請求獲取樣本數(shù)據(jù)之前,所述方法還包括:
9、獲取初始模型;
10、針對所述初始模型中的每個子層,對該子層中包含的各網(wǎng)絡(luò)模塊的位置進行調(diào)整,以將自注意力模塊作為該子層的最后一個網(wǎng)絡(luò)模塊;
11、根據(jù)調(diào)整后的每個子層,確定所述目標模型。
12、可選地,所述目標模型的自注意力模塊包括:旋轉(zhuǎn)編碼模塊,鍵值重復模塊以及縮放點積注意力模塊,針對所述目標模型中的每個子層,該子層由輸出投影模塊,輸出層歸一化模塊,多層感知機模塊,輸入層歸一化模塊,查詢鍵值投影模塊,旋轉(zhuǎn)編碼模塊,鍵值重復模塊,縮放點積注意力模塊依次串聯(lián)構(gòu)成。
13、可選地,根據(jù)預設(shè)的數(shù)據(jù)并行維度和序列并行維度將所述樣本數(shù)據(jù)切分為多個子樣本,并將各子樣本分配到不同的圖形處理器gpu上,具體包括:
14、根據(jù)所述數(shù)據(jù)并行維度,確定第一并行數(shù)量,并按照所述第一并行數(shù)量將所述樣本數(shù)據(jù)切分為若干個張量,以及,按照所述第一并行數(shù)量將所述gpu劃分為若干個計算組,作為各第一計算組;
15、將各張量分配到不同的第一計算組中;
16、根據(jù)所述序列并行維度,確定第二并行數(shù)量,并按照所述第二并行數(shù)量將每個張量切分為若干個子樣本,以及,按照所述第二并行數(shù)量將所述第一計算組劃分為若干個數(shù)據(jù)組,作為各第二計算組;
17、將各子樣本分配到不同的第二計算組中的cpu上。
18、可選地,不同的第一計算組之間不進行數(shù)據(jù)通信,不同的第二計算組之間進行數(shù)據(jù)通信。
19、可選地,在確定所述目標模型中的每一個子層所對應(yīng)的激活值并存儲之前,所述方法還包括:
20、根據(jù)所述目標模型中網(wǎng)絡(luò)層的總層數(shù)以及所述指定層級,在所述cpu上為所述目標模型分配若干個線程資源;
21、針對每個子層,若該子層對應(yīng)的層級小于指定層級,則將該子層對應(yīng)的激活值存儲到中央處理器的cpu中,并在該gpu中將該子層對應(yīng)的激活值進行刪除,具體包括:
22、輪詢遍歷每個線程資源,以在各線程資源中確定出處于空閑狀態(tài)的目標線程,并通過所述目標線程,將該子層對應(yīng)的激活值存儲到中央處理器的cpu中,并在該gpu中將該子層對應(yīng)的激活值進行刪除。
23、可選地,根據(jù)所述預測結(jié)果,確定所述目標模型的損失值,并根據(jù)所述損失值以及所述每個子層所對應(yīng)的激活值,對所述目標模型進行訓練,具體包括:
24、針對所述目標模型中的每個子層,獲取該子層對應(yīng)的激活值以及與該子層相連接的上一個子層對應(yīng)的激活值;
25、根據(jù)所述損失值以及該子層對應(yīng)的激活值,確定該子層對應(yīng)的輸出梯度;
26、將該子層對應(yīng)的輸出梯度以及所述上一個子層對應(yīng)的激活值輸入該子層中的第一個網(wǎng)絡(luò)模塊,以確定所述第一個網(wǎng)絡(luò)模塊對應(yīng)的激活值和梯度信息;
27、針對該子層中除所述第一個網(wǎng)絡(luò)模塊以外的其他每個網(wǎng)絡(luò)模塊,將與該網(wǎng)絡(luò)模塊相鄰的上一個網(wǎng)絡(luò)模塊所輸出的梯度信息和激活值輸入該網(wǎng)絡(luò)模塊,以確定該網(wǎng)絡(luò)模塊對應(yīng)的梯度信息和激活值;
28、根據(jù)每個網(wǎng)絡(luò)模塊對應(yīng)的梯度信息,對各網(wǎng)絡(luò)模塊對應(yīng)的模型參數(shù)進行更新,以對所述目標模型進行訓練。
29、可選地,所述方法還包括:
30、針對所述目標模型中的每個子層,根據(jù)該子層對應(yīng)的層級、所述目標模型中網(wǎng)絡(luò)層的總層數(shù)以及所述指定層級,確定激活值的預取層級;
31、若該子層對應(yīng)的層級小于所述指定層級,則在對該子層中的每個網(wǎng)絡(luò)模塊對應(yīng)的模型參數(shù)進行更新后,在所述cpu中對所述預取層級所對應(yīng)子層的激活值進行預??;
32、若該子層對應(yīng)的層級大于所述指定層級,則在gpu中對所述預取層級所對應(yīng)子層的激活值進行預取。
33、本所明書提供了一種業(yè)務(wù)執(zhí)行方法,包括:
34、獲取業(yè)務(wù)數(shù)據(jù);
35、將所述業(yè)務(wù)數(shù)據(jù)輸入訓練后的目標模型,以通過所述目標模型,確定出針對所述業(yè)務(wù)數(shù)據(jù)預測結(jié)果,并根據(jù)所述預測結(jié)果執(zhí)行業(yè)務(wù),其中,所述目標模型是通過上述模型訓練方法訓練得到的。
36、本說明書提供了一種模型訓練裝置,包括:
37、接收模塊,用于接收針對目標模型的訓練請求,并根據(jù)所述訓練請求獲取樣本數(shù)據(jù),其中,所述目標模型中包含有若干個結(jié)構(gòu)相同的子層,所述目標模型為大語言模型;
38、分配模塊,用于根據(jù)預設(shè)的數(shù)據(jù)并行維度和序列并行維度將所述樣本數(shù)據(jù)切分為多個子樣本,并將各子樣本分配到不同的圖形處理器gpu上;
39、輸入模塊,用于針對每個gpu,在將分配到該gpu上的子樣本輸入部署在該gpu上的目標模型后,確定針對分配到該gpu上的子樣本的預測結(jié)果,以及,確定所述目標模型中的每一個子層所對應(yīng)的激活值并存儲,其中,針對每個子層,若該子層對應(yīng)的層級小于指定層級,則將該子層對應(yīng)的激活值存儲到中央處理器cpu中,并在gpu中將該子層對應(yīng)的激活值進行刪除;
40、訓練模塊,用于根據(jù)所述預測結(jié)果,確定目標模型的損失值,并根據(jù)所述損失值以及所述每個子層所對應(yīng)的激活值,對目標模型進行訓練。
41、本說明書提供了一種計算機可讀存儲介質(zhì),所述存儲介質(zhì)存儲有計算機程序,所述計算機程序被處理器執(zhí)行時實現(xiàn)上述模型訓練和業(yè)務(wù)執(zhí)行方法。
42、本說明書提供了一種電子設(shè)備,包括存儲器、處理器及存儲在存儲器上并可在處理器上運行的計算機程序,所述處理器執(zhí)行所述程序時實現(xiàn)上述模型訓練和業(yè)務(wù)執(zhí)行方法。
43、本說明書采用的上述至少一個技術(shù)方案能夠達到以下有益效果:
44、在本說明書提供的模型訓練方法中,根據(jù)預設(shè)的數(shù)據(jù)并行維度和序列并行維度將樣本數(shù)據(jù)切分為多個子樣本,并將各子樣本分配到不同的圖形處理器gpu上;針對每個gpu,在將分配到該gpu上的子樣本輸入部署在該gpu上的目標模型后,確定目標模型中的每一個子層所對應(yīng)的激活值并存儲,其中,針對每個子層,若該子層對應(yīng)的層級小于指定層級,則將該子層對應(yīng)的激活值存儲到中央處理器cpu中,并在該gpu中將該子層對應(yīng)的激活值進行刪除;確定目標模型的損失值,并根據(jù)損失值以及每個子層所對應(yīng)的激活值,對目標模型進行訓練。
45、從上述方法可以看出,本方案在模型訓練的過程中可以通過數(shù)據(jù)并行維度和序列并行維度,將樣本數(shù)據(jù)切分為多個子樣本并分別部署到不同的gpu上,從而保證序列并行中序列長度不會過短,彌補了gpu利用率不足以及單個gpu顯存占用過高的問題,并且,基于每個子層的層級將一定數(shù)量的激活值數(shù)據(jù)存儲到cpu上,有效節(jié)省了gpu的存儲空間,進一步提高了gpu資源的利用率和模型訓練的整體效率。