使用 CloudWatch 监控 GPU - Amazon Deep Learning AMIs
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

使用 CloudWatch 监控 GPU

当您将 DLAMI 与 GPU 结合使用时,您可能会发现,您要寻找在训练或推理期间跟踪其使用率的方式。这对于优化您的数据管道以及调整深度学习网络非常有用。

使用 CloudWatch 来配置 GPU 指标的方式有两种:

使用 Amazon CloudWatch 代理来配置指标(推荐)

将您的 DLAMI 与统一的 CloudWatch 代理集成,以配置 GPU 指标并监控 Amazon EC2 加速实例中 GPU 协进程的利用率。

使用 DLAMI 来配置 GPU 指标的方式有四种:

有关更新和安全补丁的信息,请参阅 为 Amazon CloudWatch 代理安装安全补丁

先决条件

首先,您必须配置 Amazon EC2 实例 IAM 权限,以允许您的实例将指标推送到 CloudWatch。有关详细步骤,请参阅创建 IAM 角色和用户以使用 CloudWatch 代理

配置最低 GPU 指标

使用 dlami-cloudwatch-agent@minimal systemd 服务来配置最低 GPU 指标。此服务配置以下指标:

  • utilization_gpu

  • utilization_memory

您可以在以下位置找到适用于最低预先配置 GPU 指标的 systemd 服务:

/opt/aws/amazon-cloudwatch-agent/etc/dlami-amazon-cloudwatch-agent-minimal.json

使用以下命令启用并启动 systemd 服务:

sudo systemctl enable dlami-cloudwatch-agent@minimal sudo systemctl start dlami-cloudwatch-agent@minimal

配置部分 GPU 指标

使用 dlami-cloudwatch-agent@partial systemd 服务来配置部分 GPU 指标。此服务配置以下指标:

  • utilization_gpu

  • utilization_memory

  • memory_total

  • memory_used

  • memory_free

您可以在以下位置找到适用于部分预先配置 GPU 指标的 systemd 服务:

/opt/aws/amazon-cloudwatch-agent/etc/dlami-amazon-cloudwatch-agent-partial.json

使用以下命令启用并启动 systemd 服务:

sudo systemctl enable dlami-cloudwatch-agent@partial sudo systemctl start dlami-cloudwatch-agent@partial

配置所有可用 GPU 指标

使用 dlami-cloudwatch-agent@all systemd 服务来配置所有可用 GPU 指标。此服务配置以下指标:

  • utilization_gpu

  • utilization_memory

  • memory_total

  • memory_used

  • memory_free

  • temperature_gpu

  • power_draw

  • fan_speed

  • pcie_link_gen_current

  • pcie_link_width_current

  • encoder_stats_session_count

  • encoder_stats_average_fps

  • encoder_stats_average_latency

  • clocks_current_graphics

  • clocks_current_sm

  • clocks_current_memory

  • clocks_current_video

您可以在以下位置找到适用于所有可用预先配置 GPU 指标的 systemd 服务:

/opt/aws/amazon-cloudwatch-agent/etc/dlami-amazon-cloudwatch-agent-all.json

使用以下命令启用并启动 systemd 服务:

sudo systemctl enable dlami-cloudwatch-agent@all sudo systemctl start dlami-cloudwatch-agent@all

配置自定义 GPU 指标

如果预配置指标不符合您的要求,您可以创建自定义 CloudWatch 代理配置文件。

创建自定义配置文件

要创建自定义配置文件,请参阅手动创建或编辑 CloudWatch 代理配置文件中的详细步骤。

在此示例中,假设架构定义位于 /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json

使用您的自定义文件来配置指标

运行以下命令以根据您的自定义文件来配置 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/etc/amazon-cloudwatch-agent.json

为 Amazon CloudWatch 代理安装安全补丁

新发布的 DLAMI 配置了最新可用的 Amazon CloudWatch 代理安全补丁。请参阅以下部分,根据您选择的操作系统,使用最新安全补丁来更新您当前的DLAMI。

Amazon Linux 2

使用 yum 来获取适用于 Amazon Linux 2 DLAMI 的最新 Amazon CloudWatch 代理安全补丁。

sudo yum update

Ubuntu

要获取适用于搭载 Ubuntu 的 DLAMI 的最新 Amazon CloudWatch 安全补丁,必须使用 Amazon S3 下载链接来重新安装 Amazon CloudWatch 代理。

wget https://s3.region.amazonaws.com/amazoncloudwatch-agent-region/ubuntu/arm64/latest/amazon-cloudwatch-agent.deb

有关使用 Amazon S3 下载链接来安装 Amazon CloudWatch 代理的更多信息,请参阅在服务器上安装和运行 CloudWatch 代理

使用预安装 gpumon.py 脚本来配置指标

一个名为 gpumon.py 的实用工具已预安装在您的 DLAMI 上。该工具与 CloudWatch 集成并支持监控每个 GPU 使用率:GPU 内存、GPU 温度和 GPU 功率。脚本会将监控的数据定期发送到 CloudWatch。您可以通过更改脚本中的几个设置来配置要发送到 CloudWatch 的数据的粒度级别。但是,在启动脚本之前,您将需要设置 CloudWatch 以接收这些指标。

如果使用 CloudWatch 设置并运行 GPU 监控
  1. 创建 IAM 用户或修改现有 IAM 用户,以具有用于将指标发布到 CloudWatch 的策略。如果创建新用户,请记下凭证,因为您将在下一步中需要这些凭证。

    要搜索的 IAM 策略是“cloudwatch:PutMetricData”。要添加的策略如下所示:

    JSON
    { "Version":"2012-10-17", "Statement": [ { "Action": [ "cloudwatch:PutMetricData" ], "Effect": "Allow", "Resource": "*" } ] }
    提示

    有关针对 CloudWatch 创建 IAM 用户和添加策略的更多信息,请参阅 CloudWatch 文档

  2. 在您的 DLAMI 上,运行 Amazon 配置并指定 IAM 用户凭证。

    $ aws configure
  3. 您可能需要先对 gpumon 实用工具进行一些修改,然后再运行该工具。您可以在以下代码块中定义的位置中找到 gpumon 实用工具和 README。有关 gpumon.py 脚本的更多信息,请参阅脚本的 Amazon S3 位置

    Folder: ~/tools/GPUCloudWatchMonitor Files: ~/tools/GPUCloudWatchMonitor/gpumon.py ~/tools/GPUCloudWatchMonitor/README

    选项:

    • 如果您的实例不在 us-east-1 中,请在 gpumon.py 中更改区域。

    • 更改其他参数(如 CloudWatch namespace 或带 store_reso 的报告期间)。

  4. 目前,该脚本仅支持 Python 3。激活您的首选框架的 Python 3 环境或激活 DLAMI 一般 Python 3 环境。

    $ source activate python3
  5. 在后台中运行 gpumon 实用工具。

    (python3)$ python gpumon.py &
  6. 打开浏览器前往 https://console.aws.amazon.com/cloudwatch/,然后选择指标。它将有一个命名空间“DeepLearningTrain”。

    提示

    您可以修改 gpumon.py 来更改该命名空间。您也可以通过调整 store_reso 来修改报告间隔。

下面是一个报告在 p2.8xlarge 实例上运行 gpumon.py 监控训练任务的示例 CloudWatch 图表。

CloudWatch 上的 GPU 监控

您可能对有关 GPU 监控和优化的以下其他主题感兴趣: