SageMaker HyperPod 常见问题 - Amazon SageMaker

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

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

在 HyperPod 上创建 Slurm 集群时,HyperPod 座席会在 /opt/slurm/etc/ 处设置 slurm.confgres.conf 文件,以便根据 HyperPod 集群创建请求和生命周期脚本管理 Slurm 集群。下面的列表显示了 HyperPod 座席处理和覆盖的具体参数。

重要

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

  • slurm.conf 中,HyperPod 设置了以下基本参数:ClusterNameSlurmctldHostPartitionNameNodeName

    此外,要启用 自动恢复 功能,HyperPod 还需要设置如下 TaskPluginSchedulerParameters 参数。HyperPod 座席默认为这两个参数设置所需的值。

    TaskPlugin=task/none SchedulerParameters=permit_job_expansion
  • gres.conf 中,HyperPod 为 GPU 节点管理 NodeName

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

为了帮助您在 HyperPod 上运行的 Slurm 节点上运行 Docker,HyperPod 服务团队提供了设置脚本,您可以将其作为集群创建生命周期配置的一部分。要了解更多信息,请参阅 从 HyperPod 提供的基本生命周期脚本开始在 HyperPod 上的 Slurm 计算节点上运行 Docker 容器

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

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

问:如何设置 EFA 安全组?

如果要创建一个带有启用 EFA 的实例的 HyperPod 集群,请确保设置了一个安全组,以允许所有进出安全组的流量。要了解更多信息,请参阅《Amazon EC2 用户指南》中的步骤 1:准备启用 EFA 的安全组

问:如何监控 HyperPod 集群节点? HyperPod 是否导出了任何 CloudWatch 指标?

要观察 HyperPod 集群的资源利用情况,我们建议您将 HyperPod 集群与 Amazon Managed Grafana 和 Amazon Managed Service for Prometheus 集成。利用各种开源 Grafana 控制面板和导出程序包,可以导出和可视化与 HyperPod 集群资源相关的指标。要了解有关使用 Amazon Managed Grafana 和 Amazon Managed Service for Prometheus 设置 SageMaker HyperPod 的更多信息,请参阅 SageMaker HyperPod 集群资源监控。请注意,SageMaker HyperPod 目前不支持将系统指标导出到 Amazon CloudWatch。

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

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