

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# CloudWatch を使用して GPU をモニタリングする
<a name="tutorial-gpu-monitoring-gpumon"></a>

GPU で DLAMI を使用すると、トレーニングや推論中にその使用状況を追跡する方法が必要になることがあります。これは、データパイプラインの最適化や深層学習ネットワークのチューニングに役立ちます。

CloudWatch を使用して GPU メトリクスを設定するには、次の 2 つの方法があります。
+ [AWS CloudWatch エージェントを使用してメトリクスを設定する (推奨)](#tutorial-gpu-monitoring-gpumon-cloudwatch-agent-guide)
+ [プリインストールされた `gpumon.py` スクリプトを使用してメトリクスを設定する](#tutorial-gpu-monitoring-gpumon-script)

## AWS CloudWatch エージェントを使用してメトリクスを設定する (推奨)
<a name="tutorial-gpu-monitoring-gpumon-cloudwatch-agent-guide"></a>

DLAMI を[統合 CloudWatch エージェント](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Install-CloudWatch-Agent.html)と統合して GPU メトリクスを設定し、Amazon EC2 高速インスタンスの GPU コプロセスの使用状況をモニタリングします。

DLAMI で [GPU メトリクス](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Agent-NVIDIA-GPU.html)を設定するには、次の 4 つの方法があります。
+ [最小限の GPU メトリクスを設定する](#tutorial-gpu-monitoring-gpumon-cloudwatch-agent-minimal)
+ [部分的な GPU メトリクスを設定する](#tutorial-gpu-monitoring-gpumon-cloudwatch-agent-partial)
+ [使用可能なすべての GPU メトリクスを設定する](#tutorial-gpu-monitoring-gpumon-cloudwatch-agent-all)
+ [カスタム GPU メトリクスを設定する](#tutorial-gpu-monitoring-gpumon-cloudwatch-agent-custom)

更新とセキュリティパッチの詳細については、「[AWS CloudWatch エージェントのセキュリティパッチ適用](#tutorial-gpu-monitoring-gpumon-cloudwatch-agent-security)」を参照してください。

### 前提条件
<a name="tutorial-gpu-monitoring-gpumon-cloudwatch-agent-prerequisites"></a>

開始するには、Amazon EC2 インスタンスの IAM 許可を設定して、インスタンスが CloudWatch にメトリクスをプッシュできるようにする必要があります。詳しい手順については、「[CloudWatch エージェントで使用する IAM ロールとユーザーを作成する](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/create-iam-roles-for-cloudwatch-agent.html)」を参照してください。

### 最小限の GPU メトリクスを設定する
<a name="tutorial-gpu-monitoring-gpumon-cloudwatch-agent-minimal"></a>

`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 メトリクスを設定する
<a name="tutorial-gpu-monitoring-gpumon-cloudwatch-agent-partial"></a>

`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 メトリクスを設定する
<a name="tutorial-gpu-monitoring-gpumon-cloudwatch-agent-all"></a>

`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 メトリクスを設定する
<a name="tutorial-gpu-monitoring-gpumon-cloudwatch-agent-custom"></a>

事前設定済みのメトリクスが要件を満たさない場合は、カスタム CloudWatch エージェント設定ファイルを作成できます。

#### カスタム設定を作成する
<a name="tutorial-gpu-monitoring-gpumon-cloudwatch-agent-custom-create"></a>

カスタム設定ファイルを作成するには、「[CloudWatch エージェント設定ファイルを手動で作成または編集する](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Agent-Configuration-File-Details.html)」の詳細手順を参照してください。

この例では、スキーマ定義が `/opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json` にあると仮定します。

#### カスタムファイルを使用してメトリクスを設定する
<a name="tutorial-gpu-monitoring-gpumon-cloudwatch-agent-custom-configure"></a>

以下のコマンドを実行して、カスタムファイルに従って 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
```

### AWS CloudWatch エージェントのセキュリティパッチ適用
<a name="tutorial-gpu-monitoring-gpumon-cloudwatch-agent-security"></a>

新しくリリースされた DLAMIsは、利用可能な最新の AWS CloudWatch エージェントセキュリティパッチで設定されます。以下のセクションを参照して、お使いのオペレーティングシステムに応じて、現在の DLAMI を最新のセキュリティパッチで更新してください。

#### Amazon Linux 2
<a name="tutorial-gpu-monitoring-gpumon-cloudwatch-agent-security-al2"></a>

を使用して`yum`、Amazon Linux 2 DLAMI の最新の AWS CloudWatch エージェントセキュリティパッチを取得します。

```
 sudo yum update
```

#### Ubuntu
<a name="tutorial-gpu-monitoring-gpumon-cloudwatch-agent-security-ubuntu"></a>

Ubuntu で DLAMI の最新の AWS CloudWatch セキュリティパッチを取得するには、Amazon S3 ダウンロードリンクを使用して AWS CloudWatch エージェントを再インストールする必要があります。

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

Amazon S3 ダウンロードリンクを使用して AWS CloudWatch エージェントをインストールする方法の詳細については、[「サーバーでの CloudWatch エージェントのインストールと実行](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/install-CloudWatch-Agent-commandline-fleet.html)」を参照してください。

## プリインストールされた `gpumon.py` スクリプトを使用してメトリクスを設定する
<a name="tutorial-gpu-monitoring-gpumon-script"></a>

gpumon.py というユーティリティは、DLAMI にプリインストールされています。これは、CloudWatch と統合されており、GPU ごとの使用状況 (GPU メモリ、GPU 温度、GPU 電源) のモニタリングをサポートしています。このスクリプトは、モニタリングしたデータを CloudWatch に定期的に送信します。スクリプトでいくつかの設定を変更することで、CloudWatch に送信されるデータの詳細度レベルを設定できます。ただし、スクリプトを開始する前に、CloudWatch がメトリクスを受け取るように設定する必要があります。

**CloudWatch を使用した GPU モニタリングを設定して実行する方法**

1. IAM ユーザーを作成するか、既存のユーザーを変更し、メトリクスを CloudWatch に発行するためのポリシーを追加します。新しいユーザーを作成する場合、認証情報をメモしてください。次のステップで必要になります。

   検索する IAM ポリシーは「cloudwatch:PutMetricData」です。追加されるポリシーは次のようになります。

------
#### [ JSON ]

****  

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

------
**ヒント**  
IAM ユーザーの作成と CloudWatch のポリシーの追加の詳細については、[ CloudWatch のドキュメント](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/create-iam-roles-for-cloudwatch-agent.html)を参照してください。

1. DLAMI で、[AWS 構成](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html#cli-quick-configuration)を実行し、IAM ユーザー認証情報を指定します。

   ```
   $ aws configure
   ```

1. 実行する前に、gpumon ユーティリティにいくつかの変更が必要になる場合があります。gpumon ユーティリティと README は次のコードブロックに定義された場所にあります。`gpumon.py` スクリプトの詳細については、[スクリプトの Amazon S3 の場所](https://s3.amazonaws.com/aws-bigdata-blog/artifacts/GPUMonitoring/gpumon.py)を参照してください。

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

   オプション:
   + インスタンスが us-east-1 でない場合、gpumon.py でリージョンを変更します。
   + CloudWatch `namespace` や、`store_reso` によるレポートの期間などの他のパラメータを変更します。

1. 現在、スクリプトでは Python 3 のみがサポートされています。希望するフレームワークの Python 3 環境を有効化するか、DLAMI の一般的な Python 3 環境を有効化します。

   ```
   $ source activate python3
   ```

1. gpumon ユーティリティをバックグラウンドで実行します。

   ```
   (python3)$ python gpumon.py &
   ```

1. ブラウザを開いて [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/) にアクセスし、メトリクスを選択します。名前空間は「DeepLearningTrain」になります。
**ヒント**  
gpumon.py を変更することで名前空間を変更できます。`store_reso` を調整することで、レポートの間隔を調整することもできます。

次に示すのは、p2.8xlarge インスタンス上のトレーニングジョブをモニタリングする gpumon.py の実行について報告する CloudWatch グラフの例です。

![\[CloudWatch での GPU モニタリング\]](http://docs.aws.amazon.com/ja_jp/dlami/latest/devguide/images/gpumon.png)


必要に応じて、GPU モニタリングおよび最適化に関する他のトピックも参照できます。
+ [モニタリング](tutorial-gpu-monitoring.md)
  + [CloudWatch を使用して GPU をモニタリングする](#tutorial-gpu-monitoring-gpumon)
+ [最適化](tutorial-gpu-opt.md)
  + [前処理](tutorial-gpu-opt-preprocessing.md)
  + [トレーニング](tutorial-gpu-opt-training.md)