本發(fā)明涉及智能算力資源整合與配置領(lǐng)域,具體屬于一種智能算力資源的管理系統(tǒng)及方法。
背景技術(shù):
1、目前,全球正處在一個人工智能的時代,人工智能時代最重要的核心要素是算力。在2023年華為全聯(lián)接大會上,就提出算力是人工智能發(fā)展的核心驅(qū)動力,算力稀缺和昂貴,已經(jīng)成為制約ai發(fā)展的核心要素,算力直觀理解就是計算能力。算力已經(jīng)被當成了一種可量化的物理資源,與電、石油等資源類似,電的度量單位是度,石油的度量單位是噸,而算力的度量單位是flops(每秒浮點運算的次數(shù)),eflops就是等于每秒一百京(=10^18)次的浮點運算。根據(jù)idc的數(shù)據(jù)顯示,預(yù)計2027年我國智能算力規(guī)模達1117eflops。
2、現(xiàn)有的物理算力主要分為兩類:通用算力和智能算力。通用算力主要依靠cpu服務(wù)器提供,智能算力主要依靠gpu/npu/fpga等設(shè)備構(gòu)建的算力服務(wù)器提供,本發(fā)明提到的算力僅涉及智能算力的管理,不涉及通用算力。由gpu/npu/fpga等設(shè)備組成的算力服務(wù)器,雖然形成物理算力總量很大,但是目前來看主要存在以下三大問題:一是gpu/npu/fpga等多種算力卡、多張算力卡協(xié)同工作算力聚合的問題,gpu/npu/fpga等硬件提供商各不相同,同時軟件環(huán)境也各不相同,這些因素導(dǎo)致物理算力很難形成合力,不能做到1+1=2,多種卡和多張卡之間無法協(xié)同工作形成算力聚合,因此不能在ai模型訓(xùn)練/ai推理等需要大規(guī)模算力的應(yīng)用場景中得到應(yīng)用。二是算力資源碎片化的問題,主要是針對算力資源有持續(xù)性需求而總算力要求不高的應(yīng)用場景,在這種情況下算力卡不能滿負荷的工作,使用效率很低因而造成了算力浪費。三是算力資源的動態(tài)申請和釋放的問題,主要是針對算力資源沒有持續(xù)性需求的應(yīng)用場景,這種情況下算力卡也僅僅滿負荷工作一段時間,剩余的時間算力卡處于空載狀態(tài),因此也會造成大量算力浪費。
3、針對以上提到的智能算力領(lǐng)域中存在的諸多問題,現(xiàn)有技術(shù)公開了公開號為cn111338756a、專利名稱為:“gpu池化的方法、裝置、設(shè)備及計算機可讀存儲介質(zhì)”的發(fā)明專利,提供了一種通過pcie交換機將多個gpu連接,形成gpu資源池,對gpu資源進行管理。該方案主要有兩個缺點,一是該方案的資源管理以整個gpu為單位,進行資源管理,管理的粒度太大會造成算力碎片,二是該方案只能對gpu進行管理,不能對npu/fpga等組件進行管理。此外,現(xiàn)有技術(shù)還公開了公開號為cn118132267a、專利名稱為:“一種服務(wù)器gpu算力整合,配置,分配系統(tǒng)以及方法”的發(fā)明專利,提供了一種基于gpu服務(wù)器的算力整合配置,該方法存在以下缺點:隨著ai大模型的參數(shù)越來越多,對于需要多臺服務(wù)器之間算力卡協(xié)同工作沒有辦法適應(yīng),同時對npu/fpga算力資源的管理也沒有辦法實現(xiàn)。
4、此外,針對于gpu資源池化方案,大多數(shù)是以gpu或者sriov的方式進行資源管理,將gpu/vgpu綁定給特定的虛擬機或者容器,這樣虛擬機將持久獲得gpu的使用權(quán)。當該虛擬機不需要使用gpu時,其他虛擬機也無法對綁定到其他虛擬機上的gpu進行使用,進而導(dǎo)致算力資源的浪費。
5、基于此,提出本發(fā)明。
技術(shù)實現(xiàn)思路
1、為了解決現(xiàn)有技術(shù)中存在的問題,本發(fā)明提供一種智能算力資源的管理系統(tǒng)及方法,實現(xiàn)gpu/npu/fpga等多種、多張算力卡協(xié)同工作以及算力聚合,從而形成更大的算力資源池。以1tflops為算力管理的最小單位,進而減少了算力資源的碎片化,還實現(xiàn)了算力資源的動態(tài)申請和釋放,提升算力卡的效率。
2、本發(fā)明解決上述技術(shù)問題所采用的技術(shù)方案如下:
3、第一方面,本發(fā)明提供一種智能算力資源的管理系統(tǒng),包括虛擬算力卡hal、算力管理單元、算力資源申請和釋放單元;
4、所述虛擬算力卡hal,用于對所有g(shù)pu/fpga/npu物理算力卡進行算力抽象,以pytroch/tensorflow應(yīng)用框架作為架構(gòu)視角,不區(qū)分gpu/npu/fpga是哪一種算力卡提供的物理算力,以形成多種、多張物理算力卡算力聚合的算力資源池;
5、所述算力管理單元,用于對聚合后的所述算力資源池以1tflops為單位,進行數(shù)據(jù)資源管理;
6、所述算力資源申請和釋放單元,用于為不同的ai應(yīng)用程序提供api接口,包括算力資源申請模塊和算力資源釋放模塊,實現(xiàn)算力資源的動態(tài)申請、動態(tài)釋放,以及動態(tài)遷移,動態(tài)遷移使同一個應(yīng)用分配的算力塊連續(xù)設(shè)置,以減少應(yīng)用上下文的切換次數(shù)。
7、作為本發(fā)明進一步優(yōu)化的技術(shù)方案,所述算力管理單元包含4個算力節(jié)點,4個算力節(jié)點均包含不同種類、不同數(shù)量的gpu/fpga/npu物理算力卡。
8、作為本發(fā)明進一步優(yōu)化的技術(shù)方案,所述算力管理單元的4個算力節(jié)點分別定義為算力節(jié)點0、算力節(jié)點1、算力節(jié)點2和算力節(jié)點3,總算力大小是200t;其中,算力節(jié)點0包含兩個總gpu算力值為18t的gpu、一個總npu算力值為20t的npu和一個總fpga算力值為25t的fpga,算力節(jié)點1包含兩個總gpu算力值為20t的gpu、兩個總npu算力值為36t的npu,算力節(jié)點2包含3個總fpga算力值為23t的fpga、1個總npu算力值為3t的npu,算力節(jié)點3包含兩個總gpu算力值為28t的gpu、1個總npu算力值為15t的npu和1個總fpga算力值為12t的fpga。
9、作為本發(fā)明進一步優(yōu)化的技術(shù)方案,所述算力資源池以1t算力塊作為算力資源管理的單位,并賦值唯一的算力塊編號,每一個算力節(jié)點內(nèi)部的算力塊編號連續(xù)設(shè)置,同時將每一個算力節(jié)點內(nèi)部的算力塊劃分成3種算力區(qū)域,分別是gpu算力區(qū)域、fpga算力區(qū)域和npu算力區(qū)域。
10、第二方面,本發(fā)明還提供一種智能算力資源的管理方法,該管理方法由所述的智能算力資源的管理系統(tǒng)執(zhí)行實施,包括以下實施步驟:
11、step1:根據(jù)用戶選擇的ai模型進行算力評估,得出ai應(yīng)用程序所需的算力評估值;
12、step2:所述算力分配模塊從算力管理單元中獲取算力資源池的總算力值大小,以及當前空閑的算力值大小,且由算力管理單元進行數(shù)據(jù)資源管理;
13、step3:若算力評估值大于算力資源池的總算力值大小,則ai應(yīng)用程序直接退出,該ai應(yīng)用程序無法在當前算力資源池上運行;若算力評估值小于算力資源池的總算力大小,同時又大于空閑算力值的大小,此時再根據(jù)當前ai應(yīng)用程序的優(yōu)先級判斷是否達到算力搶占,如果沒有達到算力搶占則ai應(yīng)用程序退出,如果達到算力搶占則算力管理單元將釋放當前被其他應(yīng)用程序占用的算力資源,并掛起對應(yīng)的應(yīng)用程序,直到算力資源充足時重新恢復(fù)其運行;
14、step4:所述算力管理單元釋放當前ai應(yīng)用程序占用的算力資源后,通過算力搶占方式獲取到足夠的算力資源,并創(chuàng)建一個具有足夠算力值大小的虛擬算力卡hal;
15、step5:虛擬算力卡hal根據(jù)算力分配模塊分配的算力資源中每一個算力塊的編號,判斷算力塊屬于哪個算力節(jié)點中的哪種物理算力卡;
16、step6:ai應(yīng)用程序?qū)⑼ㄟ^數(shù)渡虛擬算力卡同時驅(qū)動gpu/npu/fpu物理算力卡,協(xié)同工作實現(xiàn)算力聚合,完成ai應(yīng)用程序的工作任務(wù);
17、step7:ai應(yīng)用程序結(jié)束后,數(shù)渡虛擬算力卡將調(diào)用算力分配單元中的算力釋放接口,將算力塊歸還給算力資源池;
18、step8:算力資源池此時擁有足夠多空閑的算力資源,將激活step3中被掛起的低優(yōu)先的應(yīng)用程序繼續(xù)運行。
19、作為本發(fā)明進一步優(yōu)化的技術(shù)方案,根據(jù)算力評估得出所述ai應(yīng)用程序所需的算力評估值,創(chuàng)建一個50t算力的虛擬算力卡hal,包括以下步驟:
20、step1:調(diào)用算力分配單元中的算力分配接口,并分配50t算力,若算力分配失敗則退出,若算力分配成功則進入下一步;
21、step2:根據(jù)算力塊的編號確定該算力塊的坐標,即該算力塊屬于哪個算力節(jié)點的、哪個算力區(qū)域;當50t算力全部由算力節(jié)點0提供并且算力塊的編號為[1~50]時,則該虛擬算力卡hal的[1~18]算力塊由gpu提供,[19~38]算力塊由npu提供,[39~50]算力塊由fpga提供;
22、step3:根據(jù)得到的算力塊的坐標數(shù)據(jù),結(jié)合數(shù)渡pytroch應(yīng)用框架組成,虛擬算力卡hal將會同時激活cuda/npu-sdk/fpga-sdk三種算力區(qū)域進行調(diào)度,使其協(xié)調(diào)工作,形成算力聚合;
23、step4:虛擬算力卡hal創(chuàng)建后,啟動pytroch應(yīng)用時,指定加速設(shè)備為所述數(shù)渡虛擬算力卡。
24、作為本發(fā)明進一步優(yōu)化的技術(shù)方案,所述算力管理單元以1tflops為單位,對所述算力資源池進行數(shù)據(jù)資源管理的工作步驟如下:
25、setp1:每個算力節(jié)點啟動后,均向算力管理單元注冊本算力節(jié)點的相關(guān)信息,包括存在哪種算力卡,且每種算力卡的算力值;
26、step2:算力管理單元根據(jù)算力節(jié)點的編號,以及算力卡的類型,分別為每一個算力節(jié)點分配算力塊編號,并對該算力節(jié)點下的算力區(qū)域進行劃分;
27、step3:算力管理單元實時管理當前算力資源池中有多少空閑算力塊,空閑算力塊的算力編號,以及每一個1t的算力塊當前是否空閑,如果不是空閑狀態(tài),還包含當前使用算力塊的應(yīng)用程序的優(yōu)先級信息;
28、step4:當算力管理單元接收來自算力資源申請和釋放模塊的算力分配申請時,首先查詢當前空閑算力值是否滿足需求,如果滿足則直接分配,如果不滿足,則根據(jù)ai應(yīng)用程序的優(yōu)先級是否達到算力搶占,如果達到算力搶占,則釋放被低優(yōu)先級任務(wù)所占用的算力資源。
29、作為本發(fā)明進一步優(yōu)化的技術(shù)方案,所述算力資源申請模塊進行算力分配申請的流程步驟如下:
30、setp1:調(diào)用算力資源申請模塊,將請求發(fā)送給算力管理單元,算力管理單元從空閑的算力資源中分配對應(yīng)的算力塊,并將與之對應(yīng)的算力塊編號返回給算力資源申請模塊;
31、step2:算力資源申請模塊獲取到足夠算力的算力資源后,開始構(gòu)建數(shù)渡虛擬算力卡。
32、作為本發(fā)明進一步優(yōu)化的技術(shù)方案,所述算力資源釋放模塊進行算力資源釋放的流程步驟如下:
33、step1:算力資源釋放模塊根據(jù)傳入的算力塊編號信息,將對應(yīng)的算力塊算力進行釋放;
34、step2:算力管理單元將對應(yīng)算力塊編號的算力釋放后,根據(jù)算力塊編號,找到該算力塊所屬算力節(jié)點,以及算力區(qū)域,并將其插入空閑算力隊列中;
35、step3:對于空閑算力資源進行算力遷移,以減少ai應(yīng)用程序間上下文的切換造成的損失;
36、step4:完成算力遷移后,算力空閑區(qū)域的算力塊編號為連續(xù)設(shè)置,以減少算力卡應(yīng)用上下文的切換次數(shù)。
37、作為本發(fā)明進一步優(yōu)化的技術(shù)方案,若所述算力資源池的算力為10t,在某時刻t1,app1分配[1~3]算力塊,app2分配[4~6]算力塊,app3分配[7~8]算力塊,[9~10]算力塊空閑;在t2時刻,app1退出并釋放[1~3]算力塊,此時算力資源池的布局是空閑算力:[1~3]、[9~10]算力塊,負載算力:app2[4~6]算力塊、app3[7~8]算力塊,當新加入一個app4,算力管理單元進行算力遷移,此時算力資源池的布局是空閑算力:[10]算力塊,負載算力:app2[1~3]算力塊、app3[4~5]算力塊、app4[6~9]算力塊,算力調(diào)度流程如下:app2[1~3]算力塊->app3[4~5]算力塊->app4[6~9]算力塊->[10]算力塊空閑,則減少一次app4的調(diào)度。
38、與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果是:
39、1.本發(fā)明的智能算力資源的管理系統(tǒng)通過在pytroch/tensorflow等ai框架中構(gòu)建虛擬算力卡的方式,搭建hal算力卡硬件抽象層,從而實現(xiàn)對gpu/npu/fpga物理算力的聚合,同時對聚合后的算力以1?tflops(每秒一萬億(=10^12)次的浮點運算)為最小單位進行算力管理,減少算力的碎片化,并實現(xiàn)算力的動態(tài)獲取與釋放,使得gpu/npu/fpga等算力卡的物理算力得到充分利用,提升算力卡的效率。
40、2.本發(fā)明的虛擬算力卡hal對所有g(shù)pu/fpga/npu等物理算力卡進行算力抽象,從pytroch/tensorflow等應(yīng)用框架角度看到的僅僅是算力卡,不區(qū)分是gpu/npu/fpga哪一種算力卡提供的物理算力,因而可以實現(xiàn)多種多張算力卡的算力聚合。算力管理單元對聚合后的算力資源池以1tflops為單位,進行數(shù)據(jù)資源管理。算力資源申請和釋放單元為不同的ai應(yīng)用程序提供api接口,實現(xiàn)算力資源的動態(tài)申請、動態(tài)釋放,以及動態(tài)遷移,動態(tài)遷移使同一個應(yīng)用分配的算力塊連續(xù)設(shè)置,以減少應(yīng)用上下文的切換次數(shù),進而提高算力卡的效率。