
Azure 提供7个不同的虚拟机类别,包括计算优化型、内存优化型和加速计算型,涵盖了50多个不同的系列,如 Fsv2 系列、Edv5 系列和 ND A100 v4 系列。每个系列都有多种可用的 SKU,为您提供更多选择。因此如果缺乏明确的指导,那么筛选出不适合的虚拟机类别和系列、确定适合您工作负载的最佳虚拟机可能会颇具挑战。
本篇文章将提供一个简明的概述,为您介绍如何选择适当的 SKU 以及需要考虑的关键因素。这是一种系统性方法,用于筛选出不适合的虚拟机类别,并通过评估虚拟机系列和 SKU 来缩小选择范围。
#1
确定工作负载要求
确定适合 HPC 工作负载的推荐虚拟机,第一步是了解您的工作负载要求,包括工作负载所需的核心数、内存、存储和网络带宽。您可以通过分析现有的工作负载或根据计划运行的应用程序来评估需求。
上述建议听起来很简单,但实际操作过程中常常会遇到必要信息缺失或不清楚的地方。在这种情况下,可能需要进行额外的研究或咨询领域内的专家以获得所需信息。在决策之前,花时间收集所有必要的信息十分重要,以避免潜在的问题。
有了这些信息,我们需要首先回答的问题是:
1
GPU 计算 vs 只需要 CPU 计算?
如果需要 GPU,搜索范围应该缩小到 Azure 上可用的各个 N 系列中的加速计算虚拟机类别。这些系列提供了适用于各种场景的几代 NVIDIA 和 AMD GPU,包括 3D 可视化、数字计算和机器学习训练与推断。
一般情况下,您已经了解了特定工作负载所需的 GPU。主要任务是确定支持该 GPU 的系列,并确定您的 SKU 中需要多少张卡来满足工作负载的要求。
当需要基于 CPU 的虚拟机时,分析将进一步继续,需要回答以下问题。
2
需要的 RAM 和核心之间的比例
确定内存与核心的适当比例是一个关键的决策参数,因为 Azure 虚拟机的比例取决于它们的类别。典型的内存与核心比例包括每核心2GB、每核心4GB和每核心8GB。较低的比例,如每核心1GB,可能适用于性能较低的虚拟机,例如 B 系列;而较高的比例,如每核心58GB,可以在 HX 系列的受限尺寸中找到。
3
您需要哪种处理器类型?
在某些企业解决方案中,可能需要使用特定的处理器品牌。在这种情况下,搜索范围可以缩小到仅支持特定处理器的虚拟机。在没有关于处理器类型的特定建议的情况下,可以考虑使用 Intel 和 AMD 处理器。
在这种情况下,可能需要测试具有不同处理器配置的不同系列,以了解它们对应用程序执行时间的影响。通过比较具有不同处理器类型的不同虚拟机的性能,您可以确定最适合您特定工作负载的选项。
4
您的应用程序如何扩展?
应用程序的性能特点取决于其开发方式。因素包括应用程序是单线程还是多线程、执行时间是计算受限还是内存受限,以及是否需要高水平的网络吞吐量来在中央存储库中传输数据,或者它们使用本地 NVME 或 SSD 作为临时存储,所有这些都会影响性能。
了解 RAM 和核心之间的比例以及应用程序的性能特点可以帮助您确定适用于您的工作负载的合适虚拟机 SKU。一旦您选择了一个虚拟机,您还需要决定是在单个较大的节点上运行多个任务还是将它们分布在多个节点上。
在单个节点上运行多个任务可以最大限度地利用资源并降低成本,但您需要确保节点具有足够的资源来处理所有任务。如果任务需要大量的 CPU 或内存资源,或者如果任务具有高 I/O 负载,将它们在单个节点上运行可能不是最高效的解决方案。在这种情况下,最好将任务分布在多个节点上,以避免达到虚拟机的限制。
#2
了解不同的虚拟机类型
正如本文前面所提到的,Azure 提供了各种不同的虚拟机配置,涵盖了多个类别和系列。然而,评估每个虚拟机配置可能是一项耗时且资源密集的任务。为了避免这种情况,重要的是在宏观层面上理解它们之间的区别,以制定一个结构化的方法,将搜索范围缩小到一组可管理的选项。
以下是一般指导原则:如果您在数十个或数百个虚拟机上运行需要低延迟网络通信的大型模型,则 H 系列的虚拟机可能是最佳选择。对于内存受限的场景,HB 系列优于 HC 系列。如果 HB 系列的内存量不足,HX 系列可能是合适的尺寸。
另一方面,如果您在数百个节点上运行具有并行计算的模拟,节点之间没有内部通信,那么最新一代的 D 系列和 E 系列虚拟机可能提供了性价比和性能之间的良好平衡。如果超线程不可行,您应该评估 H 系列虚拟机,如果您的应用程序能够很好地扩展,可以选择具有更高任务数的节点。
#3
确定性能基准
根据上面提供的信息,您可能已经对哪些 SKU 能够为您的应用程序提供最佳性能有了一定的了解。然而,最可靠的评估性能的方法是进行性能基准测试。这些基准测试可以帮助您确定应用程序在不同处理器类型、内存/核心比例和可扩展性选项下的行为。那么如何进行性能基准测试呢?
想象以下示例:一个客户正在本地运行一款基因组学应用程序,她希望将其迁移到云上。她了解应用程序在本地运行的实际硬件,但不知道哪种 Azure 虚拟机可以在执行时间、性能和成本方面提供最佳结果。
根据工作负载需求,您将得到以下信息:
根据一般指导原则:
创建如下测试矩阵将是一种有益的方法,可以系统地评估所确定的虚拟机配置的性能。进行详尽的测试可能需要很多时间和资源,在这种情况下,应执行25个测试,以便填充完整的表格,记录相同案例在所有这些 SKU 上的执行时间。

执行至少一行和一列的完整测试,可以对应用程序在不同的 RAM/核心比例下的行为以及在多个处理器和 RAM/核心比例下的横向扩展情况有一个整体的了解。这有助于减少需要进行的测试数量,找到合适的 VM 类型、系列和 SKU,节省时间和资源。
在这种情况下,行测试案例可以帮助我们了解应用程序在不同的 RAM/核心比例下在横向扩展场景中的行为。相反,列测试案例可以帮助我们了解应用程序在不同处理器和 RAM/核心比例下的横向扩展情况。如果第一个测试的横向扩展结果不理想,也可以选择第一列来进行测试。
#4
执行基准测试
下一步是选择客户应用程序的一个代表性示例,用于测试测试矩阵中的不同硬件配置。从这个代表性示例获得的结果可以推广到整个数据集。
为了进行高效且简便的测试,建议创建一个包含所有所需软件的自定义映像,并构建一个 Bicep 模板或 AZ CLI 脚本来创建所需数量的虚拟机 (VM)。一旦设置好了虚拟机,可以使用自定义脚本扩展启动测试执行,这有助于在进行大量测试时减少成本。
如果您的应用程序行为取决于示例的大小,则应根据所确定的大小(例如小、中、大、特大)多次执行测试矩阵。
#5
分析基准测试结果
完成基准测试后,上述表格应填入每个作业的时间信息。可以按以下方式解释结果:
最短执行时间:通过找到执行时间最短的单元格,可以确定最佳的 VM 系列、SKU 和每个节点的任务数的组合,以实现尽可能快速的结果。
成本优化:如果将表格中的数据乘以每个 VM 配置的每分钟或每小时价格,可以确定实现结果的最佳组合,以达到最低成本。
有可能找到的其中一种组合既是最快速的选项,也是最便宜的选项,这种情况下,您已找到了运行作业的最佳配置。当出现不同的组合时,您应根据每种情况的特定要求,决定是优化性能还是成本。
本文概述的流程提供了在常见场景下如何简单、系统性地识别适用于 HPC 工作负载的合适 SKU,但它可能无法涵盖所有可能影响特定用例的其它因素。您可以在测试开始时考虑额外因素,以满足特定要求。通过在测试矩阵中选择适当的 VM 系列并回答这些问题,您可以更有效地确定适合您工作负载的最佳配置。
例如,如果您的应用程序对输入/输出数据有很大依赖性,那么网络带宽或本地 NVME/SSD 等因素可能比 RAM 与核心的比率更为关键。因此,重要的是仔细评估您工作负载的独特需求,并考虑本文所述之外的其他因素,以确保获得最佳性能。





