2019年7月24日,阿里云峰會(huì)開發(fā)者大會(huì)在上海開啟。在IT基礎(chǔ)設(shè)施云化專場上,阿里云高性能計(jì)算總監(jiān)何萬青向開發(fā)者們分享了阿里云高性能計(jì)算技術(shù)產(chǎn)品的發(fā)展歷程和生態(tài)模式,對阿里云高性能計(jì)算的核心性能、場景應(yīng)用以及在加速計(jì)算、資源節(jié)約上做出的一系列系統(tǒng)優(yōu)化做了精彩介紹。
何萬青指出,當(dāng)高性能計(jì)算上云之后,真正帶來性能的是云計(jì)算資源的調(diào)配、安排怎么有效使用,阿里云E-HPC與SCC雙劍合璧,云超算應(yīng)用開發(fā)者需兼顧云計(jì)算彈性和神龍裸金屬并行性能做雙向性能優(yōu)化。
以下為何萬青現(xiàn)場分享全文實(shí)錄:
何萬青:今天的會(huì)議假設(shè)在座的都是高性能計(jì)算的編程者、使用者,我今天以使用者的角度,使大家看阿里云高性能計(jì)算2017年上線兩年多來現(xiàn)在的一個(gè)技術(shù)和產(chǎn)品的情況。
E-HPC,整個(gè)彈性計(jì)算的專場,我們知道ECS主要講彈性,彈性的根源就是虛擬化?,F(xiàn)在在高性能計(jì)算行業(yè),這幾年阿里云帶動(dòng)以來有一種說法叫超算云,各大超算中心,第三方軟件中心提供二次租賃,基石是超算云,不具備彈性,力度是一臺(tái)主機(jī),沒有做虛擬化。云超算和超算云是兩件事情,我們經(jīng)常看到云計(jì)算出來XX公司,XX政府部門搞一個(gè)云,把數(shù)據(jù)中心的牌子揭下來改成云計(jì)算,XX云,在技術(shù)上來講這是完全兩碼事情。
高性能計(jì)算,這個(gè)行業(yè)做了15、16年,之前實(shí)際上從05年開始做,原來在英特爾做高性能計(jì)算的優(yōu)化,也做過天河1、天河2。中國每次兩次的SCC,超級計(jì)算大會(huì),每年評兩次世界TOP500,這些技術(shù)的發(fā)展,超計(jì)算是所有技術(shù)的峰頂,會(huì)往下進(jìn)行技術(shù)的擴(kuò)散。特別在05年以后,基本上是用通用服務(wù)器,通過高速互聯(lián)的網(wǎng)絡(luò),并行的系統(tǒng)連成超計(jì)算機(jī)。TOP500全部都是計(jì)算集群。
后來出現(xiàn)一個(gè)事件,大家叫做網(wǎng)格計(jì)算,最早是亞馬遜,接著是微軟,接下來是阿里云。高性能計(jì)算的算法,模式上云是有障礙的,這來自幾個(gè)方面。高性能計(jì)算或者超算用戶,第一是存量用戶,不管是做有倉模擬,地震資料模擬,氣象模擬,所有的資料是跟互聯(lián)網(wǎng)公司、云公司的基礎(chǔ)結(jié)構(gòu)完全不一樣,互聯(lián)網(wǎng)公司或者云公司計(jì)算架構(gòu)是出自大數(shù)據(jù),包括阿里云剛開始做大數(shù)據(jù)的處理,是分步式計(jì)算,異步計(jì)算,每個(gè)節(jié)點(diǎn)上由當(dāng)?shù)氐臄?shù)據(jù)互聯(lián)網(wǎng)上,當(dāng)?shù)赝瓿捎?jì)算,異步通信,高性能計(jì)算由于解方程,每個(gè)時(shí)間迭代上算完所有的節(jié)點(diǎn),才能進(jìn)行下一步,所以有幾個(gè)核心要求:
第一,單個(gè)節(jié)點(diǎn)的性能非常高,高主頻,多核,還有一點(diǎn)是有很大的心理障礙,就是說虛機(jī)是有損失的,所以不愿意用云。
第二,同步通信帶來的對延遲的極致的要求。在阿里云用RDMA跟它同一個(gè)延遲數(shù)量級兩個(gè)微妙之間完成點(diǎn)對點(diǎn)。另外一點(diǎn)就是,RDMA的網(wǎng)絡(luò)對大量的互聯(lián)網(wǎng)應(yīng)用,會(huì)有大量普惠性,而高性能計(jì)算具有垂直和分多個(gè)行業(yè),每個(gè)行業(yè)有頭部應(yīng)用,有汽車碰撞或者渲染。
第三,高吞吐并行軟件系統(tǒng)?;ヂ?lián)網(wǎng)上云公司做的最好的是數(shù)據(jù)的保護(hù)和穩(wěn)定,弱點(diǎn)在與沒有并行運(yùn)動(dòng),沒有辦法做幾十個(gè)GB的吞吐,國家氣象級需要幾十GB的吞吐。阿里云要做的就是近似裸金屬的性能,但是具備云的彈性,才能叫云超算。二是網(wǎng)絡(luò),還要把并行軟件系統(tǒng)做到盤古上去。
面對大計(jì)算,大家聽過神龍,在神龍?zhí)摂M化出現(xiàn)之前,我們說的Znn的KPI都需要一部分的CPU拿來做High Performance。云公司之間的底層之間的差距在于,誰能把更多的水賣出去,你總要喝水,這是虛擬化的開銷。我們做的神龍就是把High Performance通過軟硬件的方式實(shí)現(xiàn)了。
一方面如果實(shí)現(xiàn)了HP?High Performance之后,整個(gè)的輸出是彈性的,可以連上VPC、云盤,連上阿里云所有的存儲(chǔ)產(chǎn)品,IO網(wǎng)絡(luò)。剩下的計(jì)算部分,剛剛講到的整倍速輸出,高性能計(jì)算最大的問題,一是需要裸金屬的性能,二需要隔離性,這可以都做到。每一代的處理器的推出,像英特爾不會(huì)所有的新的feature馬上虛擬化,沒有辦法通過完全虛擬化的方式得到feature。這一部分跟超算中心是一樣的東西,提供頂級超算的配置,如果喜歡,就可以用8K的GPU再加上48核,我們會(huì)算成倍,這樣就可以達(dá)到頂級超算的性能。云計(jì)算,當(dāng)高性能計(jì)算上云之后,真正帶來性能的是我們剛剛說的,云計(jì)算資源的調(diào)配、安排怎么有效的使用。
三年前的測試數(shù)據(jù),全國的超算中心CPU使用率30%以下,沒有辦法做更小的切割。在計(jì)算過程中,伸縮是沒有辦法釋放和擴(kuò)展的。
在做高性能計(jì)算的時(shí)候有幾種選擇。一種是亞馬遜把實(shí)例做出來,上云維出一個(gè)超算,這叫松耦合。還有微軟起步晚,就干脆買來克雷機(jī)器用。阿里采用一種native cloud的模式。線下超算是這樣子,計(jì)算節(jié)點(diǎn),文件存儲(chǔ)、圖形節(jié)點(diǎn)、頭節(jié)點(diǎn)。阿里云上百種instance用高速互聯(lián)的racky而連在一起,形成網(wǎng)絡(luò)之后,可以跟我其他的文件存儲(chǔ)產(chǎn)品登錄節(jié)點(diǎn)。所有的超算都是這樣,立項(xiàng)、OEM應(yīng)標(biāo),最后下來只有一套配置,沒法再變了,只能拿應(yīng)用對它優(yōu)化。
另外一種是在云上提交,使用這份資源的時(shí)候,這一部分的機(jī)器是公共的。但是在你的VPC你是私有的,你不用的時(shí)候別人在用,這才是真正攤平成本最重要的事情。不能說我用別人不能用,那你就不要買便宜貨,你就不能省錢。這一部分是專線連上公有云讓你用,整個(gè)使用方式是一樣的,怎么樣部署集群,提交任務(wù),我后面大概講一下。
在阿里云上去做高性能計(jì)算,實(shí)際上它是在基礎(chǔ)上做了一個(gè)PaaS平臺(tái),把所有的計(jì)算節(jié)點(diǎn)、登錄節(jié)點(diǎn)、軟件存儲(chǔ),通過軟件站變成一個(gè)并行計(jì)算的環(huán)境和編程的環(huán)境。和超算中心很不一樣的地方是第一個(gè)要買,按量付費(fèi),一般來講大型的行業(yè)知道自己的工作的模式,他會(huì)按年包月。但是我們看到很多的基金用戶使用安量付費(fèi),因?yàn)樗目蒲泻腿蝿?wù)是變動(dòng)的,這個(gè)時(shí)候需要能夠自動(dòng)伸縮保證它每次用的是正好夠用的,像每次買電一樣。
還有就是在阿里云和公共云上都有一種競價(jià)實(shí)例,這個(gè)適合搞科研的同學(xué)。因?yàn)椴荒鼙WC每天算多少,是腦袋來靈感才運(yùn)算,所以競價(jià)實(shí)例正好跟高性能計(jì)算行業(yè)長期形成的東西,叫斷點(diǎn)續(xù)算。大部分的預(yù)算,氣象預(yù)算,他們的超算中心硬件故障率蠻高,算上幾天突然間有一個(gè)節(jié)點(diǎn)壞了,不可以從頭開始算的,就不預(yù)報(bào)了。其實(shí)隔一定的時(shí)間,隔兩分鐘再往下算,這個(gè)跟阿里云競價(jià)實(shí)例在一起,這樣成本基本上沒有什么損失。其他的功能,大家會(huì)后可以看到材料。通過幾個(gè)鍵的點(diǎn)擊就可以在公共云上形成自己一套超算,最大的好處對于搞科研和工程人來講,真的不需要學(xué)習(xí)怎么樣構(gòu)建集群等這一套東西。
我剛剛來的時(shí)候做了一個(gè)實(shí)力演示,發(fā)現(xiàn)我們只能用工作人員的,不能用自己的。在公共云平臺(tái)上,通過硬件配置、軟件配置、基礎(chǔ)配置,最后形成類似你點(diǎn)開有一個(gè)拓?fù)?,這是標(biāo)準(zhǔn)的拓?fù)?,我單個(gè)節(jié)點(diǎn),單個(gè)實(shí)力,兩臺(tái)加上三臺(tái)計(jì)算節(jié)點(diǎn),計(jì)算過程中可以變配,形成這樣一個(gè)集群。還有一點(diǎn),會(huì)把你在上面的文件導(dǎo)入導(dǎo)出,可以動(dòng)作阿里云通過計(jì)算流數(shù)據(jù)流的方式在自己的集群上。我自己編程是兩種模式,我這個(gè)腳本可以通過內(nèi)部給弄上去,然后提交就可以了。
高性能計(jì)算里面,又不可或缺,又容易被忽視的是調(diào)度器。調(diào)度器在物理集群上發(fā)揮不了多少作用,對你來說它就是把一個(gè)job發(fā)出去,規(guī)定多少進(jìn)程,然后排隊(duì)。因?yàn)楸旧硭挠布]辦法做伸縮或者細(xì)顆粒度的切片。在云上高性能計(jì)算,大家發(fā)現(xiàn)所有的好處都來自調(diào)度器,我們在上面調(diào)度,最常用的PBS、SLURM、SGE、OpenGrid、CUBE。我們可以在切片的力度上追蹤每一個(gè)job排隊(duì)有多少,現(xiàn)在有多少節(jié)點(diǎn),有多少節(jié)點(diǎn)等待,通過資源編排和自動(dòng)伸縮可以實(shí)現(xiàn)高密度的調(diào)度。我們有車廠的客戶,上汽、吉利集團(tuán),吉利集團(tuán)是最大用阿里云的集團(tuán),公共云,一萬七千核,90%以上的利用率。上汽在擴(kuò)容,90%以上的利用率已經(jīng)用了一年多,靠的是底層的非常靈活的切片和調(diào)度。
在用云上做計(jì)算的時(shí)候,老師包括開發(fā)者會(huì)忘記一件事情,上傳數(shù)據(jù)的時(shí)候,永遠(yuǎn)是保密的,是免費(fèi)的。數(shù)據(jù)停留的時(shí)間和最后下拉還是有一點(diǎn)費(fèi)用,這個(gè)是通過類似云盤的方式,把數(shù)據(jù)通過商戶上OSS上門去,導(dǎo)入并行系統(tǒng)再做計(jì)算。好多老師算完以后,忘記往下拉,過一段時(shí)間想起還有數(shù)據(jù)在那挪用,他在那放了一個(gè)月,它肯定還在那,我們一般是保留的?,F(xiàn)在的方式就是一方面數(shù)據(jù)是可以用私有云,因?yàn)榭梢越ê芏嗟募?,互相可以分享,也可以自己用。模式是這樣的,可以用控制臺(tái)。
后面講很重要的技術(shù),在高性能計(jì)算領(lǐng)域大部分的軟件工程師其實(shí)是做性能優(yōu)化和并行工作的,我做了十多年,我們發(fā)現(xiàn)很有意思的事情,針對一個(gè)應(yīng)用,針對某一平臺(tái)的優(yōu)化只能用在自己機(jī)器。作為公共云,大量的用戶跑同樣特征的應(yīng)用的時(shí)候,我們沒有業(yè)務(wù)數(shù)據(jù),不觸碰客戶的數(shù)據(jù),但是CPU利用怎么樣,我是可以偵測到的。我可以通過優(yōu)化和搜集底層的行為,去優(yōu)化系統(tǒng)配置應(yīng)用。
簡單來講,像智能手機(jī)一樣,你越用越聰明,其實(shí)集群也應(yīng)該這樣,阿里云通過機(jī)器學(xué)習(xí)優(yōu)化什么時(shí)候做熱遷移。在云上有不同的偵測工具,這些工具就是一個(gè)試撥器。試撥器在并行過程中,跟進(jìn)程綁定,和進(jìn)程起始和線程綁定,會(huì)找TOP的進(jìn)程,會(huì)把所去選擇的指標(biāo)進(jìn)行時(shí)間對齊。很有意思的是,跑一遍之后,隨時(shí)可以調(diào)出數(shù)據(jù)進(jìn)行解剖,驗(yàn)試程序,看到底能不能跑更快。它跟高性能計(jì)算的領(lǐng)域長期發(fā)展的一套優(yōu)化的方法論是相關(guān)的。
高性能計(jì)算的優(yōu)化是分層的,最上面的都是大尺度的,而且相對容易一點(diǎn)。優(yōu)化到底層需要一些工具,每一層的優(yōu)化,處理器發(fā)展到現(xiàn)在,英特爾處理器大概幾年前有四百個(gè)以上的PMU測試指標(biāo)。真正關(guān)心的是頭部幾個(gè),這幾個(gè)是工程師的知識(shí)儲(chǔ)備。我們把這種基于工程師的技術(shù)產(chǎn)品化,它會(huì)一層一層的,一開始看集群,整個(gè)大盤上是不是均衡,進(jìn)入節(jié)點(diǎn)級,然后做時(shí)間對齊,然后進(jìn)入時(shí)間進(jìn)程,到函數(shù)一級。這些我們會(huì)選TOP指標(biāo),這些分布在四個(gè)象限,所有的性能,單節(jié)點(diǎn),多節(jié)點(diǎn),在四個(gè)象限上面,該選哪些指標(biāo)是真正見功夫的。如果拿這個(gè)看搜索引擎,該選的指標(biāo)不一樣。搜索引擎在8毫秒IPOS多大,這個(gè)叫頂級指標(biāo)。所以形成在云上面一個(gè)應(yīng)用有什么樣的一個(gè)特征,完了之后通過它來知道你該選什么樣的集群。
云上的超算,最大可以做的地方就是彈性伸縮。做高性能計(jì)算現(xiàn)在為止十多年來,圈子里有一個(gè)特點(diǎn),都是性能優(yōu)化的高手,每次講完大家感覺就是這人很牛,但是他做的我學(xué)不來,優(yōu)化高手提高三倍,好牛,但是沒有用。原因是,它沒有辦法轉(zhuǎn)化成產(chǎn)品或者知識(shí)。
在云上看似覺得沒有門檻,但是真正給你帶來性能和資源的是這個(gè)。我在進(jìn)去的時(shí)候,任務(wù)提交是四個(gè)節(jié)點(diǎn),接著提交四個(gè)節(jié)點(diǎn),它會(huì)自動(dòng)增加,這么簡單的事情在線下是做不了的。我現(xiàn)在畫的是節(jié)點(diǎn),我可以做到VCPU。怎么做?彈性伸縮做成什么樣,在十個(gè)節(jié)點(diǎn),現(xiàn)在發(fā)八個(gè)節(jié)點(diǎn)工作上去,然后再兩個(gè)四個(gè)節(jié)點(diǎn)上去,每兩分鐘,看頭節(jié)點(diǎn)上放有調(diào)度器偵測,在計(jì)算節(jié)點(diǎn)偵測它的使用率,它有兩個(gè)控制。我現(xiàn)在增加八個(gè),我只要增加六個(gè)就可以了。甚至可以做到額外節(jié)點(diǎn),總會(huì)有一些調(diào)度出問題,所以會(huì)增加一些水位,包括會(huì)有一個(gè)擴(kuò)容比例,不希望每個(gè)進(jìn)去都不用排隊(duì)馬上做到,擴(kuò)40%。其實(shí)就是排排隊(duì),這些做法完全在云上全部自動(dòng)。
你可以設(shè)置這種policy,比如說你是學(xué)生,我就這么點(diǎn)錢,我想算一個(gè)東西,我不在乎時(shí)間多長,我想起來就算算,那就買便宜的資源,但是我規(guī)定好多少個(gè)節(jié)點(diǎn)。有些老師讓后天馬上交論文,那就找云,因?yàn)檎胰魏纬阒行亩家抨?duì),每個(gè)上面的工作都不敢剔掉??s容,如果老是檢測,連續(xù)幾個(gè)節(jié)點(diǎn)一直沒有工作,我就把它放棄掉,這一部分就不用付錢了。我們很多的算法都是圍繞著彈性伸縮來做的,這是云彈性計(jì)算產(chǎn)品的核心。
閑時(shí)計(jì)算,大量超算應(yīng)用和開源都有Check-point的功能,國家氣象局只用兩家公司IBM和ICI。原因只有他們兩個(gè)做Check-point。今天要預(yù)報(bào)24小時(shí)三公里,我要算8個(gè)小時(shí),算到6個(gè)小時(shí)的時(shí)候,存儲(chǔ)出問題了,如果重新算,新聞聯(lián)播就播不了了。那怎么做呢?正好跟阿里云搶占式資源,我們現(xiàn)在很多的資源放在一個(gè)大池子里,你搶到以后,一個(gè)小時(shí)自動(dòng)釋放掉,這樣搞下去,就很便宜,一折。每次放掉以后,馬上搶到下一個(gè),搶到下一個(gè)之后從上次計(jì)算的斷點(diǎn)算,這是可以的。這是分子動(dòng)力學(xué)GROMACS,設(shè)置每兩分鐘把計(jì)算狀態(tài)存到BT里面去,把每次計(jì)算的結(jié)果放到一個(gè)文件里面,我們算的時(shí)候就會(huì)發(fā)現(xiàn)閑時(shí)計(jì)算的成本比常規(guī)計(jì)算低了不止一半。
大家可以看一個(gè)視頻,現(xiàn)在生成它的集群了,我作為用戶登進(jìn)去,這是自動(dòng)伸縮的模式定下來,我把作業(yè)提交上去,它是一個(gè)壓縮的,上去之后展開。這是在分析它計(jì)算過程中,節(jié)點(diǎn)1被搶占釋放,稍后擴(kuò)容到節(jié)點(diǎn)2運(yùn)行,我們可以看進(jìn)程的方式,就是這個(gè)模式。第一個(gè)進(jìn)程在算的過程中,一個(gè)小時(shí)被搶斷,搶斷之后,迅速搶到另外一個(gè)資源繼續(xù)算。這個(gè)方式特別適合大的調(diào)研組或者學(xué)院,就用這個(gè)方式算。
高性能計(jì)算還有一個(gè)很重要的環(huán)節(jié),基本上做科學(xué)和工程計(jì)算,很重要的一點(diǎn)有大量的錢處理網(wǎng)格。第二一定要有可視化,無論做流場、壓力場等磁場,里面有一大類計(jì)算需要GPU或者遠(yuǎn)程桌面要求?,F(xiàn)在由于背后的計(jì)算資源越來越大,石油公司會(huì)用幾十臺(tái)的渲染集群去做,然后逐層解釋,解釋之后改回再算。這個(gè)過程是完全可以上云,阿里云上除了做GPU加速計(jì)算,還有云圖站。
我們怎么做呢?先去創(chuàng)建graph集群,這個(gè)集群和存儲(chǔ)和計(jì)算節(jié)點(diǎn)輸出綁定,之后可以調(diào)用渲染的APP,或者在直接在上面進(jìn)行物理計(jì)算再輸出,這都是可以的。使用也是一樣,把它看成一種計(jì)算資源,它是拿來做可視化的,它要交互。最重要的問題是,這臺(tái)機(jī)器和你的辦公室連線的延遲,問題不在它有多強(qiáng),而在延遲。一般來看,超過幾十毫秒,就感覺到不爽?,F(xiàn)在有很多的公共超算在延遲上,這是阿里云為什么在全世界,在中國建立這么多可用區(qū),可用區(qū)建在哪里都是可以的,如果很在乎交互,延遲是很重要的。
剛剛看到在阿里云超算的時(shí)候,這個(gè)過程,首先按賬戶上傳到OSS上。石油中心用閃電立方一下傳過去,通過OSS下載在云上的并行文件系統(tǒng),然后計(jì)算,可視化,這是一個(gè)流程,數(shù)據(jù)流和控制流的關(guān)系。在用的時(shí)候要轉(zhuǎn)化思維,不是用旁邊的機(jī)器,你在使用一個(gè)付費(fèi)的資源。
阿里云過去是做IaaS為主,隨著場景越來越復(fù)雜,高性能計(jì)算分成多個(gè)行業(yè)的場景,每個(gè)場景都不一樣,有并行調(diào)度。就把PaaS做出來,基本上不碰SaaS。大量的應(yīng)用本身是付費(fèi)的,而且特別貴,我們是和底層資源調(diào)度,尤其彈性伸縮綁定再生一起,怎么把license能夠用得更高效。像石油行業(yè),一套license可以上千萬,整個(gè)系統(tǒng)都是它的。阿里云把我們的調(diào)度和我們整個(gè)的PaaS能力輸出給第三方合作伙伴,他們根據(jù)我們最終用戶做出他們的業(yè)務(wù)系統(tǒng),這個(gè)業(yè)務(wù)系統(tǒng)調(diào)動(dòng)的都是高性能計(jì)算并行的公益軟件。
作為開發(fā)者,你們看到的EHPC是什么樣的?這是阿里云的高性能計(jì)算的生態(tài)模式,我講的是這一部分。謝謝!
您也可以關(guān)注我們的官方微信公眾號(hào)(ID:ctoutiao),給您更多好看的內(nèi)容。