• 正文
    • 1 計(jì)算任務(wù)的特征
    • 2 理想化的算力調(diào)度
    • 3 實(shí)際算力調(diào)度中的問(wèn)題
    • 4 宏觀視角:多租戶多系統(tǒng)的算力調(diào)度
    • 5 算力調(diào)度的分層
  • 相關(guān)推薦
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

聊一聊算力調(diào)度

2024/11/20
4505
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

算力調(diào)度”的概念,這幾年越來(lái)越多的被提及。剛聽到這個(gè)概念的時(shí)候,我腦海里一直拐不過(guò)彎。作為底層芯片出身的我,一直認(rèn)為:算力是硬件服務(wù)器和集群,他在某個(gè)地方,就是固定的;根本就不存在算力的調(diào)度,調(diào)度的應(yīng)該是上層的業(yè)務(wù)軟件。

經(jīng)過(guò)跟行業(yè)眾多朋友的交流和思考后,我逐漸能夠理解“算力調(diào)度”所表達(dá)的意思。從業(yè)務(wù)的視角,客戶關(guān)心的是業(yè)務(wù)本身,需要算力隨時(shí)隨地可用,而不需要關(guān)注承載業(yè)務(wù)的具體的硬件在哪里。當(dāng)然,要實(shí)現(xiàn)不需要關(guān)注硬件,有許多工作要做,這就是“算力調(diào)度”要完成的事情,也就是說(shuō):“算力調(diào)度,不僅僅是調(diào)度”。

本篇文章,我們簡(jiǎn)單聊一聊算力調(diào)度,僅供探討,歡迎私信交流。

1 計(jì)算任務(wù)的特征

1.1 計(jì)算任務(wù)的時(shí)間和空間特征

計(jì)算任務(wù)(Workload,也譯作工作任務(wù)、工作負(fù)載等),是一個(gè)或一組相關(guān)的、運(yùn)行中的應(yīng)用程序。

站在軟件運(yùn)行的角度,根據(jù)運(yùn)行時(shí)間的長(zhǎng)短,我們可以把計(jì)算任務(wù)簡(jiǎn)單的分為兩類,短期型任務(wù)和常駐型任務(wù):

短期型任務(wù)指的是,任務(wù)開始執(zhí)行,會(huì)在一定的時(shí)間內(nèi)運(yùn)行完成,結(jié)束后會(huì)釋放計(jì)算資源。

常駐型任務(wù)指的是,沒有外部強(qiáng)制關(guān)閉的話,任務(wù)會(huì)一直處于執(zhí)行狀態(tài),不會(huì)結(jié)束。

從微觀的看,某個(gè)特定的處理器,在其上運(yùn)行的程序(線程)是分時(shí)調(diào)度的。這樣,線程的資源占用不會(huì)大于1個(gè)CPU核。

但相對(duì)宏觀的某個(gè)計(jì)算任務(wù)(一個(gè)進(jìn)程或一組相關(guān)的進(jìn)程),其占用的處理器資源既可以少于1個(gè)CPU核,也可以是多個(gè)CPU核,甚至多個(gè)CPU芯片、多臺(tái)服務(wù)器的集群,直到成千上萬(wàn)臺(tái)服務(wù)器的大集群。最典型的例子就是AI大模型訓(xùn)練,需要上千臺(tái)服務(wù)器上萬(wàn)張GPU卡的計(jì)算集群來(lái)運(yùn)行大模型訓(xùn)練的計(jì)算任務(wù),并且一次計(jì)算任務(wù)運(yùn)行會(huì)持續(xù)數(shù)十天。

串行和并行,會(huì)影響計(jì)算任務(wù)的時(shí)間和空間。串行,是以時(shí)間換空間;反過(guò)來(lái),并行則是以空間換時(shí)間。

當(dāng)計(jì)算資源有限而計(jì)算任務(wù)尺寸較大時(shí),可以把計(jì)算任務(wù)拆分成許多小計(jì)算任務(wù),然后這些小計(jì)算任務(wù)串行運(yùn)行。雖然計(jì)算的時(shí)間會(huì)增大,但可以在較小規(guī)模的計(jì)算資源上完成計(jì)算。

反過(guò)來(lái),當(dāng)計(jì)算任務(wù)的運(yùn)行時(shí)間非常長(zhǎng),我們也可以把任務(wù)拆分成短任務(wù),這些短任務(wù)并行運(yùn)行在不同的計(jì)算資源上,從而減少計(jì)算的時(shí)間。這也就是我們經(jīng)常說(shuō)的并行加速。

1.2 計(jì)算的兩種形態(tài)

根據(jù)軟件任務(wù)的尺寸和硬件服務(wù)器尺寸的匹配程度,可以簡(jiǎn)單的把計(jì)算分為兩種類型:

第一種,一臺(tái)硬件服務(wù)器處理很多件計(jì)算任務(wù)。

云計(jì)算,通過(guò)虛擬化或容器的方式,可以把單臺(tái)服務(wù)器分割成多份,每一個(gè)虛機(jī)或容器,就運(yùn)行“一個(gè)計(jì)算任務(wù)”,一臺(tái)服務(wù)器可以同時(shí)支持多個(gè)計(jì)算任務(wù)運(yùn)行。

目前,AI推理的計(jì)算任務(wù),通常也可以在一臺(tái)服務(wù)器尺寸范圍內(nèi)完成。也因此,AI推理計(jì)算任務(wù)通常是基于云虛機(jī)或容器的方式來(lái)運(yùn)行。

第二種,很多臺(tái)硬件服務(wù)器處理一件計(jì)算任務(wù)。

如超級(jí)計(jì)算(HPC),超算的計(jì)算節(jié)點(diǎn)可以看做是一臺(tái)計(jì)算機(jī),然后超算實(shí)際上是這些計(jì)算節(jié)點(diǎn)組成的計(jì)算集群。超算的計(jì)算任務(wù)都比較大,通過(guò)并行占用所有計(jì)算資源的方式,達(dá)到快速計(jì)算的目的。

AI模型的訓(xùn)練的計(jì)算任務(wù),尺寸非常大,所以把模型進(jìn)行拆分,拆分成若干小的計(jì)算任務(wù),并且這些小的計(jì)算任務(wù)之間的聯(lián)系更加緊密,是一種緊耦合的關(guān)系。也因此,AI模型的訓(xùn)練,通常是千卡萬(wàn)卡,甚至更多GPU卡的高性能集群計(jì)算,各個(gè)需要計(jì)算節(jié)點(diǎn)之間需要高速(網(wǎng)絡(luò))互聯(lián)通信。AI訓(xùn)練的計(jì)算架構(gòu),更接近HPC。

1.3 分布式解構(gòu)

隨著系統(tǒng)越來(lái)越大,單機(jī)計(jì)算已經(jīng)非常的少見,集群計(jì)算已經(jīng)成為主流。云計(jì)算模式,雖然某個(gè)具體的計(jì)算任務(wù)是放在一臺(tái)計(jì)算服務(wù)器上去運(yùn)行,而實(shí)際的情況很可能是——這個(gè)計(jì)算任務(wù)是某個(gè)巨服務(wù)解構(gòu)拆分出的其中一個(gè)微服務(wù)。每個(gè)微服務(wù)聚焦做一個(gè)相對(duì)簡(jiǎn)單的事情,從而使得單個(gè)微服務(wù)可以在單機(jī)上以虛機(jī)或容器的方式運(yùn)行。

那這樣的話,計(jì)算豈不可以統(tǒng)一到一種形態(tài)?即單個(gè)計(jì)算任務(wù)需要多臺(tái)計(jì)算服務(wù)器來(lái)承載其運(yùn)行。這里的關(guān)鍵,是在于大計(jì)算任務(wù)解構(gòu)拆分的不同小計(jì)算任務(wù)之間的交互耦合度。這樣,根據(jù)交互耦合度和網(wǎng)絡(luò)硬件實(shí)現(xiàn),我們分為如下幾個(gè)情況(耦合性依次降低):

IB高性能網(wǎng)絡(luò)+內(nèi)存一致性硬件加速。計(jì)算任務(wù)之間完全緊耦合,通常采用超級(jí)計(jì)算(HPC)模式。超算的各個(gè)節(jié)點(diǎn)之間主流是通過(guò)IB網(wǎng)絡(luò)連接,但會(huì)在其上構(gòu)建高效的內(nèi)存一致性協(xié)議加速處理,從而使得整個(gè)超算連成一臺(tái)計(jì)算機(jī)。

IB高性能網(wǎng)絡(luò)。計(jì)算任務(wù)之間,聯(lián)系緊密,數(shù)據(jù)量大,延遲敏感。計(jì)算機(jī)集群,通過(guò)IB網(wǎng)絡(luò)連接。本質(zhì)上仍然是多臺(tái)計(jì)算機(jī)組成的計(jì)算集群,計(jì)算任務(wù)間靠點(diǎn)對(duì)點(diǎn)通信交互數(shù)據(jù)。典型案例如AI大模型訓(xùn)練。

RoCEv2高性能網(wǎng)絡(luò)。計(jì)算任務(wù)之間延遲敏感,但聯(lián)系緊密程度再低一些,通常可以選用RoCEv2的方式。RoCEv2在高性能、兼容性和低成本方面達(dá)成一個(gè)均衡。典型案例如EBS高性能塊存儲(chǔ)和分布式文件存儲(chǔ)。

標(biāo)準(zhǔn)Ethernet網(wǎng)絡(luò)。計(jì)算任務(wù)之間完全解耦,則通常采用標(biāo)準(zhǔn)以太網(wǎng)的方式。傳統(tǒng)的云計(jì)算下,微服務(wù)解構(gòu)的互聯(lián)網(wǎng)業(yè)務(wù)通常采取此網(wǎng)絡(luò)方式。

2 理想化的算力調(diào)度

依據(jù)計(jì)算任務(wù)的時(shí)間和空間特性,相對(duì)應(yīng)的算力調(diào)度方式也就分為四類:

短期的小尺寸計(jì)算任務(wù)。這是通常大家理解的算力調(diào)度,也是算力調(diào)度最簡(jiǎn)單的情況。

短期的大尺寸計(jì)算任務(wù)。超算或AI大模型訓(xùn)練的計(jì)算模式。

常駐的小尺寸計(jì)算任務(wù)。云計(jì)算常見的業(yè)務(wù)組織方式,是常駐的小尺寸計(jì)算任務(wù)。

長(zhǎng)期的大尺寸計(jì)算任務(wù)。實(shí)際的互聯(lián)網(wǎng)型業(yè)務(wù)系統(tǒng)。

這里,我們從計(jì)算的角度,談一下計(jì)算方式的統(tǒng)一:

一個(gè)是,計(jì)算任務(wù)的解構(gòu)(計(jì)算任務(wù)的彈性)。大尺寸的計(jì)算任務(wù),可以拆分成若干個(gè)小尺寸的計(jì)算任務(wù)。從而使得計(jì)算任務(wù)能夠匹配單個(gè)裸機(jī)的計(jì)算主機(jī)(裸機(jī)、虛擬機(jī)、容器等);

另一個(gè),計(jì)算資源的池化(虛擬化)和再組合(計(jì)算主機(jī)的彈性)。計(jì)算主機(jī)可以從1/N個(gè)處理器核、擴(kuò)展到多個(gè)處理器核,甚至擴(kuò)展到M個(gè)計(jì)算節(jié)點(diǎn)。因?yàn)橛?jì)算主機(jī)的彈性,從而使得計(jì)算主機(jī)既可以適配小尺寸的計(jì)算任務(wù),也可以適配大尺寸的計(jì)算任務(wù)。

兩者相向而行,并且均具有一定的(尺寸)彈性,從而能夠盡可能的適配對(duì)方。

3 實(shí)際算力調(diào)度中的問(wèn)題

3.1 問(wèn)題一:靜態(tài)調(diào)度和動(dòng)態(tài)調(diào)度

靜態(tài)調(diào)度:計(jì)算任務(wù)在初始運(yùn)行時(shí),分配計(jì)算資源時(shí)候的調(diào)度。一般來(lái)說(shuō),短期型的計(jì)算任務(wù),通常只有靜態(tài)調(diào)度,也即僅調(diào)度一次,運(yùn)行結(jié)束后就立刻釋放計(jì)算資源。

動(dòng)態(tài)調(diào)度:計(jì)算任務(wù)在運(yùn)行的過(guò)程中,受計(jì)算資源的各類情況變化的影響,計(jì)算任務(wù)需要(重新)調(diào)度到其他計(jì)算資源,也即我們通常理解的業(yè)務(wù)遷移。常駐型的計(jì)算任務(wù)通常會(huì)遇到這樣的情況。

這里舉一個(gè)動(dòng)態(tài)調(diào)度的案例——跨云邊端的高階自動(dòng)駕駛汽車

初始的時(shí)候,車輛由駕駛員駕駛。此刻,其他乘車人員,可以在車上玩游戲、看電影、聽音樂(lè)、刷短視頻等等。這些計(jì)算任務(wù)都運(yùn)行在車輛終端本地。

當(dāng)開啟自動(dòng)駕駛時(shí),本地算力不夠。游戲、電影、音樂(lè)、短視頻等計(jì)算任務(wù),由于優(yōu)先級(jí)較低,統(tǒng)一調(diào)度到邊緣側(cè)甚至云側(cè)。而自動(dòng)駕駛的計(jì)算任務(wù),由于尺寸較大,通常也是由解構(gòu)的若干微服務(wù)組成。其中優(yōu)先級(jí)較高的少量微服務(wù),運(yùn)行在車輛終端本地;而優(yōu)先級(jí)較低的大部分微服務(wù),也和游戲等其他計(jì)算任務(wù)一樣,運(yùn)行在邊緣側(cè)甚至云側(cè)。

解除自動(dòng)駕駛后,自動(dòng)駕駛相關(guān)微服務(wù)(計(jì)算任務(wù))退出,并且釋放本地和邊緣、云端的算力資源。而游戲等其他計(jì)算任務(wù)再?gòu)倪吘?、云端,重新調(diào)度(遷移)到車輛終端本地。

3.2 問(wèn)題二:任務(wù)的狀態(tài)

無(wú)狀態(tài)計(jì)算任務(wù)

如果是無(wú)狀態(tài)的計(jì)算任務(wù),的確可以隨便調(diào)度。

但一個(gè)計(jì)算任務(wù)至少有兩個(gè)狀態(tài),一個(gè)是計(jì)算任務(wù)的輸入,一個(gè)是計(jì)算任務(wù)的輸出。因此,任務(wù)調(diào)度會(huì)受輸入源和輸出目的的約束——不管調(diào)度到哪里,都需要能訪問(wèn)源數(shù)據(jù)和寫入結(jié)果數(shù)據(jù)。

有狀態(tài)計(jì)算任務(wù)

如果是有狀態(tài)的計(jì)算任務(wù),那么在運(yùn)行的過(guò)程中,一方面是盡可能提高運(yùn)行平臺(tái)的高可用性,盡量減少調(diào)度;另一方面則當(dāng)不得不調(diào)度的時(shí)候,運(yùn)行現(xiàn)場(chǎng)需要和計(jì)算任務(wù)一起調(diào)度。

3.3 任務(wù)間的關(guān)聯(lián)性

大任務(wù)拆分成小任務(wù)(巨服務(wù)微服務(wù)化),這些小任務(wù)間必然需要相互訪問(wèn)。那么在調(diào)度的時(shí)候,就需要考慮這一層約束:凡是有關(guān)聯(lián)的計(jì)算任務(wù),只能在一個(gè)集群(可網(wǎng)絡(luò)訪問(wèn))內(nèi)調(diào)度。如果是跨集群,或者跨數(shù)據(jù)中心和云邊端的計(jì)算任務(wù),則需要考慮網(wǎng)絡(luò)打通、訪問(wèn)延遲、訪問(wèn)權(quán)限等方面的問(wèn)題。事情遠(yuǎn)不是理想化的算力調(diào)度那么簡(jiǎn)單!

因此,算力調(diào)度,此刻應(yīng)該有兩層:

第一層,是全局算力調(diào)度。為這個(gè)大任務(wù),或者用戶的若干大任務(wù)分配一個(gè)獨(dú)立的計(jì)算集群,可以是跨數(shù)據(jù)中心、跨云邊端的算力資源所組成的“虛擬”的集群。

另一層,則是用戶在自己的集群內(nèi)部,進(jìn)行業(yè)務(wù)層次的算力再調(diào)度。

3.4 任務(wù)的計(jì)算平臺(tái)要求

計(jì)算平臺(tái)由如下部分組成:

CPU處理器。CPU是圖靈完備的,可以自運(yùn)行。

內(nèi)存。計(jì)算數(shù)據(jù)暫存和數(shù)據(jù)共享的區(qū)域。

存儲(chǔ)I/O。本地的存儲(chǔ)通過(guò)片間總線,如PCIe;遠(yuǎn)程的存儲(chǔ)需要通過(guò)網(wǎng)絡(luò)。

網(wǎng)絡(luò)I/O。網(wǎng)絡(luò)主要用于外部通信。在集群計(jì)算和計(jì)算存儲(chǔ)分離的場(chǎng)景下,網(wǎng)絡(luò)的功能主主要是三個(gè):

訪問(wèn)內(nèi)網(wǎng),東西向網(wǎng)絡(luò),作為集群內(nèi)部不同節(jié)點(diǎn)間的網(wǎng)絡(luò)通信,目前主要是IB;

訪問(wèn)遠(yuǎn)程存儲(chǔ),目前主要使用RoCEv2;

訪問(wèn)外網(wǎng),南北向網(wǎng)絡(luò),作為集群外部的訪問(wèn)端口,目前主要是Ethernet。

一個(gè)或多個(gè)加速處理器:

從整個(gè)架構(gòu)看,加速處理器是和CPU功能類似的計(jì)算部件。

其他加速處理器是非圖靈完備的,均需要組成CPU+xPU的異構(gòu)計(jì)算架構(gòu)。從CPU軟件視角看,加速處理器是跟網(wǎng)絡(luò)和存儲(chǔ)I/O類似的部件。

加速處理器,目前常用可以分為兩類:GPU,通用的并行計(jì)算加速平臺(tái)。DSA。領(lǐng)域?qū)S眉铀倨鳎珼SA是完全專用(ASIC)向通用可編程性的微調(diào)。

因此,計(jì)算任務(wù),在不同計(jì)算平臺(tái)調(diào)度的時(shí)候,需要考慮平臺(tái)的差異性:

CPU架構(gòu)的差異性。CPU是x86、ARM還是其他架構(gòu);

網(wǎng)絡(luò)和存儲(chǔ)接口是否一致;

加速處理器的類型和架構(gòu)是否一致。

目前,算力多樣性已經(jīng)成為困擾算力調(diào)度最大的問(wèn)題。如何在多元異構(gòu)算力平臺(tái)上,實(shí)現(xiàn)統(tǒng)一調(diào)度,是目前算力中心發(fā)展要解決的重要問(wèn)題之一。

4 宏觀視角:多租戶多系統(tǒng)的算力調(diào)度

計(jì)算的形態(tài),從單機(jī)計(jì)算,走到了集群計(jì)算;并且,還在逐漸走進(jìn)跨集群、跨數(shù)據(jù)中心、跨云邊端的協(xié)同計(jì)算,甚至融合計(jì)算。宏觀的看,一個(gè)計(jì)算系統(tǒng),必然是數(shù)以萬(wàn)計(jì)的租戶所擁有的數(shù)以百萬(wàn)計(jì)的大計(jì)算任務(wù)(業(yè)務(wù)系統(tǒng))共存。這里的每個(gè)大計(jì)算任務(wù),又會(huì)拆分成數(shù)十個(gè)甚至上百個(gè)小計(jì)算任務(wù)(微服務(wù))。也因此,宏觀的計(jì)算是:數(shù)以萬(wàn)計(jì)租戶的數(shù)以億計(jì)的計(jì)算任務(wù),并行不悖的交叉混合運(yùn)行在數(shù)十個(gè)甚至上百個(gè)云算力中心、數(shù)以千計(jì)的邊緣數(shù)據(jù)中心,以及數(shù)以百萬(wàn)計(jì)的終端計(jì)算節(jié)點(diǎn)上。

從算力的視角,全局存在一個(gè)統(tǒng)一的調(diào)度系統(tǒng),所有的計(jì)算任務(wù)都是統(tǒng)一的調(diào)度的。調(diào)度系統(tǒng)能完全考慮并滿足所有計(jì)算任務(wù)的各種特性要求。

從業(yè)務(wù)的視角,調(diào)度通常是兩層:

業(yè)務(wù)從全局調(diào)度系統(tǒng)獲取自己的資源(第一層調(diào)度),組成自己的“虛擬”集群;

然后,業(yè)務(wù)的計(jì)算任務(wù),在這“虛擬”集群里再進(jìn)行調(diào)度。

全局調(diào)度為計(jì)算實(shí)例分配好資源之后,仍然可以動(dòng)態(tài)調(diào)度(遷移),以保證計(jì)算實(shí)例的高可用。

業(yè)務(wù)從全局調(diào)度系統(tǒng)獲取資源也是動(dòng)態(tài)的,可增加,可減少。

5 算力調(diào)度的分層

以容器和K8S容器管理為中心的云原生體系,越來(lái)越成熟,行業(yè)里出現(xiàn)了一個(gè)聲音:“是不是傳統(tǒng)IaaS虛擬化層就沒有存在的必要了?”

我們的觀點(diǎn)是:企業(yè)云場(chǎng)景,虛擬化的確沒有必要(企業(yè)云規(guī)模小,沒有必要那么復(fù)雜);但超大規(guī)模多租戶的算力中心場(chǎng)景,IaaS層仍然非常有必要,也仍然非常有價(jià)值。

這樣,在硬件之上,業(yè)務(wù)之下,存在兩層抽象層:

第一層,資源抽象層。通過(guò)計(jì)算機(jī)虛擬化,對(duì)資源進(jìn)行抽象和封裝,以及資源的池化和彈性切分。目前,業(yè)界一些先進(jìn)的解決方案,可以通過(guò)DPU的加持,實(shí)現(xiàn)虛擬化的零損耗,以及裸機(jī)和虛擬機(jī)的統(tǒng)一,既有裸機(jī)的性能又有虛機(jī)的高可用和彈性。因此,裸機(jī)和虛擬主機(jī)的相關(guān)劣勢(shì)已經(jīng)“不復(fù)存在”。此外,通過(guò)虛擬化,可以實(shí)現(xiàn)接口的抽象統(tǒng)一,從而減少多元異構(gòu)算力帶來(lái)架構(gòu)/接口兼容性的問(wèn)題。

第二層,算力調(diào)度層。容器化及云原生的核心優(yōu)勢(shì),是以應(yīng)用為中心:一次打包,到處運(yùn)行。因此,通常是以容器為載體,以容器為基礎(chǔ)調(diào)度粒度,從而實(shí)現(xiàn)算力的高效調(diào)度。

相關(guān)推薦

登錄即可解鎖
  • 海量技術(shù)文章
  • 設(shè)計(jì)資源下載
  • 產(chǎn)業(yè)鏈客戶資源
  • 寫文章/發(fā)需求
立即登錄

公眾號(hào):軟硬件融合;CPU靈活性好但性能較差,ASIC性能極致但靈活性差,魚和熊掌如何兼得,同時(shí)兼顧性能和靈活性,我給出的方案是“軟硬件融合”。軟硬件融合不是說(shuō)要軟硬件緊耦合,相反,是要權(quán)衡在不同層次和粒度解耦之后,再更加充分的協(xié)同。