云服務(wù)讓HPC死而復(fù)生
HPC是高性能計(jì)算(High Performance Computing)機(jī)群的簡(jiǎn)稱(chēng),指能夠執(zhí)行一般個(gè)人電腦無(wú)法處理的大資料量與高速運(yùn)算的電腦,其基本組成組件與個(gè)人電腦的概念無(wú)太大差異,但規(guī)格與性能則強(qiáng)大許多。當(dāng)前通常指使用了GPU/FPGA/RDMA/高性能CPU等。
HPC性能很高,但同時(shí)帶來(lái)一個(gè)影響是,需要專(zhuān)門(mén)的軟件,更高的成本,所以客戶(hù)有綁定的風(fēng)險(xiǎn),所以客戶(hù)采購(gòu)的意愿很底。云服務(wù)資源租憑的模式有點(diǎn)讓HPC死而復(fù)生的感覺(jué)。
各大云服務(wù)廠商都提供了HPC服務(wù):
阿里的HPC
騰訊的HPC
阿里騰訊只是提供了物理機(jī)資源租憑,Azure/AWS在上層提供一個(gè)Batch服務(wù),解決HPC場(chǎng)景并行工作場(chǎng)景。下面以Azure為例:
https://docs.microsoft.com/zh-cn/azure/batch/batch-technical-overview
Azure 批處理是一項(xiàng)平臺(tái)服務(wù),適用于在云中有效運(yùn)行大規(guī)模并行和高性能計(jì)算 (HPC) 應(yīng)用程序。 Azure 批處理可以計(jì)劃要在托管的虛擬機(jī)集合上運(yùn)行的計(jì)算密集型工作,并且可以縮放計(jì)算資源,使之符合作業(yè)的需求。
使用 Azure 批處理時(shí),可以輕松定義用于大規(guī)模并行執(zhí)行應(yīng)用程序的 Azure 計(jì)算資源。不需要手動(dòng)創(chuàng)建、配置和管理 HPC 群集、各個(gè)虛擬機(jī)、虛擬網(wǎng)絡(luò)或復(fù)雜的作業(yè)和任務(wù)計(jì)劃基礎(chǔ)結(jié)構(gòu)。 Azure 批處理自動(dòng)執(zhí)行這些任務(wù),或者為用戶(hù)簡(jiǎn)化這些任務(wù)。
批處理是一種托管的 Azure 服務(wù),可用于實(shí)現(xiàn)批處理或批量計(jì)算 -- 運(yùn)行大量類(lèi)似任務(wù)以獲取所需的結(jié)果。定期處理、轉(zhuǎn)換和分析大量數(shù)據(jù)的組織最常使用批量計(jì)算。
Batch很適合處理本質(zhì)并行(也稱(chēng)為“超簡(jiǎn)單并行”)的應(yīng)用程序和工作負(fù)荷。本質(zhì)并行的工作負(fù)荷是指容易拆分成多個(gè)任務(wù),在多臺(tái)計(jì)算機(jī)上同時(shí)執(zhí)行的工作負(fù)荷。
常見(jiàn)使用此技術(shù)處理的一些工作負(fù)荷示例如下:
- 金融風(fēng)險(xiǎn)建模
- 氣候和水文數(shù)據(jù)分析
- 圖像渲染、分析和處理
- 媒體編碼和轉(zhuǎn)碼
- 基因序列分析
- 工程壓力分析
- 軟件測(cè)試
用戶(hù)還可以使用 Batch 執(zhí)行并行計(jì)算(***加上歸納步驟),以及其他更復(fù)雜的 HPC 工作負(fù)荷,例如 消息傳遞接口 (MPI) 應(yīng)用程序。
使用 Batch API 來(lái)與 Batch 服務(wù)交互的一個(gè)常見(jiàn)方案涉及在計(jì)算節(jié)點(diǎn)池上放大本質(zhì)并行任務(wù),例如渲染 3D 場(chǎng)景的圖像。例如,此計(jì)算節(jié)點(diǎn)池可能是“渲染場(chǎng)”,為渲染作業(yè)提供數(shù)十、數(shù)百甚至數(shù)千個(gè)核心。
下圖顯示一個(gè)常見(jiàn)的 Batch 工作流,其中有一個(gè)客戶(hù)端應(yīng)用程序或托管服務(wù)使用 Batch 運(yùn)行并行工作負(fù)荷。
在此常見(jiàn)方案中,應(yīng)用程序或服務(wù)執(zhí)行以下步驟,在 Azure Batch 中處理計(jì)算工作負(fù)荷:
1. 將輸入文件和處理這些文件的應(yīng)用程序上載到 Azure存儲(chǔ)帳戶(hù)。輸入文件可以是應(yīng)用程序要處理的任何數(shù)據(jù),例如金融建模數(shù)據(jù)或要轉(zhuǎn)碼的視頻文件。應(yīng)用程序文件可以是任何用于處理數(shù)據(jù)的應(yīng)用程序,例如 3D 渲染應(yīng)用程序或媒體轉(zhuǎn)碼器。
2. 在 Batch 帳戶(hù)中創(chuàng)建計(jì)算節(jié)點(diǎn)的 Batch 池 - 這些節(jié)點(diǎn)是將執(zhí)行任務(wù)的虛擬機(jī)。需要指定屬性,例如節(jié)點(diǎn)大小、其操作系統(tǒng),以及節(jié)點(diǎn)加入池時(shí)要安裝的應(yīng)用程序在 Azure 存儲(chǔ)中的位置(在步驟 1 中上載的應(yīng)用程序)。用戶(hù)還可以配置池,使之隨任務(wù)生成的工作負(fù)荷自動(dòng)縮放。自動(dòng)縮放可動(dòng)態(tài)調(diào)整池中的計(jì)算節(jié)點(diǎn)數(shù)。
3. 創(chuàng)建 Batch 作業(yè) ,在計(jì)算節(jié)點(diǎn)池上運(yùn)行工作負(fù)荷。創(chuàng)建作業(yè)時(shí),需要將它與 Batch 池關(guān)聯(lián)。
4. 將 任務(wù) 添加到作業(yè)。當(dāng)你將任務(wù)添加到作業(yè)時(shí),Batch 服務(wù)將自動(dòng)計(jì)劃任務(wù)在池中的計(jì)算節(jié)點(diǎn)上執(zhí)行。每項(xiàng)任務(wù)使用上載的應(yīng)用程序來(lái)處理輸入文件。
- 4a. 任務(wù)執(zhí)行之前,它可以將它要處理的數(shù)據(jù)(輸入文件)下載到它被分配到的計(jì)算節(jié)點(diǎn)。如果應(yīng)用程序未安裝在節(jié)點(diǎn)上(請(qǐng)參閱步驟 2#),可以從此處下載。下載完成后,任務(wù)將在它被分配到的節(jié)點(diǎn)上執(zhí)行。
5. 任務(wù)執(zhí)行時(shí),你可以查詢(xún) Batch 來(lái)監(jiān)視作業(yè)及其任務(wù)的進(jìn)度。客戶(hù)端應(yīng)用程序或服務(wù)通過(guò) HTTPS 與批處理服務(wù)通信。由于監(jiān)視的任務(wù)可能成千上萬(wàn),而這些任務(wù)又運(yùn)行在成千上萬(wàn)的計(jì)算節(jié)點(diǎn)上,因此請(qǐng)確保高效查詢(xún)批處理服務(wù)。
6. 當(dāng)任務(wù)完成時(shí),它們可以將其輸出數(shù)據(jù)上載到 Azure 存儲(chǔ)空間。也可直接從計(jì)算節(jié)點(diǎn)上的文件系統(tǒng)檢索文件。
7. 當(dāng)監(jiān)視檢測(cè)到作業(yè)中的任務(wù)已完成時(shí),客戶(hù)端應(yīng)用程序或服務(wù)可以下載輸出數(shù)據(jù)來(lái)進(jìn)一步處理或評(píng)估。
暢想一下,除了Batch場(chǎng)景,AI里面深度學(xué)習(xí)用tensorflow做訓(xùn)練的。未來(lái)大數(shù)據(jù)的一些框架也可能會(huì)搬到HPC上,加速HPC的應(yīng)用場(chǎng)景。
【本文為51CTO專(zhuān)欄作者“大數(shù)據(jù)和云計(jì)算”的原創(chuàng)稿件,轉(zhuǎn)載請(qǐng)通過(guò)微信公眾號(hào)獲取聯(lián)系和授權(quán)】