CloudWatch ソリューション: Amazon EC2 での NVIDIA GPU ワークロード
このソリューションは、EC2 インスタンスで実行されている NVIDIA GPU ワークロードの CloudWatch エージェントを使用して、すぐに使用できるメトリクス収集を設定するのに役立ちます。さらに、事前設定された CloudWatch ダッシュボードを設定するのに役立ちます。すべての CloudWatch オブザーバビリティソリューションの一般的な情報については、「CloudWatch オブザーバビリティソリューション」を参照してください。
要件
このソリューションは、以下の条件に適しています。
-
コンピューティング: Amazon EC2
-
特定の AWS リージョン内の EC2 インスタンス全体で最大 500 個の GPU をサポート
-
CloudWatch エージェントの最新バージョン
-
EC2 インスタンスにインストールされた SSM エージェント
-
EC2 インスタンスには NVIDIA ドライバーがインストールされている必要があります。NVIDIA ドライバーは、一部の Amazon マシンイメージ (AMI) にプリインストールされています。それ以外の場合は、ドライバーを手動でインストールできます。詳細については、「Linux インスタンスへの NVIDIA ドライバーのインストール」を参照してください。
注記
AWS Systems Manager (SSM エージェント) は、AWS および信頼できるサードパーティーが提供している一部の Amazon マシンイメージ (AMI) にプリインストールされています。エージェントがインストールされていない場合は、使用しているオペレーティングシステムタイプの手順を使用して、手動でインストールできます。
利点
このソリューションでは NVIDIA をモニタリングしているため、以下のユースケースに役立つインサイトが得られます。
-
GPU とメモリの使用状況を分析して、パフォーマンスのボトルネックや追加のリソースの必要性を確認します。
-
温度と消費電力をモニタリングして、GPU が安全の範囲内で動作していることを確認します。
-
GPU ビデオワークロードのエンコーダーパフォーマンスを評価します。
-
期待される世代と幅の PCIe 接続を確認します。
-
GPU クロック速度をモニタリングして、スケーリングとスロットリングの問題を検出します。
ソリューションの主な利点を以下に示します。
-
CloudWatch エージェント設定を使用して NVIDIA のメトリクス収集を自動化し、手動計測をなくします。
-
NVIDIA メトリクス用の事前設定済みの統合 CloudWatch ダッシュボードが用意されています。ダッシュボードは、ダッシュボードを初めて作成するときにメトリクスが存在しない場合でも、ソリューションを使用して設定された新しい NVIDIA EC2 インスタンスからのメトリクスを自動的に処理します。
以下の画像は、このソリューションのダッシュボードの例です。

コスト
このソリューションは、アカウントでリソースを作成して使用します。標準使用には料金がかかります。これには以下を含みます。
-
CloudWatch エージェントによって収集されたすべてのメトリクスは、カスタムメトリクスとして課金されます。このソリューションで使用されるメトリクスの数は、EC2 ホストの数によって異なります。
-
ソリューション用に設定された各 EC2 ホストは、GPU ごとに合計 17 個のメトリクスを公開します。
-
-
1 つのカスタムダッシュボード。
-
CloudWatch エージェントによってメトリクスの公開がリクエストされた API オペレーション。このソリューションのデフォルト設定では、CloudWatch エージェントは EC2 ホストごとに毎分 1 回 PutMetricData を呼び出します。つまり、PutMetricData API は EC2 ホストごとに 30 日の月には
30*24*60=43,200
回呼び出されます。
CloudWatch の料金の詳細については、「Amazon CloudWatch の料金
料金計算ツールを使用すると、このソリューションを使用するためのおよその月額コストを見積もることができます。
料金計算ツールを使用して毎月のソリューションのコストを見積もるには
-
[リージョンを選択] では、ソリューションをデプロイするリージョンを選択します。
-
[メトリクス] セクションの [メトリクスの数] に
17 * average number of GPUs per EC2 host * number of EC2 instances configured for this solution
を入力します。 -
[API] セクションの [API リクエストの数] に
43200 * number of EC2 instances configured for this solution
を入力します。 -
デフォルトでは、CloudWatch エージェントは EC2 ホストごとに毎分 1 回 PutMetricData オペレーションを実行します。
-
[ダッシュボードとアラーム] セクションの [ダッシュボードの数] に「
1
」と入力します。 -
毎月の見積コストは、料金計算ツールの下部に表示されます。
このソリューションの CloudWatch エージェント設定
CloudWatch エージェントは、サーバー上およびコンテナ化された環境で継続的かつ自律的に実行されるソフトウェアです。インフラストラクチャとアプリケーションからメトリクス、ログ、トレースを収集し、CloudWatch と X-Ray に送信します。
CloudWatch エージェントの詳細については、「CloudWatch エージェントを使用してメトリクス、ログ、トレースを収集する」を参照してください。
このソリューションのエージェント設定では、NVIDIA GPU のモニタリングと観測を開始するのに役立つ一連のメトリクスを収集します。CloudWatch エージェントは、ダッシュボードにデフォルトで表示されるよりも多くの NVIDIA GPU メトリクスを収集するように設定できます。収集できるすべての NVIDIA GPU メトリクスのリストについては、「NVIDIA GPU メトリクスを収集する」を参照してください。
このソリューションのエージェント設定
エージェントによって収集されるメトリクスは、エージェント設定で定義されます。このソリューションには、ソリューションのダッシュボードに適したディメンションで推奨メトリクスを収集するためのエージェント設定が用意されています。
NVIDIA GPU を組み込んだ EC2 インスタンスで次の CloudWatch エージェント設定を使用します。設定は、「ステップ 2: 推奨 CloudWatch エージェント設定ファイルを Systems Manager パラメータストアに保存する」で後述するように、SSM のパラメータストアにパラメータとして保存されます。
{ "metrics": { "namespace": "CWAgent", "append_dimensions": { "InstanceId": "${aws:InstanceId}" }, "metrics_collected": { "nvidia_gpu": { "measurement": [ "utilization_gpu", "temperature_gpu", "power_draw", "utilization_memory", "fan_speed", "memory_total", "memory_used", "memory_free", "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" ], "metrics_collection_interval": 60 } } }, "force_flush_interval": 60 }
ソリューションにエージェントをデプロイする
ユースケースに応じて、CloudWatch エージェントをインストールするためのいくつかのアプローチがあります。このソリューションには Systems Manager を使用することをお勧めします。これにより、コンソール操作機能が提供され、1 つの AWS アカウント内のマネージドサーバーのフリートの管理が簡単になります。このセクションの手順では Systems Manager を使用し、CloudWatch エージェントを既存の設定で実行していない場合を対象としています。CloudWatch エージェントが実行されているかどうかは、「CloudWatch エージェントが実行されていることを確認する」の手順に従って確認できます。
ワークロードがデプロイされている EC2 ホストで CloudWatch エージェントを既に実行していて、エージェント設定を管理している場合は、このセクションの手順をスキップし、既存のデプロイメカニズムに従って設定を更新できます。NVIDIA GPU のエージェント設定を既存のエージェント設定とマージしてから、マージされた設定をデプロイするようにしてください。Systems Manager を使用して CloudWatch エージェントの設定を保存および管理している場合は、設定を既存のパラメータ値にマージできます。詳細については、「CloudWatch エージェント設定ファイルの管理」を参照してください。
注記
Systems Manager を使用して次の CloudWatch エージェント設定をデプロイすると、EC2 インスタンスの既存の CloudWatch エージェント設定がある場合は置き換えられるか、上書きされます。独自の環境やユースケースに合わせてこの設定を変更できます。設定で定義されているメトリクスは、ソリューションを提供するダッシュボードに最小限必要なものです。
このデプロイプロセスには、以下のステップが含まれます。
-
ステップ 1: ターゲット EC2 インスタンスに必要な IAM アクセス許可があることを確認します。
-
ステップ 2: 推奨エージェント設定ファイルを Systems Manager パラメータストアに保存します。
-
ステップ 3: AWS CloudFormation スタックを使用して 1 つまたは複数の EC2 インスタンスに CloudWatch エージェントをインストールします。
-
ステップ 4: エージェントのセットアップが正しく設定されていることを確認します。
ステップ 1: ターゲット EC2 インスタンスに必要な IAM アクセス許可があることを確認する
CloudWatch エージェントをインストールして設定するためのアクセス許可を Systems Manager に付与する必要があります。また、EC2 インスタンスから CloudWatch にテレメトリを発行するアクセス許可を CloudWatch エージェントに付与する必要もあります。インスタンスにアタッチされた IAM ロールに CloudWatchAgentServerPolicy と AmazonSSMManagedInstanceCore の IAM ポリシーがアタッチされていることを確認します。
-
ロールの作成については、「Amazon EC2 インスタンスの CloudWatch エージェントで使用する IAM ロールを作成する」を参照してください。
-
ロールを作成したら、ロールを EC2 インスタンスにアタッチします。EC2 インスタンスにロールをアタッチするには、「インスタンスへの IAM ロールのアタッチ」の手順に従います。
ステップ 2: 推奨 CloudWatch エージェント設定ファイルを Systems Manager パラメータストアに保存する
パラメータストアでは、設定パラメータを安全に保存および管理することで EC2 インスタンスへの CloudWatch エージェントのインストールが簡素化され、ハードコーディングされた値が不要になります。これにより、デプロイプロセスがより安全で柔軟になり、集中管理が可能になり、複数のインスタンスで設定を簡単に更新できるようになります。
以下の手順を使用して、パラメータストアに推奨 CloudWatch エージェント設定ファイルをパラメータとして保存します。
CloudWatch エージェント設定ファイルをパラメータとして作成するには
AWS Systems Manager コンソール (https://console.aws.amazon.com/systems-manager/
) を開きます。 -
コンソールで選択したリージョンが、NVIDIA GPU ワークロードが実行されているリージョンであることを確認します。
-
ナビゲーションペインで [アプリケーション管理]、[パラメータストア] を選択します。
-
以下の手順に従って、設定の新しいパラメータを作成します。
-
[パラメータの作成] を選択します。
-
[名前] ボックスに、後のステップで CloudWatch エージェント設定ファイルを参照するために使用する名前を入力します。例えば、
AmazonCloudWatch-NVIDIA-GPU-Configuration
。 -
(オプション) [説明] ボックスにパラメータの説明を入力します。
-
[パラメータ階層] で、[標準] を選択します。
-
[型] で、[文字列] を選択します。
-
[データ型] で、[テキスト] を選択します。
-
[値] ボックスに、このソリューションのエージェント設定 にリストされた対応する JSON ブロックを貼り付けます。
-
[パラメータの作成] を選択します。
-
ステップ 3: CloudWatch エージェントをインストールし、AWS CloudFormation テンプレートを使用して設定を適用する
AWS CloudFormation を使用してエージェントをインストールし、これまでの手順で作成した CloudWatch エージェント設定を使用するように設定できます。
このソリューションの CloudWatch エージェントをインストールして設定するには
-
次のリンクを使用して、AWS CloudFormation [スタックのクイック作成] ウィザードを開きます: https://console.aws.amazon.com/cloudformation/home?#/stacks/quickcreate?templateURL=https://aws-observability-solutions-prod-us-east-1.s3.us-east-1.amazonaws.com/CloudWatchAgent/CFN/v1.0.0/cw-agent-installation-template-1.0.0.json
。 -
コンソールで選択したリージョンが、NVIDIA GPU ワークロードが実行されているリージョンであることを確認します。
-
[スタック名] にこのスタックを識別する名前 (
CWAgentInstallationStack
など) を入力します。 -
[パラメータ] セクションで、以下を指定します。
-
[CloudWatchAgentConfigSSM] に、
AmazonCloudWatch-NVIDIA-GPU-Configuration
など、前に作成したエージェント設定の Systems Manager パラメータの名前を入力します。 -
ターゲットインスタンスを選択するには、2 つのオプションがあります。
-
[InstanceIds] に、この設定で CloudWatch エージェントをインストールするインスタンス ID のカンマ区切りリストを指定します。1 つのインスタンスまたは複数のインスタンスを一覧表示できます。
-
大規模にデプロイする場合は、[TagKey] とそれに対応する [TagValue] を指定して、このタグと値を持つすべての EC2 インスタンスをターゲットにできます。[TagKey] を指定する場合は、対応する [TagValue] を指定する必要があります。(Auto Scaling グループの場合、Auto Scaling グループ内のすべてのインスタンスにデプロイするには、[TagKey] に
aws:autoscaling:groupName
を指定し、[TagValue] に Auto Scaling グループ名を指定します。)
-
-
-
設定を確認し、[スタックの作成] を選択します。
まずテンプレートファイルを編集してカスタマイズする場合は、[スタックの作成ウィザード] の [テンプレートファイルのアップロード] オプションを選択して、編集したテンプレートをアップロードします。詳細については、「AWS CloudFormation コンソールからスタックを作成する」を参照してください。
注記
このステップが完了すると、この Systems Manager パラメータは、ターゲットインスタンスで実行されている CloudWatch エージェントに関連付けられます。これにより、以下のように処理されます。
-
Systems Manager パラメータが削除されると、エージェントは停止します。
-
Systems Manager パラメータを編集すると、設定の変更はスケジュールされた頻度 (デフォルトで 30 日) でエージェントに自動的に適用されます。
-
この Systems Manager パラメータに変更をすぐに適用する場合は、このステップを再度実行する必要があります。関連付けの詳細については、「Systems Manager の関連付けの使用」を参照してください。
ステップ 4: エージェントのセットアップが正しく設定されていることを確認する
CloudWatch エージェントがインストールされているかどうかは、「CloudWatch エージェントが実行されていることを確認する」の手順に従って確認できます。CloudWatch エージェントがインストールされておらず、実行されていない場合は、すべてが正しく設定されていることを確認してください。
-
「ステップ 1: ターゲット EC2 インスタンスに必要な IAM アクセス許可があることを確認する」の説明に従って、EC2 インスタンスに正しいアクセス許可を持つロールがアタッチされていることを確認してください。
-
Systems Manager パラメータの JSON が正しく設定されていることを確認してください。「AWS CloudFormation での CloudWatch エージェントのインストールのトラブルシューティング」のステップを実行してください。
すべてが正しく設定されている場合は、NVIDIA GPU メトリクスが CloudWatch に公開されているはずです。CloudWatch コンソールをチェックして、公開されていることを確認します。
NVIDIA GPU メトリクスが CloudWatch に公開されていることを確認するには
CloudWatch コンソールの https://console.aws.amazon.com/cloudwatch/
を開いてください。 -
[メトリクス]、[すべてのメトリクス] を選択します。
-
ソリューションをデプロイしたリージョンを選択したことを確認し、[カスタム名前空間]、[CWAgent] を選択します。
-
nvidia_smi_utilization_gpu
など、「このソリューションのエージェント設定」で説明されているメトリクスを検索します。これらのメトリクスの結果が表示された場合、メトリクスは CloudWatch に公開されています。
NVIDIA GPU ソリューションダッシュボードを作成する
このソリューションが提供するダッシュボードは、すべてのインスタンスでメトリクスを集約して表示することで、NVIDIA GPU メトリクスを表示します。ダッシュボードには、各メトリクスに寄与する上位の要因 (メトリクスウィジェットあたり上位 10 件) の内訳が表示されます。これにより、観測されたメトリクスに大きく寄与する外れ値やインスタンスをすばやく特定できます。
ダッシュボードを作成するには、以下のオプションを使用できます。
CloudWatch コンソールを使用してダッシュボードを作成します。
AWS CloudFormation コンソールを使用してダッシュボードをデプロイします。
AWS CloudFormation インフラストラクチャをコードとしてダウンロードし、継続的インテグレーション (CI) オートメーションの一部として統合します。
CloudWatch コンソールを使用してダッシュボードを作成すると、実際に作成して課金される前にダッシュボードをプレビューできます。
注記
このソリューションで AWS CloudFormation を使用して作成されたダッシュボードには、ソリューションがデプロイされたリージョンのメトリクスが表示されます。NVIDIA GPU メトリクスが公開されるリージョンに AWS CloudFormation スタックを必ず作成してください。
CloudWatch エージェント設定で CWAgent 以外のカスタム名前空間を指定した場合は、ダッシュボードの AWS CloudFormation テンプレートを変更して、CWAgent を、使用しているカスタマイズされた名前空間に置き換える必要があります。
CloudWatch コンソールを使用してダッシュボードを作成するには
-
次のリンクを使用して CloudWatch コンソール [ダッシュボードの作成] を開きます: https://console.aws.amazon.com/cloudwatch/home?#dashboards?dashboardTemplate=NvidiaGpuOnEc2&referrer=os-catalog
。 -
コンソールで選択したリージョンが、NVIDIA GPU ワークロードが実行されているリージョンであることを確認します。
-
ダッシュボードの名前を入力し、[ダッシュボードの作成] を選択します。
このダッシュボードを他のリージョンの類似のダッシュボードと簡単に区別するために、
NVIDIA-GPU-Dashboard-us-east-1
のように、ダッシュボード名にリージョン名を含めることをお勧めします。 -
ダッシュボードをプレビューし、[保存] を選択してダッシュボードを作成します。
AWS CloudFormation を使用してダッシュボードを作成するには
-
次のリンクを使用して、AWS CloudFormation [スタックのクイック作成] ウィザードを開きます: https://console.aws.amazon.com/cloudformation/home?#/stacks/quickcreate?templateURL=https://aws-observability-solutions-prod-us-east-1.s3.us-east-1.amazonaws.com/NVIDIA_GPU_EC2/CloudWatch/CFN/v1.0.0/dashboard-template-1.0.0.json
。 -
コンソールで選択したリージョンが、NVIDIA GPU ワークロードが実行されているリージョンであることを確認します。
-
[スタック名] にこのスタックを識別する名前 (
NVIDIA-GPU-DashboardStack
など) を入力します。 -
[パラメータ] セクションで、[DashboardName] パラメータにダッシュボードの名前を指定します。
-
このダッシュボードを他のリージョンの類似のダッシュボードと簡単に区別するために、
NVIDIA-GPU-Dashboard-us-east-1
のように、ダッシュボード名にリージョン名を含めることをお勧めします。 -
[機能と変換] で、変換のためのアクセス機能を承認します。AWS CloudFormation は IAM リソースを追加しないことに注意してください。
-
設定を確認し、[スタックの作成] を選択します。
-
スタックステータスが CREATE_COMPLETE になったら、作成したスタックの [リソース] タブを選択し、[物理 ID] のリンクを選択してダッシュボードに移動します。コンソールの左側のナビゲーションペインで [ダッシュボード] を選択し、[カスタムダッシュボード] でダッシュボード名を検索することで、CloudWatch コンソールでダッシュボードにアクセスすることもできます。
何らかの目的でテンプレートファイルを編集してカスタマイズする場合は、[スタックの作成ウィザード] の [テンプレートファイルのアップロード] オプションを使用して、編集したテンプレートをアップロードできます。詳細については、「AWS CloudFormation コンソールからスタックを作成する」を参照してください。次のリンクを使用して、テンプレートをダウンロードできます: https://aws-observability-solutions-prod-us-east-1.s3.us-east-1.amazonaws.com/NVIDIA_GPU_EC2/CloudWatch/CFN/v1.0.0/dashboard-template-1.0.0.json
NVIDIA GPU ダッシュボードの使用を開始する
新しい NVIDIA GPU ダッシュボードで試すことができるタスクをいくつか示します。これらのタスクにより、ダッシュボードが正しく機能していることの検証が可能になり、NVIDIA GPU をモニタリングするためにダッシュボードを実際に使用する経験ができます。これらを試すと、ダッシュボードの操作に慣れ、可視化されたメトリクスを解釈できるようになっていきます。
GPU 使用率を確認する
[使用率] セクションから、[GPU 使用率] ウィジェットと [メモリ使用率] ウィジェットを見つけます。これらはそれぞれ、GPU が計算にアクティブに使用されている時間の割合と、読み書きされるグローバルメモリの割合を示しています。使用率が高い場合、潜在的なパフォーマンスのボトルネックや追加の GPU リソースの必要性を示している可能性があります。
GPU メモリ使用率を分析する
[メモリ] セクションで、[合計メモリ]、[使用済みメモリ]、および [空きメモリ] の各ウィジェットを見つけます。これらによって、GPU の全体的なメモリ容量と、現在消費されているメモリまたは利用可能なメモリの量に関するインサイトが得られます。メモリのプレッシャーにより、パフォーマンスの問題やメモリ不足のエラーが発生する可能性があるため、これらのメトリクスをモニタリングし、ワークロードに十分なメモリが使用可能であることを確認することが重要です。
温度と消費電力をモニタリングする
[温度/電力] セクションで、[GPU 温度] ウィジェットと [消費電力] ウィジェットを見つけます。これらのメトリクスは、GPU が安全な熱と電力の範囲内で動作することを確実にするために不可欠です。
エンコーダーのパフォーマンスを特定する
[エンコーダー] セクションで、[エンコーダーセッション数]、[平均 FPS]、および [平均レイテンシー] の各ウィジェットを見つけます。GPU でビデオエンコーディングワークロードを実行している場合にこれらのメトリクスが関連します。これらのメトリクスをモニタリングして、エンコーダーが最適に実行されていることを確認するとともに、潜在的なボトルネックやパフォーマンスの問題を特定します。
PCIe リンクステータスを確認する
[PCIe] セクションで、[PCIe リンク世代] ウィジェットと [PCIe リンク幅] ウィジェットを見つけます。これらのメトリクスは、GPU をホストシステムに接続する PCIe リンクに関する情報を提供します。PCIe のボトルネックによってパフォーマンスが制限される可能性を避けるため、リンクが期待される世代と幅で動作していることを確認します。
GPU クロックを確認する
[クロック] セクションで、[グラフィックスクロック]、[SM クロック]、[メモリクロック]、および [ビデオクロック] の各ウィジェットを見つけます。これらのメトリクスは、さまざまな GPU コンポーネントの現在の動作周波数を示しています。これらのクロックのモニタリングは、パフォーマンスに影響を与える可能性がある GPU クロックのスケーリングや周波数スロットリングの潜在的な問題を特定するのに役立ちます。