728x90
AI 학습 성능이 기대만큼 안 나올 때, 가장 먼저 확인하는 건 nvidia-smi입니다.
하지만 이것만으로는 부족합니다.
- 왜 GPU는 사용률이 낮을까?
- 커널이 오래 걸리는 이유는 무엇일까?
- 병렬 연산이 비효율적인 이유는?
이런 문제를 해결하려면 딥하게 들어가야 합니다.
이번 글에서는 NVIDIA 기반 GPU 분석 및 디버깅을 위한 주요 도구들을 정리해보겠습니다.
✅ nvidia-smi: GPU 상태 확인의 시작점
| 항목 | 설명 |
| 이름 | nvidia-smi |
| 목적 | GPU 장치 상태 및 메트릭 실시간 확인 |
| 주요 기능 | 사용률, 메모리, 전력, fan, process 정보 등 |
| 실무 활용 | GPU health check, OOM 발생 확인, runaway job 탐지 |
| 명령 예시 | watch -n 1 nvidia-smi |
대부분의 실시간 GPU 모니터링은 이 명령으로 시작됨
✅ nvprof (구버전) → nsys (신버전)
| 도구 | 설명 |
| nvprof | CUDA 커널별 실행 시간, 메모리 전송량 등 분석 (구버전, deprecated) |
| nsys | NVIDIA 공식 최신 퍼포먼스 분석 도구 (Nsight Systems) |
| 목적 | 커널별 실행 시간, 오버헤드, CPU-GPU 타이밍 분석 |
| 출력 | GUI + CLI 분석 결과, 타임라인 시각화 |
| 명령 예시 | nsys profile -o result ./main |
nsys는 성능 병목 파악에 매우 유용. 특히 커널 단위 분석, 멀티 스레드 구조 확인에 탁월
✅ cuda-gdb: GPU 디버깅 툴
| 항목 | 설명 |
| 이름 | cuda-gdb |
| 역할 | GPU 코드의 브레이크포인트, 변수 추적, 스택 분석 등 |
| 특징 | GDB와 유사한 CLI 환경, CUDA 스레드 단위 디버깅 |
| 실무 적용 | 커널에서 예상치 못한 결과, 메모리 오류 추적 시 사용 |
| 제한 | 초기에는 steep한 러닝커브 → 최근 버전에서 개선됨 |
✅ 관련 도구들
| 도구 | 설명 |
| nvtop | htop 스타일의 GPU 상태 시각화 도구 |
| ncu (NVIDIA Nsight Compute) | GPU 커널 단위 상세 프로파일링 도구 |
| DCGM (Data Center GPU Manager) | NVIDIA GPU 운영 상태 모니터링 프레임워크 (exporter와 함께 사용) |
| DLProf | Deep Learning 모델 최적화 분석 (PyTorch, TensorFlow 전용) |
✅ 실무 활용 예시
| 시나리오 | 도구 | 설명 |
| GPU 사용률 낮음 | nvidia-smi → nsys | 커널 실행 간격, IO 오버헤드 확인 |
| 특정 커널 느림 | nsys / ncu | 해당 커널만 분석, 루프 병목 찾기 |
| 모델이 죽음 | cuda-gdb | GPU 스레드 기준 디버깅 |
| 서빙 latency 튐 | nsys + Prometheus trace | 트레이스 기반 병목 위치 시각화 |
✅ 마무리
nvidia-smi는 기본기,
nsys는 성능 분석의 본질,
cuda-gdb는 디버깅의 종결자입니다.
이 도구들을 잘 다루면,
GPU 클러스터를 단순 “학습 인프라”가 아닌 “튜닝 가능한 시스템”으로 끌어올릴 수 있습니다.
728x90