GPUモニタリング2.0は、NVIDIA Data Center GPU Manager (DCGM) に基づいて開発された高度なGPUモニタリングシステムです。 このトピックでは、Container Service for Kubernetes (ACK) クラスターのGPUモニタリングを有効にする方法について説明します。
前提条件
GPU高速化ノードを備えたACKマネージドクラスター、またはGPU高速化ノードを備えたACK専用クラスターが作成されます。 詳細については、「GPU高速化ノードを使用したACKクラスターの作成」または「GPU高速化ノードを使用したACK専用クラスターの作成」をご参照ください。
アプリケーションリアルタイム監視サービス (ARMS) が起動されます。 詳しくは、「ARMS の有効化」をご参照ください。
背景情報
Kubernetesで多数のGPUデバイスを監視することは、O&Mエンジニアにとって重要です。 クラスターからGPUメトリックを収集することで、GPUの使用状況、正常性ステータス、ワークロード、およびクラスターのパフォーマンスに関する洞察を得ることができます。 モニタリングデータは、問題の迅速な診断、GPUリソース割り当ての最適化、リソース使用率の向上に役立ちます。 GPUモニタリングは、データサイエンティストとAIアルゴリズムエンジニアがGPUリソース割り当てとタスクスケジューリングを最適化するのにも役立ちます。
GPUモニタリング1.0は、NVML (NVIDIA Management Library) を使用してGPUメトリックを収集し、PrometheusとGrafanaを使用して収集したメトリックを視覚化します。 GPUモニタリング1.0を使用して、クラスター内のGPUリソースの使用状況をモニタリングできます。 新世代のNVIDIA GPUは、より複雑なアーキテクチャを使用して、さまざまなシナリオでユーザーの要件を満たします。 GPUモニタリング1.0によって提供されるGPUメトリックは、増大する需要を満たすことができなくなりました。
新世代のNVIDIA GPUは、多数のGPUを管理するために使用できるデータセンターGPUマネージャー (DCGM) をサポートしています。 GPUモニタリング2.0は、強力なNVIDIA DCGMに基づいて開発されています。DCGMはさまざまなGPUメトリックを提供し、次の機能をサポートします。
GPUの動作モニタリング
GPU設定管理
GPUポリシー管理
GPUヘルス診断
GPU統計とスレッド統計
NVSwitchの設定とモニタリング
制限事項
NVIDIA GPUドライバーのバージョンは418.87.01以降である必要があります。 GPUプロファイリング機能を使用する場合は、NVIDIA GPUドライバー450.80.02以降がインストールされていることを確認してください。 GPUプロファイリングの詳細については、「機能の概要」をご参照ください。
説明GPUモニタリング2.0はDCGM 2.3.6を使用します。 NVIDIA GPUドライバー5xxがインストールされている場合、DCGM 2.3.6はメトリクスを正しく収集できません。 詳細については、「」をご参照ください。dcgm-exporterはメトリクスを誤って収集しますか?
ノードにインストールされているGPUドライバーのバージョンを確認するには、SSHを使用してノードにログインし、
nvidia-smi
コマンドを実行します。 詳細については、「SSHを使用したACK専用クラスターのマスターノードへの接続」をご参照ください。
GPUモニタリング2.0を使用してNVIDIAマルチインスタンスGPU (MIG) 機能をモニタリングすることはできません。
使用上の注意
DCGM 2.3.6にはメモリリークの問題があります。 ACKは、この問題を回避するために、エクスポータのポッドのresources.limits
パラメーターを設定します。 メモリ使用量が指定されたメモリ制限に達すると、エクスポータが再起動されます。 エクスポータは、再起動後、通常どおりメトリックをGrafanaにシンクできます。 ただし、Grafanaの特定のメトリックは、エクスポータの再起動後に異常な値を表示する場合があります。 例えば、ノードの数は、エクスポータが再起動された後に増加し得る。 これらのメトリックの値は、数分後に正常に復元されます。 ほとんどの場合、輸出業者は毎月1回再開されます。 詳細については、「」をご参照ください。DCGMにメモリリークがありますか?
課金ルール
デフォルトでは、ackクラスター内のACK-gpu-exporter
コンポーネントによって収集されたManaged Service for Prometheusメトリクスは基本的なメトリクスと見なされ、無料です。 ただし、Alibaba Cloudが基本モニタリングサービスに対して定義したモニタリングデータのデフォルトの保持期間を延長した場合、追加料金が発生する可能性があります。 Managed Service For Prometheusでのカスタムメトリクスの課金の詳細については、「課金の概要」をご参照ください。
手順
ack-arms-prometheusのバージョンが1.1.7以降で、GPUダッシュボードのバージョンがV2以降であることを確認します。
説明ack-arms-prometheusバージョンの確認と更新: ACKコンソールにログインし、クラスターの詳細ページに移動します。 左側のナビゲーションウィンドウで、 を選択します。 [アドオン] ページで、検索ボックスにarmsと入力し、検索アイコンをクリックします。 検索結果が表示されたら、ack-arms-prometheusバージョンを確認して更新できます。
GPUダッシュボードのバージョンを確認して更新する: ACKコンソールにログインし、クラスターの詳細ページに移動します。 左側のナビゲーションウィンドウで、 を選択します。 [Prometheus Monitoring] ページの右上隅にある [Prometheus Serviceに移動] をクリックします。 [ダッシュボード] ページで、GPUダッシュボードのバージョンを確認および更新できます。
のGPUモニタリング機能を確認します。Prometheusのマネージドサービス.
tensorflow-benchmarkという名前のアプリケーションをデプロイします。
tensorflow-benchmark. YAMLという名前の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 #Apply for a GPU. workingDir: /root restartPolicy: Never
次のコマンドを実行して、GPU高速化ノードにtensorflow-benchmarkアプリケーションをデプロイします。
kubectl apply -f tensorflow-benchmark.yaml
次のコマンドを実行して、アプリケーションを実行するポッドのステータスを照会します。
kubectl get po
期待される出力:
NAME READY STATUS RESTARTS AGE tensorflow-benchmark-k*** 1/1 Running 0 114s
出力は、ポッドが
実行中
状態であることを示します。
GPUダッシュボードを表示します。
ACK コンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターの名前をクリックします。 左側のウィンドウで、
を選択します。[Prometheusモニタリング] ページで、[GPUモニタリング] タブをクリックし、[GPU-クラスターディメンション] タブをクリックします。
クラスターダッシュボードは、GPUポッドがcn-beijing.192.168.10.163ノードで実行されていることを示しています。
[gpu-ノード] タブをクリックし、gpu_nodeドロップダウンリストから [cn-beijing.192.168.10.163] を選択して、ノードのGPU情報を表示します。