NVIDIA Data Center GPU Manager(DCGM)の指標を Cloud Monitoring に送信するように GKE を構成すると、GPU の使用率、パフォーマンス、正常性をモニタリングできます。
DCGM 指標を有効にすると、GKE は DCGM-Exporter ツールをインストールし、Google 管理の GPU ドライバをインストールして、ClusterPodMonitoring リソースをデプロイし、Google Cloud Managed Service for Prometheus に指標を送信します。
DCGM 指標のセットをカスタマイズする場合や、マネージド DCGM 指標の要件を満たしていないクラスタがある場合は、セルフマネージド DCGM を構成することもできます。
DCGM とは
NVIDIA Data Center GPU Manager(DCGM)は、NVIDIA GPU の管理とモニタリングを行うための NVIDIA のツールセットです。DCGM は、fields
と呼ばれるものを使用して、さまざまなオブザーバビリティ構造とカウンタを公開します。各フィールドには、記号識別子とフィールド番号があります。一覧については、NVIDIA DCGM のフィールド ID リストをご覧ください。
GKE で DCGM 指標を有効にすると、サポートされている指標が Cloud Monitoring で自動的に使用できるようになります。これらの指標は、GPU の使用率、パフォーマンス、健全性を包括的に把握できます。
- GPU 使用率の指標は、モニタリング対象の GPU の負荷と、タスクの処理に効果的に使用されているかどうかを示します。これには、コア処理、メモリ、I/O、電力使用量の指標が含まれます。
- GPU パフォーマンス指標は、GPU が計算タスクをどれだけ効果的かつ効率的に実行できるかを示します。これには、クロック速度と温度の指標が含まれます。
- NVlink や PCIe などの GPU I/O 指標では、データ転送の帯域幅を測定します。
始める前に
作業を始める前に、次のことを確認してください。
- Google Kubernetes Engine API を有効にする。 Google Kubernetes Engine API の有効化
- このタスクに Google Cloud CLI を使用する場合は、gcloud CLI をインストールして初期化する。すでに gcloud CLI をインストールしている場合は、
gcloud components update
を実行して最新のバージョンを取得する。
NVIDIA Data Center GPU Manager(DCGM)の指標の要件
NVIDIA Data Center GPU Manager(DCGM)の指標を収集するには、GKE クラスタが次の要件を満たしている必要があります。
- GKE バージョン 1.30.1-gke.1204000 以降
- システム指標の収集が有効になっている
- Google Cloud Managed Service for Prometheus マネージド コレクションが有効になっている
- GKE が管理する GPU ドライバがノードプールで実行されている。つまり、
--gpu-driver-version
にはdefault
またはlatest
を使用してノードプールを作成する必要があります。 - プロファイリング指標は、NVIDIA H100 80 GB GPU でのみ収集されます。
DCGM 指標の収集を構成する
GKE で既存のクラスタの DCGM 指標を収集するには、Google Cloud コンソール、gcloud CLI、または Terraform を使用します。
コンソール
-
GPU ドライバのインストールでは、デフォルトまたは最新を使用する必要があります。
Google Cloud コンソールで Google Kubernetes Engine のページに移動します。
クラスタの名前をクリックします。
[Cloud Monitoring] の横にある edit をクリックします。
SYSTEM
とDCGM
を選択します。[保存] をクリックします。
gcloud
GPU ノードプールを作成します。
--gpu-driver-version
にはdefault
またはlatest
を使用する必要があります。クラスタを更新します。
gcloud container clusters update CLUSTER_NAME \ --location=COMPUTE_LOCATION \ --enable-managed-prometheus \ --monitoring=SYSTEM,DCGM
次のように置き換えます。
CLUSTER_NAME
: 既存のクラスタの名前。COMPUTE_LOCATION
: クラスタの Compute Engine のロケーション。
Terraform
Terraform を使用して DCGM 指標の収集を構成するには、google_container_cluster
の Terraform レジストリの monitoring_config
ブロックをご覧ください。Terraform と Google Cloud を使用する場合の一般的な情報については、Google Cloud での Terraform をご覧ください。
DCGM 指標を使用する
DCGM 指標は、Google Cloud コンソールのダッシュボード、またはクラスタの概要ページとクラスタの詳細ページで直接表示できます。詳細については、オブザーバビリティ指標を表示するをご覧ください。
指標は、Grafana DCGM 指標ダッシュボードを使用して表示できます。詳細については、Grafana を使用したクエリをご覧ください。エラーが発生した場合は、API の互換性をご覧ください。
料金
DCGM 指標は、Google Cloud Managed Service for Prometheus を使用して、Cloud Monitoring に指標を読み込みます。Cloud Monitoring では、取り込まれたサンプルの数に基づいて、これらの指標の取り込みに対して課金されます。ただし、GKE Enterprise エディションが有効になっているプロジェクトに属する登録済みクラスタでは、これらの指標は無料です。
詳細については、Cloud Monitoring の料金をご覧ください。
割り当て
DCGM 指標は、Cloud Monitoring API の1 分あたりの時系列取り込みリクエストの割り当てを消費します。指標パッケージを有効にする前に、その割り当ての直近のピーク使用量を確認してください。同じプロジェクトに多くのクラスタがある場合や、すでに割り当ての上限に近づいている場合は、いずれかのオブザーバビリティ パッケージを有効にする前に割り当ての上限の引き上げをリクエストできます。
DCGM 指標
この表の Cloud Monitoring の指標名には、prometheus.googleapis.com/
という接頭辞を付ける必要があります。表内の項目では、この接頭辞を省略しています。
GKE で収集されたすべての DCGM 指標には、モニタリング対象リソースの prometheus_target
ラベルだけでなく、次のラベルが付加されます。
GPU ラベル:
UUID
: GPU デバイスの UUIDdevice
: GPU デバイス名-
gpu
: ノードの GPU デバイスの整数としてのインデックス番号。たとえば、8 個の GPU が接続されている場合、この値は0
~7
の範囲になります。 modelName
: GPU デバイスモデルの名前(NVIDIA L4
など)。
Kubernetes ラベル:
container
: GPU デバイスを使用する Kubernetes コンテナの名前。-
namespace
: GPU デバイスを使用する Pod とコンテナの Kubernetes Namespace。 pod
: GPU デバイスを使用する Kubernetes Pod。
PromQL の指標名 Cloud Monitoring の指標名 |
|
---|---|
種類、タイプ、単位
モニタリング対象リソース 必要な GKE バージョン |
説明 |
DCGM_FI_DEV_FB_FREE DCGM_FI_DEV_FB_FREE/gauge |
|
GAUGE 、DOUBLE 、1
prometheus_target
1.30.1-gke.1204000 |
空きフレーム バッファ(MB)。 |
DCGM_FI_DEV_FB_TOTAL DCGM_FI_DEV_FB_TOTAL/gauge |
|
GAUGE 、DOUBLE 、1
prometheus_target
1.30.1-gke.1204000 |
GPU の合計フレーム バッファ(MB)。 |
DCGM_FI_DEV_FB_USED DCGM_FI_DEV_FB_USED/gauge |
|
GAUGE 、DOUBLE 、1
prometheus_target
1.30.1-gke.1204000 |
使用済みのフレーム バッファ(MB)。 |
DCGM_FI_DEV_GPU_TEMP DCGM_FI_DEV_GPU_TEMP/gauge |
|
GAUGE 、DOUBLE 、1
prometheus_target
1.30.1-gke.1204000 |
デバイスの現在の温度(摂氏)。 |
DCGM_FI_DEV_GPU_UTIL DCGM_FI_DEV_GPU_UTIL/gauge |
|
GAUGE 、DOUBLE 、1
prometheus_target
1.30.1-gke.1204000 |
GPU 使用率(%)。 |
DCGM_FI_DEV_MEM_COPY_UTIL DCGM_FI_DEV_MEM_COPY_UTIL/gauge |
|
GAUGE 、DOUBLE 、1
prometheus_target
1.30.1-gke.1204000 |
メモリ使用率(%) |
DCGM_FI_DEV_MEMORY_TEMP DCGM_FI_DEV_MEMORY_TEMP/gauge |
|
GAUGE 、DOUBLE 、1
prometheus_target
1.30.1-gke.1204000 |
デバイスのメモリの温度(°C)。 |
DCGM_FI_DEV_POWER_USAGE DCGM_FI_DEV_POWER_USAGE/gauge |
|
GAUGE 、DOUBLE 、1
prometheus_target
1.30.1-gke.1204000 |
デバイスの消費電力(ワット単位)。 |
DCGM_FI_DEV_SM_CLOCK DCGM_FI_DEV_SM_CLOCK/gauge |
|
GAUGE 、DOUBLE 、1
prometheus_target
1.30.1-gke.1204000 |
SM クロック周波数(MHz)。 |
DCGM_FI_DEV_TOTAL_ENERGY_CONSUMPTION DCGM_FI_DEV_TOTAL_ENERGY_CONSUMPTION/counter |
|
CUMULATIVE 、DOUBLE 、1
prometheus_target
1.30.1-gke.1204000 |
ドライバが最後に再読み込されて GPU の合計エネルギー消費量(mJ)。 |
DCGM_FI_PROF_DRAM_ACTIVE DCGM_FI_PROF_DRAM_ACTIVE/gauge |
|
GAUGE 、DOUBLE 、1
prometheus_target
1.30.1-gke.1204000 |
デバイスのメモリ インターフェースがデータを送受信しているアクティブなサイクルの割合。 |
DCGM_FI_PROF_GR_ENGINE_ACTIVE DCGM_FI_PROF_GR_ENGINE_ACTIVE/gauge |
|
GAUGE 、DOUBLE 、1
prometheus_target
1.30.1-gke.1204000 |
グラフィック エンジンがアクティブな時間の割合。 |
DCGM_FI_PROF_NVLINK_RX_BYTES DCGM_FI_PROF_NVLINK_RX_BYTES/gauge |
|
GAUGE 、DOUBLE 、1
prometheus_target
1.30.1-gke.1204000 |
アクティブな NvLink rx(読み取り)データのレート(ヘッダーとペイロードの両方を含むバイト単位)。 |
DCGM_FI_PROF_NVLINK_TX_BYTES DCGM_FI_PROF_NVLINK_TX_BYTES/gauge |
|
GAUGE 、DOUBLE 、1
prometheus_target
1.30.1-gke.1204000 |
アクティブな NvLink 送信(送信)データのレート(ヘッダーとペイロードの両方を含むバイト単位)。 |
DCGM_FI_PROF_PCIE_RX_BYTES DCGM_FI_PROF_PCIE_RX_BYTES/gauge |
|
GAUGE 、DOUBLE 、1
prometheus_target
1.30.1-gke.1204000 |
アクティブな PCIe rx(読み取り)データのレート(ヘッダーとペイロードの両方を含むバイト単位)。 |
DCGM_FI_PROF_PCIE_TX_BYTES DCGM_FI_PROF_PCIE_TX_BYTES/gauge |
|
GAUGE 、DOUBLE 、1
prometheus_target
1.30.1-gke.1204000 |
アクティブな PCIe tx(送信)データのレート(ヘッダーとペイロードの両方を含むバイト単位)。 |
DCGM_FI_PROF_PIPE_FP16_ACTIVE DCGM_FI_PROF_PIPE_FP16_ACTIVE/gauge |
|
GAUGE 、DOUBLE 、1
prometheus_target
1.30.1-gke.1204000 |
fp16 パイプがアクティブなサイクルの比率。 |
DCGM_FI_PROF_PIPE_FP32_ACTIVE DCGM_FI_PROF_PIPE_FP32_ACTIVE/gauge |
|
GAUGE 、DOUBLE 、1
prometheus_target
1.30.1-gke.1204000 |
fp32 パイプがアクティブなサイクルの比率。 |
DCGM_FI_PROF_PIPE_FP64_ACTIVE DCGM_FI_PROF_PIPE_FP64_ACTIVE/gauge |
|
GAUGE 、DOUBLE 、1
prometheus_target
1.30.1-gke.1204000 |
fp64 パイプがアクティブなサイクルの比率。 |
DCGM_FI_PROF_PIPE_TENSOR_ACTIVE DCGM_FI_PROF_PIPE_TENSOR_ACTIVE/gauge |
|
GAUGE 、DOUBLE 、1
prometheus_target
1.30.1-gke.1204000 |
任意のテンソルパイプがアクティブなサイクルの比率。 |
DCGM_FI_PROF_SM_ACTIVE DCGM_FI_PROF_SM_ACTIVE/gauge |
|
GAUGE 、DOUBLE 、1
prometheus_target
1.30.1-gke.1204000 |
SM に 1 つ以上のワープが割り当てられているサイクルの割合。 |
これらの指標の使用方法を理解しやすいよう、指標を次のように分類しました。
コンピューティングまたはコアの使用率
これらの指標を使用すると、使用率の低いデバイスを特定し、計算または GPU の割り当てを調整して使用率を最適化できます。使用率が低いということは、必要以上の GPU 容量に対して料金を支払っている可能性があります。これらの指標は、コンピューティングをより少ないデバイスに統合することで、費用を節約するのに役立ちます。
DCGM_FI_DEV_GPU_UTIL
この指標は、GPU がアクティブだった時間の割合を表します。
想定される用途: GPU の平均使用率の概要を示します。この指標は DCGM_FI_PROF_GR_ENGINE_ACTIVE に似ていますが、GPU 使用率のより正確な指標になる可能性があります。
DCGM_FI_PROF_GR_ENGINE_ACTIVE
この指標は、各サンプリング間隔におけるグラフィック エンジンの使用率を表します。この値は、サンプリング期間中のアクティブなサイクルの平均数と、使用可能な最大サイクル数から導出されます。たとえば、1 秒のサンプリング間隔で 1,000 サイクルが使用可能で、平均 324 サイクルが実際にアクティブ(処理中)だった場合、結果の指標値は 0.324 になります。これは、(0.324 x 100)32.4% の使用率と大まかに解釈できます。
想定される用途: GPU の平均使用率の概要を示します。使用率の値が一貫して高い場合、GPU がボトルネックになってシステム パフォーマンスの問題が発生している可能性があります。使用率の値が常に低い場合は、アプリケーションが使用可能な処理能力を十分に使用していないことを示します。
DCGM_FI_PROF_PIPE_FP16_ACTIVE
、DCGM_FI_PROF_PIPE_FP32_ACTIVE
、DCGM_FI_PROF_PIPE_FP64_ACTIVE
、DCGM_FI_PROF_PIPE_TENSOR_ACTIVE
これらの指標は、特定の GPU パイプがアクティブなサイクル数とピーク持続経過サイクル数の比率を表します。
想定される用途: GPU 内のさまざまな計算パイプラインがどれだけ効果的に使用されているかを測定します。
DCGM_FI_PROF_SM_ACTIVE
この指標は、SM(ストリーミング マルチプロセッサ)で 1 つ以上のワープがアクティブだった時間の割合を、すべての SM で平均したものです。たとえば、GPU で使用可能な SM が 80 個あり、サンプリング期間中に 16 個の SM がワープを実行していた場合、結果の sm_active
値は(16/80)0.20 になります。これは、使用可能な SM の 20% がワープを実行していたと解釈できます。
想定される使用方法: GPU の並列処理がどのように利用されているかを測定します。
メモリ使用率
これらの指標の主な用途は、GPU デバイスにアプリケーションに十分なメモリがないことを検出することです。このようなアプリケーションでは、GPU 容量を増やすとメリットが得られる可能性があります。
DCGM_FI_DEV_FB_FREE
、DCGM_FI_DEV_FB_USED
、DCGM_FI_DEV_FB_TOTAL
これらの指標は、GPU のメモリであるフレームバッファ メモリに関するものです。指標には、空きメモリと使用済みメモリが報告され、合計されます。また、使用可能な合計メモリも確認できます。
想定される用途: GPU メモリの使用パターンを特定します。これにより、実際の GPU 上のメモリ使用量と予想される使用量を関連付けて、アプリケーションのメモリ効率を判断できます。
DCGM_FI_DEV_MEM_COPY_UTIL
この指標は、過去のサンプル期間に対して、グローバル(デバイス)メモリの読み書きが実行された時間の割合を表します。
想定される用途: GPU メモリとの間でのデータ転送のパターンを特定します。この指標の値が高いにもかかわらずコンピューティングの使用率の指標の値が低い場合は、実行中のアプリケーションでメモリ転送がボトルネックになっている可能性があります。
DCGM_FI_PROF_DRAM_ACTIVE
この指標は、GPU メモリ インターフェースがデータを送受信しているサイクルの割合を表します。これには、SM で実行されるスレッドからの読み取りと書き込み、GPU メモリとの間でのメモリコピーが含まれます。値が高いほど、メモリ トラフィック レベルが高くなります。
想定される用途: この指標は指標 DCGM_FI_DEV_MEM_COPY_UTIL
に似ていますが、より正確な値が得られます。
I/O 使用率
次の指標は、GPU とホスト間、または複数の GPU デバイス間でのデータ転送の使用状況に関する分析情報を提供します。これらの指標を使用する方法の 1 つは、アプリケーションが相互接続を過負荷状態にしていることを検出することです。このような送信にはバーストが発生するため、高解像度のデータ(分布など)を調べて、相互接続の動作をより詳細に把握することをおすすめします。
DCGM_FI_PROF_NVLINK_RX_BYTES
、DCGM_FI_PROF_NVLINK_TX_BYTES
これらの指標は、NVLink の送信(tx)と受信(rx)のスループットをバイト単位で表します。
想定される用途: NVLink コネクタ(GPU チップ間)の負荷を追跡します。これらの指標の値が使用可能な NVLink 帯域幅の合計に近づき、コンピューティング使用率の指標が低い場合、NVLink が実行中のアプリケーションのボトルネックになっている可能性があります。
DCGM_FI_PROF_PCIE_RX_BYTES
、DCGM_FI_PROF_PCIE_TX_BYTES
これらの指標は、PCIe の送信(tx)と受信(rx)のスループットをバイト単位で表します。tx は GPU がデータを送信すること、rx は GPU がデータを受信することを示します。
想定される用途: PCIe バス(CPU と GPU の間)の負荷を追跡します。これらの指標の値が PCIe バスの合計帯域幅に近いにもかかわらず、コンピューティング使用率の指標が低い場合、PCIe バスが実行中のアプリケーションのボトルネックになっている可能性があります。
電力使用率
次の指標は、GPU の電力使用率に関する分析情報を提供します。これは、ワークロードのパフォーマンスと効率に重要となる場合があります。
DCGM_FI_DEV_GPU_TEMP
この指標は、すべての GPU コアの平均温度を表します。
想定される用途: GPU が過熱に近づいているタイミングを追跡します。主にクロック スロットリングと関連付けるために使用します。この指標を使用して、高度なアプリケーションで負荷が軽いときにオーバーヒートが発生しやすい GPU を特定することもできます。
DCGM_FI_DEV_POWER_USAGE
この指標は、GPU の消費電力をワット単位で表します。電力使用量を GPU のビジー状態の指標として追跡できます。NVIDIA GPU は、処理する作業量に基づいてエンジン クロックを調整します。クロック速度(および使用率)が増加すると、消費電力も増加します。
想定される用途: ユーザー アプリケーションで GPU が使用している電力の量を追跡します。
DCGM_FI_DEV_TOTAL_ENERGY_CONSUMPTION
この指標は、ドライバが最後に再読み込みされてからの GPU の合計エネルギー消費量(ミリジュール(mJ))を表します。この指標に基づいて計算されるレートは、消費電力指標に対応している必要があります。
想定される用途: ユーザー アプリケーションで GPU が使用している電力の量を追跡します。
GPU パフォーマンス指標
GPU パフォーマンスは、GPU が計算タスクをどれだけ効果的かつ効率的に実行できるかを示します。
DCGM_FI_DEV_MEMORY_TEMP
この指標は、メモリブロックの平均温度を示します。
想定される用途: メモリブロックの温度を表示し、GPU 温度と相関付ける。
DCGM_FI_DEV_SM_CLOCK
この指標は、すべての SM の平均クロック速度を表します。この指標は、指定された期間で計算されます。
想定される用途: クロック速度を追跡してスロットルを検出し、アプリケーションのパフォーマンスと関連付けます。
次のステップ
- オブザーバビリティ指標を表示する方法を確認する。