附註:
- 此教學課程需要存取 Oracle Cloud。若要註冊免費帳戶,請參閱開始使用 Oracle Cloud Infrastructure Free Tier 。
- 它會使用 Oracle Cloud Infrastructure 證明資料、租用戶及區間的範例值。完成實驗室時,請將這些值替代為您雲端環境特定的值。
使用 NVIDIA 資料中心 GPU Manager、Grafana 和 Prometheus 在 Oracle Cloud Infrastructure 監控 GPU 超級叢集
簡介
今年稍早,Oracle Cloud Infrastructure (OCI) NVIDIA GPU 超級叢集上的人工智慧 (AI) 和機器學習 (ML)。對許多大規模執行這些 GPU 工作負載類型的客戶來說,監控是一項挑戰。OCI 具備優異的監控解決方案 (包括部分 GPU 執行處理度量),但與 OCI Superclusters 的 GPU 度量更緊密整合,是我們客戶感興趣的主題。
設定 GPU 監督功能是直線的程序。如果您是客戶已使用 HPC 市集堆疊,則該部署映像檔中已包含大部分工具。
目標
- 使用 NVIDIA Data Center GPU Manager、Grafana 和 Prometheus 監控 GPU OCI 超級叢集。
必要條件
請確定每個 GPU 執行處理都已安裝這些先決條件。監控解決方案接著需要安裝和執行 NVIDIA Data Center GPU Manager (DCGM) 匯出器 Docker 容器、使用 Prometheus 擷取輸出度量,最後才在 Grafana 中顯示資料。
作業 1:安裝並執行 NVIDIA DCGM 匯出器 Docker 容器
使用 docker 命令完成 NVIDIA DCGM 容器的安裝和執行。
-
對非永久 Docker 容器執行下列命令。如果停止 Docker 服務或重新啟動的 GPU 伺服器,此執行方法將不會重新啟動 Docker 容器。
docker run -d --gpus all --rm -p 9400:9400 nvcr.io/nvidia/k8s/dcgm-exporter:3.2.3-3.1.6-ubuntu20.04
-
如果需要持續性,則應改用此執行方法。
docker run --restart unless-stopped -d --gpus all -p 9400:9400 nvcr.io/nvidia/k8s/dcgm-exporter:3.2.3-3.1.6-ubuntu20.04
注意:請確定將 docker 服務設定為在開機時載入,此範例才能透過重新啟動來保存。
這兩種方法都需要 GPU 節點具備網際網路存取權限 (NAT 閘道最常見),才能下載和執行 DCGM 匯出器容器。此容器必須在受監督的每個 GPU 節點上執行。執行之後,下一步是在個別的運算節點上設定 Prometheus,理想是從邊緣網路直接存取。
作業 2:安裝 Prometheus
Prometheus 的安裝是透過下載和解壓縮最新版本來完成。若要在有更新版本可用時更新此語法,請視需要變更版本編號。
-
擷取套裝程式。
wget https://github.com/prometheus/prometheus/releases/download/v2.37.9/prometheus-2.37.9.linux-amd64.tar.gz -O /opt/prometheus-2.37.9.linux-amd64.tar.gz
-
變更目錄。
cd /opt
-
擷取套件。
tar -zxvf prometheus-2.37.9.linux-amd64.tar.gz
-
解壓縮後,必須產生 Prometheus 組態 YAML,才能從 GPU 節點擷取 DCGM 資料。從標準標頭開始 - 在這種情況下,我們正在部署至
/etc/prometheus/prometheus.yaml
。sudo mkdir -p /etc/prometheus
-
使用您選擇的編輯器編輯 YAML 檔 。標頭區段包括標準全域組態。
# my global config global: scrape_interval: 5s # Set the scrape interval to every 5 seconds. Default is every 1 minute. evaluation_interval: 30s # Evaluate rules every 30 seconds. The default is every 1 minute. # scrape_timeout is set to the global default (10s). # Alertmanager configuration alerting: alertmanagers: - static_configs: - targets: # - alertmanager:9093 # Load rules once and periodically evaluate them according to the global 'evaluation_interval'. rule_files: # - "first_rules.yml" # - "second_rules.yml" # A scrape configuration containing exactly one endpoint to scrape:
-
現在若要擷取目標,必須插入每個 GPU 主機的項目。這可以透過程式設計方式產生,且必須使用主機 IP 或可解析的 DNS 主機名稱。
scrape_configs: - job_name: 'gpu' scrape_interval: 5s static_configs: - targets: ['host1_ip:9400','host2_ip:9400', … ,'host64_ip:9400']
注意:此文章的目標區段縮寫,此處使用的 "host1_ip" 應該是每個 GPU 主機的可解析 IP 或主機名稱。
-
放置此檔案之後,需要建立 SystemD 程序檔,如此才能啟動、管理和保存 Prometheus 服務。使用您的選擇編輯器 (root 或 sudo) 編輯
/lib/systemd/system/prometheus.service
。[Unit] Description=Prometheus daemon After=network.target [Service] User=root Group=root Type=simple ExecStart=/opt/prometheus-2.37.9.linux-amd64/prometheus --config.file=/etc/prometheus/prometheus.yml \ --storage.tsdb.path=/data \ --storage.tsdb.max-block-duration=2h \ --storage.tsdb.min-block-duration=2h \ --web.enable-lifec PrivateTmp=true [Install] WantedBy=multi-user.target
-
最後,必須建立資料目錄。此處應使用區塊儲存磁碟區,為 Prometheus 資料提供專屬的彈性儲存。在上述範例中,目標是在運算節點上掛載至
/data
的區塊磁碟區,就像storage.tsdb.path
指令一樣。 -
所有 Prometheus 片段現在都已就緒,且可啟動服務。
sudo systemctl start prometheus
-
請檢查狀態,確定使用下列命令執行。
systemctl status prometheus
-
檢查資料是否存在。
ls /data/
作業 3:設定 Grafana 儀表板
此設定的最後一個部分是 Grafana 儀表板。安裝 Grafana 需要啟用 Grafana 軟體儲存庫。如需詳細資訊,請參閱 Grafana 文件。
-
若為 Oracle Enterprise Linux,請安裝 GPG 金鑰、設定軟體儲存庫,然後為 Grafana 伺服器執行 yum 安裝。
-
啟動 Grafana 伺服器並確定 VCN 具有可存取 GUI 的開放連接埠。如果禁止存取邊緣,則可以使用 SSH 通道。在 TCP 連接埠 3000 上存取伺服器的方式。
sudo systemctl start grafana-server
-
登入 Grafana GUI,在該時間點,管理密碼需要在第一次登入步驟時變更。完成後,瀏覽至資料來源,以將 Prometheus 設定為資料來源。
-
Prometheus 來源項目使用此 localhost:9090 ,此時請選取 [ + 新增資料來源 ]、選取 Prometheus,然後填入 HTTP URL 區段。
-
完成之後,請向下捲動並按一下儲存並測試,然後驗證連線。最後,可以匯入 NVIDIA 的 DCGM 儀表板。瀏覽至儀表板功能表。
-
選擇新建與匯入。
-
輸入 NVIDIA DCGM 匯出器儀表板 ID "12239",按一下載入 (Load) ,從下拉式清單中選取 Prometheus 作為資料來源,然後按一下匯入 (Import) 。
匯入 NVIDIA DCGM 儀表板之後,將會顯示 Prometheus 目標的叢集主機 GPU 資訊。立即可用的儀表板包含指定日期 / 時間範圍的寶貴資訊。
範例:
-
溫度
-
Power
-
SM 時鐘
-
使用率
對於希望在 OCI GPU 超級叢集上執行 AI/ML 工作負載時更深入洞察基礎架構的客戶而言,這項監控資料非常寶貴。如果您有需要超快速叢集網路的 AI/ML GPU 工作負載,請以比其他雲端提供者更實惠的價格,考慮採用 OCI 作為業界頂尖的擴展性。
相關連結
確認
作者 - Zachary Smith (OCI IaaS - 產品與客戶互動技術人員主要成員)
其他學習資源
探索 docs.oracle.com/learn 的其他實驗室,或者存取更多 Oracle Learning YouTube 頻道上的免費學習內容。此外,請瀏覽 education.oracle.com/learning-explorer 以成為 Oracle Learning 檔案總管。
如需產品文件,請造訪 Oracle Help Center 。
Monitor GPU Superclusters on Oracle Cloud Infrastructure with NVIDIA Data Center GPU Manager, Grafana and Prometheus
F87825-01
October 2023
Copyright © 2023, Oracle and/or its affiliates.