이번에 부스트캠프 7기의 첫 프로젝트를 완료했다.
시계열 분류 예측 모델 만드는 것이 첫 목표였다.
여기서 가장 고민을 많이 했던 부분에 대해 정리하려고 한다.
우리는 GPU서버 여러대를 받았다.
물론 이번 프로젝트는 데이터가 크지 않아 GPU 서버를 활용하지는 않았다.
이 과정에서 어떻게하면 효율적으로 프로젝트를 운용할 수 있을지 고민해봤다.
그래서 아래와 같은 구조를 만들었다.

EDA는 주로 .ipynb 주피터 노트북 파일을 가장 많이 사용한다.
여기서 데이터 시각화, 전처리, 모델링까지 말이다.
하지만 이것은 개인적인 파일이지, 협업을 위한 파일은 아니라고 생각이 들었다.
그래서
EDA만 관리 할 수있는 디렉토리를 새로 만들기로 결정했다.
그러면 데이터 처리나 모델링은 어떻게 할 수 있을까?
만약 개별적인 .ipynb로 처리하게 된다면, 수도 없이 많은 중복코드를 양산할 것이라고 생각이 들었다.
그래서 공통으로 사용할만한 전처리 기법 이나 모델을 별도로 저장하기로 생각했다.
또한 위의 과정을 한번에 처리할 수 있는
app.py를 만들어서, 한번에 실행시킬 수 있게 만들었다.
이렇게 되면Feature-Engineering내용을 Github을 통해 공유 할 수있고, 다른 팀원도 만들 수 있을 것 같았다.
또한 다양한 관련된.py를 만들 수 있도록 추상화된 Interface를 만들었고, 적용시켜놓았다.
모델 작업까지 완료되면 하이퍼 파라미터 튜닝이 필요했다.
하이퍼 파라미터는 자주 변경되는 값이었고, 매번 코드를 수정하게 만들면 안될 것 같았다.
따라서 별도의 파일로 관리해야한다라고 생각했고, 그 생각을 통해4.Config를 만들었다.
위의 방법대로 각각 EDA나 전처리, 모델 관련해서 만들었는데, 이것을 어떻게하면 효율적으로 관리할지 고민했다.
Config를 만들기 위한 목적은 효율성과 편리함 이다.
그것을 바탕으로 아래의 4가지에 Focus를 두었다.
- 전처리 과정 선택
- 모델 선택
- 빠르고 다양한 하이퍼파라미터 수정
- 기타 서버 관리
위의 4가지를 가장 잘 이루어 낼 수있는 config-sample.yaml을 만들었고, 그것을 팀에게 공유했다.
이번 프로젝트에서 위의 구조는 실패했다.
정확히는 EDA까지는 괜찮았다. 하지만 모델 및 전처리부분이 들어간 구조가 실패했다.
내가 생각한 실패의 원인을 3가지로 정리해보았다.
- 복잡한 개발 방법
- 기존 AI 협업 프로젝트 경험의 부재
- 개발 방법 및 프로젝트 구조에 대해 팀에 잘 인지시키지 못한 부분
다른 원인도 많겠지만 가장 큰 것은 위의 3가지 이유라고 생각이 들었다.
따라서 다음 프로젝트에서는 조금 더 개발이 편하고, 이해하기 쉬우며, 유지보수가 쉬운구조로
변경하려고한다.