本公開涉及計算機,尤其涉及一種模型訓練方法及裝置、電子設備和存儲介質。
背景技術:
1、近些年,大語言模型引發了人工智能領域的風潮,很多公司都想要更輕松、快速、經濟的訓練和部署自己的大語言模型。但是,隨著模型越來越大,訓練成本隨之增加,訓練這樣的大模型,需要昂貴的多卡多節點gpu集群,硬件資源昂貴。即使擁有了gpu集群,現有的開源系統訓練效率對機器利用率低。megatron-deepspeed是一個開源深度學習優化庫,旨在提高大規模模型訓練的效率和可擴展性。當前,亟需一種模型訓練方法,以使得可以利用megatron-deepspeed這樣的模型訓練框架,適配自身的gpu集群實現分布式大模型訓練。
技術實現思路
1、本公開提出了一種模型訓練方法及裝置、電子設備和存儲介質的技術方案。
2、根據本公開的一方面,提供了一種模型訓練方法,包括:根據第一模型訓練框架、第一gpu對應的第一軟件棧、以及預設模型訓練參數,構建docker鏡像,其中,所述第一模型訓練框架為調用所述第一gpu進行模型訓練的模型訓練框架,所述第一模型訓練框架是對第二模型訓練框架進行參數轉換后得到的,所述第二模型訓練框架為調用第二gpu進行模型訓練的模型訓練框架,所述第一gpu和所述第二gpu為不同類型架構配置的gpu;將所述docker鏡像發送至多個訓練節點,以及控制每個訓練節點基于所述docker鏡像創建docker容器,其中,每個訓練節點上部署有所述第一gpu;針對任意一個訓練節點,控制該訓練節點在所述docker容器內調用該訓練節點上部署的所述第一gpu進行模型預訓練。
3、在一種可能的實現方式中,所述方法還包括:對所述第二模型訓練框架對應的第一源代碼進行參數轉換,得到所述第一模型訓練框架對應的第二源代碼;調用所述第一gpu對應的編譯器,對所述第二源代碼執行代碼編譯操作,得到所述第一模型訓練框架對應的目標可執行文件。
4、在一種可能的實現方式中,所述第一模型訓練框架中包括:適配所述第一軟件棧的第一類型應用程序編程接口api、第一類型核函數、第一類型頭文件、第一類型通信庫;所述對所述第二模型訓練框架對應的第一源代碼進行參數轉換,得到所述第一模型訓練框架對應的第二源代碼,包括:在所述第一源代碼中,對第二類型api執行接口轉換操作,得到所述第一類型api,其中,所述第二類型api為適配所述第二gpu對應的第二軟件棧的api;在所述第一源代碼中,對第二類型核函數執行替換操作,得到所述第一類型核函數,其中,所述第二類型核函數為適配所述第二軟件棧的核函數;在所述第一源代碼中,對第二類型頭文件執行替換操作,得到所述第一類型頭文件,其中,所述第二類型頭文件為適配所述第二軟件棧的頭文件;在所述第一源代碼中,對第二類型通信庫執行替換操作,得到所述第一類型通信庫,其中,所述第二類型通信庫為適配所述第二軟件棧的通信庫。
5、在一種可能的實現方式中,所述方法還包括:在所述第一源代碼中,篩選第一類型算子,以及為所述第一類型算子設置注釋標簽,其中,所述第一類型算子為與所述第一軟件棧不兼容的算子,所述注釋標簽用于指示不運行所述第一類型算子。
6、在一種可能的實現方式中,所述方法還包括:根據所述第一模型訓練框架中混合精度加速模型支持的多種數據類型,對所述第一軟件棧執行數據類型適配處理,得到更新后的第一軟件棧,其中,更新后的所述第一軟件棧支持所述多種數據類型。
7、根據本公開的一方面,提供了一種模型訓練裝置,包括:docker鏡像構建模塊,用于根據第一模型訓練框架、第一gpu對應的第一軟件棧、以及預設模型訓練參數,構建docker鏡像,其中,所述第一模型訓練框架為調用所述第一gpu進行模型訓練的模型訓練框架,所述第一模型訓練框架是對第二模型訓練框架進行參數轉換后得到的,所述第二模型訓練框架為調用第二gpu進行模型訓練的模型訓練框架,所述第一gpu和所述第二gpu為不同類型架構配置的gpu;docker容器創建模塊,用于將所述docker鏡像發送至多個訓練節點,以及控制每個訓練節點基于所述docker鏡像創建docker容器,其中,每個訓練節點上部署有所述第一gpu;預訓練模塊,用于針對任意一個訓練節點,控制該訓練節點在所述docker容器內調用該訓練節點上部署的所述第一gpu進行模型預訓練。
8、在一種可能的實現方式中,所述裝置還包括:訓練框架確定模塊,具體用于:對所述第二模型訓練框架對應的第一源代碼進行參數轉換,得到所述第一模型訓練框架對應的第二源代碼;調用所述第一gpu對應的編譯器,對所述第二源代碼執行代碼編譯操作,得到所述第一模型訓練框架對應的目標可執行文件。
9、在一種可能的實現方式中,所述第一模型訓練框架中包括:適配所述第一軟件棧的第一類型應用程序編程接口api、第一類型核函數、第一類型頭文件、第一類型通信庫;所述訓練框架確定模塊,具體用于:在所述第一源代碼中,對第二類型api執行接口轉換操作,得到所述第一類型api,其中,所述第二類型api為適配所述第二gpu對應的第二軟件棧的api;在所述第一源代碼中,對第二類型核函數執行替換操作,得到所述第一類型核函數,其中,所述第二類型核函數為適配所述第二軟件棧的核函數;在所述第一源代碼中,對第二類型頭文件執行替換操作,得到所述第一類型頭文件,其中,所述第二類型頭文件為適配所述第二軟件棧的頭文件;在所述第一源代碼中,對第二類型通信庫執行替換操作,得到所述第一類型通信庫,其中,所述第二類型通信庫為適配所述第二軟件棧的通信庫。
10、在一種可能的實現方式中,所述訓練框架確定模塊,具體用于:在所述第一源代碼中,篩選第一類型算子,以及為所述第一類型算子設置注釋標簽,其中,所述第一類型算子為與所述第一軟件棧不兼容的算子,所述注釋標簽用于指示不運行所述第一類型算子。
11、在一種可能的實現方式中,所述訓練框架確定模塊,具體用于:根據所述第一模型訓練框架中混合精度加速模型支持的多種數據類型,對所述第一軟件棧執行數據類型適配處理,得到更新后的第一軟件棧,其中,更新后的所述第一軟件棧支持所述多種數據類型。
12、根據本公開的一方面,提供了一種電子設備,包括:處理器;用于存儲處理器可執行指令的存儲器;其中,所述處理器被配置為調用所述存儲器存儲的指令,以執行上述方法。
13、根據本公開的一方面,提供了一種計算機可讀存儲介質,其上存儲有計算機程序指令,所述計算機程序指令被處理器執行時實現上述方法。
14、在本公開實施例中,通過對適配第二gpu的第二模型訓練框架進行參數轉換,確定適配第一gpu的第一模型訓練框架,第一gpu和第二gpu為不同類型架構配置的gpu,進而可以根據第一模型訓練框架、第一gpu對應的第一軟件棧、以及預設模型訓練參數,通過構建docker鏡像,有效將模型訓練環境搭建步驟固化,將docker鏡像發送至多個訓練節點后,控制每個訓練節點基于docker鏡像創建docker容器,以使得每個訓練節點的docker容器配置有相同的模型訓練環境,針對任意一個訓練節點,控制該訓練節點在docker容器內調用該訓練節點上部署的第一gpu進行模型預訓練,有效實現模型訓練的快速部署、快速訓練。
15、應當理解的是,以上的一般描述和后文的細節描述僅是示例性和解釋性的,而非限制本公開。根據下面參考附圖對示例性實施例的詳細說明,本公開的其它特征及方面將變得清楚。