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 座席,以查找用于记录生命周期供应的自定义路径。
-
每个 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 }
-
用生命周期脚本中使用的自定义路径替换
"file_path"
字段名的值。例如,如果您已将生命周期脚本设置为写入/var/log/custom-provision/custom-provisioning.log
,请按如下方式更新该值以与之匹配。"file_path": "
/var/log/custom-provision/custom-provisioning.log
" -
使用配置文件重新启动 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.conf
和 gres.conf
)中管理哪些特定配置?
在 HyperPod 上创建 Slurm 集群时,HyperPod 座席会在 /opt/slurm/etc/
处设置 slurm.conf
gres.conf
重要
我们强烈建议您不要更改这些由 HyperPod 管理的参数。
-
在
slurm.conf
中,HyperPod 设置了以下基本参数: ClusterName
、SlurmctldHost
、PartitionName
和NodeName
。此外,要启用 自动恢复 功能,HyperPod 还需要设置如下
TaskPlugin
和SchedulerParameters
参数。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 集群都完全有效。