GPU setting 및 사용, nvidia-smi

김동한·2024년 5월 30일
post-thumbnail

해당 글은 tensorflow에서 GPU선택하는 방법 및 GPU가 현재 제대로 작동하는지 확인하는 방법에 관한 글이다. CUDA, GPU관련 세팅이 마무리 된 상태를 기준으로 하는 글이다.

Tensorflow에서 GPU 번호 지정

먼저 tensorflow상에서 GPU가 잡히는지 확인해보았다.

from tensorflow.python.client import device_lib
device_lib.list_local_devices()

위의 코드를 통해서, 현재 관측되는 device를 확인할 수 있다.

device_lib.list_local_devices()[0] → CPU
device_lib.list_local_devices()[1] → GPU:0 bus id : 0000:41:00.0 
device_lib.list_local_devices()[2] → GPU:1 bus id : 0000:61:00.0

위처럼 한개씩 접근할 수 도 있다. 그 후, 사용할 GPU 번호를 지정해준다.

import os

os.environ["CUDA_VISIBLE_DEVICES"] = "1"

해당 코드를 통해서 환경변수 CUDA_VISIBLE_DEVICES를 번호를 지정해줄 수 있다. 이는 환경변수 값이다. 이제 코드상에서 GPU를 잘 사용중인지 아래의 방법으로 확인한다. 이렇게 환경변수의 값을 지정해두지않으면, 다른 GPU로 복사가 일어나서 실질적으로 GPU 1번을 사용하려해도 0번에 복사 돼 0번에서 연산이 이뤄지는 것을 확인 할 수 있었다. 참고로 환경변수로 visible device를 사용하려는 gpu한개만 고르기 때문에, GPU_NUM=0으로 설정하고 실행해야한다.

작업관리자 창 확인하기

GPU 0

GPU 1

먼저 작업관리자→성능으로 들어가 컴퓨터 내에 있는 GPU현 상태를 확인한다. 위의 사진을 보면 GPU가 2개 각각 NVIDIA RTX A6000으로 잡힌 것을 확인할 수 있다. 위의 작업관리자 창에서 볼 정보는 바로 전용 GPU메모리이다. 현재 GPU 0번은 메모리가 아예 할당 되지않았고, GPU1에는 46.2 GB가 할당되었으며 사용률을 확인할 수 있다.

nvidia-smi

nvidia-smi를 통해서도 현재 사용중인 GPU에 대해 확인 할 수 있다. 위의 번호에 대해서 차례대로 주는 정보는 아래와 같다.

  1. 현재 설치된 GPU 번호, fan의 성능
  2. nvidia gpu 드라이버 버전
  3. 현재 사용중인 nvidia gpu 드라이버 버전과 호환이 잘되는 cuda version
  4. gpu의 모델명과 gpu현재 온도, performance P0~p12까지 (P0에 가까울수록 성능이 좋음)
  5. BUS id : 사용하고있는 GPU번호를 check할 수 있음. 그 밑에 있는 MiB는 메모리 usage이다
  6. 현재 GPU 사용량

(더 다양한 정보가 있지만,,,초짜인 나에게는 이정도만이라도 일단...)

현재 위에서 확인했던 작업관리자와 같이 GPU 1번이 사용되는 것을 확인할 수 있다.

nvidia-smi이후 제공되는 process들을 보면, Type C에 해당하는 anaconda 가상환경 속 python.exe가 GPU번호 1번에서 사용중인것을 확인 할 수 있다.


정리하자면, 먼저, 작업관리자와 cmd창에서 nvidia-smi를 통해 현재 실행중인 파일이 있는지, GPU가 clean한 상태인지 확인한 이후, Tensorflow에서 환경변수값을 지정해주며, 실행할 GPU를 지정해 사용하는 것으로 관제되는 GPU를 선택해서 사용이 가능하다. (jupyter lab 사용시 shutdown all kernel은 작업마친이후 필수적으로 진행해야한다.)

profile
(●'◡'●)

0개의 댓글