Ubuntu에서 nvidia-smi를 사용하여 NVIDIA GPU를 모니터링하고 관리하는 방법

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 성능을 극대화하고 시스템을 최적화하십시오.