본문 바로가기
카테고리 없음

[Linux] NVIDIA GPU 모니터링 명령어와 효율적인 활용법

by JustJunsu 2024. 11. 18.
반응형

GPU를 활용한 작업은 딥러닝, AI 모델 학습, 3D 렌더링, 게임 개발 등 다양한 분야에서 필수적입니다. 특히 GPU의 자원을 효율적으로 사용하는 것은 작업 성능과 직결됩니다. 이번 포스팅에서는 nvidia-smi 명령어를 사용해 GPU 상태를 실시간으로 모니터링하는 방법과 활용 사례를 소개합니다.

1. nvidia-smi란 무엇인가?

**nvidia-smi**는 NVIDIA GPU에서 제공하는 CLI 기반의 관리 도구로, 다음과 같은 정보를 제공합니다:

  • GPU 사용률
  • 메모리 사용량
  • 온도
  • 전력 소비량
  • 프로세스 목록

이를 통해 GPU의 성능 및 상태를 확인하고, 문제를 빠르게 진단할 수 있습니다.

2. 실시간 GPU 모니터링 명령어

nvidia-smi 명령어는 한 번 실행으로 GPU 정보를 출력합니다. 하지만, 실시간으로 정보를 업데이트하려면 watch 명령어와 함께 사용합니다.

명령어:

watch -n 1 nvidia-smi

옵션 설명:

  • watch: 특정 명령어를 주기적으로 실행.
  • -n 1: 1초 간격으로 실행.
  • nvidia-smi: GPU 정보를 출력.

실행 화면:

이 명령어를 실행하면, GPU의 상태가 매초 갱신되며 다음과 같은 정보를 확인할 수 있습니다.

 

 

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 530.30.02   Driver Version: 530.30.02   CUDA Version: 12.0       |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC|
| Fan  Temp  Perf  Pwr:Usage/Cap| Memory-Usage | GPU-Util  Compute M.        |
|                               |                     MIG M.                  |
|===============================+======================+======================|
|   0  NVIDIA A100          On  | 00000000:00:1E.0 Off |                    0 |
| 45%   35C    P8    25W / 250W |  10000MiB / 40960MiB |      85%      Default|
+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|   PID   Type   Name        GPU Memory                                        |
|   12345 C     python       10000MiB                                         |
+-----------------------------------------------------------------------------+

3. watch -n 1 nvidia-smi 활용 사례

(1) GPU 과부하 감지

모델 학습이나 대규모 데이터 처리를 진행할 때, GPU 사용률이 100%에 도달하는지를 실시간으로 확인할 수 있습니다. 이를 통해 작업이 병목현상 없이 진행되는지 점검 가능합니다.

(2) 메모리 사용량 확인

모델 크기와 메모리 소비량을 비교하여 최적화 필요성을 평가할 수 있습니다. 과도한 메모리 사용은 다른 작업의 병목을 초래할 수 있습니다.

(3) 온도 및 전력 소비 관리

GPU의 온도가 지나치게 높아지거나 전력 사용량이 비정상적으로 증가하면, 하드웨어 손상을 예방하기 위해 즉시 조치를 취할 수 있습니다.

4. 추가 옵션으로 모니터링 개선하기

특정 GPU만 모니터링

멀티 GPU 환경에서는 특정 GPU만 모니터링하는 것이 유용할 수 있습니다.

watch -n 1 nvidia-smi -i 0
  • -i: GPU 인덱스를 지정 (예: 0번 GPU).

GPU 사용률을 간략히 출력

시각적으로 더 간결한 정보를 원할 경우, 쿼리 옵션을 사용할 수 있습니다.

watch -n 1 nvidia-smi --query-gpu=utilization.gpu,temperature.gpu --format=csv
  • --query-gpu: 원하는 정보만 출력.
  • --format=csv: CSV 형식으로 출력.

5. GPU 모니터링 자동화 및 알림

알림 스크립트 예제

온도가 80°C 이상이면 알림을 보내는 Python 스크립트:

import os
import subprocess

def check_gpu_temperature():
    output = subprocess.getoutput("nvidia-smi --query-gpu=temperature.gpu --format=csv,noheader")
    temp = int(output.split("\n")[0])
    if temp > 80:
        print("Warning: GPU temperature is above 80°C!")

check_gpu_temperature()

자동화로 작업 부하 관리

이 스크립트를 크론탭(crontab)으로 설정하여 주기적으로 실행하면 GPU 상태를 자동으로 모니터링할 수 있습니다.

 

 

반응형