<그림2> GPU 정보를 parsing 하여 UI 로 만든 화면
<그림2>를 통해 알 수 있는 정보는 다음과 같습니다.
1. 사용하고 있는 GPU의 스펙은 어떻게 되는가 : Tesla V100-PCIE-32GB
2. 어떤 유저가 gpu를 사용하고 있는가 : hyunho
3. gpu 메모리를 얼만큼 사용하고 있는가 : gpu별 메모리 사용률을 bar 형태로 보여줌
4. gpu를 점유하고 있는 Process ID가 무엇인가 : 1번 :47861, 2번 : 5074 등등
이런식의 UI를 통해 GPU를 주기적으로 monitoring 할 수 있게 되었습니다.
과도한 연구 욕심(?)으로 인한 GPU를 독점이 있다.
호기심이 왕성한 FAL 연구원들의 Server는 쉴새 없이 돌아갑니다. 타 회사에 비해 Server가 많다해도 연구원들의 연구 욕심을 따라갈 수가 없습니다. 그렇기 때문에 가끔 자신도 모르게 GPU를 많이 사용할 때가 있습니다. 이러한 독점을 방지하고자, User별 GPU 사용 개수를 표시하였습니다.
<그림3> User별 GPU 사용 개수
본인이 어떠한 실험을 하고 있는지 잊을 때가 있습니다.
실험마다 소요되는 시간이 적게는 2일, 많게는 2주일 이상도 걸립니다. 연구에 대한 업무 뿐만 아니라, 다른 업무들과 병행하다보면 실험에 대해 바로 기억이 나지 않는 경우가 있습니다. 불편함을 해소하기 위해, Gpu Monitoring Tool을 통해 자신의 실험을 관리하고자 하였습니다.
우선, 본인이 진행 할 실험의 Directory name을 실험에 대한 구체적인 이름으로 정합니다. 그리고 GPU Monitoring Tool을 실행 시키면 <그림4>과 같이 나타납니다.
<그림4> 해당 User가 실행하고있는 실험 목록. (회사 내부 정보로 인해 블라인드 처리)
실제 실험이 진행중이기 때문에, 정보 유출 방지를 위해 블라인드 처리 하였지만 <그림4>와 같이 실험이 돌아가고 있는 Server와 해당 Directory name이 나타납니다.
모든것을 종합해보면 다음과 같습니다. 이렇게 GPU Monitoring Tool을 이용하여 한 눈에 보기 쉽게 서버를 정리하여 사용하게 되니 팀원들의 불편사항도 해결했을 뿐만 아니라 업무 효율도 증진 되었습니다.
<그림5> 전체적인 UI
대부분의 사람들이 업무를 하다보면 불편 사항을 마주하게 됩니다. 그러나 불편들을 해결하기 위해서는 또 다른 업무가 늘어날 뿐이니, 불편을 조금 감수하기 마련이죠.
하지만 개발자는 다릅니다.(어쩌면 저희만 다른 것일수도…?) 불편하면 그것을 해소해주는 프로그램을 만들면 되니까요. 이러한 생각에서 시작된 것이 GPU Monitoring Tool 입니다. 단군의 이념처럼 널리 인간 세계를 이롭게 할 순 없더라도 옆에 있는 동료들을 이롭게 하기 위해 불편사항을 해결해보는 Python Code 한줄은 어떨까요?