全部產品
Search
文件中心

Container Service for Kubernetes:開啟叢集GPU監控

更新時間:Jul 23, 2024

GPU監控2.0基於NVIDIA DCGM構建功能強大的GPU監控體系。本文介紹如何開啟叢集GPU監控。

前提條件

背景資訊

對營運人員來說,實現對Kubernetes的大規模GPU裝置可監測能力至關重要。通過監測GPU相關指標能夠瞭解整個叢集的GPU使用方式、健康狀態、工作負載效能等,從而實現對異常問題的快速診斷、最佳化GPU資源的分配、提升資源使用率等。除營運人員以外,其他人員(例如資料科學家、AI演算法工程師等)也能通過相關監控指標瞭解業務的GPU使用方式,以便進行容量規劃和任務調度。

GPU監控1.0版本基於NVML(NVIDIA Management Library)庫擷取GPU指標,並通過Prometheus和Grafana將指標透傳給使用者,便於使用者監控叢集GPU資源的使用方式。但是,隨著新一代NVIDIA GPU的發行,內部構造更加複雜,使用者的使用情境也更加多樣,GPU監控1.0對GPU的監控指標已經不能完全滿足使用者的需求。

新一代NVIDIA支援使用資料中心GPU管理器DCGM(Data Center GPU Manager)來管理大規模叢集中的GPU,GPU監控2.0基於NVIDIA DCGM構建功能更強大的GPU監控體系。DCGM提供了種類豐富的GPU監控指標,有如下功能特性:

  • GPU行為監控

  • GPU組態管理

  • GPU Policy管理

  • GPU健康診斷

  • GPU層級統計和線程層級統計

  • NVSwitch配置和監控

使用限制

  • 節點NVIDIA GPU驅動版本≥418.87.01。如果您需要進行GPU Profiling,則節點NVIDIA GPU驅動版本≥450.80.02。關於GPU Profiling的更多資訊,請參見Feature Overview

    說明
  • 不支援對NVIDIA MIG進行監控。

注意事項

當前DCGM可能會存在記憶體流失的問題,已通過為Exporter所在的Pod設定resources.limits來規避這個問題。當記憶體使用量達到Limits限制時,Exporter會重啟(一般一個月左右重啟一次),重啟後正常上報指標,在重啟後的幾分鐘內,Grafana可能會出現某些指標的顯示異常(例如節點數突然變多),之後恢複正常。問題詳情請參見The DCGM has a memory leak?

費用說明

在ACK叢集中使用ack-gpu-exporter組件時,預設情況下它產生的阿里雲Prometheus監控指標被視為基礎指標,並且是免費的。然而,如果您需要調整監控資料的儲存時間長度,即保留監控資料的時間超過阿里雲為基礎監控服務設定的預設保留期限,這可能會產生額外的費用。關於阿里雲Prometheus的自訂收費策略,請參見計費概述

操作步驟

  1. 步驟一:開啟阿里雲Prometheus監控

    請確保ack-arms-prometheus組件版本≥1.1.7、GPU組件≥v2。

    說明
    • 查看或升級ack-arms-prometheus:在Container Service管理主控台的叢集詳情左側欄單擊營運管理 > 組件管理,在頁面右側搜尋arms,在ack-arms-prometheus卡片中查看或升級版本。

    • 查看或升級GPU組件:在Container Service管理主控台的叢集詳情左側欄單擊營運管理 > Prometheus監控,在頁面右上方單擊跳轉到Prometheus服務,在大盤列表查看或升級GPU相關的監控大盤版本。

  2. 驗證阿里雲Prometheus的GPU監控能力。

    1. 部署tensorflow-benchmark應用。

      1. 使用以下YAML內容,建立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 po

        預期輸出:

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

        由預取輸出得到,當前Pod處於Running狀態。

    2. 查看GPU監控大盤。

      1. 登入Container Service管理主控台,在左側導覽列單擊叢集

      2. 叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇營運管理 > Prometheus監控

      3. Prometheus監控頁面,單擊GPU監控頁簽,然後單擊叢集GPU監控-叢集維度頁簽。

        從叢集監控大盤中可以看到GPU Pod運行在節點cn-beijing.192.168.10.163上。

        叢集GPU監控-叢集維度

      4. 單擊叢集GPU監控-節點維度頁簽,選擇gpu_node為cn-beijing.192.168.10.163,查看該節點的GPU詳細資料。叢集GPU監控-節點維度