봉자씨
친절한 봉자씨의 딥러닝 이야기
봉자씨
전체 방문자
오늘
어제
  • 분류 전체보기 (144)
    • 개발 (25)
      • 딥러닝 단어장 (2)
      • MLOps (6)
      • 딥러닝, Computer Vision (3)
      • Pytorch (0)
      • Develop (5)
      • Kubernetes (4)
      • 대학원생의 좌충우돌 GPU 클러스터 구축기 (3)
      • LangChain (1)
    • 경제 (115)
      • 경제 용어 단어장 (0)
      • 경제일기 (113)

인기 글

최근 글

블로그 메뉴

  • 홈
  • 태그
  • Github

공지사항

최근 댓글

태그

  • SVB파산
  • 부동산
  • 경기침체
  • 위스키
  • 장단기금리차
  • Kubernetes
  • 은행파산
  • MLOps
  • CPI
  • kubectl
  • 금리인상
  • 금리동결
  • 주식
  • 채권
  • 딥러닝
  • 금리
  • fomc
  • Kubeflow
  • 경제일기
  • ChatGPT
  • SVB
  • 금리인하
  • kserve
  • 중국리오프닝
  • AI
  • 빅스탭
  • k8s
  • 대출부실
  • 인플레이션
  • 자이언트스탭

티스토리

250x250
hELLO · Designed By 정상우.
봉자씨

친절한 봉자씨의 딥러닝 이야기

Ocean - GPU 클러스터 관리 솔루션

2021. 7. 30. 00:56
반응형

 

Ocean은 2020년 경희대학교에서 딥러닝 연구를 시작하던 때부터 만들어진
GPU 클러스터 관리 솔루션입니다. 

 

# 성과

개발을 시작한 이후 지금까지 MLVC 연구실에서는 Ocean을 통해 다양한 연구, 프로젝트가 진행되었으며, 연구, 프로젝트에 더욱 집중할 수 있는 편리하고 효율적인 시스템을 토대로 좋은 퀄리티의 논문이 많이 나오고 있습니다. 2020년에 IEEE 저널에 3편 Accept 되는 실적에서 2021년 7월 Top Conference인 ICLR 1편 ICCV 2편이 Accept 되었고, IEEE 저널에 9편을 게재 혹은 제출하여 6개월 만에 논문 13편이라는 놀라운 연구 성과와 속도를 보여주고 있습니다.

 

# 시작

당시 대학원생이었던 저는 GPU서버 관리를 맡게 되었고, 많은 부분 수동으로 GPU를 관리하던 환경을 어떻게 하면 자동 화 할 수 있을지 고민하기 시작하였습니다. 그 첫 번째 결과물로 여러 GPU 서버의 GPU사용량을 한 번에 볼 수 있도록 만든 Kairos-smi가 있습니다. 이후 더 높은 수준의 자동화된 GPU 스케쥴링을 고민하여 컨테이너기반의 클러스터 관리 서비스인 쿠버네티스를 공부하게 되었습니다. 쿠버네티스는 이미 많은 부분에서 스케쥴링을 자동화해주고 있었으나, 쿠버네티스를 전혀 모르는 사람이 쉽게 사용하기란 어려웠습니다. 많은 연구실 학생들이 쉽게 효율적으로 GPU를 사용할 수 있어야한다는 신념 아래 방학기간 두 달에 걸쳐 Web Dashboard를 구성하기 위해 Vue와 Express를 공부해서 Ocean의 최초 버전을 완성할 수 있었습니다.

 

최초의 Ocean은 단순히 MLVC Intranet이라는 이름으로 공개되었습니다. 최초 기능은 당시 문제였던 서버 간의 데이터, 소스 관리 문제와 GPU 수동 스케쥴링, 노드마다 환경 구성을 따로 해줘야 하는 문제를 해결하는 기능인 Volume과 Instance가 구현되었습니다. NAS를 이용한 Volume을 통해 어떤 서버에서 작업하던 항상 같은 데이터, 소스코드를 사용할 수 있게 하였습니다. Instance는 매번 하던 환경설정을 Docker 이미지로 만들어서 매번 새로 구성하지 않아도 되도록 하였습니다. 또한 인스턴스는 기존에 수동으로 할당하던 관리자의 작업을 자동으로 할당되게 하여서 GPU 관리를 하는데 기존대비 10%의 시간만 들여도 될정도로 획기적이었습니다. 또한 서버 간의 데이터 복사, 환경설정이 빠르고 쉬워져 기존 설정시간이 1~2시간 걸렸다면, 단 몇번의 클릭으로 1분 만에 설정이 되어서 연구원들에게도 큰 호응을 얻었습니다. 

 

# 성장

이후 Instance에서 할당되 GPU가 사용하지 않고 있지만 다른 사람은 사용할 수 없게 되는 비효율적인 부분을 발견하였고 이을 해결하기위해  Job기능을 추가하였습니다. Job은 Instance와 완전히 같은 환경, 같은 Volume에서 단발적인 명령어 하나를 실행하도록 하는 방식으로 하나의 명령어만 실행되고 자동으로 삭제되어 더 효율적으로 GPU를 사용할 수 있게 되었습니다. Job의 도입으로 Instance는 딥러닝 개발을 위해 필요한 최소 자원 1개 GPU 만을 사용하도록 바뀌었고, 2080ti 등의 최신 장비와 1개 이상의 GPU를 사용해야 하는 작업은 Job 제출을 통해 관리되었습니다. 기존의 GPU 사용량이 평균 20%에서 60% 이상으로 크게 뛰었고, 특히 논문 제출과 같이 작업량이 많을 때에는 Job Queue에 작업이 쌓여 90% 이상의 사용량을 보이기도 했습니다. 이처럼 Job의 도입으로 특히 GPU 사용량이 갑자기 몰릴때 GPU를 효율적으로 사용하지 못해서 실험을 많이 못했던 문제가 해결되었습니다. 이후 같은 조건의 실험을 여러 번 돌리게 하기 위한 Job 설정 복사, 반복 기능, 로그 실시간 확인 기능 추가, 개선하여 Job이 Ocean의 Main 기능으로 자리매김하게 되었습니다.

 

연구실에서는 논문 뿐만 아니라 다양한 프로젝트도 진행하였습니다. 이런 프로젝트 중에는 대용량 데이터셋을 이용해서 학습해야 하는 프로젝트도 있었습니다. 연구 시에도 ImageNet과 같은 대용량 데이터셋으로 학습을 할 때가 있는데 Volume에서 데이터셋을 읽게 되면 Network Latency로 학습이 더 오래 걸리는 문제를 확인할 수 있었습니다. 또한 널리 자주 사용되는 데이터셋이 여러 연구원의 볼륨에 중복적으로 위치하여 NAS의 저장공간을 비효율적으로 만들었습니다. 이러한 문제를 해결하기 위해 Data-syncer라는 프로그램을 개발하였습니다. Data-syncer는 대용량, 자주사용되는 Dataset을 서버의 로컬 스토리지에 직접 복사하여 Network에서 데이터를 읽을 때 발생하는 overhead를 줄였고 ImageNet 학습 시 약 30%(3일 -> 2일)이 단축되는 효과를 얻었습니다.

 

물론 처음에 많은 버그와 시행착오가 있었고 기존방법에 익숙해진 사람들에게 새로운 방법을 전파하는 데에도 많은 노력과 시간이 들었습니다. 그러나 초기버전을 미리 사용해본 연구원들의 피드백을 빠르게 수용하여 지속적으로 긍정적인 사용 후기가 전파되게 되었고 지금은 연구실을 넘어 컴퓨터공학과 GPU관리에까지 사용되고 있습니다.

 

#미래

더 많은 사람들이 연구실에서 이뤄냈던 성과만큼 Ocean을 통해 이뤄냈으면 하는 바람으로 Ocean을 세상에 공개하기로 했습니다. 더 많은 연구자와 개발자들이 연구, 개발에만 집중할 수 있도록 최대한의 생산성을 이끌어내고 그리하여 연구실에서 이루었던 연구 성과, 사업화 속도 향상을 더 많은 회사나 연구소, 학교가 누림으로서 사회에 도움이 되고자 합니다. Ocean은 시작부터 기민하게 변화해 왔습니다. AI 연구자, 개발자 가장 가까이에서 소통하고 필요한 점, 부족한 점을 빠르게 채워나감으로서 전세계 AI 연구 개발에 도움이 될 것입니다.

 

 

Ocean이라는 영양분 풍부한 바다에서
여러분의 인공지능 개발과 연구가 무럭무럭 자라나
세상을 바꾸게 되는 날을 꿈꿉니다. 

 

 

AI Ocean 대표 신은섭

 

 

Demo 요청: my.aiocean@gmail.com

Github: https://github.com/AI-Ocean

반응형
    봉자씨
    봉자씨
    인공지능, 딥러닝, MLOps 이야기로 여러분을 찾아갑니다!

    티스토리툴바