SageMaker HyperPod 常见问题 - Amazon SageMaker
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

SageMaker HyperPod 常见问题

使用以下常见问题来解决使用问题 SageMaker HyperPod。

问:为什么我在 Amazon CloudWatch 中找不到我的 SageMaker HyperPod 集群的日志组?

默认情况下,代理日志和实例启动日志会发送到 HyperPod 平台账户的 CloudWatch。对于用户生命周期脚本,生命周期配置日志会发送到您的账户 CloudWatch。

如果您使用 HyperPod 服务团队提供的生命周期脚本示例,则可以找到写入的生命周期配置日志/var/log/provision/provisioning.log,并且不会遇到此问题。

但是,如果您使用自定义路径从生命周期配置中收集日志,但找不到账户中显示的日志组 CloudWatch,则可能是由于生命周期脚本中指定的日志文件路径与在 HyperPod 集群实例上运行的 CloudWatch 代理所查找的内容不匹配。在这种情况下,这意味着您需要正确设置生命周期脚本以向 CloudWatch 代理发送日志,并相应地设置 CloudWatch 代理配置。要解决此问题,请选择以下选项之一。

  • 选项 1:更新要写入日志的生命周期脚本/var/log/provision/provisioning.log

  • 选项 2:更新 CloudWatch 代理以查找用于日志生命周期配置的自定义路径。

    1. 每个 HyperPod 集群实例都包含一个 JSON 格式的 CloudWatch 代理配置文件,位于/opt/aws/amazon-cloudwatch-agent/sagemaker_cwagent_config.json。在配置文件中,找到字段名称logs.logs_collected.files.collect_list.file_path。默认设置为 HyperPod,键值对应"file_path": "/var/log/provision/provisioning.log"如中所述。 SageMaker HyperPod 在实例级别进行日志记录以下代码片段显示了 HyperPod 默认配置下 JSON 文件的外观。

      "logs": { "logs_collected": { "files": { "collect_list": [ { "file_path": "/var/log/provision/provisioning.log", "log_group_name": "/aws/sagemaker/Clusters/[ClusterName]/[ClusterID]", "log_stream_name": "LifecycleConfig/[InstanceGroupName]/{instance_id}", "retention_in_days": -1 } ] } }, "force_flush_interval": 3 }
    2. "file_path"字段名称的值替换为您在生命周期脚本中使用的自定义路径。例如,如果您已设置要写入的生命周期脚本/var/log/custom-provision/custom-provisioning.log,请按如下方式更新该值以使其与之匹配。

      "file_path": "/var/log/custom-provision/custom-provisioning.log"
    3. 使用配置文件重新启动 CloudWatch 代理以完成自定义路径的应用。例如,以下 CloudWatch 命令显示如何使用步骤 1 中的 CloudWatch CloudWatch 代理配置文件重新启动代理。有关更多信息,另请参阅对 CloudWatch 代理进行故障排除

      sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl \ -a fetch-config -m ec2 -s -c \ file:/opt/aws/amazon-cloudwatch-agent/sagemaker_cwagent_config.json

问:在 Slurm 配置文件(例如和)中 HyperPod 管理哪些特定的配置?slurm.confgres.conf

当您在上创建 Slurm 集群时 HyperPod, HyperPod 代理会根据您的集群创建请求slurm.conf和生命周期脚本/opt/slurm/etc/将和gres.conf文件设置为管理 Slurm HyperPod 集群。以下列表显示了 HyperPod 代理处理和覆盖的特定参数。

重要

我们强烈建议您不要更改由管理的这些参数 HyperPod。

  • 在中 slurm.conf, HyperPod 设置以下基本参数:ClusterNameSlurmctldHostPartitionName、和NodeName

    此外,要启用该自动恢复功能, HyperPod 需要按以下方式设置TaskPluginSchedulerParameters参数。默认情况下, HyperPod 代理将这两个参数设置为所需的值。

    TaskPlugin=task/none SchedulerParameters=permit_job_expansion
  • 在中 gres.conf, HyperPod 管理 G NodeName PU 节点。

问:如何在 Slurm 节点上运行 Docker? HyperPod

为了帮助您在运行的 Slurm 节点上运行 Docker HyperPod, HyperPod 服务团队提供了安装脚本,您可以将这些脚本包含在集群创建的生命周期配置中。要了解更多信息,请参阅从提供的基本生命周期脚本开始 HyperPod在 Slurm 计算节点上运行 Docker 容器 SageMaker HyperPod

问:如何使用本地 NVMe 存储的 P 实例来通过 Slurm 启动 Docker 或 Enroot 容器?

由于头节点的默认根卷通常受到 100GB EBS 卷的限制,因此您需要设置 Docker 和 Enroot 才能使用本地 NVMe 实例存储。要了解如何设置 NVMe 存储并使用它来启动 Docker 容器,请参阅。在 Slurm 计算节点上运行 Docker 容器 SageMaker HyperPod

问:如何设置 EFA 安全组?

如果要创建具有启用 EFA 的实例的 HyperPod 集群,请确保设置安全组以允许所有进出安全组本身的入站和出站流量。要了解更多信息,请参阅 A mazon EC2 用户指南中的步骤 1:准备启用 EFA 的安全组

问:如何监控我的 HyperPod 群集节点? 是否有从中导出的 CloudWatch 指标 HyperPod?

为了获得对集群资源利用率的可观察性,我们建议您将 HyperPod 集群与 Amazon Managed Grafana 和适用于 Promethe HyperPod us 的亚马逊托管服务集成。借助各种开源 Grafana 仪表板和导出器包,您可以导出和可视化与集群资源相关的 HyperPod 指标。要详细了解如何 SageMaker HyperPod 使用亚马逊托管 Grafana 和适用于 Prometheus 的亚马逊托管服务进行设置,请参阅。监控 SageMaker HyperPod 集群资源请注意, SageMaker HyperPod 目前不支持将系统指标导出到 Amazon CloudWatch。

问:我能否向 HyperPod 群集节点添加额外的存储空间? 集群实例的本地实例存储空间有限。

如果默认实例存储空间不足以容纳您的工作负载,则可以为每个实例配置额外的存储空间。从 2024 年 6 月 20 日发布开始,您可以向集群中的每个实例再添加一个 Amazon Elastic Block Store (EBS) 卷。 SageMaker HyperPod 请注意,此功能不能应用于 2024 年 6 月 20 日之前创建的现有 SageMaker HyperPod集群实例组。您可以通过修补在 2024 年 6 月 20 日之前创建的现有 SageMaker HyperPod 集群并向其中添加新的实例组来利用此功能。此功能对于 2024 年 6 月 20 日之后创建的任何 SageMaker HyperPod 集群完全有效。