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