首頁 > 資訊 > > 正文

              云計算漫談 | 面向計算優化的計算云

              2021-07-01 17:21:44    來源:財訊網

              無論是基于虛擬化的公有云還是基于容器的容器云(例如架在公有云上的k8s),都不是天然為HPC或者計算類業務優化的基礎架構。那么“云”和“計算”理想的結合是什么呢?筆者認為應該是計算云。大家如果認為筆者前兩篇文章是在挑刺的話,那這篇文章就嘗試開個藥方。

              計算云是什么?

              筆者所謂的計算云指的是為計算業務優化的類云基礎架構,它強調用云的方式解決計算問題,而不是將“計算”搬到現有的公有云或者容器云上。

              目前公有云或者容器云(例如k8s)上的HPC解決方案本質上都是將現有的HPC方案虛擬化或容器化,以虛擬機或容器替代物理機。這些做法是為了將公有云資源賣給計算用戶,并沒有改進計算業務本身。

              從用戶的角度說,計算云是什么樣的呢?筆者認為計算云應該具備下面幾個特征。

              1 計算即服務

              計算云提供的應該是端到端的計算服務,而不是資源服務。以一個傳統環境下的HPC用戶舉例。HPC集群各個計算節點掛載了分布式文件系統,用戶(或者系統管理員)將計算程序安裝到分布式文件系統。

              用戶登錄到集群的登錄節點,通過qsub投遞一個單機計算任務,或者通過mpiexec提交一個MPI計算任務。調度系統(例如SGE、PBS、Slurm等)分配合適的計算資源,完成用戶的計算任務。如果把HPC集群搬到云上或者容器里,使用方式仍然類似。系統管理員拉起一個HPC集群,普通用戶登錄集群使用計算服務。

              如果這個用戶需要混合使用MPI、Hadoop、Tensorflow怎么辦呢?系統管理員需要拉起三套集群,分別做三種計算,用戶需要登錄到三套不同的系統中提交任務。這三套系統的使用頻率、負載程度不一樣,系統管理員不可能實時動態管理集群來確保資源利用率。系統管理員以容器云的方式將HPC集群容器化是一種計劃經濟,沒有市場經濟的效率。計算應該由用戶主導,按需分配。按需分配意味著程序化自動調度。

              基于k8s的Volcano解決問題的方式是讓普通用戶使用k8s模版提交任務。MPI用戶需要提交服務模版去啟動一組運行sshd服務的容器,然后啟動一個運行mpiexec程序的容器。這種方式將系統管理員的工作轉移到了用戶身上,用戶需要學使用k8s,可用戶真正關心的是他自己的MPI程序,不是k8s,也不是運行sshd容器。造成這個問題的原因是k8s只是一個PaaS解決方案,本質上提供的是資源服務,不是計算服務。

              真正的計算即服務要求用戶不需要做與自己計算無關的事情。計算集群提供一些登錄容器或者服務器,用戶登錄服務器安裝軟件到分布式文件系統,或者將軟件打包成容器。用戶根據自己的需要在登錄節點通過qsub或者mpiexec提交作業,指明作業需要的資源和數據。計算云根據任務的類型,按需分配資源,構建HPC、Hadoop或者Tensorflow集群完成計算。

              計算過程中的資源如何分配,集群如何部署和銷毀,數據如何共享是計算云內置的服務,不應該有用戶參與。用戶只需提交數據和程序到計算云,然后等待計算結果。

              2 按需共享資源

              “云”的方式意味著資源的集中和共享。隨著技術發展,計算早已經從計算密集型的科學計算,演化到數據密集型的數據加工,或者兩者并重。與計算類型的演化對應,計算框架和編程模型隨之發展。從最原始的MPI全靠自己寫代碼,到Hadoop和Spark的Map-Reduce編程模型,再到Pregel方式的圖計算,年又流行Tensorflow和PyTorch等機器學框架。

              計算模型和框架越來越多,誰都想一統天下,但誰都不可能一統天下。計算框架的多樣化是計算發展的必然結果。因此計算云需要讓多種不同的框架共享硬件,確保資源利用率。無論是虛擬化的公有云還是容器云,都能做到不同的計算框架靜態共享物理硬件資源。SGE、PBS或者SLURM是傳統的HPC的調度系統,將它們做成虛擬機部署到公有云,或者做成容器部署到k8s,可以讓多種框架共享物理硬件。但是這種共享是靜態的。典型的使用方式是:系統管理員在云上或者k8s上拉起一個SLURM集群;用戶通過SSH登錄到集群,使用傳統的方式安裝軟件、投遞任務。這種使用方式得到的好處是什么呢?一是不需要為每個集群單獨購買硬件,二是系統管理員的集群部署工作得到了簡化,其它方面沒有改進。

              我們所說的按需共享指的是什么呢?是不同的計算框架按照計算負載的需要實時從系統中分配資源進行計算,計算完畢后歸還資源。沒有靜態的SGE容器集群,也沒有靜態的Tensorflow集群。靜態的容器集群意味著資源不是按需共享的,因為計算負載是實時變化的,系統管理員或者工具不可能動態操縱計算去匹配這種實時變化。

              靜態共享的方式下,管理員仍然處于中心地位,按需共享的方式則要求最終用戶處于中心地位。系統管理員處于中心的應用方式下,用戶的需求通過和系統管理員的神仙打架來解決。按需共享要求程序化滿足用戶需求,即系統管理員配置調度策略,最終用戶提交計算任務,其它一切都由系統自動完成。

              3 跨框架計算

              框架計算在多框架共享硬件基礎上再前進了一步。共享解決了資源利用率的問題,跨框架計算使得用戶可以自由組合多種不同的計算框架解決一個復雜的業務問題。舉一個簡單的例子:用戶有大量數據,需要先進行數據清洗、做ETL轉換、然后進行機器學,最后的模型用于預測另一批數據。這是一個簡單的AI應用場景,用戶選擇用Spark處理數據,用Tensorflow機器學,這就是一個跨框架的計算業務。傳統的解決方法是用戶自己搭建一個Spark集群和Tensorflow集群,通過程序或者腳本組合API實現清洗、訓練到預測的業務流程。

              如果另一個用戶也需要做類似的事情呢?如果機器學選用PyTorch呢?如果流程的參數有不同呢?筆者造訪了一些大的自動駕駛公司,做數據臺和訓練臺的動輒兩三百人,可謂“有多少人工就有多少智能”。不是每個企業都可以投入這么多人力的。那有沒有方法可以用搭積木的方式自動幫助用戶構建復雜的數據處理業務呢?筆者認為就是跨框架計算。

              跨框架計算能很好的解決上述問題,跨框架計算在系統層面動態調度框架,不但解決資源問題,還解決數據的流動問題。用戶定義一個Pipeline,由多個stage組成。第一步是運行一個任務調用Spark清洗數據,結果輸入到Tensorflow程序進行分布式機器學,輸出的模型用于預測指定的數據。這個Pipeline類似于傳統的程序,只是規模更大。

              與傳統的C++、Java程序不同,這個程序的指令是單個容器或者框架,內存是各種存儲介質,輸入輸出是存儲中的海量數據。用戶只需要將自己的程序封裝成容器,定義成Task,然后將Task串聯成Pipeline。Task之間可以定義參數和數據的輸入輸出關系,形成數據流。程序的執行引擎類似于虛擬機,自動解析Task輸入輸出的依賴關系,生成執行計劃,最大化并行效率,并根據Task的需求自動構建或者銷毀Spark或Tensorflow集群,向用戶隱藏所有的框架部署和執行細節。

              聽了這個描述,大家是不是有一種 “力拔山兮氣蓋世,天當被子地當床 ” 的趕腳?有人可能會說:你這有點放飛自我,吹牛吧?還真不是這樣。跨框架計算只是極道的Achelous提供的諸多功能的一種。

              4 智能運維

              調度程序化的自然要求是運維智能化。動態實時共享資源和跨框架計算要求系統管理員從系統中消失,調度和部署由程序承擔,對應的運維也必須由程序完成。因為產生問題的速度增加了,解決問題的速度也必須相應增加,不然系統就運行不下去了。

              有過大型系統運維經驗的伙伴們都知道,HPC類的大規模計算系統傾向于將系統資源用到極限。在極限情況下,硬件、存儲、網絡、操作系統呈現出各種異常、扭曲和變態。筆者服務過的很多生命科學計算的客戶,他們的生物信息工程師寫出來的程序可謂無所不用其極。創建百層目錄,每個目錄下產生千萬級文件是家常便飯,還遇到過運行的命令行的參數大小超過了操作系統的限制(128M)。所有這些以前需要專業的技術人員分析、診斷和解決的問題,對計算云來說,都需要通過程序智能分析,自動恢復。

              典型的計算云是什么樣的?

              大家看到這里,可能會說:“你在這里胡吹,具體計算云是什么樣的呢?是騾子是馬,拉出來遛遛”。筆者在這里兜售一下私貨,向大家介紹一下極道的Achelous。Achelous作為一個智能數據系統,也可以作為計算云的解決方案。

              1 容器化

              容器化技術可以幫助解耦硬件和執行環境,將框架打包成容器使得框架可以在任何機器上運行或者遷移。Achelous支持Docker和Singularity容器化技術,也支持直接將二進制程序運行在操作系統上,支持傳統HPC用戶的無縫遷移。

              2 資源調度管理

              Achelous的SRM服務將系統中所有物理機器的所有硬件資源組成資源池,支持但不限于CPU、Memory、GPU、FPGA等等。SRM接受各個應用框架的資源分配/釋放請求,并負責監控和管理任務狀態。Achelous通過靈活豐富的分配策略和算法在這個層面解決了異構資源調度的問題。社區的k8s,Mesos,或者yarn都在某種程度上提供這個層面的功能。

              3 調度器

              調度系統匹配任務和資源,支持靈活的調度策略和錯誤處理機制。Achelous實現了多種類型的調度器,支持多種不同類型的框架。Paladin調度一次容器(類似于SGE),Partisaner調度一組容器(用于支持MPI、Tensorflow等等)。基于容器的調度器是跨框架計算的基礎組件。

              現有的計算臺(例如k8s,volcano等等)一般都可以支持到調度這個層面。這個層面解決了計算資源、調度策略和管理策略的問題,只能算實現了容器化。從用戶角度來說,也是不完全的容器化。例如在k8s上運行一個SGE或者Slurm集群,只是將SGE或Slurm容器化了,并沒有將用戶程序容器化。

              從下面開始步入了計算云的核心功能:

              (1)存儲調度

              企業計算系統需要訪問各種各樣的存儲,包括各種分布式文件系統、分布式塊存儲和對象存儲。不同的應用對存儲介質和訪問協議的要求不一樣,對數據訪問一致要求也各不相同。計算云不但要調度資源,還需要調度數據。

              存儲調度的核心功能在于為特定應用程序匹配最優的存儲和IO策略,并打通應用之間的數據流。例如用戶數據存儲在POSIX接口的分布式文件系統中,數據清洗需要使用Spark,結果需要作為CSV文件進入高能存儲介質,作為機器學訓練的輸入。

              Achelous存儲調度根據應用Task的特點自動選擇合適的存儲,自動確保下一個階段執行時數據在合適的位置,無需用戶干預。

              存儲調度依賴計算系統和存儲系統之間的協同設計。例如Achelous的數據流執行引擎,支持用戶描述任務IO特點,自動幫助應用優化IO訪問,提升計算能。

              (2)DSL和執行引擎

              對用戶來說,企業級計算系統的兩大痛點是編程和運維。集群資源管理和調度通常只能解決資源分配的問題,很多領域的編程語言(DSL,Domain Specific Language)嘗試解決用戶編程問題,但是并沒有與調度系統實現有效的配合。在應用、調度系統和存儲之間普遍存在語義鴻溝(Semantic Gap)。應用、調度和存儲相互割裂,拼湊在一起的解決方案并不能有效解決用戶的計算問題。虛擬化(OpenStack)和容器云(k8s)等解決方案直接將其虛擬化或容器化,改變的只是運行環境,計算沒有本質提升。

              Achelous實現了兩種DSL(BSL和WDL),通過特有的runtime特,打通了應用、調度和存儲之間的邊界。它自動解析任務之間的數據依賴,確保最大并行效率;根據應用類型,自動構建和銷毀框架,實現實時動態資源共享;根據應用IO特點,自動優化數據訪問,解決關鍵應用能。它不需要用戶重新編程,即可獲得計算云帶來的紅利。

              (3)智能運維

              Achelous的AIOPS系統支持無人運維,自動故障檢測和恢復。從C++和Java程序猿的觀點來看,它是DSL數據流應用的Try and Catch機制。從此運維人員只需要配置策略,不再需要和用戶通過神仙打架的方式解決日常系統運行問題。

              云計算是一個非常大的概念,但對于規模計算而言,真正可以基于云計算臺解決方案屈指可數。Achelous 系統是容器化、集群管理、任務調度、存儲調度、執行引擎和智能運維的有機結合,是生命科學、地理空間、科學計算、人工智能等數據密集型和計算密集型領域最為全面的解決方案。

              免責聲明:市場有風險,選擇需謹慎!此文僅供參考,不作買賣依據。

              相關熱詞搜索:

              上一篇:官宣丨你好星球特飲站入圍《品牌中國》欄目百強企業
              下一篇:云計算漫談 | 面向計算優化的計算云

              熱點話題

              熱點推薦

              頭條

              ? 亚洲精品第一国产综合精品| 久久精品国产亚洲5555| 丁香五月亚洲综合深深爱| 国产精品亚洲а∨无码播放不卡 | 亚洲精品成人a在线观看| 国内成人精品亚洲日本语音| 国产精品成人亚洲| 国产偷国产偷亚洲高清在线| 亚洲v国产v天堂a无码久久| 国产91成人精品亚洲精品| 五月天婷亚洲天综合网精品偷| 国产在亚洲线视频观看| 亚洲精品99久久久久中文字幕| 亚洲AV无码成H人在线观看| 亚洲成片观看四虎永久| 亚洲午夜精品第一区二区8050| 久久精品国产亚洲5555| 亚洲男同帅GAY片在线观看| 国产av无码专区亚洲av桃花庵 | 亚洲欧洲国产综合AV无码久久| 亚洲乱色熟女一区二区三区蜜臀| 亚洲人成色99999在线观看| 久久亚洲欧美国产精品| 亚洲第一成人影院| 国产亚洲精品拍拍拍拍拍| 国产亚洲婷婷香蕉久久精品 | 亚洲av午夜国产精品无码中文字 | 小说专区亚洲春色校园| 亚洲偷自拍拍综合网| 亚洲精品自产拍在线观看| 亚洲AV无码专区国产乱码电影| 97久久精品亚洲中文字幕无码| 亚洲国产视频一区| 亚洲欧美成人一区二区三区| 国产成人久久精品亚洲小说| 国产成人亚洲精品狼色在线| 久久久亚洲欧洲日产国码农村| 亚洲神级电影国语版| 亚洲欧美国产欧美色欲| 亚洲国产综合精品中文字幕| 国产亚洲成av片在线观看|