주:
- 이 사용지침서에서는 Oracle Cloud에 접근해야 합니다. 무료 계정에 등록하려면 Oracle Cloud Infrastructure Free Tier 시작하기를 참조하십시오.
- Oracle Cloud Infrastructure 인증서, 테넌시 및 구획에 대한 예제 값을 사용합니다. 실습을 완료하면 이러한 값을 클라우드 환경에 고유한 값으로 대체합니다.
NVIDIA Data Center GPU Manager, Grafana 및 Prometheus를 통해 Oracle Cloud Infrastructure에서 GPU Superclusters 모니터링
소개
OCI(Oracle Cloud Infrastructure) NVIDIA GPU Superclusters의 AI(인공 지능) 및 ML(머신 러닝)이 올해 초 발표되었습니다. 이러한 유형의 GPU 기반 워크로드를 대규모로 실행하는 고객의 경우 모니터링이 어려울 수 있습니다. 즉시 사용 가능한 OCI에는 일부 GPU 인스턴스 메트릭을 포함한 우수한 모니터링 솔루션이 있지만 OCI Superclusters의 GPU 메트릭에 대한 심층적인 통합은 고객이 관심을 갖는 요소입니다.
GPU 모니터링 설정은 곧바로 진행되는 프로세스입니다. 이미 HPC 마켓플레이스 스택을 사용하고 있는 고객인 경우 대부분의 툴이 해당 배포 이미지에 이미 포함되어 있습니다.
목표
- NVIDIA Data Center GPU Manager, Grafana 및 Prometheus를 통해 GPU OCI Superclusters를 모니터링할 수 있습니다.
필요 조건
각 GPU 인스턴스에 이러한 필수 조건이 설치되어 있는지 확인하십시오. 그런 다음 모니터링 솔루션을 사용하려면 NVIDIA DCGM(Data Center GPU Manager) 익스포터 Docker 컨테이너를 설치 및 실행하여 Prometheus를 사용하여 출력 메트릭을 캡처하고 마지막으로 Grafana에 데이터를 표시해야 합니다.
작업 1: NVIDIA DCGM 내보내기 Docker 컨테이너 설치 및 실행
NVIDIA DCGM 컨테이너 설치 및 실행은 docker 명령을 사용하여 수행됩니다.
-
비영구 Docker 컨테이너에 대해 다음 명령을 실행합니다. 이 실행 방법은 도커 서비스가 중지되거나 GPU 서버가 재부트되는 경우 도커 컨테이너를 다시 시작하지 않습니다.
docker run -d --gpus all --rm -p 9400:9400 nvcr.io/nvidia/k8s/dcgm-exporter:3.2.3-3.1.6-ubuntu20.04
-
지속성이 필요한 경우 이 실행 방법을 대신 사용해야 합니다.
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
주: 이 예가 재부트 후에도 지속되도록 도커 서비스가 부트 시 로드되도록 설정되어 있는지 확인하십시오.
이러한 방법 모두 DCGM 내보내기 컨테이너를 다운로드하고 실행하려면 GPU 노드에 인터넷 액세스(NAT 게이트웨이가 가장 일반적임)가 있어야 합니다. 이 컨테이너는 모니터링되는 각 GPU 노드에서 실행 중이어야 합니다. 실행이 끝나면 다음 단계는 별도의 컴퓨팅 노드에 Prometheus를 설정하는 것입니다. 이상적으로 에지 네트워크에 있으며 인터넷을 통해 직접 액세스할 수 있습니다.
작업 2: Prometheus 설치
Prometheus의 설치는 최신 릴리스를 다운로드하고 포장을 풀어 수행됩니다. 해당하는 릴리스 번호를 변경하여 최신 릴리스를 사용할 수 있는 경우 이 구문을 업데이트합니다.
-
패키지를 인출합니다.
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
-
디렉토리를 변경합니다.
cd /opt
-
패키지를 추출합니다.
tar -zxvf prometheus-2.37.9.linux-amd64.tar.gz
-
압축이 풀리면 GPU 노드에서 DCGM 데이터를 스크랩하기 위해 Prometheus 구성 YAML을 생성해야 합니다. 표준 헤더로 시작합니다. 이 경우
/etc/prometheus/prometheus.yaml
에 배포합니다.sudo mkdir -p /etc/prometheus
-
선택한 편집기로 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:
-
이제 대상이 스크랩하려면 각 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 또는 호스트 이름이어야 합니다.
-
이 파일이 배치되면 Prometheus 서비스를 시작, 관리 및 유지할 수 있도록 SystemD 스크립트를 만들어야 합니다. 선택한 편집기(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
-
마지막으로 데이터 디렉토리를 생성해야 합니다. 여기서는 Prometheus 데이터에 대한 탄력적인 전용 스토리지를 제공하는 데 블록 스토리지 볼륨을 사용하는 것이 이상적입니다. 위 예에서 대상은
storage.tsdb.path
지시어에 표시된 것처럼 컴퓨트 노드의/data
에 마운트된 블록 볼륨입니다. -
모든 Prometheus 조각은 이제 제자리에 있으며 서비스를 시작할 수 있습니다.
sudo systemctl start prometheus
-
다음 명령을 사용하여 상태가 실행 중인지 확인합니다.
systemctl status prometheus
-
데이터가 있는지 확인하십시오.
ls /data/
작업 3: Grafana 대시보드 설정
이 설정의 마지막 부분은 Grafana 대시보드입니다. Grafana를 설치하려면 Grafana 소프트웨어 저장소를 사용으로 설정해야 합니다. 자세한 내용은 Grafana 문서를 참고하세요.
-
Oracle Enterprise Linux의 경우 GPG 키를 설치하고 소프트웨어 저장소를 설정한 다음 Grafana 서버용 yum 설치를 실행합니다.
-
Grafana 서버를 시작하고 VCN에 GUI에 액세스할 수 있는 열린 포트가 있는지 확인합니다. 또는 에지 액세스가 금지된 경우 SSH 터널을 사용할 수 있습니다. 어느 쪽이든 TCP 포트 3000에서 서버에 액세스할 수 있습니다.
sudo systemctl start grafana-server
-
첫번째 로그인 단계의 일부로 관리자 암호를 변경해야 하는 Grafana GUI에 로그인합니다. 이 작업이 완료되면 데이터 소스로 이동하여 Prometheus를 데이터 소스로 설정합니다.
-
이 경우 Prometheus 소스 항목은 "+ Add new data source"를 선택하고 Prometheus를 선택한 다음 HTTP URL 섹션을 입력하여 localhost:9090을 사용합니다.
-
완료되면 아래로 스크롤하여 저장 및 테스트를 누르고 접속을 검증합니다. 마지막으로 NVIDIA의 DCGM 대시보드를 가져올 수 있습니다. 대시보드 메뉴로 이동합니다.
-
신규 및 임포트를 선택합니다.
-
NVIDIA DCGM 내보내기 대시보드 ID "12239"를 입력하고 Load를 누르고 드롭다운 목록에서 데이터 소스로 Prometheus를 선택한 다음 Import를 누릅니다.
가져온 NVIDIA DCGM 대시보드는 Prometheus가 대상으로 하는 클러스터 호스트에 대한 GPU 정보를 표시합니다. 미리 정의된 대시보드에는 지정된 날짜/시간 범위에 대한 중요한 정보가 포함됩니다.
예를 들면 다음과 같습니다.
-
온도
-
Power
-
SM 시계
-
가동률
이 모니터링 데이터는 OCI GPU Superclusters에서 AI/ML 워크로드를 실행하는 동시에 인프라에 대한 심층적인 통찰력을 얻고자 하는 고객에게 매우 유용합니다. 초고속 클러스터 네트워킹이 필요한 AI/ML GPU 기반 워크로드가 있는 경우 다른 클라우드 제공업체보다 훨씬 더 저렴한 가격으로 업계 최고의 확장성을 제공하는 OCI를 고려해 보십시오.
관련 링크
수락
작성자 - Zachary Smith(주요 기술 직원, OCI IaaS - 제품 및 고객 참여)
추가 학습 자원
docs.oracle.com/learn에서 다른 실습을 살펴보거나 Oracle Learning YouTube 채널에서 더 많은 무료 학습 콘텐츠에 액세스하십시오. 또한 Oracle Learning Explorer가 되려면 education.oracle.com/learning-explorer를 방문하십시오.
제품 설명서는 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.