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 상태를 자동으로 모니터링할 수 있습니다.