나는 많은 딥러닝 프레임워크 중 Pytorch와 MxNet을 자주 사용하는 편이다.
그런데, 연구실 사람들과 GPU 서버를 함께 쓰다 보니 어떤 GPU가 현재 available한지 알아야 할 필요가 있었다.
원래는 시간대를 적당히 맞춰서 사용하곤 했는데, 멀티 GPU 세팅에 대해서는 잘 모르기도 하고 colab으로는 도저히 불편해서 쓸수가 없었으므로..ㅠㅠ 관련 정보를 찾아보고 그 결과를 간단히 공유하고자 한다.
GPU 서버 상태 확인하기
사용하고자 하는 서버의 GPU availability 를 먼저 알아보자. 간단하게 알아볼 수 있다.
1 | nvidia-smi # bash OR terminal에서 명령어를 입력할 경우 |
위와 같이 입력한 경우, 아래와 같은 화면이 출력된다.
(만약 출력이 안되는 경우, Nvidia driver에 문제가 있는 것이기 때문에 요 부분을 다시 검토해 보자)
내가 사용하는 서버는 TITAN Xp 가 4개 가동중인 GPU 서버이며, 현재 1,2,3번 GPU에서는 용량이 꽉 차있는 것으로 보아 누군가가 작업을 진행하고 있는 것으로 예상된다.
Default GPU Setup 확인하기
어떤 GPU를 사용할지는 위의 과정을 거쳤더니 알게 되었다. 나는 GPU:0 을 사용해야 하는구만.
그러면 이제 내 작업환경으로 돌아가, 현재는 어떤 GPU를 사용하도록 셋팅 되어있는지 확인하는 과정이 필요하다.
마치 os.getcwd()
으로 현재 디렉토리를 아는 것처럼..
1 | import torch |
위 코드를 실행시키면 차례대로 사용가능한 GPU 디바이스의 갯수, 현재 셋업 되어있는 GPU 넘버, 그리고 GPU 디바이스의 이름을 출력한다.
결과를 보니, 나는 TITAN Xp 디바이스 중 2번 GPU를 사용중임을 확인할 수 있었다. (인덱스는 0번부터 시작)
GPU Allocation 변경하기
나는 현재 2번 GPU를 사용중인데, 이를 0번 GPU로 바꾸어야 한다.
1 | # GPU 할당 변경하기 |
위 코드를 실행시키면 0번 GPU를 사용하도록 변경하고, 해당 GPU의 cuda memory 상태를 간략하게 출력한다.
제일 위의 출력 결과물을 확인해 보니, 성공적으로 Current cuda device가 2에서 0으로 바뀌었음을 알 수 있다.
모쪼록 GPU 서버가지고 싸우지 말고(?) 딥러닝을 즐기도록 하자 :)