석사 입학후 나는 인프라 관리자를 맡게 되었다. 그전에도 관련일을 하긴했지만 전담으로 하진 않았으나 이제 엄연히 "관리자"라는 직책(?)을 부여받았다.
앞선 글에서도 이야기했지만 당시에는 모든 서버 할당을 관리자가 수동으로 했다. GPU 사용 요청이 들어오면 어느GPU가 사용되는지 어느 GPU가 놀고있는지 모니터링하고있다가 비어있는 GPU에 할당해주면 된다! 연구실에서 이런 일만 했다면 참 좋았겠지만! 석사과정 학생이었기에 수업도 들어야하고 논문도 써야하고 프로젝트도 해야해서 항상 시간이 부족했다. 또 관리하는 서버가 한두개 였다면 nvidia-smi(gpu 사용량 모니터링 명령어)를 서버에 들어가서 한두번 치면 되겠지만 5대를 넘어가니 매번들어가서 치는일이 정말 귀찮고 오래걸렸다.
그래서! 나는 왜 서버 여러대를 한번에 모니터링하는 명령어가 없는가! 해서 직접 만들기로 했다. 딥러닝은 보통 파이썬으로 코딩하기때문에 파이썬이 익숙했던 나는 며칠만에 뚝딱뚝딱 코딩을 해서 여러 서버를 모니터링 할수 있는 프로그램을 만들었다! 이름은 kairos-smi! 아이디인 kairos와 gpu 모니터링 명령어인 nvidia-smi를 합쳐서 만들었다.
전공자를 위해 간단히 설명을 하면 python의 subprocess를 통해 모든 gpu노드에 ssh로 nvidia-smi명령을 날리고 날아오는 값을 parsing해서 다시 띄워주는 간단한(?) 프로그램이다. 지금 다시 보면 부족한 부분이 많긴하다. ㅎㅎ 하지만~ 연구실에서 써보니 한번의 명령으로 다 볼수 있어서 정말 편리했고 덕분에 하나하나 서버에 안들어가도 되어서 업무시간이 1/10으로 줄어들었다! 쓰다보니 나혼자만 쓰기 아까워서 커뮤니티에 공유해야겠다는 생각이 들었고 오픈소스로 만들어서 공유도 했다!
https://github.com/kairos03/kairos-smi
(들어와서 오른쪽 위에 별하나씩만 눌러주세요~~)
나름 업무간이 많이 줄어서 만했지만 수동으로당하는 작업이 궁극적으로 사라지진 않았다. 진짜 자동화 하려고 "자자 ksmi써서 알아서 비어있는 쓰세요"도 해봤는데.. 음.. 그래도 관리자가 있어야겠구나 생각을 하게되어서 일주일만에 그만뒀다. 더 진보함 형태를 어떻게 할수 있을까 고민을 했고 그 끝에 클러스터를 만들자! 하는 해답이 있었다.
다음에 계속.
'개발 > 대학원생의 좌충우돌 GPU 클러스터 구축기' 카테고리의 다른 글
010. [대학원생의 좌충우돌 GPU 클러스터 구축기] 2. GPU 클러스터 만들기(Kubernetes)! (3) | 2022.07.06 |
---|---|
006. [대학원생의 좌충우돌 GPU 클러스터 구축기] 0. 맨땅에 헤딩하기 (1) | 2021.03.19 |