When will you grow up?

[Ubuntu] GPU 사용량 확인하는 다양한 방법 본문

05. Tip/Etc

[Ubuntu] GPU 사용량 확인하는 다양한 방법

미카이 2024. 9. 9. 23:02

딥러닝 등 다양하게 Nvidia GPU를 사용하다보면, GPU를 모니터링을 해야할 경우가 많은데, 여기서 다양한 방법을 소개합니다.

 

 

1. Python을 사용한 pynvml 라이브러리

pynvml은 NVIDIA Management Library (NVML) 인터페이스를 Python에서 사용할 수 있도록 하는 라이브러리입니다. 이를 통해 GPU 사용량을 코드로 확인할 수 있습니다.

# 설치
pip install nvidia-ml-py3

1.1 사용 예시

import pynvml

# NVML 초기화
pynvml.nvmlInit()

# GPU 장치 개수 확인
device_count = pynvml.nvmlDeviceGetCount()

for i in range(device_count):
    handle = pynvml.nvmlDeviceGetHandleByIndex(i)
    name = pynvml.nvmlDeviceGetName(handle)
    memory_info = pynvml.nvmlDeviceGetMemoryInfo(handle)
    utilization = pynvml.nvmlDeviceGetUtilizationRates(handle)
    
    print(f"GPU {i}: {name.decode('utf-8')}")
    print(f"Memory Total: {memory_info.total / 1024**2:.2f} MB")
    print(f"Memory Used: {memory_info.used / 1024**2:.2f} MB")
    print(f"Memory Free: {memory_info.free / 1024**2:.2f} MB")
    print(f"GPU Utilization: {utilization.gpu}%")
    print(f"Memory Utilization: {utilization.memory}%")
    print()

# NVML 종료
pynvml.nvmlShutdown()

pynvml 실행결과

 

2. gpustat CLI 툴

gpustat은 nvidia-smi 명령을 보다 보기 좋게 표시하는 도구입니다.

# 설치
pip install gpustat
 

 

2.2 사용 예시

gpustat -cp
 
gpu stat 결과

위 결과 ref : https://github.com/wookayin/gpustat

 

 

3. DCGM (Data Center GPU Manager)

DCGM은 NVIDIA에서 제공하는 GPU 모니터링 툴로, 특히 데이터 센터 환경에서 GPU를 관리하는 데 유용합니다.

설치 :

# 설치
sudo apt-get update \
    && sudo apt-get install -y datacenter-gpu-manager

 

 

4. TensorFlow 및 PyTorch를 통한 GPU 사용량 모니터링

TensorFlow 예시:

import tensorflow as tf

gpus = tf.config.experimental.list_physical_devices('GPU')
for gpu in gpus:
    print(f"GPU: {gpu}")
    details = tf.config.experimental.get_memory_info(gpu)
    print(f"Memory Free: {details['current']} bytes")
    print(f"Memory Allocated: {details['peak']} bytes")

PyTorch 예시:

import torch

if torch.cuda.is_available():
    print(f"Current GPU Memory Usage: {torch.cuda.memory_allocated()} bytes")
    print(f"Max GPU Memory Usage: {torch.cuda.max_memory_allocated()} bytes")
    print(f"Memory Reserved: {torch.cuda.memory_reserved()} bytes")

 

5. nvtop (NVIDIA GPU Top)

nvtop은 GPU 사용량을 실시간으로 모니터링할 수 있는 유틸리티입니다. CPU의 htop과 비슷하게 동작합니다.

설치:

# 설치
sudo apt install nvtop

사용:

nvtop
 
nvtop 실행예시

 

 

결론:

이 중에서 pynvml은 Python 코드로 GPU 상태를 직접 확인하고 싶을 때 유용하며, CLI 환경에서는 gpustat이나 nvtop을 추천드립니다.

Comments