趨動(dòng)科技:論軟件定義GPU對AI數(shù)據(jù)中心優(yōu)化的必要性
2021-07-27 14:34:17 | 來源:財(cái)訊界 |
2021-07-27 14:34:17 | 來源:財(cái)訊界 |
摘要:
今天AI數(shù)據(jù)中心為企業(yè)提供了深度學(xué)習(xí)開發(fā)、測試和生產(chǎn)所需的軟硬件環(huán)境。然而,GPU作為高價(jià)值硬件,卻并沒有做到像SDN網(wǎng)絡(luò)、分布式存儲(chǔ)一樣的數(shù)據(jù)中心級統(tǒng)一運(yùn)維、管理和使用。這導(dǎo)致了GPU當(dāng)前在數(shù)據(jù)中心的尷尬現(xiàn)狀:利用率低、成本高、分配和管理困難。
徹底解決這些痛點(diǎn)的方法需要借鑒軟件定義存儲(chǔ)解決存儲(chǔ)問題、軟件定義網(wǎng)絡(luò)解決網(wǎng)絡(luò)問題、用軟件定義算力來解決GPU問題。采用軟件定義算力理念的GPU池化技術(shù),站在整個(gè)數(shù)據(jù)中心的高度,以GPU虛擬化為基礎(chǔ),突破了傳統(tǒng)GPU虛擬化技術(shù)只能支持GPU共享的限制,融合了GPU共享、聚合和遠(yuǎn)程使用等多種硬核能力,打造全能型軟件定義GPU。通過把物理GPU抽象成類似于分布式存儲(chǔ),可以通過網(wǎng)絡(luò)在數(shù)據(jù)中心內(nèi)全局統(tǒng)一運(yùn)維和管理、任意使用的抽象資源,GPU池化技術(shù)解決了當(dāng)前用戶的痛點(diǎn)。正如當(dāng)年軟件定義存儲(chǔ)剛出現(xiàn)的時(shí)候,有一種觀點(diǎn)認(rèn)為軟件定義存儲(chǔ)性能不如硬件存儲(chǔ),不適合重要應(yīng)用,GPU池化技術(shù)推動(dòng)的軟件定義GPU也遭遇了同樣的認(rèn)識誤區(qū),一些片面的觀點(diǎn)認(rèn)為GPU池化技術(shù)會(huì)引入性能損失,不適合于深度學(xué)習(xí)。從技術(shù)的發(fā)展來看,深度學(xué)習(xí)能夠、也應(yīng)該擁抱GPU池化技術(shù),二者應(yīng)互相配合,才能為用戶提供更適合云的解決方案。
隨著深度學(xué)習(xí)如火如荼地在各企業(yè)的落地,很多企業(yè)都通過自建私有云或者使用公有云的模式,擁有了自己的AI數(shù)據(jù)中心,對內(nèi)或?qū)ν馓峁┥疃葘W(xué)習(xí)的開發(fā)、測試和生產(chǎn)環(huán)境。在AI數(shù)據(jù)中心里,算力通常由GPU等加速芯片來提供。由于GPU成本很高,帶GPU的計(jì)算資源和不帶GPU的計(jì)算資源的成本相差很大,因此如何優(yōu)化一個(gè)AI數(shù)據(jù)中心的運(yùn)營是各個(gè)企業(yè)的基礎(chǔ)架構(gòu)部門、平臺部門和應(yīng)用部門特別關(guān)心的話題。
優(yōu)化一個(gè)數(shù)據(jù)中心,首先看組成現(xiàn)代計(jì)算機(jī)系統(tǒng)的三大件:計(jì)算、網(wǎng)絡(luò)和存儲(chǔ)?,F(xiàn)代的數(shù)據(jù)中心運(yùn)營用軟件定義網(wǎng)絡(luò)(SDN)做網(wǎng)絡(luò)資源抽象,用分布式存儲(chǔ)做存儲(chǔ)資源抽象。這些今天看起來順理成章的技術(shù),也曾經(jīng)歷虛擬網(wǎng)絡(luò)不如物理網(wǎng)絡(luò)性能高抖動(dòng)小,分布式存儲(chǔ)不如本地存儲(chǔ)性能好延遲低且還浪費(fèi)網(wǎng)絡(luò)帶寬的質(zhì)疑。直到今天這些經(jīng)過抽象后的資源性能仍然不如直接使用物理硬件,但是最后其征服整個(gè)業(yè)界的本質(zhì)原因就是資源的全局統(tǒng)一運(yùn)維、管理和使用。“計(jì)算“作為三大件之一也不例外。特定地,對于服務(wù)于深度學(xué)習(xí)的AI數(shù)據(jù)中心,“計(jì)算”更多地是圍繞著GPU。對GPU資源做數(shù)據(jù)中心范圍內(nèi)的資源抽象,使其成為和SDN網(wǎng)絡(luò)、分布式存儲(chǔ)一樣的全局統(tǒng)一運(yùn)維、管理和使用的資源,是優(yōu)化AI數(shù)據(jù)中心的必然思路,也是行之有效的方法。
AI數(shù)據(jù)中心的痛點(diǎn)
趨動(dòng)科技已經(jīng)服務(wù)于互聯(lián)網(wǎng)、金融、教育、電信、交通運(yùn)輸?shù)榷鄠€(gè)行業(yè)的頭部客戶。下面是我們看到的很多客戶在運(yùn)營AI數(shù)據(jù)中心中遇到的痛點(diǎn):
1) GPU資源靜態(tài)分配。各個(gè)小組/部門使用GPU的負(fù)載差異非常大,但是由于應(yīng)用分管、組織架構(gòu)等的原因GPU資源無法輕易在部門之間流動(dòng),造成GPU資源無法被高效利用。
2) 開發(fā)場景GPU利用非常低。在開發(fā)的過程中,程序員可能在寫代碼,可能在調(diào)試bug,甚至可能空閑了去干別的事情。這時(shí)候GPU資源大部分處于空閑,但是傳統(tǒng)獨(dú)占GPU資源的模式使得GPU資源無法給別人使用。而開發(fā)人員并沒有主動(dòng)釋放資源的動(dòng)力。
3) 開發(fā)場景GPU使用體驗(yàn)差。有部分企業(yè)通過任務(wù)提交系統(tǒng)一定程度解決開發(fā)場景GPU利用低的問題。但是這種模式下開發(fā)人員的體驗(yàn)差,他們需要保存環(huán)境、打包鏡像、提交任務(wù)并且等待完成。這種模式會(huì)浪費(fèi)比GPU更昂貴的深度學(xué)習(xí)算法工程師的時(shí)間和注意力。如果是在調(diào)試bug,這種模式對工程師是個(gè)噩夢。
4) 從應(yīng)用側(cè)看GPU資源不夠用,從運(yùn)維側(cè)看GPU利用率低。獨(dú)占GPU的模式使得寶貴的GPU資源很快就被各種場景分配出去了,應(yīng)用方總抱怨GPU資源不夠,但是平臺方看GPU的利用率確實(shí)不高。
5) CPU、GPU的配比困難。服務(wù)器按批次采購,平臺/運(yùn)維要求機(jī)器的型號配置是相對固定的。但是應(yīng)用的類型卻多種多樣,且未來還在不斷變化,不同應(yīng)用需要的CPU、GPU配比是不一樣的。固定的配比容易造成資源的浪費(fèi)。
6) 同一個(gè)任務(wù)負(fù)載存在波峰波谷、不同任務(wù)負(fù)載差異大兩個(gè)復(fù)雜維度使得GPU的分配特別困難,難以高效使用。
從痛點(diǎn)可以看到,雖然實(shí)體上是一個(gè)數(shù)據(jù)中心的運(yùn)營,但是一個(gè)企業(yè)的運(yùn)營說到底是圍繞著人、業(yè)務(wù)和企業(yè)制度來運(yùn)作的??匆粋€(gè)技術(shù)對企業(yè)帶來的價(jià)值,最終還需要體現(xiàn)到這幾個(gè)方面。以數(shù)據(jù)中心云化為例,之所以其成為最佳的實(shí)踐,是因?yàn)樵摷夹g(shù)對采購、運(yùn)維、研發(fā)、生產(chǎn)、風(fēng)控等整個(gè)鏈條的人和部門組織架構(gòu)都產(chǎn)生了深刻的影響;對安全、可控、效率等業(yè)務(wù)需求和企業(yè)制度同樣產(chǎn)生深刻的影響。
上面提到的痛點(diǎn)實(shí)際上很好涵蓋了一個(gè)企業(yè)運(yùn)作的多個(gè)方面。分析完客戶實(shí)際中遇到的痛點(diǎn),我們發(fā)現(xiàn)產(chǎn)生痛點(diǎn)的一個(gè)根本原因在于,GPU資源作為高價(jià)值的硬件資源,但卻不具備像SDN網(wǎng)絡(luò)、分布式存儲(chǔ)那樣數(shù)據(jù)中心級別的統(tǒng)一運(yùn)維、管理和使用的一等公民身份。因此用戶迫切需要一種技術(shù)來消除這種差距。
解決痛點(diǎn)的方向——GPU池化技術(shù)
徹底解決這一痛點(diǎn)的方法需要借鑒軟件定義存儲(chǔ)解決存儲(chǔ)問題、軟件定義網(wǎng)絡(luò)解決網(wǎng)絡(luò)問題、用軟件定義算力來解決GPU問題。采用軟件定義算力理念的GPU池化技術(shù),站在整個(gè)數(shù)據(jù)中心的高度,以GPU虛擬化為基礎(chǔ),突破了傳統(tǒng)GPU虛擬化技術(shù)只能支持GPU共享的限制,融合了GPU共享、聚合和遠(yuǎn)程使用等多種硬核能力,打造全能型軟件定義GPU。
趨動(dòng)科技的OrionX 產(chǎn)品是世界范圍領(lǐng)先的數(shù)據(jù)中心級GPU池化軟件,關(guān)注深度學(xué)習(xí)服務(wù)在企業(yè)內(nèi)的全鏈條優(yōu)化,通過先進(jìn)的技術(shù)解決客戶的實(shí)際痛點(diǎn)。
OrionX并非一個(gè)傳統(tǒng)的GPU虛擬化軟件。傳統(tǒng)的GPU虛擬化只支持本地GPU共享,而OrionX可以把GPU當(dāng)作像分布式存儲(chǔ)那樣作為全局統(tǒng)一運(yùn)維、管理和使用的抽象資源,其能力是傳統(tǒng)GPU虛擬化的超集,支持GPU共享、聚合和遠(yuǎn)程使用等多項(xiàng)硬核技術(shù)。
OrionX把物理GPU資源抽象成可以通過網(wǎng)絡(luò)在數(shù)據(jù)中心內(nèi)任意服務(wù)器都可以直接使用的通用資源,對軟件保持近似于物理GPU的兼容性,支持常用的深度學(xué)習(xí)框架(TensorFlow, PyTorch,PaddlePaddle等),支持深度學(xué)習(xí)的訓(xùn)練/推理/未來更多計(jì)算模式,支持追求極致性能的手寫CUDA代碼的應(yīng)用,可以充分利用成熟的深度學(xué)習(xí)的生態(tài)和社區(qū)力量。
OrionX支持開發(fā)、測試、生產(chǎn)各個(gè)環(huán)節(jié),可以隔離,可以混合部署,保持統(tǒng)一使用模式,并且支持不同環(huán)節(jié)的不同優(yōu)化策略。
OrionX支持本地共享/遠(yuǎn)程共享、本地獨(dú)占/遠(yuǎn)程獨(dú)占、跨物理節(jié)點(diǎn)多合一各種靈活的用法,支持動(dòng)態(tài)配置資源,每一種功能都有實(shí)際對應(yīng)的使用場景。
OrionX GPU資源池內(nèi)的GPU算力即取即用,對其他上層軟件保持資源管理的透明性,做到資源的有效利用。
OrionX對如何提供虛擬GPU,哪些底層細(xì)節(jié)需要隱藏,哪些真實(shí)參數(shù)需要暴露都有科學(xué)的考慮和設(shè)計(jì),并留有豐富的接口和配置,允許平臺層甚至應(yīng)用層做定制化和優(yōu)化,甚至二次開發(fā),例如任務(wù)的排隊(duì)、優(yōu)先級的定義、親和性等,甚至深度學(xué)習(xí)框架本身都可以利用OrionX GPU資源池提供的能力去做非常有用的優(yōu)化。
OrionX GPU池化軟件的效率
正如當(dāng)年軟件定義存儲(chǔ)剛出現(xiàn)的時(shí)候,有一種觀點(diǎn)認(rèn)為軟件定義存儲(chǔ)性能不如硬件存儲(chǔ),不適合重要應(yīng)用,GPU池化技術(shù)推動(dòng)的軟件定義算力也遭遇了同樣的認(rèn)識誤區(qū),一些觀點(diǎn)認(rèn)為GPU池化軟件會(huì)引入性能損失,不適合于深度學(xué)習(xí)。針對深度學(xué)習(xí)的兩類最重要的任務(wù)我們來分析這種觀點(diǎn)的片面性:
訓(xùn)練任務(wù)
《Characterizing Deep Learning Training Workloads on Alibaba-PAI》[1] 分析了阿里一個(gè)訓(xùn)練集群上的負(fù)載特征(見下圖):從任務(wù)數(shù)量上看,約59%的任務(wù)是單卡小任務(wù);從GPU資源消耗上看,雖然81%的GPU是被分布式訓(xùn)練任務(wù)占用(單機(jī)多卡也算分布式),但是這其中有一半的資源是被小于8個(gè)GPU的任務(wù)所占用(1臺物理服務(wù)器可滿足);只有0.7%數(shù)量的任務(wù)是使用超過128個(gè)GPU(需要16臺或更多物理服務(wù)器)。
這個(gè)分析表明,訓(xùn)練任務(wù)是非常多樣化的,其規(guī)模有大有小。因此,整個(gè)數(shù)據(jù)中心的優(yōu)化目標(biāo),應(yīng)該兼顧訓(xùn)練任務(wù)的整體吞吐率,以及GPU資源的整體利用率。提升多個(gè)訓(xùn)練任務(wù)的整體性能,而非強(qiáng)調(diào)單個(gè)任務(wù)的性能,是實(shí)踐中常見的選擇,現(xiàn)在業(yè)內(nèi)有非常多的研究工作都圍繞此開展。深度學(xué)習(xí)框架是很多訓(xùn)練任務(wù)依賴的一類基礎(chǔ)軟件,其設(shè)計(jì)目標(biāo)之一是提升單個(gè)訓(xùn)練任務(wù)的性能。GPU池化軟件的目標(biāo)是通過充分利用數(shù)據(jù)中心內(nèi)所有GPU資源,從而達(dá)到多任務(wù)的整體最優(yōu)。這二者不矛盾??蚣芎统鼗浖梢曰ハ嗯浜希谶_(dá)成多任務(wù)整體最優(yōu)的情況下,盡量讓每個(gè)任務(wù)的運(yùn)行更加優(yōu)化。同時(shí),GPU池化軟件可以通過技術(shù)手段盡量減少自身引入的性能損失。例如,OrionX GPU池化軟件對于典型的TensorFlow、PyTorch訓(xùn)練任務(wù)可以達(dá)到98%以上的效率,即和物理GPU相比小于2%的性能損失。在和框架做共同優(yōu)化的情況下,性能損失還能更低。
推理任務(wù)
和訓(xùn)練任務(wù)動(dòng)輒小時(shí)、天、甚至周量級的完成時(shí)間不同,推理任務(wù)的完成時(shí)間要低得多。典型的在線推理業(yè)務(wù),端到端的延遲需求一般在數(shù)百毫秒級別,包括了客戶端到運(yùn)營商網(wǎng)絡(luò)、運(yùn)營商網(wǎng)絡(luò)到數(shù)據(jù)中心以及在數(shù)據(jù)中心內(nèi)做各種處理的時(shí)間。這類實(shí)時(shí)性要求高的推理任務(wù),需要GPU池化軟件引入的額外延遲非常小。下面是趨動(dòng)科技的OrionX GPU池化軟件在推理任務(wù)上引入的額外延遲的數(shù)據(jù):
即便在最為苛刻的,延遲最低的batch size 1的推理測試中,使用本地物理GPU做一次resnet152的推理延遲為 13.3 毫秒,而使用OrionX GPU池化方案通過RDMA網(wǎng)絡(luò)使用遠(yuǎn)程虛擬GPU,延遲為14.1毫秒。GPU資源經(jīng)過OrionX GPU池化之后,帶來的0.8毫秒的額外延遲僅占數(shù)百毫秒的業(yè)務(wù)要求不足1%。這個(gè)數(shù)據(jù)充分說明了,趨動(dòng)科技的OrionXGPU池化軟件引入的額外延遲非常小,足以支持高實(shí)時(shí)性的在線推理業(yè)務(wù)。
總結(jié)
AI無疑是一個(gè)火熱的詞匯,但是放在整個(gè)計(jì)算機(jī)領(lǐng)域,應(yīng)用的重要性不改變其技術(shù)的本質(zhì),其從硬件到軟件的設(shè)計(jì)思路并沒有什么特殊的地方,沒有哪個(gè)設(shè)計(jì)思路是計(jì)算機(jī)發(fā)展史上的新鮮事。經(jīng)歷行業(yè)長期實(shí)踐經(jīng)驗(yàn),數(shù)據(jù)中心云化是大勢所趨。一個(gè)應(yīng)用要上云,不是讓云來適應(yīng)應(yīng)用,而是應(yīng)用必須要適應(yīng)云,否則只能被更適應(yīng)云的競爭者所替代。GPU池化軟件把物理GPU抽象成類似于分布式存儲(chǔ)的,可以通過網(wǎng)絡(luò)在數(shù)據(jù)中心內(nèi)全局統(tǒng)一運(yùn)維和管理、任意使用的抽象資源,是AI業(yè)務(wù)上云的必然選擇。今天認(rèn)為GPU池化軟件會(huì)引入性能損失,不適合于深度學(xué)習(xí)的看法,和當(dāng)年認(rèn)為軟件定義存儲(chǔ)性能不如硬件存儲(chǔ),不適合重要應(yīng)用的看法一樣,有著相似的片面性。深度學(xué)習(xí)能夠,也應(yīng)該擁抱GPU池化技術(shù),二者互相配合,為用戶提供更好的,更適合云的解決方案。
談到應(yīng)用和云,就不得不提“云原生”。這是另外一個(gè)有意思的話題。感興趣請關(guān)注我們下一期的技術(shù)分享。
免責(zé)聲明:市場有風(fēng)險(xiǎn),選擇需謹(jǐn)慎!此文僅供參考,不作買賣依據(jù)。