Cyborg的主要功能包括硬件資源的發(fā)現(xiàn)、資源上報(bào)、資源的管理,Cyborg還能完成FPGA編程等特殊硬件的特殊功能或配置。

Cyborg已經(jīng)交付了至少4~5個(gè)版本,采用OpenStack組件中常用的架構(gòu)設(shè)計(jì),分為控制層和計(jì)算節(jié)點(diǎn)層,以分離管理面與數(shù)據(jù)面,并在管理面設(shè)計(jì)了統(tǒng)一的API。

Cyborg-api、Cyborg-conductor、Cyborg-agent是Cyborg的3個(gè)主要服務(wù),Cyborg-api主要用于提供API接口,Cyborg-conductor主要用來緩沖和路由api與agent數(shù)據(jù)庫的操作,Cyborg-agent主要用來對接各種異構(gòu)計(jì)算硬件,Cyborg-client主要調(diào)用cyborg-api,最終對用戶提供命令行。

Cyborg項(xiàng)目自2017年9月成為OpenStack 社區(qū)官方項(xiàng)目后,生態(tài)進(jìn)展迅速,已成長為加速設(shè)備管理的事實(shí)標(biāo)準(zhǔn),服務(wù)于NFV、HPC、邊緣計(jì)算、AI/DL等多個(gè)場景。

開源是催生開發(fā)者生態(tài)非常重要的一環(huán),至今Cyborg已經(jīng)吸引了來自Intel、聯(lián)想、ARM、Redhat、科大訊飛、中移動(dòng)、銀聯(lián)等公司或機(jī)構(gòu)的開發(fā)者參與。

Cyborg的技術(shù)實(shí)現(xiàn)

在通用計(jì)算主導(dǎo)的云計(jì)算時(shí)代,通過虛擬化、容器化,實(shí)現(xiàn)了物理資源池的資源復(fù)用,進(jìn)而以多租戶的方式開放出去,形成公有云服務(wù)或私有云服務(wù)。

在異構(gòu)計(jì)算時(shí)代,為了實(shí)現(xiàn)虛擬化和容器化,同樣需要異構(gòu)資源的分層抽象,所以Cyborg項(xiàng)目定義了一套面向異構(gòu)計(jì)算設(shè)備的抽象設(shè)備模型:

第一層是Device,對應(yīng)物理意義上的卡,如各類加速卡;

在Device的層級之上,是PF(Physical Function),比如FPGA上會(huì)有多個(gè)區(qū)域(Region),每一個(gè)區(qū)域可能就是一個(gè)PF;

在PF之上,可以抽象出VF(Virtual Function),很多異構(gòu)硬件支持在PF的基礎(chǔ)上進(jìn)一步提供VF的能力。

下面以兩個(gè)例子來說明Cyborg的技術(shù)實(shí)現(xiàn)。

設(shè)備發(fā)現(xiàn):在一個(gè)有2個(gè)FPGA資源、1個(gè)的NPU資源的計(jì)算節(jié)點(diǎn)上,通過PCIE上電的設(shè)備,信息被Cyborg Driver上報(bào)到Compute計(jì)算節(jié)點(diǎn)的 Agent上面,Agent主要做兩個(gè)動(dòng)作,一是寫入到DB,另外一個(gè)是寫入到Placement,Placement是OpenStack近幾個(gè)版本才出現(xiàn)的新組件,起到計(jì)數(shù)器的作用,會(huì)統(tǒng)計(jì)所有的計(jì)算存儲(chǔ)網(wǎng)絡(luò)以及異構(gòu)資源的總數(shù)量,以便在Schedule調(diào)度的時(shí)候?qū)崿F(xiàn)全局視圖。

Nova-Cyborg交互:Nova是OpenStack里非常重要的管理組件,這里來看一下Cyborg怎樣和Nova實(shí)現(xiàn)交互。

第1步,管理員或運(yùn)營者(Operator)把要使用的硬件的驅(qū)動(dòng)配置進(jìn)Cyborg的Config中。

第2步,定義一個(gè)Device Profiles,和OpenStack的通用資源定義一樣,通過Flavor描述資源的規(guī)格。

第3步,管理員把設(shè)定的Device Profiles關(guān)聯(lián)到Flavor上面。

管理員通過Cyborg Api完成了這些工作之后,用戶就可以去申請這個(gè)實(shí)例了。

用戶使用OpenStack的命令行或者按鈕申請一個(gè)Flavor,F(xiàn)lavor會(huì)加上 Device Profiles的描述,之后啟動(dòng)調(diào)度器去Placement查詢,如果有符合用戶請求的資源,云平臺(tái)就可以返回用戶所需要的實(shí)例了。

通過組件間的調(diào)用關(guān)系圖示,可以看到Nova和Cyborg之間的Device Profiles的設(shè)置、Nova和Placement關(guān)于Allocation之間的交互,以及當(dāng)創(chuàng)建實(shí)例時(shí)的Post accelerator request等,整體的工作流比較清晰,而且盡可能復(fù)用了OpenStack的Nova的工作機(jī)制,實(shí)現(xiàn)對異構(gòu)資源的管理。

Kubernetes以及其他社區(qū)的異構(gòu)計(jì)算開源項(xiàng)目

Kubernetes(K8s)社區(qū)是谷歌開源出來的容器管理平臺(tái),K8s同樣存在異構(gòu)計(jì)算的支持的問題。因?yàn)镵8s出現(xiàn)的比較晚,對GPU這類異構(gòu)設(shè)備的支持排在很高的優(yōu)先級,很快就實(shí)現(xiàn)了Device Plug Interface(DPI)的機(jī)制。

在K8s社區(qū),通過英偉達(dá)等公司開發(fā)者的努力,已經(jīng)有一套比較穩(wěn)定的異構(gòu)計(jì)算管理方法,可以實(shí)現(xiàn)K8s集群管理GPU等硬件處理AI任務(wù),或者實(shí)現(xiàn)有限的HPC任務(wù)。

但DPI本質(zhì)上還是一個(gè)“煙囪式”的解決方案,每種設(shè)備都需要一個(gè)適配的operator+一個(gè)適配的DPI插件,比如做FPGA的方案,還需要做很大的改動(dòng)才能實(shí)現(xiàn)端到端的打通。而NVDIA也為GPU開發(fā)了專門的operator。

為此,K8s社區(qū)也已經(jīng)提出了一個(gè)類似于Cyborg的異構(gòu)計(jì)算項(xiàng)目Kube-acc,希望在K8s上借助優(yōu)秀的CRD機(jī)制,擴(kuò)展標(biāo)準(zhǔn)的API接口,實(shí)現(xiàn)面向不同異構(gòu)計(jì)算硬件的通用管理。

此外,關(guān)于異構(gòu)計(jì)算的開源項(xiàng)目社區(qū)還有:TornadoVM項(xiàng)目、RISC-V社區(qū)、OCP社區(qū)(Open System Firmware)、OCP社區(qū)(Open Acceleration Infra)等。

其中TornadoVM項(xiàng)目致力于實(shí)現(xiàn)Java在異構(gòu)計(jì)算硬件的運(yùn)行。和華為開源全場景AI計(jì)算框架MindSpore一樣,都是基于源碼的編譯優(yōu)化(Source to Source),需要逐層迭代、逐層打開、逐層替換的編譯過程。

致力于整合的開放異構(gòu)計(jì)算框架

現(xiàn)在的異構(gòu)計(jì)算、開源生態(tài)面臨一個(gè)巨大的困難,就是應(yīng)用層面、管理層面和物理設(shè)備層面的開發(fā)者未能實(shí)現(xiàn)互相交談,整個(gè)計(jì)算的生態(tài)面還沒有建立起來,造成很多產(chǎn)業(yè)割裂的“煙囪”問題。

為此,正在推動(dòng)一個(gè)新的開源項(xiàng)目:開放異構(gòu)計(jì)算框架(Open Heterogeneous Computing Framework),希望把上游社區(qū)的異構(gòu)計(jì)算的項(xiàng)目,根據(jù)場景做端到端的整合。

目前已經(jīng)開展了對已有上游異構(gòu)計(jì)算相關(guān)開源項(xiàng)目的集成、測試以及標(biāo)準(zhǔn)文檔的撰寫工作。

展望未來,5G、AI、云計(jì)算、大數(shù)據(jù)、IoT等技術(shù)推動(dòng)的萬物互聯(lián)時(shí)代即將到來。IDC預(yù)測數(shù)據(jù)顯示,到2023年全球各種類物聯(lián)網(wǎng)終端數(shù)量將達(dá)352億個(gè),海量連接產(chǎn)生的數(shù)據(jù)量達(dá)175ZB。

隨著數(shù)字化進(jìn)程的推進(jìn),算力需求將越來越大,數(shù)據(jù)中心將逐步演變?yōu)橛?jì)算中心,算力將成為新的生產(chǎn)力。在多種數(shù)據(jù)類型和場景驅(qū)動(dòng)下,異構(gòu)計(jì)算將獲得快速發(fā)展,異構(gòu)計(jì)算的最新發(fā)展趨勢值得每一個(gè)有志未來的開發(fā)者關(guān)注。

分享到

zhangnn

相關(guān)推薦