本文來自微信公眾號(hào)“CSDN”。
在AI(人工智能)的場景下,使用各種硬件加速器包括GPU、AI專用加速卡等對(duì)AI算法進(jìn)行加速已經(jīng)成為必不可少的選擇。由于這類GPU、AI專用加速卡的價(jià)值占據(jù)服務(wù)器成本相當(dāng)大的比例,甚至超過一半的成本,因此如何使用好這些高價(jià)值的設(shè)備、提高業(yè)務(wù)對(duì)它們的利用率、提高對(duì)它們的運(yùn)維效率成為企業(yè)非常關(guān)注的要點(diǎn)。
把資源進(jìn)行池化是數(shù)據(jù)中心提高資源利用率、提高運(yùn)維效率的最重要的手段之一。資源池化是通過分布式軟件、虛擬化等技術(shù),把某一類資源抽象成為一種可以按照運(yùn)維的管理要求、被整個(gè)數(shù)據(jù)中心各種用戶和業(yè)務(wù)共享的資源,從而打破資源被用戶和業(yè)務(wù)獨(dú)占使用的模式,打破單臺(tái)服務(wù)器的CPU、磁盤、網(wǎng)卡等物理資源數(shù)量的固定配比,并且能夠動(dòng)態(tài)根據(jù)用戶和業(yè)務(wù)的需求來進(jìn)行申請(qǐng)和釋放。例如分布式的存儲(chǔ)池、軟件定義網(wǎng)絡(luò)、云原生、云計(jì)算就是利用資源池化的思想和技術(shù)對(duì)磁盤、網(wǎng)絡(luò)、服務(wù)器節(jié)點(diǎn)、業(yè)務(wù)應(yīng)用等資源進(jìn)行資源池化后的資源抽象。
近幾年隨著AI的快速發(fā)展,業(yè)務(wù)的快速落地,GPU、AI專用加速卡作為一種通用資源出現(xiàn)在數(shù)據(jù)中心。為了提高業(yè)務(wù)對(duì)它們的利用率、提高它們的運(yùn)維效率,它們同樣需要進(jìn)行資源池化。GPU池化之后可以如同分布式共享存儲(chǔ)一樣,在數(shù)據(jù)中心被不同用戶、業(yè)務(wù)彈性使用。例如下圖是趨動(dòng)科技(https://www.virtaitech.com/)的GPU資源池化方案所能夠呈現(xiàn)的效果。
趨動(dòng)科技OrionX AI算力資源池化解決方案
經(jīng)過對(duì)GPU進(jìn)行資源池化之后,整個(gè)數(shù)據(jù)中心不同物理節(jié)點(diǎn)的GPU卡都被抽象成為一種虛擬的GPU資源池。上層應(yīng)用不再直接訪問物理GPU,而是訪問一種虛擬的GPU。以業(yè)內(nèi)熟知的存儲(chǔ)池的特點(diǎn)作為類比,可以看到對(duì)GPU進(jìn)行資源池化之后具有和分布式存儲(chǔ)池相似的特點(diǎn)。
存儲(chǔ)池與GPU池化的特點(diǎn)類比
GPU資源池
GPU在數(shù)據(jù)中心經(jīng)過資源池化之后,可以在如下的方面提升資源利用率,提高運(yùn)維效率,幫助企業(yè)提高ROI:
●業(yè)務(wù)按需申請(qǐng)GPU資源。很多業(yè)務(wù),尤其是在線生產(chǎn)業(yè)務(wù)并不是要求算力越高越好。在線業(yè)務(wù)的負(fù)載來自于網(wǎng)絡(luò),只要在滿足設(shè)定的計(jì)算延遲目標(biāo)即可,并不是越快越好。業(yè)務(wù)對(duì)于顯存的使用一般都不是正好把單個(gè)GPU的顯存用滿,單個(gè)業(yè)務(wù)獨(dú)占GPU會(huì)有大量顯存空閑。相對(duì)傳統(tǒng)的單個(gè)業(yè)務(wù)獨(dú)占使用一個(gè)物理GPU,經(jīng)過資源池化之后的虛擬GPU可以避免資源浪費(fèi)。
●業(yè)務(wù)動(dòng)態(tài)申請(qǐng)GPU資源,及時(shí)釋放。不少企業(yè)為內(nèi)部開發(fā)投入了大量的GPU資源,然而開發(fā)人員對(duì)GPU的利用往往很不充分——比如當(dāng)他們?cè)谶M(jìn)行代碼閱讀、代碼調(diào)試的過程中,大量的時(shí)間里GPU都是處于閑置狀態(tài)。傳統(tǒng)的GPU管理運(yùn)維模式中GPU被獨(dú)占地分配到一個(gè)運(yùn)行環(huán)境中,即使應(yīng)用程序不使用GPU,該GPU也不能被重新分配利用,從而被浪費(fèi)。經(jīng)過資源池化的虛擬GPU由于支持動(dòng)態(tài)申請(qǐng)釋放、自動(dòng)根據(jù)調(diào)度算法使用整個(gè)數(shù)據(jù)中心的空閑GPU資源,所以可以用同樣的GPU資源數(shù)量支撐數(shù)倍的開發(fā)人員。
●有效使用碎片化的GPU資源。在實(shí)際場景中會(huì)有各種可能導(dǎo)致GPU無法被分配使用的情況。例如有的業(yè)務(wù)需求大量的CPU資源、內(nèi)存資源,會(huì)導(dǎo)致某個(gè)節(jié)點(diǎn)的CPU、內(nèi)存首先成為瓶頸從而有剩余GPU無法使用。GPU資源池化支持遠(yuǎn)程使用GPU,從而這部分剩余GPU可以提供給數(shù)據(jù)中心其他業(yè)務(wù)使用。一些分布式AI應(yīng)用要求每個(gè)節(jié)點(diǎn)GPU數(shù)量一致,但是由于GPU被碎片化申請(qǐng)走,會(huì)導(dǎo)致這類業(yè)務(wù)不能很好地被排布,導(dǎo)致剩余碎片化資源無法被使用。
基于應(yīng)用任務(wù),實(shí)時(shí)動(dòng)態(tài)調(diào)度GPU資源。傳統(tǒng)的GPU管理分配模式下,GPU分配給不同的虛擬機(jī)、容器、業(yè)務(wù)之后,就無法再干預(yù)應(yīng)用程序?qū)PU資源的使用和訪問。而經(jīng)過GPU資源池化之后,由于應(yīng)用程序?qū)PU的訪問和使用會(huì)實(shí)時(shí)經(jīng)過池化軟件的控制路徑和數(shù)據(jù)路徑,配合池化軟件的支持,可以在滿足業(yè)務(wù)需求的前提下,進(jìn)一步榨取GPU的利用空間。
●減少運(yùn)維異構(gòu)配置的服務(wù)器帶來的復(fù)雜性。同一個(gè)數(shù)據(jù)中心服務(wù)器配置不一樣的原因有兩類。一類是用戶主動(dòng)引入異構(gòu)配置服務(wù)器來為不同的業(yè)務(wù)選擇優(yōu)化的硬件配置;另外一類是由于歷史原因,一些尚未被淘汰的服務(wù)器仍然在使用。這些配置不同的服務(wù)器極大提高了運(yùn)維復(fù)雜性,也限制了業(yè)務(wù)對(duì)資源使用的有效性。因?yàn)楣潭ǖ姆?wù)器配置與發(fā)展變化的業(yè)務(wù)是有天然的矛盾的,而服務(wù)器的采購、淘汰是對(duì)任何企業(yè)都是一個(gè)相對(duì)緩慢的過程,這樣的問題在傳統(tǒng)的GPU管理下尤為突出。而經(jīng)過資源池化的GPU資源池是以整個(gè)數(shù)據(jù)中心作為一層分布式使用模式,可以打破這種物理資源配比,提高運(yùn)維效率和業(yè)務(wù)使用資源效率。
●簡化機(jī)柜、制冷、供電等一系列基礎(chǔ)設(shè)施的要求,減少碳排放。GPU服務(wù)器不僅是高價(jià)值資產(chǎn),同時(shí)也是耗電大戶。傳統(tǒng)的機(jī)柜原來能放10臺(tái)甚至20臺(tái)2U服務(wù)器,如果需要安裝高配的GPU服務(wù)器,一個(gè)機(jī)柜甚至只能放一臺(tái)GPU服務(wù)器。一些數(shù)據(jù)中心可能因此出現(xiàn)容量不夠的情況。通過GPU資源池化,合理配置GPU服務(wù)器和CPU服務(wù)器,可以大幅度減少對(duì)基礎(chǔ)設(shè)施的要求及成本。
以上是一些業(yè)務(wù)使用經(jīng)過資源池化抽象之后的虛擬GPU給企業(yè)帶來的好處。那么是否一個(gè)企業(yè)的數(shù)據(jù)中心的GPU服務(wù)器都需要通過GPU資源池化軟件抽象成為這種虛擬化的GPU呢?不同業(yè)務(wù)場景下的答案是不同的。在一些特定場景下,某些應(yīng)用程序仍然有直接訪問使用GPU的需求。類比于公有云的環(huán)境下,大部分用戶使用的是經(jīng)過虛擬化的虛擬機(jī),但是為了滿足某些實(shí)際場景的需求,公有云還提供裸金屬服務(wù)器這種直接使用物理資源的方式。
如何管理一個(gè)數(shù)據(jù)中心的GPU,既能夠提供虛擬GPU的能力來實(shí)現(xiàn)對(duì)GPU資源高效的管理和使用,也能滿足特定需求下直接訪問使用物理GPU。答案就是在GPU資源池化的基礎(chǔ)之上,實(shí)現(xiàn)GPU雙資源池。
GPU雙資源池
對(duì)于AI的場景來說,哪些會(huì)有直接訪問GPU的需求呢?盡管經(jīng)過GPU資源池化之后的虛擬GPU保持了CUDA接口兼容,支持絕大部分的CUDA接口,但是仍然有部分能力和直接使用物理GPU有所差異,或者不被支持。
●和debugger或者profiler相關(guān)的功能。和CPU虛擬化這種有完善硬件、操作系統(tǒng)支持不同,目前GPU、AI專用加速芯片對(duì)虛擬化方面的支持還比較薄弱。單純依賴軟件來完全實(shí)現(xiàn)虛擬化環(huán)境下的debugger、profiler是不可行的。例如英偉達(dá)GPU的vGPU對(duì)這方面的支持也是有非常大的限制,不具有實(shí)操意義。因此在應(yīng)用開發(fā)過程中如果依賴這類功能,需要直接訪問使用物理GPU。
●出于研究目的,對(duì)應(yīng)用算法的性能做深度分析的場景。盡管在大部分AI的場景,例如趨動(dòng)科技的OrionX GPU資源池軟件可以做到性能接近物理GPU的性能,但是在做學(xué)術(shù)研究,或者在專門針對(duì)GPU性能、調(diào)度進(jìn)行研究的時(shí)候,為了得到可以在其他非GPU資源池化環(huán)境下可以復(fù)現(xiàn)的結(jié)論,需要直接在物理GPU上做相關(guān)的測試和研究。
某些非云原生的商業(yè)應(yīng)用,出于保護(hù)知識(shí)產(chǎn)權(quán)的目的,在發(fā)布license時(shí)深度綁定某一些物理資源特征,導(dǎo)致不可以使用虛擬GPU。
●用戶硬件、軟件更新非???,緊跟GPU廠商的硬件、軟件發(fā)布的情況。不管是哪種GPU資源池化方案、GPU虛擬化方案,都是一種第三方的軟件實(shí)現(xiàn),都是基于某一些特定版本進(jìn)行支持。那么存在這一類軟件落后于最新GPU硬件版本的時(shí)間差。包括英偉達(dá)原廠的vGPU軟件也是如此。如果用戶希望在這個(gè)時(shí)間差內(nèi)使用最新的硬件和軟件,那么需要直接使用物理GPU。
基于以上的分析,我們希望既要通過GPU資源池化使用虛擬GPU來提高GPU的利用率,又的確有直接訪問使用物理GPU的需求。一個(gè)簡單并且直接的方法就是在運(yùn)維數(shù)據(jù)中心的時(shí)候,固定劃分兩部分GPU服務(wù)器,一部分安裝GPU資源池化軟件,一部分維持傳統(tǒng)的使用物理GPU的方法。這樣的方法雖然簡單,但是弊端也比較明顯。
●運(yùn)維復(fù)雜,兩個(gè)資源視圖使得GPU的管理復(fù)雜化。哪些GPU型號(hào)需要如何劃分,需要?jiǎng)澐侄嗌贁?shù)量,都是非常難決策的問題。
●可能導(dǎo)致GPU資源無法充分使用。因?yàn)殪o態(tài)的數(shù)量劃分難以適應(yīng)動(dòng)態(tài)的業(yè)務(wù)增長和變化。數(shù)量劃分少會(huì)導(dǎo)致不夠用,數(shù)量劃分多了會(huì)導(dǎo)致利用不高。
因此,GPU雙資源池不是一個(gè)簡單的靜態(tài)的GPU使用功能的劃分,而應(yīng)該是一個(gè)統(tǒng)一的管理視圖,動(dòng)態(tài)兼顧兩類功能的需求。
趨動(dòng)科技的OrionX GPU資源池化方案就支持這樣的雙資源池管理模式。在GPU服務(wù)器資源加入GPU資源池集群的時(shí)候,用戶可以使用參數(shù)對(duì)GPU卡進(jìn)行初始設(shè)定(物理或虛擬),可以指定一部分為物理GPU,一部分為虛擬GPU。初始化之后,用戶可以通過CLI/API或圖形界面進(jìn)行切換,下圖顯示的是兩臺(tái)服務(wù)器上各有一塊GPU卡,用戶可以通過該界面進(jìn)行虛實(shí)的切換。
OrionX管理界面
用戶還可以設(shè)置高級(jí)參數(shù),來自動(dòng)設(shè)置OrionX vGPU的占比,如下圖界面操作:
OrionX支持自動(dòng)配比虛實(shí)GPU資源
OrionX的雙資源池管理能力還可以配合對(duì)應(yīng)的Kubernetes插件,和Kubernetes的設(shè)備管理能力無縫結(jié)合,實(shí)現(xiàn)OrionX管理界面和Kubernetes的GPU管理能力融合而不沖突。虛擬GPU和物理GPU在Kubernetes中對(duì)應(yīng)不同類型的資源、業(yè)務(wù)按照自己的需求申請(qǐng)不同類型的GPU。兩種資源配比的動(dòng)態(tài)調(diào)整也會(huì)和Kubernetes的資源管理能力聯(lián)動(dòng)。
GPU資源池化是AI應(yīng)用落地走向成熟的重要里程碑,說明企業(yè)已經(jīng)從關(guān)注功能到開始關(guān)注效率。計(jì)算機(jī)領(lǐng)域其他成熟的資源都經(jīng)歷了這個(gè)過程。GPU資源池化也是這兩年的熱門技術(shù),已經(jīng)逐漸被市場認(rèn)可,在互聯(lián)網(wǎng)、金融、電信運(yùn)營商、自動(dòng)駕駛、科研機(jī)構(gòu)和高校等大量的行業(yè)企業(yè)得到應(yīng)用。而從GPU資源池到GPU雙資源池,更是推動(dòng)企業(yè)放心大膽接受這種新興的技術(shù),為企業(yè)技術(shù)決策者吃個(gè)定心丸,進(jìn)退自如,虛實(shí)靈活切換,滿足業(yè)務(wù)需求,增強(qiáng)彈性,規(guī)避技術(shù)風(fēng)險(xiǎn)。
Reference:
https://docs.nvidia.com/grid/latest/grid-vgpu-user-guide/index.html