CloudWatch を使用して GPU をモニタリングする - AWS Deep Learning AMIs

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

CloudWatch を使用して GPU をモニタリングする

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

CloudWatch を使用して GPU メトリクスを設定するには、次の 2 つの方法があります。

AWS CloudWatch エージェントを使用してメトリクスを設定する (推奨)

DLAMI を統合 CloudWatch エージェントと統合して GPU メトリクスを設定し、Amazon EC2 高速インスタンスの GPU コプロセスの使用状況をモニタリングします。

DLAMI で GPU メトリクスを設定するには、次の 4 つの方法があります。

更新とセキュリティパッチの詳細については、「AWS CloudWatch エージェントのセキュリティパッチ適用」を参照してください。

前提条件

開始するには、Amazon EC2 インスタンスの IAM 許可を設定して、インスタンスが CloudWatch にメトリクスをプッシュできるようにする必要があります。詳しい手順については、「CloudWatch エージェントで使用する IAM ロールとユーザーを作成する」を参照してください。

最小限の 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

AWS CloudWatch エージェントのセキュリティパッチ適用

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

Amazon Linux 2

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

sudo yum update

Ubuntu

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 エージェントのインストールと実行」を参照してください。

プリインストールされた gpumon.py スクリプトを使用してメトリクスを設定する

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

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

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

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

    IAM ユーザーの作成と CloudWatch のポリシーの追加の詳細については、 CloudWatch のドキュメントを参照してください。

  2. DLAMI で、AWS 構成を実行し、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 モニタリングおよび最適化に関する他のトピックも参照できます。