Observação:
- Este tutorial requer acesso ao Oracle Cloud. Para se inscrever e obter uma conta gratuita, consulte Conceitos Básicos do Oracle Cloud Infrastructure Free Tier.
- Ele usa valores de exemplo para credenciais, tenancy e compartimentos do Oracle Cloud Infrastructure. Ao concluir seu laboratório, substitua esses valores por valores específicos do seu ambiente de nuvem.
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
- Monitore Superclusters OCI da GPU com o NVIDIA Data Center GPU Manager, Grafana e Prometheus.
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.
-
Execute o comando a seguir para um contêiner não persistente do Docker. Esse método de execução não reiniciará o contêiner do docker no caso de interrupção do serviço docker ou de reinicialização do servidor GPU.
docker run -d --gpus all --rm -p 9400:9400 nvcr.io/nvidia/k8s/dcgm-exporter:3.2.3-3.1.6-ubuntu20.04
-
Se a persistência for desejada, esse método de execução deverá ser usado.
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
Observação: Certifique-se de que o serviço docker esteja definido para carregar na inicialização para que esse exemplo persista por meio de reinicializações.
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.
-
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
-
Altere o diretório.
cd /opt
-
Extraia o pacote.
tar -zxvf prometheus-2.37.9.linux-amd64.tar.gz
-
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
-
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:
-
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.
-
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
-
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 diretivastorage.tsdb.path
. -
Todas as peças Prometheus estão agora em vigor e o serviço pode ser iniciado.
sudo systemctl start prometheus
-
Verifique o status para garantir que ele esteja em execução usando o comando a seguir.
systemctl status prometheus
-
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.
-
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.
-
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
-
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.
-
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.
-
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.
-
Escolha Novo e Importar.
-
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.
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:
-
Temperatura
-
Power
-
Relógio SM
-
Utilização
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.
Links Relacionados
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.
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.