DCGM 指標を収集して表示する


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 クラスタが次の要件を満たしている必要があります。

DCGM 指標の収集を構成する

GKE で既存のクラスタの DCGM 指標を収集するには、Google Cloud コンソール、gcloud CLI、または Terraform を使用します。

コンソール

  1. GPU ノードプールを作成します

    GPU ドライバのインストールでは、デフォルトまたは最新を使用する必要があります。

  2. Google Cloud コンソールで Google Kubernetes Engine のページに移動します。

    Google Kubernetes Engine に移動

  3. クラスタの名前をクリックします。

  4. [Cloud Monitoring] の横にある をクリックします。

  5. SYSTEMDCGM を選択します。

  6. [保存] をクリックします。

gcloud

  1. GPU ノードプールを作成します。

    --gpu-driver-version には default または latest を使用する必要があります。

  2. クラスタを更新します。

    gcloud container clusters update CLUSTER_NAME \
        --location=COMPUTE_LOCATION \
        --enable-managed-prometheus \
        --monitoring=SYSTEM,DCGM
    

    次のように置き換えます。

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 デバイスの UUID
  • device: GPU デバイス名
  • gpu: ノードの GPU デバイスの整数としてのインデックス番号。たとえば、8 個の GPU が接続されている場合、この値は 07 の範囲になります。
  • 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

GAUGEDOUBLE1 prometheus_target
1.30.1-gke.1204000
空きフレーム バッファ(MB)。
DCGM_FI_DEV_FB_TOTAL
DCGM_FI_DEV_FB_TOTAL/gauge

GAUGEDOUBLE1 prometheus_target
1.30.1-gke.1204000
GPU の合計フレーム バッファ(MB)。
DCGM_FI_DEV_FB_USED
DCGM_FI_DEV_FB_USED/gauge

GAUGEDOUBLE1 prometheus_target
1.30.1-gke.1204000
使用済みのフレーム バッファ(MB)。
DCGM_FI_DEV_GPU_TEMP
DCGM_FI_DEV_GPU_TEMP/gauge

GAUGEDOUBLE1 prometheus_target
1.30.1-gke.1204000
デバイスの現在の温度(摂氏)。
DCGM_FI_DEV_GPU_UTIL
DCGM_FI_DEV_GPU_UTIL/gauge

GAUGEDOUBLE1 prometheus_target
1.30.1-gke.1204000
GPU 使用率(%)。
DCGM_FI_DEV_MEM_COPY_UTIL
DCGM_FI_DEV_MEM_COPY_UTIL/gauge

GAUGEDOUBLE1 prometheus_target
1.30.1-gke.1204000
メモリ使用率(%)
DCGM_FI_DEV_MEMORY_TEMP
DCGM_FI_DEV_MEMORY_TEMP/gauge

GAUGEDOUBLE1 prometheus_target
1.30.1-gke.1204000
デバイスのメモリの温度(°C)。
DCGM_FI_DEV_POWER_USAGE
DCGM_FI_DEV_POWER_USAGE/gauge

GAUGEDOUBLE1 prometheus_target
1.30.1-gke.1204000
デバイスの消費電力(ワット単位)。
DCGM_FI_DEV_SM_CLOCK
DCGM_FI_DEV_SM_CLOCK/gauge

GAUGEDOUBLE1 prometheus_target
1.30.1-gke.1204000
SM クロック周波数(MHz)。
DCGM_FI_DEV_TOTAL_ENERGY_CONSUMPTION
DCGM_FI_DEV_TOTAL_ENERGY_CONSUMPTION/counter

CUMULATIVEDOUBLE1 prometheus_target
1.30.1-gke.1204000
ドライバが最後に再読み込されて GPU の合計エネルギー消費量(mJ)。
DCGM_FI_PROF_DRAM_ACTIVE
DCGM_FI_PROF_DRAM_ACTIVE/gauge

GAUGEDOUBLE1 prometheus_target
1.30.1-gke.1204000
デバイスのメモリ インターフェースがデータを送受信しているアクティブなサイクルの割合。
DCGM_FI_PROF_GR_ENGINE_ACTIVE
DCGM_FI_PROF_GR_ENGINE_ACTIVE/gauge

GAUGEDOUBLE1 prometheus_target
1.30.1-gke.1204000
グラフィック エンジンがアクティブな時間の割合。
DCGM_FI_PROF_NVLINK_RX_BYTES
DCGM_FI_PROF_NVLINK_RX_BYTES/gauge

GAUGEDOUBLE1 prometheus_target
1.30.1-gke.1204000
アクティブな NvLink rx(読み取り)データのレート(ヘッダーとペイロードの両方を含むバイト単位)。
DCGM_FI_PROF_NVLINK_TX_BYTES
DCGM_FI_PROF_NVLINK_TX_BYTES/gauge

GAUGEDOUBLE1 prometheus_target
1.30.1-gke.1204000
アクティブな NvLink 送信(送信)データのレート(ヘッダーとペイロードの両方を含むバイト単位)。
DCGM_FI_PROF_PCIE_RX_BYTES
DCGM_FI_PROF_PCIE_RX_BYTES/gauge

GAUGEDOUBLE1 prometheus_target
1.30.1-gke.1204000
アクティブな PCIe rx(読み取り)データのレート(ヘッダーとペイロードの両方を含むバイト単位)。
DCGM_FI_PROF_PCIE_TX_BYTES
DCGM_FI_PROF_PCIE_TX_BYTES/gauge

GAUGEDOUBLE1 prometheus_target
1.30.1-gke.1204000
アクティブな PCIe tx(送信)データのレート(ヘッダーとペイロードの両方を含むバイト単位)。
DCGM_FI_PROF_PIPE_FP16_ACTIVE
DCGM_FI_PROF_PIPE_FP16_ACTIVE/gauge

GAUGEDOUBLE1 prometheus_target
1.30.1-gke.1204000
fp16 パイプがアクティブなサイクルの比率。
DCGM_FI_PROF_PIPE_FP32_ACTIVE
DCGM_FI_PROF_PIPE_FP32_ACTIVE/gauge

GAUGEDOUBLE1 prometheus_target
1.30.1-gke.1204000
fp32 パイプがアクティブなサイクルの比率。
DCGM_FI_PROF_PIPE_FP64_ACTIVE
DCGM_FI_PROF_PIPE_FP64_ACTIVE/gauge

GAUGEDOUBLE1 prometheus_target
1.30.1-gke.1204000
fp64 パイプがアクティブなサイクルの比率。
DCGM_FI_PROF_PIPE_TENSOR_ACTIVE
DCGM_FI_PROF_PIPE_TENSOR_ACTIVE/gauge

GAUGEDOUBLE1 prometheus_target
1.30.1-gke.1204000
任意のテンソルパイプがアクティブなサイクルの比率。
DCGM_FI_PROF_SM_ACTIVE
DCGM_FI_PROF_SM_ACTIVE/gauge

GAUGEDOUBLE1 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_ACTIVEDCGM_FI_PROF_PIPE_FP32_ACTIVEDCGM_FI_PROF_PIPE_FP64_ACTIVEDCGM_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_FREEDCGM_FI_DEV_FB_USEDDCGM_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_BYTESDCGM_FI_PROF_NVLINK_TX_BYTES

これらの指標は、NVLink の送信(tx)と受信(rx)のスループットをバイト単位で表します。

想定される用途: NVLink コネクタ(GPU チップ間)の負荷を追跡します。これらの指標の値が使用可能な NVLink 帯域幅の合計に近づき、コンピューティング使用率の指標が低い場合、NVLink が実行中のアプリケーションのボトルネックになっている可能性があります。

DCGM_FI_PROF_PCIE_RX_BYTESDCGM_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 の平均クロック速度を表します。この指標は、指定された期間で計算されます。

想定される用途: クロック速度を追跡してスロットルを検出し、アプリケーションのパフォーマンスと関連付けます。

次のステップ