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