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专栏作者“大数据和云计算”的原创稿件,转载请通过微信公众号获取联系和授权】