选择您的 Cookie 首选项

我们使用必要 Cookie 和类似工具提供我们的网站和服务。我们使用性能 Cookie 收集匿名统计数据,以便我们可以了解客户如何使用我们的网站并进行改进。必要 Cookie 无法停用,但您可以单击“自定义”或“拒绝”来拒绝性能 Cookie。

如果您同意,AWS 和经批准的第三方还将使用 Cookie 提供有用的网站功能、记住您的首选项并显示相关内容,包括相关广告。要接受或拒绝所有非必要 Cookie,请单击“接受”或“拒绝”。要做出更详细的选择,请单击“自定义”。

SageMaker HyperPod 常见问题

聚焦模式
SageMaker HyperPod 常见问题 - 亚马逊 SageMaker AI

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

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

使用以下常见问题来解决使用问题 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 容器 HyperPod

问:当我在 Slurm 框架的 SageMaker HyperPod 平台上使用 NVIDIA 集体通信库 (NCCL) 时,为什么我的并行训练任务会失败?

默认情况下,Linux 操作系统会设置该#RemoveIPC=yes标志。使用 NCCL 的 Slurm 和 mpirun 作业在非 root 用户会话下生成进程间通信 (IPC) 资源。这些用户会话可能会在作业过程中注销。

当你使用 Slurm 或 mpirun 运行作业时,如果systemd检测到用户未登录,它就会清理 IPC 资源。Slurm 和 mpirun 作业无需用户登录即可运行,但这需要你在 systemd 级别禁用清理功能,改为在 Slurm 级别进行设置。有关更多信息,请参阅 NCCL 文档中的 Systemd

要在 systemd 级别禁用清理,请完成以下步骤。

  1. /etc/systemd/logind.conf如果您正在运行使用 Slurm 和 NCCL 的训练作业,请在文件#RemoveIPC=no中设置标志。

  2. 默认情况下,Slurm 不清理共享资源。我们建议您设置 Slurm epilog 脚本来清理共享资源。当你有大量共享资源并想在训练作业后清理它们时,这种清理非常有用。以下为示例脚本。

    #!/bin/bash : <<'SUMMARY' Script: epilog.sh Use this script with caution, as it can potentially delete unnecessary resources and cause issues if you don't use it correctly. Note: You must save this script in a shared in a shared location that is accessible to all nodes in the cluster, such as /fsx volume. Workers must be able to access the script to run the script after jobs. SUMMARY # Define the log directory and create it if it doesn't exist LOG_DIR="/<PLACEHOLDER>/epilogue" #NOTE: Update PLACEHOLDER to be a shared value path, such as /fsx/epilogue. mkdir -p "$LOG_DIR" # Name the log file using the Slurm job name and job ID log_file="$LOG_DIR/epilogue-${SLURM_JOB_NAME}_${SLURM_JOB_ID}.log" logging() { echo "[$(date)] $1" | tee -a "$log_file" } # Slurm epilogue script to clean up IPC resources logging "Starting IPC cleanup for Job $SLURM_JOB_ID" # Clean up shared memory segments by username for seg in $(ipcs -m | awk -v owner="$SLURM_JOB_USER" '$3 == owner {print $2}'); do if ipcrm -m "$seg"; then logging "Removed shared memory segment $seg" else logging "Failed to remove shared memory segment $seg" fi done # Clean up semaphores by username for sem in $(ipcs -s | awk -v user="$SLURM_JOB_USER" '$3 == user {print $2}'); do if ipcrm -s "$sem"; then logging "Removed semaphore $sem" else logging "Failed to remove semaphore $sem" fi done # Clean up NCCL IPC NCCL_IPC_PATH="/dev/shm/nccl-*" for file in $NCCL_IPC_PATH; do if [ -e "$file" ]; then if rm "$file"; then logging "Removed NCCL IPC file $file" else logging "Failed to remove NCCL IPC file $file" fi fi done logging "IPC cleanup completed for Job $SLURM_JOB_ID" exit 0

    有关 Epilog 参数的更多信息,请参阅 Slurm 文档

  3. 在控制器节点slurm.conf的文件中,添加一行以指向您创建的 epilog 脚本。

    Epilog="/path/to/epilog.sh" #For example: /fsx/epilogue/epilog.sh
  4. 运行以下命令以更改脚本的权限并使其可执行。

    chown slurm:slurm /path/to/epilog.sh chmod +x /path/to/epilog.sh
  5. 要应用所有更改,请运行scontrol reconfigure

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

由于头节点的默认根卷通常受到 100GB EBS 卷的限制,因此您需要设置 Docker 和 Enroot 才能使用本地实例存储。 NVMe 要了解如何设置 NVMe 存储并使用它来启动 Docker 容器,请参阅在 Slurm 计算节点上运行 Docker 容器 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 集群完全有效。

隐私网站条款Cookie 首选项
© 2025, Amazon Web Services, Inc. 或其附属公司。保留所有权利。