Observação:

Monitore Superclusters de GPU no Oracle Cloud Infrastructure com o NVIDIA Data Center GPU Manager, Grafana e Prometheus

Introdução

A Inteligência Artificial (IA) e o Aprendizado de Máquina (ML) nos Superclusters GPU NVIDIA da Oracle Cloud Infrastructure (OCI) foram anunciados no início deste ano. Para muitos clientes que executam esses tipos de carga de trabalho baseada em GPU em escala, o monitoramento pode ser um desafio. Pronto para uso, a OCI tem excelentes soluções de monitoramento, incluindo algumas métricas de instância de GPU, mas uma integração mais profunda nas métricas de GPU para Superclusters da OCI é algo em que nossos clientes estão interessados.

A configuração do monitoramento de GPU é um processo direto. Se você for um cliente que já está usando a pilha do HPC Marketplace, a maioria das ferramentas já está incluída nessa imagem de implantação.

Objetivos

Pré-requisitos

Verifique se esses pré-requisitos estão instalados em cada instância de GPU. Em seguida, a solução de monitoramento requer a instalação e a execução do contêiner Docker do exportador NVIDIA Data Center GPU Manager (DCGM), para capturar as métricas de saída usando o Prometheus e, por fim, exibir os dados no Grafana.

Tarefa 1: Instalar e Executar o contêiner Docker do exportador NVIDIA DCGM

A instalação e execução do contêiner NVIDIA DCGM é feita com um comando docker.

Esses dois métodos exigem que os nós GPU tenham acesso à Internet (o Gateway NAT é mais comum) para fazer download e executar o contêiner de exportadores DCGM. Esse contêiner precisa estar em execução em cada nó GPU que está sendo monitorado. Uma vez executada, a próxima etapa é configurar o Prometheus em um nó de computação separado, o ideal é que ele esteja em uma rede de borda e possa ser acessado diretamente pela internet.

Tarefa 2: Instalar Prometheus

A instalação do Prometheus é feita por meio do download e descompactação da versão mais recente. Atualize esta sintaxe quando versões mais recentes estiverem disponíveis alterando os números da versão conforme aplicável.

  1. Extraia o pacote.

    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. Altere o diretório.

    cd /opt

  3. Extraia o pacote.

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

  4. Uma vez desembalado, um YAML de configuração Prometheus precisa ser gerado para raspar os dados do DCGM de nós GPU. Comece com os cabeçalhos padrão - nesse caso, estamos implantando em /etc/prometheus/prometheus.yaml.

    sudo mkdir -p /etc/prometheus

  5. Edite o arquivo YAML com o editor escolhido. A seção do cabeçalho inclui a configuração global padrão.

    # 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. Agora, para que os destinos sejam raspados, as entradas de cada host de GPU precisam ser inseridas. Isso pode ser gerado de forma programática e deve usar IPs de host ou nomes de host DNS resolvíveis.

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

    Observação: A seção de destinos é abreviada para este artigo, e o "host1_ip" usado aqui deve ser um IP resolvível ou um nome de host para cada host de GPU.

  7. Quando esse arquivo estiver no local, um script SystemD precisará ser criado para que o serviço Prometheus possa ser iniciado, gerenciado e persistido. Edite /lib/systemd/system/prometheus.service com seu editor escolhido (como root ou 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. Finalmente, um diretório de dados precisa ser criado. O ideal é que um volume de armazenamento em blocos seja usado aqui para fornecer armazenamento dedicado e resiliente para os dados da Prometheus. No exemplo acima, o destino é um volume em blocos montado para /data no nó de computação, conforme visto na diretiva storage.tsdb.path.

  9. Todas as peças Prometheus estão agora em vigor e o serviço pode ser iniciado.

    sudo systemctl start prometheus

  10. Verifique o status para garantir que ele esteja em execução usando o comando a seguir.

    systemctl status prometheus

  11. Verifique se os dados estão presentes.

    ls /data/

Tarefa 3: Configurar o Painel de Controle do Grafana

A última parte desta configuração é o Painel de Controle do Grafana. A instalação do Grafana requer a ativação do repositório de software Grafana. Para obter mais detalhes, consulte Documentos do Grafana.

  1. Para o Oracle Enterprise Linux, instale a chave GPG, configure o repositório de software e execute uma instalação yum para o servidor Grafana.

  2. Inicie o servidor Grafana e certifique-se de que a VCN tenha uma porta aberta para acessar a GUI. Como alternativa, um túnel SSH poderá ser usado se o acesso de borda for proibido. De qualquer forma, o servidor pode ser acessado na porta TCP 3000.

    sudo systemctl start grafana-server

  3. Efetue log-in na GUI do Grafana no qual a senha de administrador precisará ser alterada como parte da primeira etapa de log-in. Quando terminar, navegue até as origens de dados para configurar o Prometheus como uma origem de dados.

    image1

  4. A entrada de origem Prometheus usa localhost:9090 nesse caso selecionando "+ Adicionar nova origem de dados", selecione Prometheus e, em seguida, preencha a seção URL HTTP.

    image2

  5. Depois de concluir, role para baixo e clique em Salvar e testar e valide a conexão. Por fim, o painel DCGM da NVIDIA pode ser importado. Navegue até o menu Painéis de Controle.

    image3

  6. Escolha Novo e Importar.

    image4

  7. Informe o id do painel do exportador NVIDIA DCGM "12239", clique em Carregar, selecione Prometheus como a origem de dados na lista drop-down e clique em Importar.

    image5

    image6

Depois de importado, o painel NVIDIA DCGM exibirá informações de GPU para os hosts do cluster direcionados pelo Prometheus. Pronto para uso, o painel inclui informações valiosas para um determinado intervalo de data/hora.

Exemplos de:

Esses dados de monitoramento podem ser inestimáveis para clientes que desejam ter insights mais profundos sobre sua infraestrutura enquanto executam cargas de trabalho de IA/ML em Superclusters de GPU da OCI. Se você tiver cargas de trabalho baseadas em GPU AI/ML que exigem redes de cluster ultrarrápidas, considere o OCI para sua escalabilidade líder do setor a um preço muito melhor do que outros provedores de nuvem.

Aquisições

Autor - Zachary Smith (Membro Principal da Equipe Técnica, OCI IaaS - Envolvimento de Produtos e Clientes)

Mais Recursos de Aprendizagem

Explore outros laboratórios no site docs.oracle.com/learn ou acesse mais conteúdo de aprendizado gratuito no canal YouTube do Oracle Learning. Além disso, visite education.oracle.com/learning-explorer para se tornar um Oracle Learning Explorer.

Para obter a documentação do produto, visite o Oracle Help Center.