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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

分享到

zhangnn

相關(guān)推薦