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