すべてのプロダクト
Search
ドキュメントセンター

Container Service for Kubernetes:クラスターの GPU モニタリングを有効にする

最終更新日:Nov 09, 2025

GPU モニタリングは、NVIDIA Data Center GPU Manager (DCGM) を活用して、GPU のための強力なモニタリングシステムを構築します。このトピックでは、クラスターの GPU モニタリングを有効にする方法について説明します。

前提条件

背景情報

Kubernetes クラスター内の大規模な GPU デバイスを管理するには、包括的なモニタリングシステムが必要です。GPU メトリックをモニタリングすることで、クラスター全体の GPU 使用量、ヘルスステータス、およびワークロードのパフォーマンスを把握できます。これにより、問題を迅速に診断し、GPU リソースの割り当てを最適化し、リソース使用率を向上させることができます。O&M エンジニアに加えて、データサイエンティストや AI アルゴリズムエンジニアなどの他のロールも、これらのメトリックを使用して、自身のサービスの GPU 使用量を把握できます。この情報は、容量計画とタスクスケジューリングに役立ちます。

NVIDIA は、大規模クラスター内の GPU を管理するための DCGM を提供しています。NVIDIA DCGM 上に構築された GPU モニタリングシステムは、強力な機能とさまざまな GPU モニタリングメトリックを提供します。その主な特徴は次のとおりです。

  • GPU 動作のモニタリング

  • GPU 構成管理

  • GPU ポリシー管理

  • GPU ヘルス診断

  • GPU レベルおよびスレッドレベルの統計

  • NVSwitch の構成とモニタリング

制限事項

  • ノード上の NVIDIA ドライバーは、バージョン 418.87.01 以降である必要があります。GPU ノードにログインし、nvidia-smi コマンドを実行してドライバーのバージョンを確認できます。

  • GPU プロファイリングメトリックを使用するには、ノード上の NVIDIA ドライバーがバージョン 450.80.02 以降である必要があります。GPU プロファイリングメトリックの詳細については、「機能概要」をご参照ください。

  • NVIDIA MIG のモニタリングはサポートされていません。

課金

Alibaba Cloud Prometheus の課金ポリシーの詳細については、「課金の概要」をご参照ください。

1. Prometheus モニタリングを有効にする

重要

ack-arms-prometheus コンポーネントがバージョン 1.1.7 以降であることを確認してください。ack-arms-prometheus コンポーネントのバージョンを表示し、必要に応じてアップグレードできます。

Prometheus モニタリングを有効にする方法の詳細については、「ACK の Prometheus モニタリングを有効にする」をご参照ください。

セルフマネージドのオープンソース Prometheus サービスを使用していて、GPU モニタリング機能が必要な場合は、ack-gpu-exporter コンポーネントをインストールする必要があります。

2. サンプルアプリケーションをデプロイする

  1. 次の内容で tensorflow-benchmark.yaml という名前のファイルを作成します。

    apiVersion: batch/v1
    kind: Job
    metadata:
      name: tensorflow-benchmark
    spec:
      parallelism: 1
      template:
        metadata:
          labels:
            app: tensorflow-benchmark
        spec:
          containers:
          - name: tensorflow-benchmark
            image: registry.cn-beijing.aliyuncs.com/ai-samples/gpushare-sample:benchmark-tensorflow-2.2.3
            command:
            - bash
            - run.sh
            - --num_batches=50000
            - --batch_size=8
            resources:
              limits:
                nvidia.com/gpu: 1 # 1 つの GPU をリクエストします。
            workingDir: /root
          restartPolicy: Never
  2. 次のコマンドを実行して、GPU ノードに tensorflow-benchmark アプリケーションをデプロイします。

    kubectl apply -f tensorflow-benchmark.yaml
  3. 次のコマンドを実行して、Pod のステータスを確認します。

    kubectl get pod

    期待される出力:

    NAME                         READY   STATUS    RESTARTS   AGE
    tensorflow-benchmark-k***    1/1     Running   0          114s

3. クラスターの GPU モニタリングデータを表示する

  1. ACK コンソールにログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。

  2. クラスター ページで、目的のクラスターを見つけてその名前をクリックします。左側のペインで、[操作] > [Prometheus モニタリング] を選択します。

  3. [Prometheus モニタリング] ページで、[GPU モニタリング] タブをクリックし、次に [クラスター GPU モニタリング - アプリケーション Pod ディメンション] タブをクリックします。

    モニタリングデータは、GPU Pod がノード cn-beijing.10.131.xx.xxx で実行されていることを示しています。

    image

  4. [クラスター GPU モニタリング - ノードディメンション] タブをクリックし、[GPUNode] を cn-beijing.10.131.xx.xxx に設定して、ノードの詳細な GPU 情報を表示します。パラメーターの詳細については、「ダッシュボードの説明」をご参照ください。image

よくある質問

DCGM のメモリリーク

  • 背景: DCGM は、NVIDIA が提供する GPU の管理およびモニタリングツールです。ack-prometheus-gpu-exporter は、Managed Service for Prometheus コンポーネントをインストールした後に起動する DaemonSet Pod です。

  • 原因: DCGM のメモリリークは、実行時に DCGM が占有するメモリが正しく解放されず、メモリ使用量が継続的に増加する場合に発生します。

  • 解決策: DCGM はメモリリークを経験する可能性があります。この問題を回避するために、ack-prometheus-gpu-exporter が実行される Pod に resources.limits 設定が構成されています。メモリ使用量が制限に達すると、ack-prometheus-gpu-exporter が再起動します。これは通常、月に 1 回程度発生します。再起動後、メトリックは通常どおり報告されます。ただし、再起動後の数分間、Grafana はノード数の急増など、一部のメトリックを異常に表示することがあります。その後、表示は正常に戻ります。この問題の詳細については、「DCGM にはメモリリークがありますか?」をご参照ください。

ack-prometheus-gpu-exporter が OOM kill を経験する

  • 背景: ack-prometheus-gpu-exporter は、Managed Service for Prometheus コンポーネントをインストールした後に起動する DaemonSet Pod です。モニタリングを有効にすると問題が発生する可能性があります。

  • 原因: ACK クラスター上の ack-prometheus-gpu-exporter は、埋め込みモードで DCGM を使用します。このモードでは、DCGM はマルチ GPU ノードで大量のメモリを消費し、メモリリークが発生しやすくなります。したがって、複数の GPU を持つインスタンスで複数の GPU プロセスを実行し、ack-prometheus-gpu-exporter に少量のメモリを割り当てると、エクスポーター Pod がメモリ不足 (OOM) イベントによって強制終了される可能性があります。

  • 解決策: この場合、Pod は通常、再起動後にメトリックの報告を再開します。OOM kill が頻繁に発生する場合は、arms-prom 名前空間の ack-prometheus-gpu-exporter DaemonSet のメモリ limits を手動で増やすことで問題を解決できます。

ack-prometheus-gpu-exporter がエラーを報告する

  • 背景: ack-prometheus-gpu-exporter は、Managed Service for Prometheus コンポーネントをインストールした後に起動する DaemonSet Pod です。この Pod からのエラーは、モニタリングの問題を引き起こす可能性があります。

  • 原因: この問題は、ack-prometheus-gpu-exporter の Pod ログに次のようなエラーメッセージが含まれている場合に発生します。

    failed to get all process informations of gpu nvidia1,reason: failed to get gpu utilizations for all processes on device 1,reason: Not Found

    このエラーは、特定の GPU カードで特定のタスクが実行されていない場合に、古いバージョンの ack-prometheus-gpu-exporter が関連コンテナーの GPU メトリックを取得できないために発生します。

  • 解決策: この問題は最新バージョンで修正されています。この問題を解決するには、ack-arms-prometheus コンポーネントを最新バージョンにアップグレードしてください。