1. 소개
Ubuntu에서 GPU를 사용할 때는 상태를 정확히 모니터링하는 것이 필수적입니다. 특히 딥러닝이나 그래픽 렌더링과 같은 워크로드에서는 GPU 사용량과 드라이버 버전을 파악하는 것이 반드시 필요합니다. 이 문서에서는 NVIDIA GPU 관리 도구인 nvidia-smi 사용 방법을 설명하고, Ubuntu에서 GPU 정보를 확인하는 다양한 방법을 소개합니다.
2. nvidia-smi 로 GPU 정보 확인
nvidia-smi는 NVIDIA GPU의 활용도, 메모리 사용량 및 기타 상세 정보를 모니터링할 수 있는 명령줄 도구입니다. 실시간으로 GPU 활동을 확인하거나 상세 활용도 지표를 가져올 때 특히 유용합니다.
기본 사용법
실시간으로 GPU 사용량과 메모리 활용도를 모니터링하려면 다음 명령을 사용할 수 있습니다:
nvidia-smi --query-gpu=timestamp,name,utilization.gpu,utilization.memory,memory.used,memory.free --format=csv -l 1
이 명령은 GPU 활용도, 메모리 사용량, 가용 메모리 등을 포함한 상세 정보를 반환합니다. -l 옵션을 사용하면 초 단위로 새로 고침 간격을 설정할 수 있습니다.
출력 형식 및 파일 저장
기본적으로 결과는 표 형식으로 표시되지만, CSV 형식으로 출력하여 처리하기 쉽게 할 수 있습니다. 정보를 파일에 저장하려면 -f 옵션으로 대상 파일을 지정하면 됩니다.
nvidia-smi --query-gpu=timestamp,name,utilization.gpu,utilization.memory,memory.used,memory.free --format=csv -l 1 -f /path/to/output.csv
이를 통해 GPU 활용 로그를 파일에 저장하고 나중에 분석할 수 있습니다.
3. nvidia-smi 로 프로세스 정보 가져오기
nvidia-smi는 현재 GPU를 사용 중인 프로세스 정보를 가져올 수도 있습니다. 이를 통해 각 프로세스가 얼마나 많은 GPU 자원을 소비하는지 파악할 수 있습니다.
프로세스 정보 확인
GPU를 사용 중인 프로세스의 PID와 메모리 사용량을 확인하려면 다음 명령을 사용합니다:
nvidia-smi --query-compute-apps=pid,process_name,used_memory --format=csv,noheader
이 명령은 활성 GPU 프로세스 목록을 반환하고 각 프로세스의 메모리 사용량을 표시합니다.
nvidia-smi pmon 서브커맨드
nvidia-smi 도구에는 상세한 GPU 프로세스 모니터링을 제공하는 pmon 서브커맨드도 포함되어 있습니다.
nvidia-smi pmon --delay 10 -s u -o DT
이 명령은 지정된 간격으로 GPU 프로세스 정보를 표시합니다. --delay 옵션으로 새로 고침 간격(초)을 정의할 수 있으며, 표시할 정보를 선택할 수 있습니다.
4. NVIDIA 드라이버 설치 및 검증
Ubuntu에서 NVIDIA GPU를 사용하려면 올바른 NVIDIA 드라이버가 설치되어 있어야 합니다. 아래는 설치 및 검증 절차입니다.
드라이버 설치
다음 명령을 사용하여 시스템에 맞는 NVIDIA 드라이버를 먼저 설치합니다:
sudo apt install nvidia-driver-510
설치가 완료되면 시스템을 재시작합니다.
설치 검증
재부팅 후, 드라이버가 정상적으로 설치되었는지 확인하려면 다음 명령을 실행합니다:
nvidia-smi
드라이버 버전과 CUDA 버전이 표시되면 설치가 성공적으로 완료된 것입니다.

5. TensorFlow 로 GPU 동작 확인
TensorFlow를 이용해 GPU 기능을 테스트함으로써 GPU 동작을 검증할 수도 있습니다.
Anaconda 설치
먼저 Anaconda를 설치하고 환경을 설정합니다:
bash ./Anaconda3-2022.05-Linux-x86_64.sh
conda update -n base conda
conda update anaconda
conda update -y --all
conda install tensorflow-gpu==2.4.1
TensorFlow 에서 GPU 인식 확인
다음으로 TensorFlow가 GPU를 인식하는지 확인합니다:
from tensorflow.python.client import device_lib
device_lib.list_local_devices()
GPU 디바이스가 목록에 나타나면 TensorFlow가 GPU를 정상적으로 감지한 것입니다.
6. GPU 모니터링 및 로깅
nvidia-smi는 실시간 GPU 모니터링과 로그 기록을 지원합니다. 이를 통해 시간 경과에 따른 GPU 사용량을 추적하고 성능을 최적화할 수 있습니다.
주기적 모니터링
주기적 모니터링을 설정하려면 -l 옵션을 사용하여 업데이트 간격을 지정하고, 선택적으로 데이터를 파일에 기록할 수 있습니다:
nvidia-smi --query-gpu=timestamp,name,utilization.gpu,utilization.memory,memory.used,memory.free --format=csv -l 1 -f /var/log/gpu.log
Python 바인딩을 통한 프로그래밍 제어
nvidia-smi는 Python 바인딩(nvidia-ml-py)을 제공하여 GPU 정보를 프로그래밍 방식으로 가져올 수 있게 합니다. 이를 통해 Python 스크립트에서 보다 맞춤형 모니터링 및 제어가 가능합니다.
7. 결론
nvidia-smi는 Ubuntu에서 NVIDIA GPU 사용량을 확인하고 관리하는 강력한 도구입니다. 이 문서에서는 기본 사용법, 프로세스 모니터링, 드라이버 설치 및 TensorFlow GPU 검증에 대해 설명했습니다. 이러한 기술을 활용하여 GPU 성능을 극대화하고 시스템을 최적화하십시오.