Note:

Supervise los superclusters de GPU en Oracle Cloud Infrastructure con NVIDIA Data Center GPU Manager, Grafana y Prometheus

Introducción

La inteligencia artificial (IA) y el aprendizaje automático (ML) en Oracle Cloud Infrastructure (OCI) NVIDIA GPU Superclusters se anunciaron a principios de este año. Para muchos clientes que ejecutan estos tipos de cargas de trabajo basadas en GPU a escala, la supervisión puede ser un desafío. OCI tiene excelentes soluciones de supervisión listas para usar, incluidas algunas métricas de instancias de GPU, pero una integración más profunda en las métricas de GPU para OCI Superclusters es algo en lo que nuestros clientes están interesados.

Configurar la supervisión de GPU es un proceso sencillo. Si ya es cliente y utiliza la pila de HPC Marketplace, la mayor parte de las herramientas ya se incluyen en esa imagen de despliegue.

Objetivos

Requisitos

Asegúrese de que tiene instalados estos requisitos previos en cada instancia de GPU. La solución de monitoreo luego requiere la instalación y ejecución del contenedor Docker del exportador NVIDIA Data Center GPU Manager (DCGM), para capturar las métricas de salida usando Prometheus y finalmente mostrar los datos en Grafana.

Tarea 1: Instalación y ejecución del contenedor Docker del exportador de NVIDIA DCGM

La instalación y ejecución del contenedor NVIDIA DCGM se realiza con un comando docker.

Ambos métodos requieren que los nodos de GPU tengan acceso a Internet (el gateway NAT es más común) para descargar y ejecutar el contenedor del exportador DCGM. Este contenedor se debe ejecutar en cada nodo de GPU que se esté supervisando. Una vez ejecutado, el siguiente paso es configurar Prometheus en un nodo de cálculo independiente, idealmente uno que esté en una red perimetral y al que se pueda acceder directamente a través de Internet.

Tarea 2: Instalación de Prometheus

La instalación de Prometheus se realiza descargando y desembalando la última versión. Actualice esta sintaxis cuando haya versiones más recientes disponibles cambiando los números de versión según corresponda.

  1. Recupere el paquete.

    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. Cambie el directorio.

    cd /opt

  3. Extraiga el paquete.

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

  4. Una vez desempaquetado, se debe generar un YAML de configuración de Prometheus para extraer los datos de DCGM de los nodos de GPU. Comience con las cabeceras estándar; en este caso, estamos desplegando en /etc/prometheus/prometheus.yaml.

    sudo mkdir -p /etc/prometheus

  5. Edite el archivo YAML con el editor que desee. La sección de cabecera incluye la configuración global estándar.

    # 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. Ahora, para que los destinos se eliminen, se deben insertar entradas para cada host de GPU. Esto se puede generar mediante programación y debe utilizar IP de host o nombres de host DNS que se puedan resolver.

    scrape_configs:
      - job_name: 'gpu'
        scrape_interval: 5s
        static_configs:
          - targets: ['host1_ip:9400','host2_ip:9400', … ,'host64_ip:9400']
    

    Nota: La sección Destinos se abrevia para este artículo y "host1_ip" que se utiliza aquí debe ser una IP o un nombre de host que se pueda resolver para cada host de GPU.

  7. Una vez que este archivo está en su lugar, se debe crear un script SystemD para que el servicio Prometheus se pueda iniciar, gestionar y mantener. Edite /lib/systemd/system/prometheus.service con el editor que desee (como root o sudo).

    [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. Por último, se debe crear un directorio de datos. Idealmente, un volumen de almacenamiento de bloques se debe utilizar aquí para proporcionar almacenamiento dedicado y resistente para los datos de Prometheus. En el ejemplo anterior, el destino es un volumen en bloque montado en /data en el nodo de cálculo, como se ve en la directiva storage.tsdb.path.

  9. Todas las piezas de Prometeo están ahora en su lugar, y el servicio se puede iniciar.

    sudo systemctl start prometheus

  10. Compruebe el estado para asegurarse de que se está ejecutando con el siguiente comando.

    systemctl status prometheus

  11. Verifique que los datos están presentes.

    ls /data/

Tarea 3: Configuración del panel de control de Grafana

La última parte de esta configuración es el panel de control de Grafana. Para instalar Grafana es necesario activar el repositorio de software de Grafana. Para obtener más información, consulte Documentos de Grafana.

  1. Para Oracle Enterprise Linux, instale la clave GPG, configure el repositorio de software y, a continuación, ejecute una instalación de yum para el servidor de Grafana.

  2. Inicie el servidor de Grafana y asegúrese de que la VCN tenga un puerto abierto para acceder a la GUI. Como alternativa, se puede utilizar un túnel SSH si el acceso de borde está prohibido. De cualquier manera se puede acceder al servidor en el puerto TCP 3000.

    sudo systemctl start grafana-server

  3. Inicie sesión en la GUI de Grafana, momento en el que la contraseña de administrador deberá cambiarse como parte del primer paso de inicio de sesión. Una vez hecho esto, navegue a los orígenes de datos para configurar Prometheus como origen de datos.

    image1

  4. La entrada de origen de Prometheus utiliza localhost:9090 en este caso seleccionando "+ Agregar nuevo origen de datos", seleccione Prometheus y, a continuación, rellene la sección URL de HTTP.

    image2

  5. Una vez que haya terminado, desplácese hacia abajo y haga clic en Guardar y probar y valide la conexión. Por último, se puede importar el panel de control DCGM de NVIDIA. Vaya al menú Paneles de control.

    image3

  6. Seleccione Nuevo e Importar.

    image4

  7. Introduzca el ID de panel de control del exportador de NVIDIA DCGM "12239", haga clic en Cargar, seleccione Prometheus como origen de datos en la lista desplegable y haga clic en Importar.

    image5

    image6

Una vez importado, el panel de control de NVIDIA DCGM mostrará información de GPU para los hosts de cluster a los que se dirige Prometheus. El panel de control incluye información valiosa para un rango de fecha/hora determinado.

Ejemplos:

Estos datos de supervisión pueden ser de gran valor para los clientes que desean obtener estadísticas más detalladas sobre su infraestructura mientras ejecutan cargas de trabajo de IA/AA en superclusters de GPU de OCI. Si tienes cargas de trabajo basadas en GPU de IA/ML que requieren redes de clústeres ultrarrápidas, considera OCI por su escalabilidad líder del sector a un precio mucho mejor que otros proveedores de nube.

Confirmaciones

Autor: Zachary Smith (miembro principal del personal técnico, OCI IaaS: compromiso con el producto y el cliente)

Más recursos de aprendizaje

Explore otros laboratorios en docs.oracle.com/learn o acceda a más contenido de aprendizaje gratuito en el canal YouTube de Oracle Learning. Además, visite education.oracle.com/learning-explorer para convertirse en Oracle Learning Explorer.

Para obtener documentación sobre el producto, visite Oracle Help Center.