科學(xué)計算如何快速又高效?Mars+傲騰告訴你訣竅

原標題:科學(xué)計算如何快速又高效?Mars+傲騰告訴你訣竅

數(shù)字世界的發(fā)展離不開各種各樣的數(shù)字工具,Mars則是推動科學(xué)計算的強力武器。

在現(xiàn)代科技的演進中,伴隨著計算環(huán)境的復(fù)雜以及數(shù)據(jù)量的大規(guī)模爆發(fā),使得科研人員和開發(fā)者往往要面對十分龐大的計算量。比如在金融工程、基因測序、氣候研究等領(lǐng)域,不僅需要強大的計算力支持,還要保證數(shù)學(xué)理論上的抽象與嚴謹,并兼顧程序設(shè)計上的實用與實踐。

基于此,阿里巴巴推出基于張量的分布式計算框架Mars,并與英特爾合作,借助英特爾傲騰持久內(nèi)存提供的更大內(nèi)存容量與低時延特性,大幅加速科學(xué)計算任務(wù)中產(chǎn)生的中間過程的數(shù)據(jù)I/O,明顯提升分布式科學(xué)計算的運算效率。

分布式計算難以應(yīng)用于科學(xué)計算

基因序列、大自然、宇宙充滿了未知的秘密,科學(xué)計算就是人類揭開一些隱藏信息的鑰匙。在數(shù)字化發(fā)展逐漸成熟的當下,除了科學(xué)研究外,科學(xué)計算也為金融、交通、氣象等一些工程技術(shù)提供了可行方案。

科學(xué)計算的過程往往伴隨著龐大的數(shù)據(jù)量以及高計算力需求,因此也誕生了一些專為科學(xué)計算而發(fā)展的工具,如SciPy。從誕生日起,SciPy已經(jīng)經(jīng)歷了二十年的發(fā)展,作為面向Python的開源科學(xué)計算庫,SciPy一直是科學(xué)計算的核心,并代表著Python的一個行業(yè)標準。在SciPy提供的基本算法中,涵蓋了現(xiàn)有的數(shù)學(xué)軟件分類系統(tǒng),可以為微分、積分方程等計算提供完整流程,這也使得SciPy在數(shù)學(xué)、工程、科學(xué)計算等領(lǐng)域發(fā)揮著十分重要的作用。

在整個SciPy體系中,Numpy是各種工具的基礎(chǔ),它不僅提供了多維數(shù)組的數(shù)據(jù)結(jié)構(gòu),還支持SciPy體系中的各種計算。多維數(shù)組又叫張量,這個概念在近幾年被廣泛傳播,它是深度學(xué)習(xí)的基礎(chǔ)。張量擁有很多優(yōu)勢特性,相比于二維表/矩陣,張量能夠創(chuàng)造更高緯度的矩陣和向量,因此其具有更加強大的表達能力。

AI創(chuàng)新的驅(qū)動下,掀起了一股機器學(xué)習(xí)和深度學(xué)習(xí)的熱潮,張量的使用也逐漸增加。Numpy由于簡潔易用且性能強大,在企業(yè)中被廣泛應(yīng)用。不過,Numpy還只適用于單機條件,對于大部分函數(shù)都無法進行并行化操作,也不能利用CPU的多核心處理能力來提高計算效率,從而使得Numpy不能突破現(xiàn)有的規(guī)模瓶頸。

在這樣的背景下,分布式計算引擎的出現(xiàn)為處理海量數(shù)據(jù)的工作提供了另一種思路。分布式計算是一個十分高效且具備高性價比的方案,在應(yīng)對大數(shù)據(jù)集的計算任務(wù)中,不僅可以均衡任務(wù)調(diào)度,還能大幅提高計算效率。

但值得注意的是,分布式計算引擎在科學(xué)計算領(lǐng)域并不能發(fā)揮太大作用,其原因就是前者的誕生與后者沒有必然關(guān)系,而分布式計算引擎的上層接口不匹配,導(dǎo)致科學(xué)計算任務(wù)很難用傳統(tǒng)的SQL/MapReduce編寫。且在執(zhí)行過程中,計算引擎本身沒有對科學(xué)計算進行針對性優(yōu)化,使得后者的計算效率同樣難以滿足行業(yè)發(fā)展需求。

基于此,阿里巴巴推出開源分布式科學(xué)計算引擎Mars,將分布式技術(shù)引入科學(xué)計算領(lǐng)域,突破大數(shù)據(jù)計算引擎以關(guān)系代數(shù)為主的計算模型,將大規(guī)模的科學(xué)計算任務(wù)從MapReduce的上千行代碼降低到Mars的數(shù)行代碼,使得科學(xué)計算的效率大幅提升。

Mars增強科學(xué)計算核心

Mars在科學(xué)計算領(lǐng)域的應(yīng)用是突破性的。作為新一代大規(guī)??茖W(xué)計算引擎,Mars讓大數(shù)據(jù)可以進行高效的科學(xué)計算,并將其帶入到分布式時代。目前,Mars已經(jīng)在阿里巴巴及其云上客戶的業(yè)務(wù)和生產(chǎn)場景中廣泛應(yīng)用,幫助用戶探索數(shù)據(jù)背后的價值。

具體來看,Mars具備以下幾個獨特的優(yōu)勢和特點,使得其在科學(xué)計算領(lǐng)域擁有廣闊前景:

第一,符合使用習(xí)慣的接口,容易上手。Mars通過內(nèi)部的tensor模塊提供兼容Numpy的接口,用戶只需要通過import Mars就能將已有的基于Numpy編寫的代碼移植到Mars中,直接獲得比原來擴大數(shù)萬倍的運算規(guī)模。

在實際移植過程中可以發(fā)現(xiàn),代碼只需要有少量改變,一是將import numpy改成import mars.tensor;二是通過execute來觸發(fā)執(zhí)行。目前,Mars 實現(xiàn)了大約 70% 的常見 Numpy 接口。據(jù)悉,在Mars后續(xù)的升級迭代中,將逐漸把SciPy技術(shù)棧中的工具分布式化,比如提供完全兼容的pandas接口,從而完善整個Mars應(yīng)用生態(tài)。

第二,支持GPU加速,這也是Mars在科學(xué)計算領(lǐng)域十分突出的一個優(yōu)勢。用戶可以十分簡便地設(shè)置GPU加速:創(chuàng)建張量時,通過指定gpu=True就可以讓后續(xù)計算在GPU上執(zhí)行,進一步提升計算效率。

第三,支持二維稀疏矩陣。通過設(shè)定sparse=True,用戶可在Mars創(chuàng)建稀疏矩陣,這樣的好處是可以節(jié)省存儲空間,有利于計算效率的提升。

第四,可擴展性。Mars可以向內(nèi)擴展到單機,也可以向外擴展到有數(shù)千臺計算機的服務(wù)器集群。由于本地和分布式版本都共享相同的代碼,因此隨著數(shù)據(jù)的增加從單機遷移到集群也是十分便利的。

粗粒度圖

也是基于這些特性和獨特的優(yōu)勢,Mars支持多種調(diào)度方式,如多線程模式、分布式、單機集群模式,這保證了Mars的擴展性,也讓其可以支持更多科學(xué)計算的場景。與Numpy相比,Mars可以看成是包含粗粒度圖與細粒度圖的計算圖,給定一個張量,Mars會將其在各個維度劃分為小的chunk,然后對這些chunk進行處理,將其調(diào)度到多核或者分布式集群中來執(zhí)行。

這主要是因為Mars不會在客戶端進行真正的運算操作,當用戶寫下代碼時,這些數(shù)據(jù)會在內(nèi)存中用圖的形式來記錄下來,并在用戶使用execute觸發(fā)執(zhí)行后,將圖提交到Mars的分布式執(zhí)行環(huán)境中。本質(zhì)來看,Mars是一個對細粒度、異構(gòu)圖的執(zhí)行調(diào)度系統(tǒng)。

Mars chunk級別的執(zhí)行圖

值得注意的是,盡管在Mars矩陣運算中輸入和輸出的數(shù)據(jù)量并不大,但在chunk之后的運行過程會產(chǎn)生大量的中間過程,在上圖中,紅色框內(nèi)部的就是產(chǎn)生的中間過程。毫無疑問,這些過程的產(chǎn)生會占用大量內(nèi)存資源。為此,阿里巴巴在Mars中加入了數(shù)據(jù)溢出控制手段,將暫時不用或用不到的數(shù)據(jù)放到磁盤中存儲,防止內(nèi)存溢出,保證計算安全。

英特爾傲騰助力Mars突破計算瓶頸

數(shù)據(jù)溢出控制手段會有效減少Mars運行時內(nèi)存資源不必要的消耗,但與此同時,在TCO相當?shù)臈l件下,內(nèi)存系統(tǒng)的構(gòu)建會成為制約Mars計算效率的又一瓶頸。

傳統(tǒng)硬盤價位低,且可以提供大量存儲空間,但在可靠性、物理空間要求、散熱等因素上會帶來新的應(yīng)用成本。且在I/O速度方面,從硬盤訪問數(shù)據(jù)會伴隨著嚴重的延遲,在這一點上,DRAM擁有明顯優(yōu)勢,可以減少千倍的延遲時間,但在容量方面又會有新的困擾。

在此背景下,阿里巴巴與英特爾合作,在運行Mars的服務(wù)器上配置英特爾傲騰持久內(nèi)存,通過其容量大、低延遲的特點為Mars提供足夠的共享內(nèi)存,保證Mars科學(xué)計算效率的高水平實現(xiàn)。

英特爾傲騰持久內(nèi)存擁有兩種操作模式,內(nèi)存模式和應(yīng)用直接模式(AD),前者適用于大內(nèi)存容量,后者具備非易失性,應(yīng)用可直接在內(nèi)存中進行運算,大幅降低堆棧中的復(fù)雜程度。不僅如此,英特爾傲騰持久內(nèi)存可以提供128G、256G、512G容量,與傳統(tǒng)DRAM相比每GB的內(nèi)存成本也更低,可以滿足Mars大規(guī)模應(yīng)用的需求。

Mars需要滿足不斷多樣化的科學(xué)計算環(huán)境,為此,英特爾對傲騰持久內(nèi)存進行了兩個調(diào)優(yōu),一個是內(nèi)存啟用Snoop for AD模式,一個是Plasma在持久內(nèi)存中實現(xiàn)共享。前者可以保證傲騰持久內(nèi)存保持較高的I/O水平,后者讓內(nèi)存資源應(yīng)用更為合理,從而有效提升Mars的計算性能。

在實驗環(huán)境下,使用兩個矩陣相乘的科學(xué)計算為Mars的工作負載,分別采用裝配有英特爾傲騰持久內(nèi)存的服務(wù)器和搭載DRAM內(nèi)存的服務(wù)器來執(zhí)行,在對Mars進行不同數(shù)據(jù)集的工作負載測試后可以發(fā)現(xiàn),當數(shù)據(jù)集規(guī)模較小時,數(shù)據(jù)是可以被DRAM緩存的,持久內(nèi)存的性能接近于DRAM;當數(shù)據(jù)集規(guī)模不斷上升后,持久內(nèi)存的優(yōu)勢開始顯現(xiàn),當數(shù)據(jù)集規(guī)模增大到SF=0.5時,使用傲騰持久內(nèi)存的性能就有相對于DRAM 1.11倍的提升。

可以說,利用英特爾傲騰持久內(nèi)存,Mars的計算性能會得到有效提升,尤其是面向大規(guī)模數(shù)據(jù)集時,英特爾傲騰持久內(nèi)存不僅能解決數(shù)據(jù)緩存溢出問題,還能大幅降低數(shù)據(jù)延遲,從而讓科學(xué)計算更為高效。

極客網(wǎng)企業(yè)會員

免責聲明:本網(wǎng)站內(nèi)容主要來自原創(chuàng)、合作伙伴供稿和第三方自媒體作者投稿,凡在本網(wǎng)站出現(xiàn)的信息,均僅供參考。本網(wǎng)站將盡力確保所提供信息的準確性及可靠性,但不保證有關(guān)資料的準確性及可靠性,讀者在使用前請進一步核實,并對任何自主決定的行為負責。本網(wǎng)站對有關(guān)資料所引致的錯誤、不確或遺漏,概不負任何法律責任。任何單位或個人認為本網(wǎng)站中的網(wǎng)頁或鏈接內(nèi)容可能涉嫌侵犯其知識產(chǎn)權(quán)或存在不實內(nèi)容時,應(yīng)及時向本網(wǎng)站提出書面權(quán)利通知或不實情況說明,并提供身份證明、權(quán)屬證明及詳細侵權(quán)或不實情況證明。本網(wǎng)站在收到上述法律文件后,將會依法盡快聯(lián)系相關(guān)文章源頭核實,溝通刪除相關(guān)內(nèi)容或斷開相關(guān)鏈接。

2021-07-04
科學(xué)計算如何快速又高效?Mars+傲騰告訴你訣竅
基于此,阿里巴巴推出基于張量的分布式計算框架Mars,并與英特爾合作,借助英特爾傲騰持久內(nèi)存提供的更大內(nèi)存容量與低時延特性,大幅加速科學(xué)計算任務(wù)中產(chǎn)生的中間過程的數(shù)據(jù)I/O,明顯提升分布式科學(xué)計算的

長按掃碼 閱讀全文