在 亚马逊云科技 ParallelCluster 3.6 中介绍 GPU

作者:马特·沃恩 | 2023 年 5

GPU 故障相对罕见,但一旦发生,可能会对 HPC 和深度学习任务造成严重后果。例如,它们可能会中断长时间运行的模拟和分布式训练作业。Amazon EC2 在启动实例之前会验证 GPU 的运行状况。它还会 定期进行状态检查 ,可以检测和缓解多种故障模式。但是,这种方法可能会错过 GPU 实例处于活动状态一段时间后出现的故障。

使用 亚马逊云科技 ParallelCluster 3.6,你可以配置在 Slurm 任务开始时运行的 NVIDIA GPU 运行状况检查。如果运行状况检查失败,则作业将在另一个实例上重新排队。同时,该实例被标记为不可用于新工作,一旦在其上运行的任何其他作业完成,该实例就会被取消配置。这有助于提高基于 GPU 的工作负载(至少是基于 NVIDIA 的工作负载)的可靠性,并有助于防止因工作失败而产生不必要的支出。

使用 GPU 运行状况检查

要开始使用 GPU 运行状况检查,你需要 ParallelCluster 3.6.0 或更高版本。您可以按照 此在线指南 来帮助您升级。接下来,按照以下示例和 亚马逊云科技 ParallelCluster 文档中的说明编辑您的集群 配置。 最后,使用新配置创建集群。

默认情况下,新集群上的 GPU 运行状况检查处于关闭状态。您可以在队列级别以及单个计算资源上启用或禁用它们。为此,请将 HealthChec ks 节添加到 Slurm 队列和/或单个计算资源中。如果您在计算资源级别为 Healthchecks: GPU: enab le d 设置了一个值,它将覆盖队列级别的设置。

Scheduling:
    SlurmQueues:
        - Name: <string>
          HealthChecks:
            Gpu:
                Enabled: <boolean>
          ComputeResources:
            - Name: <string>
              HealthChecks:
                Gpu:
                    Enabled: <boolean>

在队列或计算资源上启用 GPU 运行状况检查时, Slurm prolog 脚本将在这些脚本上运行的每个作业的开头执行。序言激活 NVIDIA 数据中心 GPU 管理器 (DCGM) 和 NVIDIA Fabric Manager ,并暂时将 GPU 持久模式 设置为激活。然后,它在 运行级别 2 上执行 DCGM ,这会检查 NVIDIA 软件堆栈的功能、PCIe 和 NVLink 状态、GPU 内存功能以及 GPU 内存带宽。运行状态检查后,节点将返回到原始状态。我们估计这需要不到 3 分钟的时间才能完成。

如果 GPU 诊断测试成功,ParallelCluster 会记录一条成功消息,任务将继续运行。

如果失败,ParallelCluster 会记录一条错误消息并开始缓解过程。首先,将任务重新安排到另一个实例上。然后,失败的实例被耗尽,因此不再为其分配工作量。在其上运行的所有作业完成后,它就会终止。如果实例上没有 GPU,则会记录下来并跳过诊断测试。

您可以在 /var/log/parallelcluster/slurm_health_check.log 上找到各个计算实例的 GPU 运行状况检查日志 。但是,一旦某个实例被 亚马逊云科技 ParallelCluster 停用,您就无法再访问它来读取此文件。

但是,运行状况检查日志也会永久存储在集群的 Amazon Cloud Wat ch 日志组中。要找到它们,请前往 亚马逊云科技 控制台并导航到 CloudWatch ,然后选择 日志组 。搜索您的集群名称,然后选择与之匹配的日志组。

  • 日志组名称是集群名称和日期戳的组合,因此,如果您有多个同名的集群,请选择日期戳与预期集群的创建日期相匹配的集群。
  • 日志流 下 ,您可以找到以运行它们的实例命名的运行状况检查日志。 例如,日志流 ip-172-31-2-17.i-0dc17624a7862b835.slurm_health_check 包含来自一个私有 IP 为 32.2.17 且实例标识符为 0dc17624a7862b8 35 的实例的日志。

如果您希望报告 GPU 故障,则可以使用与亚马逊支持部门对应的实例标识符。

需要注意的细节

GPU 运行状况检查是一项简单易用的功能。激活它们,ParallelCluster 将透明地监控并尝试缓解出现故障的 GPU。但是,在开始使用它们时,需要记住一些细节。

成本

在任务启动时验证 GPU 运行状况可最大限度地减少 GPU 实例在降级 GPU 下运行的时间。但是,在运行运行运行状况检查所花费的至少 2-3 分钟以及需要在实例上完成其他任务期间,您仍会产生使用费。此外,来自 GPU 运行状况检查的日志将发送到集群的 Amazon CloudWatch 日志组中的特定实例流。您可能需要为这些额外的日志数据支付费用。

自定义序言和结语

如果你明确为你的 Slurm 任务设置了自定义序言或后记,这可能会与 GPU 运行状况检查相冲突。 亚马逊云科技 ParallelCluster 文档对此进行了详细解释。 简而言之,ParallelCluster 3.6.0 指向一个用于查找 prolog 和 epilog 脚本的目录。请查阅文档,了解您的 prolog 和 epilog 配置如何与此交互。这可能很简单,比如将你的序言和尾声脚本放在 ParallelCluster 提供的目录中,让它们作为 Slurm 作业的一部分运行。

自定义 AMI

您可以将 GPU 运行状况检查用于任何 3.6.0 及以上版本的 ParallelCluster AMI,也可以对衍生的自定义 AMI 使用。GPU 运行状况检查依赖于 NVIDIA DCGM 的存在。如果找不到,则会生成一条日志消息,并且该作业将继续运行。因此,当您测试新的自定义 AMI 时,我们建议您在基于 GPU 的实例上检查一些运行状况检查日志,以确保运行状况检查可以按预期运行。

结论

使用 亚马逊云科技 ParallelCluster 3.6.0,您可以将集群配置为检测任何基于 NVIDIA 的 GPU 实例并从 GPU 故障中恢复。这有助于最大限度地减少 GPU 密集型工作负载的不必要成本和时间损失。你需要更新 ParallelCluster 的安装,然后将 运行状况检查 设置添加到集群配置中才能使用这项新功能。

试用 GPU 运行状况检查,告诉我们如何改进这些检查或 亚马逊云科技 ParallelCluster 的任何其他方面。如果它们可以量化地改善你的生活,你也可以告诉我们。通过 Twitter 联系我们,地址 为 @TechHPC 或发送电子邮件 至 ask-hpc@amazon.com

Twitter/社交媒体摘录:

建议的标签: HPC、ParallelCluster、NVIDIA、GPU、AI/ML

Matt Vaughn

Matt Vaughn

Matt Vaughn 是 HPC 和科学计算的首席开发者倡导者。他拥有生命科学背景,并且为长尾用户构建了用户友好的 HPC 和云系统。当不在笔记本电脑前时,他正在画画、读书、环游世界或和最近的狗一起玩耍。


*前述特定亚马逊云科技生成式人工智能相关的服务仅在亚马逊云科技海外区域可用,亚马逊云科技中国仅为帮助您发展海外业务和/或了解行业前沿技术选择推荐该服务。