在以容器為應(yīng)用運(yùn)行載體的Kubernetes平臺(tái)上,運(yùn)行AI訓(xùn)練和推理任務(wù),正逐步成為AI廠商以及AI應(yīng)用在企業(yè)落地的熱點(diǎn)和首選。這兩年,國(guó)內(nèi)外陸續(xù)有相關(guān)的研究報(bào)告在關(guān)注這兩個(gè)前沿技術(shù)的結(jié)合和突破,與之相關(guān)的工具和創(chuàng)新型企業(yè)也不斷涌現(xiàn)。
Gartner 在2019年發(fā)布的一份關(guān)于AI的預(yù)測(cè)報(bào)告中指出,在過去的一年里,采用AI的企業(yè)數(shù)量增加了兩倍,而AI成為了企業(yè)CIO們考慮的頭等大事。CIO在企業(yè)內(nèi)實(shí)施AI應(yīng)用的過程里,必須考慮的五個(gè)要素中就有兩項(xiàng)與Kubernetes相關(guān):
第一,AI將決定基礎(chǔ)架構(gòu)的選型和決策。在企業(yè)對(duì)AI的使用正在迅速增加的背景下,到2023年,人工智能將成為驅(qū)動(dòng)基礎(chǔ)架構(gòu)決策的主要工作負(fù)載之一。加快AI的落地,需要特定的基礎(chǔ)設(shè)施資源,這些資源可以與AI以及相關(guān)基礎(chǔ)設(shè)施技術(shù)一起同步發(fā)展。我們認(rèn)為,以Kubernetes強(qiáng)大的編排以及對(duì)AI模型的支持能力,通過在互聯(lián)網(wǎng)廠商以及更多客戶總結(jié)的最佳實(shí)踐,Kubernetes將成為企業(yè)內(nèi)部AI應(yīng)用首選的運(yùn)行環(huán)境和平臺(tái)。
第二,Serverless將得到更大發(fā)展。容器和Serverless將使機(jī)器學(xué)習(xí)模型作為獨(dú)立的功能提供服務(wù),從而以更低的開銷運(yùn)行AI應(yīng)用。Gartner直接指出了將容器作為機(jī)器學(xué)習(xí)模型的優(yōu)勢(shì)和趨勢(shì)。
關(guān)于機(jī)器學(xué)習(xí),你要知道的事
為了更深入地理解這一技術(shù)趨勢(shì),我們需要對(duì)人工智能、機(jī)器學(xué)習(xí)有基本的理解。
機(jī)器學(xué)習(xí)是人工智能(AI)的分支,它使計(jì)算機(jī)系統(tǒng)能夠使用統(tǒng)計(jì)方法,識(shí)別或?qū)W習(xí)大量數(shù)據(jù)中存在的規(guī)律和模式。機(jī)器學(xué)習(xí)將這些模式匯總到一個(gè)模型中,通過該模型,計(jì)算機(jī)就能進(jìn)行預(yù)測(cè)或執(zhí)行具體的識(shí)別任務(wù),而無(wú)需人為地編寫規(guī)則來(lái)實(shí)現(xiàn)對(duì)輸入數(shù)據(jù)的識(shí)別和處理。簡(jiǎn)單地說,機(jī)器學(xué)習(xí)是對(duì)數(shù)據(jù)進(jìn)行處理、統(tǒng)計(jì)和歸納,是數(shù)據(jù)處理的科學(xué)。
現(xiàn)代的機(jī)器學(xué)習(xí)需要依賴特定的算法,雖然這些算法大多數(shù)在數(shù)十年前就已經(jīng)存在了,但算法的存在并沒有使機(jī)器學(xué)習(xí)在那些年就被重視和認(rèn)可。直到近些年,可用于訓(xùn)練的數(shù)據(jù)和負(fù)擔(dān)得起的計(jì)算能力爆炸式增長(zhǎng)、模型訓(xùn)練方法的進(jìn)步、以及用于開發(fā)機(jī)器學(xué)習(xí)解決方案的工具數(shù)量和質(zhì)量飛速增長(zhǎng),才使得人工智能得以快速發(fā)展。
我們可以注意到,從基礎(chǔ)架構(gòu)角度,除了強(qiáng)大的算力(云和GPU居功至偉)之外,推動(dòng)機(jī)器學(xué)習(xí)向前發(fā)展的兩大動(dòng)力,一是強(qiáng)(愛)大(省事)的程序員們編寫了大量支撐機(jī)器學(xué)習(xí)的框架和工具,二是海量的數(shù)據(jù)成為可能。
機(jī)器學(xué)習(xí)在平臺(tái)架構(gòu)上面臨的挑戰(zhàn)
機(jī)器學(xué)習(xí)只有達(dá)到一定規(guī)模,才能將模型訓(xùn)練得更為精準(zhǔn),要使機(jī)器學(xué)習(xí)快速擴(kuò)展規(guī)模,工程團(tuán)隊(duì)會(huì)面臨以下的挑戰(zhàn):
1、數(shù)據(jù)的管理與自動(dòng)化
在探索性機(jī)器學(xué)習(xí)的應(yīng)用里,數(shù)據(jù)科學(xué)家或機(jī)器學(xué)習(xí)工程師需要花費(fèi)大量時(shí)間手動(dòng)構(gòu)建和準(zhǔn)備新模型所需的數(shù)據(jù),如何保護(hù)和管理這些耗費(fèi)大量時(shí)間資源獲取和準(zhǔn)備的數(shù)據(jù),本身就是一個(gè)需要考慮的問題。
其次,將各種數(shù)據(jù)轉(zhuǎn)換、特征工程和ETL pipeline進(jìn)行自動(dòng)化,對(duì)于提高建模效率和反復(fù)運(yùn)行機(jī)器學(xué)習(xí)任務(wù)是非常必要的。自動(dòng)化pipeline除了對(duì)建模過程有很大幫助之外,對(duì)推斷時(shí)為生產(chǎn)模型提供現(xiàn)成的特征數(shù)據(jù)也起著至關(guān)重要的作用。
此外,數(shù)據(jù)和特征的轉(zhuǎn)換會(huì)不斷形成新的數(shù)據(jù),這些新數(shù)據(jù)通常不僅需要保留用于訓(xùn)練,還會(huì)用于將來(lái)的推斷過程。因此,提供可伸縮、高性能的數(shù)據(jù)存儲(chǔ)和管理是支持機(jī)器學(xué)習(xí)過程的團(tuán)隊(duì)所面臨的重大挑戰(zhàn),底層的存儲(chǔ)系統(tǒng)需要支持訓(xùn)練和推理工作負(fù)載所需的低延遲和高吞吐量訪問,避免反復(fù)進(jìn)行數(shù)據(jù)復(fù)制。
2、有效利用資源
今天,計(jì)算能力空前強(qiáng)大,諸如高密度CPU內(nèi)核,GPU和TPU之類的硬件創(chuàng)新正越來(lái)越多地服務(wù)于機(jī)器和深度學(xué)習(xí)工作負(fù)載,從而保證了這些應(yīng)用程序的計(jì)算資源在持續(xù)增長(zhǎng)。
然而,盡管計(jì)算成本在不斷下降,由于機(jī)器學(xué)習(xí)的過程實(shí)質(zhì)上是對(duì)數(shù)據(jù)的高密度處理和 應(yīng)用機(jī)器學(xué)習(xí)面臨的挑戰(zhàn)。
3、底層技術(shù)架構(gòu)的復(fù)雜性
PaaS產(chǎn)品和DevOps自動(dòng)化工具的興起,使軟件開發(fā)人員可以專注于正在開發(fā)的應(yīng)用程序,而不必?fù)?dān)心應(yīng)用程序所依賴的中間件和基礎(chǔ)設(shè)施。
同樣,為了使機(jī)器學(xué)習(xí)過程能夠充分發(fā)揮規(guī)模和效率,數(shù)據(jù)科學(xué)家和機(jī)器學(xué)習(xí)工程師必須能夠?qū)W⒂谀P秃蛿?shù)據(jù)產(chǎn)品的構(gòu)建和優(yōu)化,而不是基礎(chǔ)架構(gòu)。
人工智能建立在快速發(fā)展的復(fù)雜技術(shù)棧上,包括TensorFlow、PyTorch等深度學(xué)習(xí)框架,SciPy,NumPy和Pandas等特定語(yǔ)言庫(kù)以及Spark和MapReduce等數(shù)據(jù)處理引擎。這些工具由NVIDIA的CUDA等各種底層驅(qū)動(dòng)程序和庫(kù)支持,使AI任務(wù)可以利用GPU,而正確安裝和配置這些基礎(chǔ)架構(gòu)非常困難。如何選擇一個(gè)良好的基礎(chǔ)架構(gòu),才能幫助AI科學(xué)家從這些復(fù)雜的技術(shù)棧中解放出來(lái),將精力投入到模型的優(yōu)化中,是AI企業(yè)取得成功的關(guān)鍵。
Kubernetes為何成為機(jī)器學(xué)習(xí)青睞的支撐平臺(tái)
Kubernetes如何化解AI平臺(tái)面臨的挑戰(zhàn)
容器和Kubernetes借助開源的力量,獲得巨大發(fā)展,通過大量實(shí)踐,證明了這一技術(shù)確實(shí)能夠幫助AI企業(yè)應(yīng)對(duì)上述幾個(gè)的挑戰(zhàn)。
1、數(shù)據(jù)管理與自動(dòng)化
Kubernetes提供了將存儲(chǔ)連接到容器化工作負(fù)載的基本機(jī)制,持久卷PV提供了使Kubernetes支持有狀態(tài)應(yīng)用程序(包括機(jī)器學(xué)習(xí))的基本支持。
基于這些支持,AI企業(yè)就可以使用各種與Kubernetes緊密集成的第三方解決方案來(lái)構(gòu)建高度自動(dòng)化的數(shù)據(jù)處理pipeline,從而確保無(wú)需人工干預(yù)就能可靠地完成數(shù)據(jù)轉(zhuǎn)換。
恰當(dāng)?shù)拇鎯?chǔ)產(chǎn)品可以使Kubernetes工作負(fù)載獲得分布式存儲(chǔ)系統(tǒng)中數(shù)據(jù)的統(tǒng)一訪問,內(nèi)部團(tuán)隊(duì)也不再需要通過多種數(shù)據(jù)訪問方式來(lái)獲取數(shù)據(jù),并實(shí)現(xiàn)數(shù)據(jù)和特征跨項(xiàng)目共享的目標(biāo)。
2、有效利用資源
Kubernetes能夠跟蹤不同工作節(jié)點(diǎn)的屬性,例如存在的CPU或GPU的類型和數(shù)量,或可用的RAM數(shù)量。在將作業(yè)調(diào)度到節(jié)點(diǎn)時(shí),Kubernetes會(huì)根據(jù)這些屬性,對(duì)資源進(jìn)行有效分配。
對(duì)于機(jī)器學(xué)習(xí)這種資源密集型工作負(fù)載,Kubernetes最適合于根據(jù)工作負(fù)載隨時(shí)自動(dòng)擴(kuò)展或收縮計(jì)算規(guī)模,相對(duì)于虛擬機(jī)或物理機(jī)而言,通過容器完成擴(kuò)展和收縮更為平穩(wěn)、快速、簡(jiǎn)單。
此外,通過Kubernetes的命名空間的功能,可以將單個(gè)物理Kubernetes集群劃分為多個(gè)虛擬集群,使單個(gè)集群可以更輕松地支持不同的團(tuán)隊(duì)和項(xiàng)目,每個(gè)名稱空間都可以配置有自己的資源配額和訪問控制策略,滿足復(fù)雜的多租戶需求,從而能更充分地利用各種底層資源。
3、隱藏復(fù)雜性
容器提供了一種獨(dú)立于語(yǔ)言和框架的,有效打包機(jī)器學(xué)習(xí)工作負(fù)載的方式,Kubernetes則提供了一個(gè)可靠的工作負(fù)載編排和管理平臺(tái),Kubernetes通過必要的配置選項(xiàng)、API和工具來(lái)管理這些工作負(fù)載,從而使工程師可以通過yaml文件,即可控制這些上層應(yīng)用。
使用容器封裝數(shù)據(jù)機(jī)器學(xué)習(xí)任務(wù)的另一個(gè)好處,是這些工作負(fù)載本身的依賴問題已經(jīng)封裝在容器的聲明里,從而屏蔽掉機(jī)器學(xué)習(xí)任務(wù)對(duì)底層技術(shù)棧的依賴。這樣,無(wú)論在開發(fā)者筆記本電腦、訓(xùn)練環(huán)境還是生產(chǎn)集群上,這些AI任務(wù)都可以正確地保持依賴關(guān)系并順利運(yùn)行。
Kubernetes+機(jī)器學(xué)習(xí)的良好生態(tài)系統(tǒng)
Kubernetes已經(jīng)成為云原生時(shí)代編排框架的事實(shí)標(biāo)準(zhǔn),各種資源、任務(wù)都可以使用Kubernetes進(jìn)行編排和管理,當(dāng)然也包括機(jī)器學(xué)習(xí)任務(wù)?;贙ubernetes,大量開發(fā)者和公司已經(jīng)提供了眾多開源或商業(yè)的工具(包括:Argo、Pachyderm、Katib、KubeFlow、RiseML等),通過這些工具,AI公司可以進(jìn)一步提升機(jī)器學(xué)習(xí)任務(wù)在Kubernetes上運(yùn)行的效率,增強(qiáng)使用Kubernetes進(jìn)行機(jī)器學(xué)習(xí)的能力。
另一方面,很多Kubernetes開源版本或商業(yè)發(fā)行版都支持基于Kubernetes對(duì)GPU進(jìn)行很好的調(diào)度和管理,在數(shù)據(jù)分析和計(jì)算層面上看,這為機(jī)器學(xué)習(xí)與Kubernetes的結(jié)合掃清了障礙。
機(jī)器學(xué)習(xí)運(yùn)行在Kubernetes上對(duì)存儲(chǔ)系統(tǒng)提出了哪些要求
前面提到過,機(jī)器學(xué)習(xí)快速發(fā)展的兩大動(dòng)力,一是框架和工具的支持,這一點(diǎn)已經(jīng)通過Kubernetes以及類似TensorFlow、PyTorch、KubeFlow等工具實(shí)現(xiàn);二是機(jī)器學(xué)習(xí)必須依賴海量的數(shù)據(jù)。在Kubernetes被機(jī)器學(xué)習(xí)廣泛接受和使用的背景下,機(jī)器學(xué)習(xí)對(duì)海量數(shù)據(jù)的存儲(chǔ)系統(tǒng)提出了哪些要求?結(jié)合對(duì)多個(gè)一流的AI企業(yè)的交流和了解,我們發(fā)現(xiàn)以下一些特點(diǎn):
1、機(jī)器學(xué)習(xí)需要依賴海量的數(shù)據(jù),這些數(shù)據(jù)基本都是以非結(jié)構(gòu)化的文件形式存在,例如數(shù)十億張圖片、語(yǔ)音片段、視頻片段等,存儲(chǔ)系統(tǒng)需要能支持?jǐn)?shù)十億規(guī)模的文件。
2、這些文件大小通常在幾百KB到幾MB之間,存儲(chǔ)系統(tǒng)需要保證小文件的高效存儲(chǔ)和訪問。
3、由于上層的機(jī)器學(xué)習(xí)任務(wù)是通過Kubernetes進(jìn)行管理和調(diào)度,這些任務(wù)需要訪問的存儲(chǔ)也要通過Kubernetes進(jìn)行分配和管理,存儲(chǔ)系統(tǒng)需要對(duì)Kubernetes進(jìn)行很好的適配和支持。
4、多個(gè)機(jī)器學(xué)習(xí)任務(wù)經(jīng)常需要共享一部分?jǐn)?shù)據(jù),意味著多個(gè)Pod需要共享訪問(讀寫)一個(gè)PV,底層存儲(chǔ)系統(tǒng)需要支持RWX訪問模式。
5、機(jī)器學(xué)習(xí)需要使用到GPU等計(jì)算資源,存儲(chǔ)系統(tǒng)在海量小文件前提下,需要能提供足夠的多客戶端并發(fā)訪問性能,才能使GPU資源得到充分利用。
YRCloudFile如何應(yīng)對(duì)Kubernetes+機(jī)器學(xué)習(xí)的場(chǎng)景
我們可以從Kubernetes支持以及機(jī)器學(xué)習(xí)的數(shù)據(jù)特點(diǎn)兩個(gè)維度來(lái)分析YRCloudFile在這一新型場(chǎng)景上的優(yōu)勢(shì)。
YRCloudFile從設(shè)計(jì)到實(shí)現(xiàn),首要場(chǎng)景就是解決Kubernetes環(huán)境中,容器化應(yīng)用對(duì)存儲(chǔ)的訪問需求,也借此成為國(guó)內(nèi)首個(gè)入選CNCF LandScape Container-Native Storage的存儲(chǔ)產(chǎn)品。為此,YRCloudFile支持:
1、CSI、FlexVolume的訪問插件。通過CSI插件,在對(duì)Kubernetes沒有任何侵入的前提下,Kubernetes可以為機(jī)器學(xué)習(xí)應(yīng)用申請(qǐng)獨(dú)立或共享的存儲(chǔ)資源。
2、支持?jǐn)?shù)百個(gè)Pod同時(shí)訪問同一個(gè)PV資源,并能夠?qū)⑦@些Pod快速并發(fā)拉起,滿足機(jī)器學(xué)習(xí)的多個(gè)任務(wù)共享訪問數(shù)據(jù)(RWX讀寫模式)的要求,解決了基于塊存儲(chǔ)方案在這方面的天然缺陷。
3、在機(jī)器學(xué)習(xí)任務(wù)的Pod需要跨節(jié)點(diǎn)重建時(shí),Pod可以在新節(jié)點(diǎn)上快速訪問到原有數(shù)據(jù),無(wú)需人為干預(yù)和接入,完全滿足自動(dòng)化的基本訴求,塊存儲(chǔ)容器解決方案在這方面也存在不足。
其次,在機(jī)器學(xué)習(xí)海量小文件的數(shù)據(jù)特點(diǎn)上,YRCloudFile相對(duì)于其它開源或商業(yè)產(chǎn)品也具有明顯優(yōu)勢(shì):
4、 YRCloudFile在數(shù)十億小文件規(guī)模下,無(wú)論文件操作性能(重點(diǎn)考驗(yàn)元數(shù)據(jù)處理能力),或者是小文件讀寫帶寬(重點(diǎn)考察元數(shù)據(jù)處理和存儲(chǔ)的并發(fā)訪問性能),都保持平穩(wěn)的性能。相較于其它傳統(tǒng)的云原生存儲(chǔ)或分布式文件存儲(chǔ),YRCloudFile在海量小文件的支持上,都具有優(yōu)勢(shì)。
5、在機(jī)器學(xué)習(xí)場(chǎng)景下,網(wǎng)絡(luò)的選擇和性能尤為重要,以Mellanox為代表的網(wǎng)絡(luò)供應(yīng)商,在InfiniBand通信協(xié)議上,針對(duì)機(jī)器學(xué)習(xí)做了大量?jī)?yōu)化,提供了GPUDirect、SHARP等高級(jí)的網(wǎng)絡(luò)特性。YRCloudFile完全支持在InfiniBand、RoCE網(wǎng)絡(luò)環(huán)境下運(yùn)行,并提供比傳統(tǒng)TCP網(wǎng)絡(luò)環(huán)境更高的讀寫性能,從而更好地支持機(jī)器學(xué)習(xí)任務(wù)。
通過這篇文章,我們可以清晰地看到Kubernetes在人工智能、機(jī)器學(xué)習(xí)這一新型應(yīng)用場(chǎng)景下得到快速應(yīng)用的趨勢(shì),并深入理解了這個(gè)趨勢(shì)背后的技術(shù)推動(dòng)力。同時(shí),我們也了解到Kubernetes+機(jī)器學(xué)習(xí)的結(jié)合,對(duì)數(shù)據(jù)的存儲(chǔ)系統(tǒng)提出了哪些新的需求,YRCloudFile在這一新場(chǎng)景和趨勢(shì)下,所凸顯出的優(yōu)勢(shì)更為明顯。目前,YRCloudFile已經(jīng)在一流的AI企業(yè)中得到了實(shí)踐和應(yīng)用。YRCloudFile會(huì)結(jié)合在實(shí)際生產(chǎn)環(huán)境中發(fā)現(xiàn)的機(jī)器學(xué)習(xí)對(duì)數(shù)據(jù)訪問的具體特點(diǎn),進(jìn)行更深層次的優(yōu)化,在這個(gè)嶄新的應(yīng)用場(chǎng)景中擴(kuò)大領(lǐng)先地位,繼續(xù)助力AI企業(yè)提升機(jī)器學(xué)習(xí)的效率和水平。
責(zé)任編輯:ct
評(píng)論
查看更多