注意:

使用 NVIDIA 数据中心 GPU 管理器、Grafana 和 Prometheus 在 Oracle Cloud Infrastructure 上监视 GPU 超级集群

简介

今年早些时候,Oracle Cloud Infrastructure (OCI) NVIDIA GPU 超级集群上宣布了人工智能 (AI) 和机器学习 (ML)。对于许多规模运行基于 GPU 的负载类型的客户,监视可能是一个难题。开箱即用的 OCI 具有出色的监视解决方案,包括一些 GPU 实例指标,但更深入地集成了 OCI 超级集群的 GPU 指标是我们客户感兴趣的内容。

设置 GPU 监视是一个直接向前进程。如果您是已经使用 HPC Marketplace 堆栈的客户,那么大部分工具都已经包含在部署映像中。

目标

先决条件

确保在每个 GPU 实例上安装了这些先决条件。然后,监视解决方案需要安装和执行 NVIDIA Data Center GPU Manager (DCGM) 导出程序 Docker 容器,才能使用 Prometheus 捕获输出度量,最终在 Grafana 中显示数据。

任务 1:安装并执行 NVIDIA DCGM 导出程序 Docker 容器

使用 docker 命令安装和执行 NVIDIA DCGM 容器。

这两种方法都要求 GPU 节点具有 Internet 访问权限(NAT 网关最常见),以便下载和运行 DCGM 导出程序容器。此容器需要在所监视的每个 GPU 节点上运行。运行后,下一步是在单独的计算节点上设置 Prometheus,最好是在边缘网络中,可以通过互联网直接访问。

任务 2:安装 Prometheus

通过下载并解压缩最新发行版来安装 Prometheus。如果有较新的发行版可用,请根据需要更改发行版号来更新此语法。

  1. 获取软件包。

    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

  2. 更改目录。

    cd /opt

  3. 解压缩软件包。

    tar -zxvf prometheus-2.37.9.linux-amd64.tar.gz

  4. 解压缩后,需要生成 Prometheus 配置 YAML,以便从 GPU 节点中擦除 DCGM 数据。从标准标头开始 - 在这种情况下,我们将部署到 /etc/prometheus/prometheus.yaml

    sudo mkdir -p /etc/prometheus

  5. 使用所选编辑器编辑 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:
    
  6. 现在要对目标进行扫描,需要插入每个 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 或主机名。

  7. 此文件就位后,需要创建 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
    
  8. 最后,需要创建数据目录。理想情况下,应在此处使用块存储卷来为 Prometheus 数据提供专用弹性存储。在上面的示例中,目标是在计算节点上挂载到 /data 的块存储卷,如 storage.tsdb.path 指令中所示。

  9. 所有 Prometheus 片现在都到位,可以启动服务。

    sudo systemctl start prometheus

  10. 使用以下命令检查状态以确保其正在运行。

    systemctl status prometheus

  11. 验证数据是否存在。

    ls /data/

任务 3:设置 Grafana 仪表盘

此设置的最后一项是 Grafana 仪表盘。安装 Grafana 需要启用 Grafana 软件系统信息库。有关详细信息,请参阅 Grafana 文档

  1. 对于 Oracle Enterprise Linux,安装 GPG 密钥,设置软件系统信息库,然后为 Grafana 服务器运行 yum 安装。

  2. 启动 Grafana 服务器并确保 VCN 具有用于访问 GUI 的开放端口。或者,如果禁止边缘访问,则可以使用 SSH 隧道。可以在 TCP 端口 3000 上访问服务器的任何一种方式。

    sudo systemctl start grafana-server

  3. 登录到 Grafana GUI,此时需要在第一次登录步骤中更改管理员密码。完成此操作后,导航到数据源以将 Prometheus 设置为数据源。

    image1

  4. 在本例中,Prometheus 源条目使用 localhost:9090 ,方法是选择“ + 添加新数据源”,选择“Prometheus”,然后填写“HTTP URL”部分。

    image2

  5. 完成后,向下滚动并单击保存并测试,然后验证连接。最后,可以导入 NVIDIA 的 DCGM 仪表盘。导航到仪表盘菜单。

    image3

  6. 选择新建导入

    image4

  7. 输入 NVIDIA DCGM 导出器仪表盘 ID "12239",单击加载,从下拉列表中选择 Prometheus 作为数据源,然后单击导入

    image5

    image6

导入 NVIDIA DCGM 仪表盘后,将显示 Prometheus 目标的集群主机的 GPU 信息。开箱即用的仪表盘包含给定日期/时间范围内的有价值信息。

示例:

对于希望在 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 Explorer。

有关产品文档,请访问 Oracle 帮助中心