Note:
- Este tutorial requiere acceso a Oracle Cloud. Para registrarse en una cuenta gratuita, consulte Introducción a la cuenta gratuita de Oracle Cloud Infrastructure.
- Utiliza valores de ejemplo para credenciales, arrendamiento y compartimentos de Oracle Cloud Infrastructure. Al finalizar el laboratorio, sustituya estos valores por otros específicos del entorno en la nube.
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
- Supervisa los superclusters de GPU OCI con NVIDIA Data Center GPU Manager, Grafana y Prometheus.
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.
-
Ejecute el siguiente comando para un contenedor de Docker no persistente. Este método de ejecución no reiniciará el contenedor de docker en caso de que se pare el servicio de docker o se reinicie el servidor de GPU.
docker run -d --gpus all --rm -p 9400:9400 nvcr.io/nvidia/k8s/dcgm-exporter:3.2.3-3.1.6-ubuntu20.04
-
Si se desea persistencia, se debe utilizar este método de ejecución en su lugar.
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
Nota: Asegúrese de que el servicio docker esté configurado para cargar en el inicio para que este ejemplo se mantenga durante los reinicios.
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.
-
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
-
Cambie el directorio.
cd /opt
-
Extraiga el paquete.
tar -zxvf prometheus-2.37.9.linux-amd64.tar.gz
-
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
-
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:
-
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.
-
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
-
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 directivastorage.tsdb.path
. -
Todas las piezas de Prometeo están ahora en su lugar, y el servicio se puede iniciar.
sudo systemctl start prometheus
-
Compruebe el estado para asegurarse de que se está ejecutando con el siguiente comando.
systemctl status prometheus
-
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.
-
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.
-
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
-
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.
-
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.
-
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.
-
Seleccione Nuevo e Importar.
-
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.
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:
-
Temperatura
-
Potencia
-
Reloj de gestión de subred
-
Utilización
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.
Enlaces relacionados
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.
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.