Maintenance, Efficiency를 고려한 딥러닝 프로젝트

Kangyeol Kim·2021년 12월 8일
0

왜 쓰는가?

대학원생으로 태스크를 가리고 않고 연구와 과제를 바쁘게 하다보면 나도 모르게 늘어나 있는 폴더들을 마주하게 된다. OO분류를 위한 폴더, 작년에 했던 연구를 위한 폴더 등등... 원체 일상생활에서도 정리를 못하는 성격이다 보니 서버폴더 정리야 당연히 뒷전이다. 문제는 그뿐만이 아니다. 각 프로젝트 별로 무척이나 다른 코드구조를 가지고 있다. 대부분 기존의 코드를 adapt하는 과정에서 생기는 문제이다.

다행히 최근에는 PyTorch Lightning, Hydra와 같은 좋은 프레임 워크들을 알게된 덕분에 비교적 정리된 코드를 짜고 있다. 특히 나는 현재 스타트업에서 AI모델 디벨롭을 해야하는 입장으로 더욱더 코드의 유지관리나 확장성을 신경 쓸 필요가 있다. 이 포스팅에서는 현재 딥러닝 프로젝트를 많이 진행하고 있고, 그 코드를 지속적으로 관리해야 하며, 앞으로도 비슷한 형식의 딥러닝 프로젝트를 할 것 같은 사람의 입장에서 프로젝트의 코드 구성할 때 고려해하는 점들을 정리해 보겠다.

Readability

개발이나 코딩을 하는 사람의 입장에서 Readability는 당연히 고려되고 있는 요소이다. 사실 나에게 Readability는 굉장히 추상적으로 느껴지나 개인적으로 몇 가지 원칙을 가지고 있다.

  • 되도록 변수이름이나 함수이름을 줄이지 않는다.
  • 병합할 수 있는 부분은 최대한 병합해서 코드를 compact하게 한다.
  • 같은 포멧의 코드 구조를 다른 태스크할 때도 사용한다.

Baseline Adaptability

profile
Ph.D. Student @ KAIST / Co-Founder @ Letsur

0개의 댓글