本技術實施例涉及計算機領域,具體而言,涉及一種圖形處理器的分配方法及裝置、存儲介質及電子設備。
背景技術:
1、互聯(lián)網(wǎng)的普及和數(shù)字化進程的加快,產生了海量的數(shù)據(jù),為人工智能的訓練提供了豐富的素材。k8s是一種強大的容器編排工具,它以容器組(pod)為邏輯概念,對容器進行包裝,然后在一個統(tǒng)一的資源視圖中對容器進行管理,它具有出色的資源管理和調度能力,已經成為人工智能開發(fā)平臺的首選技術棧。在人工智能開發(fā)的過程中,經常出現(xiàn)需要給容器添加或刪除加速卡的場景,來應對計算資源的動態(tài)需求。然而,容器不支持熱更新圖形處理器(graphics?processing?unit,簡稱為gpu)設備,即在容器運行過程中無法動態(tài)地添加或移除gpu設備,只能在創(chuàng)建容器的時候給容器掛載gpu設備并添加訪問權限,一旦容器創(chuàng)建完成,容器中的gpu設備就無法再更新。使用者如果需要給容器增加或減少gpu設備,只能先把容器打包為鏡像,然后使用打包好的鏡像創(chuàng)建一個新的容器,并在創(chuàng)建時重新分配所需的gpu設備。在人工智能開發(fā)領域,鏡像通常在數(shù)十gb,數(shù)據(jù)量非常大,這就導致容器打包為鏡像然后重新創(chuàng)建容器的過程非常耗時,并且浪費資源。
2、針對相關技術中,容器不支持熱更新gpu設備,導致在容器運行過程中無法動態(tài)地添加或移除gpu設備的問題,目前尚未提出有效的解決方案。
技術實現(xiàn)思路
1、本技術實施例提供了一種圖形處理器的分配方法及裝置、存儲介質及電子設備,以至少解決容器組不支持熱更新gpu設備,導致在容器組運行過程中無法動態(tài)地添加或移除gpu設備的問題。
2、根據(jù)本技術的一個實施例,提供了一種圖形處理器的分配方法,應用于容器編排平臺,所述容器編排平臺包括管理節(jié)點和多個計算節(jié)點,所述管理節(jié)點中具有數(shù)據(jù)庫組件和資源管理組件,所述資源管理組件中具有圖形處理器gpu調度程序插件,用于實現(xiàn)gpu的動態(tài)分配;所述計算節(jié)點中具有節(jié)點管理器、容器運行時和多個gpu;所述節(jié)點管理器中具有設備插件,用于實現(xiàn)gpu的管理功能,包括:通過所述資源管理組件,基于所述數(shù)據(jù)庫組件中的容器組的第一注解調用所述gpu調度程序插件為所述容器組分配計算節(jié)點和gpu,得到目標計算節(jié)點和所述容器組的第二注解,其中,所述第一注解用于指示所述容器組請求的gpu的數(shù)量,所述第二注解中具有n個分配的gpu的通用唯一識別碼,所述n個gpu為所述目標計算節(jié)點中的gpu,所述多個計算節(jié)點包括所述目標計算節(jié)點;在所述容器組的第一注解發(fā)生變化的情況下,所述容器組的第二注解發(fā)生改變;通過所述目標計算節(jié)點中的節(jié)點管理器,在監(jiān)聽到在所述容器組被分配至所述目標計算節(jié)點的情況下,基于設備文件路徑調用所述目標計算節(jié)點中的容器運行時為所述容器組創(chuàng)建計算容器,其中,所述設備文件路徑對應的設備文件為所述計算容器添加所述目標計算節(jié)點上的所有的gpu所需要文件,所述容器組包括所述計算容器;通過所述目標計算節(jié)點中的設備插件,根據(jù)所述容器組的第二注解為所述計算容器添加或刪除gpu。
3、在一個示例性的實施例中,所述基于設備文件路徑調用所述目標計算節(jié)點的容器運行時為所述容器組創(chuàng)建計算容器之前,所述方法還包括:通過所述目標計算節(jié)點中的節(jié)點管理器,在監(jiān)聽到在所述容器組被分配至所述目標計算節(jié)點的情況下,調用所述目標計算節(jié)點中的設備插件獲取所述設備文件路徑。
4、在一個示例性的實施例中,所述計算節(jié)點中還具有gpu驅動;所述通過所述資源管理組件,基于所述容器組的第一注解調用所述gpu調度程序插件為所述容器組分配計算節(jié)點和gpu,得到目標計算節(jié)點和所述容器組的第二注解之前,所述方法還包括:通過所述多個計算節(jié)點中的第i個計算節(jié)點中的設備插件調用所述第i個計算節(jié)點中的gpu驅動獲取所述第i個計算節(jié)點的gpu列表,其中,所述gpu列表中具有所述第i個計算節(jié)點的所有gpu的設備信息,所述設備信息包括:gpu的標識,gpu的通用唯一識別碼和gpu的狀態(tài);通過所述第i計算節(jié)點中的設備插件,將所述第i個計算節(jié)點的gpu列表添加至所述第i個計算節(jié)點的第三注解中,其中,所述第三注解用于指示計算節(jié)點中的gpu信息。
5、在一個示例性的實施例中,所述通過所述資源管理組件,基于所述數(shù)據(jù)庫組件中的容器組的第一注解調用所述gpu調度程序插件為所述容器組分配計算節(jié)點和gpu,得到目標計算節(jié)點和所述容器組的第二注解,包括:通過所述資源管理組件,在監(jiān)控到所述數(shù)據(jù)庫組件中的所述容器組的創(chuàng)建事件的情況下,基于所述數(shù)據(jù)庫組件中的容器組的第一注解調用所述gpu調度程序插件確定所述目標計算節(jié)點,其中,所述目標計算節(jié)點中的空閑gpu的數(shù)量大于所述第一注解中所請求的gpu的數(shù)量,所述目標計算節(jié)點中的空閑gpu的數(shù)量根據(jù)所述目標計算節(jié)點的第三注解確定,所述第三注解用于指示計算節(jié)點中的gpu信息,所述gpu調度程序插件在初始化階段會獲取所述多個計算節(jié)點中的每個計算節(jié)點的第三注解;通過所述資源管理組件,調用所述gpu調度程序插件,從所述目標計算節(jié)點的空閑gpu列表中選取m個gpu,并將所述m個gpu的通用唯一識別碼添加至所述容器組的第二注解中,其中,m等于所述第一注解所指示的gpu的數(shù)量;通過所述資源管理組件,調用所述gpu調度程序插件,將所述m個gpu從所述目標計算節(jié)點的空閑gpu列表中刪除;和/或通過所述資源管理組件,在監(jiān)控到所述數(shù)據(jù)庫組件中具有所述容器組的第一注解發(fā)生變化的情況下,確定所述容器組分配的計算節(jié)點為所述目標計算節(jié)點;在p大于z、且所述目標計算節(jié)點存在p-z個空閑gpu的情況下,通過所述資源管理組件,調用所述gpu調度程序插件,從所述目標計算節(jié)點的空閑gpu列表中選取p-z個gpu,并將所述p-z個gpu的通用唯一識別碼添加至所述容器組的第二注解中,其中,z等于所述容器組的第二注解中記載的gpu的數(shù)量,p等于所述第一注解發(fā)生變化后所指示的gpu的數(shù)量;通過所述資源管理組件,調用所述gpu調度程序插件,將所述p-z個gpu從所述目標計算節(jié)點的空閑gpu列表中刪除;在p小于z的情況下,通過所述資源管理組件,調用所述gpu調度程序插件,從所述容器組的第二注解中刪除z-p個gpu的通用唯一識別碼,并將所述z-p個gpu添加至所述目標計算節(jié)點的空閑gpu列表中。
6、在一個示例性的實施例中,所述方法還包括:在p大于z、且所述目標計算節(jié)點不存在p-z個空閑gpu的情況下,通過所述資源管理組件,調用所述gpu調度程序插件,從所述目標計算節(jié)點的空閑gpu列表中選取x個gpu,并將所述x個gpu的通用唯一識別碼添加至所述容器組的第二注解中,其中,x為所述目標計算節(jié)點的當前空閑gpu的個數(shù),x為大于等于0、小于p-z的整數(shù);通過所述資源管理組件,調用所述gpu調度程序插件,將所述x個gpu從所述目標計算節(jié)點的空閑gpu列表中刪除;以及通過所述資源管理組件發(fā)送提示信息,其中,所述提示信息用于指示所述容器組還需要添加gpu。
7、在一個示例性的實施例中,所述通過所述目標計算節(jié)點中的設備插件,根據(jù)所述容器組的第二注解為所述計算容器添加或刪除gpu,包括:通過所述目標計算節(jié)點中的設備插件,在監(jiān)聽到所述計算容器的創(chuàng)建事件的情況下,進入所述計算容器的命名空間中,根據(jù)所述第二注解中所指示的gpu的通用唯一識別碼刪除所述計算容器中未記載在所述第二注解中的gpu;通過所述目標計算節(jié)點中的設備插件,在監(jiān)聽到所述容器組的第二注解發(fā)生變化的情況下,進入所述計算容器的命名空間中,根據(jù)所述第二注解中所指示的gpu的通用唯一識別碼為所述計算容器添加或刪除gpu,以使得所述計算容器當前允許使用的gpu為所述第二注解中所指示的gpu。
8、在一個示例性的實施例中,所述通過所述第i計算節(jié)點中的設備插件,將所述第i個計算節(jié)點的gpu列表添加至所述第i個計算節(jié)點的第三注解中之后,所述方法還包括:通過所述第i計算節(jié)點中的設備插件向所述第i計算節(jié)點的節(jié)點管理器注冊虛擬設備資源;通過所述第i計算節(jié)點的節(jié)點管理器在所述數(shù)據(jù)庫組件中記載所述第i計算節(jié)點具有所述虛擬設備資源,其中,所述虛擬設備資源用于指示計算節(jié)點具有動態(tài)改變容器使用的gpu的數(shù)量的能力;通過所述資源管理組件,基于所述數(shù)據(jù)庫組件中的容器組的第一注解調用所述gpu調度程序插件為所述容器組分配計算節(jié)點和gpu,包括:通過所述資源管理組件,基于所述數(shù)據(jù)庫組件中的容器組的第一注解調用所述gpu調度程序插件,從所述多個計算節(jié)點中具有所述虛擬設備資源的計算節(jié)點中為所述容器組分配計算節(jié)點,并對應分配gpu。
9、根據(jù)本技術實施例的另一個實施例,還提供一種圖形處理器的分配裝置,應用于容器編排平臺,所述容器編排平臺包括管理節(jié)點和多個計算節(jié)點,所述管理節(jié)點中具有數(shù)據(jù)庫組件和資源管理組件,所述資源管理組件中具有圖形處理器gpu調度程序插件,用于實現(xiàn)gpu的動態(tài)分配;所述計算節(jié)點中具有節(jié)點管理器、容器運行時和多個gpu;所述節(jié)點管理器中具有設備插件,用于實現(xiàn)gpu的管理功能,包括:分配模塊,用于通過所述資源管理組件,基于所述數(shù)據(jù)庫組件中的容器組的第一注解調用所述gpu調度程序插件為所述容器組分配計算節(jié)點和gpu,得到目標計算節(jié)點和所述容器組的第二注解,其中,所述第一注解用于指示所述容器組請求的gpu的數(shù)量,所述第二注解中具有n個分配的gpu的通用唯一識別碼,所述n個gpu為所述目標計算節(jié)點中的gpu,所述多個計算節(jié)點包括所述目標計算節(jié)點;在所述容器組的第一注解發(fā)生變化的情況下,所述容器組的第二注解發(fā)生改變;創(chuàng)建模塊,用于通過所述目標計算節(jié)點中的節(jié)點管理器,在監(jiān)聽到在所述容器組被分配至所述目標計算節(jié)點的情況下,基于設備文件路徑調用所述目標計算節(jié)點中的容器運行時為所述容器組創(chuàng)建計算容器,其中,所述設備文件路徑對應的設備文件為所述計算容器添加所述目標計算節(jié)點上的所有的gpu所需要文件,所述容器組包括所述計算容器;第一處理模塊,用于通過所述目標計算節(jié)點中的設備插件,根據(jù)所述容器組的第二注解為所述計算容器添加或刪除gpu。
10、根據(jù)本技術的又一個實施例,還提供了一種計算機可讀存儲介質,所述計算機可讀存儲介質中存儲有計算機程序,其中,所述計算機程序被設置為運行時執(zhí)行上述任一項方法實施例中的步驟。
11、根據(jù)本技術的又一個實施例,還提供了一種電子設備,包括存儲器和處理器,所述存儲器中存儲有計算機程序,所述處理器被設置為運行所述計算機程序以執(zhí)行上述任一項方法實施例中的步驟。
12、根據(jù)本技術的又一個實施例,還提供了一種計算機程序產品,上述計算機程序產品包括計算機程序,所述計算機程序被處理器執(zhí)行時實現(xiàn)上述任一項方法實施例中的步驟。
13、通過本技術,在資源管理組件中新增了圖形處理器gpu調度程序插件,以及在節(jié)點管理器中新增了設備插件,由于資源管理組件可以調用gpu調度程序插件根據(jù)容器組的第一注解確定容器組的第二注解,使得計算節(jié)點的節(jié)點管理器通過調用設備插件動態(tài)的根據(jù)第二注解為容器組的計算容器添加或刪除gpu,進而無需通過重新創(chuàng)建容器以重新分配gpu設備,從而解決了容器不支持熱更新gpu設備,導致在容器運行過程中無法動態(tài)地添加或移除gpu設備的問題。