국문과 유목민

[7주차] 개인 회고 (Level1_프로젝트 정리) 본문

IT 견문록/2022_부스트캠프 AITech 3기(100일)

[7주차] 개인 회고 (Level1_프로젝트 정리)

논곰 2022. 3. 5. 00:36

이번 주는 프로젝트 기간으로 강의없이 온전히 프로젝트를 진행하는 데에만 시간을 썼다. 프로젝트의 결과와는 별개로 많은 것을 배울 수 있었던 기회였다. 일일리포트를 통해서 하루하루 무엇을 했는지는 간단하게 적어뒀었고, 오늘은 프로젝트를 돌아보면서 내가 했던 내용들을 회고해보고자 한다.

Goal

우선 이번 프로젝트에서의 팀의 목표는 당연히 좋은 성적을 받는 것이었고, 개인적인 목표는 "많은 것을 시도해보고, 팀원과 같이 성장하자"였다. 이전에 다른 프로젝트를 진행할 때 협업을 제대로 해보지 못했기 때문에 이번에는 내가 필요한 부분보다 팀에 필요한 게 무엇인지 생각하며 협업을 하자는 생각을 했다.

Task

그래서 이번에는 프로젝트를 진행하면서 팀원들이 프로젝트를 진행함에 있어서 필요한 것이 무엇일지 생각하고 이를 먼저 구현하고자 했다.

  • 프로젝트 To-Do List작성: git프로젝트를 활용하기로 했지만, 계획이 정해져 있지 않았다. 이렇게 될 경우 Task에 혼동이 올 것이라고 생각해 주말동안 프로젝트 기간동안 해야할 일들을 작성해 체계를 잡았다.
  • Output시각화 코드 작성: 제출 결과가 한정되어 있었기 때문에 출력 결과를 검증하기 어려웠다. 따라서 출력 결과를 시각화 해서 분포로 확인할 수 있도록 하는 코드를 만들어 제공했다.

  • EarlyStop, Wandb 도입: 수월한 모델링 작업을 위해 일찍이 Earlystop코드를 작성해 제공했다. 또한 실험 결과 정리 및 공유를 위해 wandb를 도입해서 협업의 효율을 올리고자 했다.
  • Data Aumentation코드 작성: 프로젝트 마지막 날 모델의 성능을 올리기 위해 Imbalacne한 데이터의 절대적인 양을 늘려보기로 계획해서 코드를 작성했다.
  • Modeling: Efficientnet, CoAtnet 등 Calssification문제에서 좋은 성능을 보이는 모델들을 활용해보고자 시도했다.

Result

To-Do리스트를 미리 작성함으로써 Task의 분배를 수월하게 할 수 있었고, 불필요한 인력 낭비를 줄일 수 있었다. wandb의 경우 프로젝트 끝나기 몇 일 전에 도입했었기에 많이 사용해보지는 못했지만 마지막 날 성능을 올리는데 도움이 됐다. wandb와 같은 프로젝트 관리 툴은 일찍 사용하면 사용할 수록 좋은 것 같다.
Modeling을 통해서 직접적으로 최고의 성적을 받지는 못했지만, 해당 결과를 통해 얻은 인사이트들을 공유함으로써 다른 팀원의 점수를 올리는데 도움을 줄 수 있었다. 에를 들어 lr을 기존보다 훨씬 낮게 준다거나, Val_ratio를 줄여서 train data의 양을 늘리는 방법 등을 통해 마지막 날 15등을 올릴 수 있었다.
이번에는 개인적인 시도와 성장보다 팀원과의 협업을 통해 같이 성장하고자 했다. 그리고 어디서 문제가 있고, 어떤 부분을 도우면 좋을 지에 대해 생각을 많이 했었다. 그러다보니 자연스럽게 프로젝트에 더 몰입할 수 있었고 더 책임감있게 일을 수행할 수 있었다. 그리고 프로젝트 마지막 날 회고를 하면서 내가 만들었던 코드들이나 제안했던 방법들이 도움이 되어 좋은 성과를 얻었을 때 매우 뿌듯했다.

Improvment

이번 프로젝트는 성과를 떠나서 많은 것을 배울 수 있었다. 하지만 개인적으로 아쉬웠던 부분이 몇 가지 있어서 적어보고자 한다.

  • 협업 툴(git, git project, wandb)의 경우 프로젝트 시작 전에 미리 사용을 결정하고 룰을 정해두는 것이 좋다. 우리 팀의 경우 프로젝트가 시작하고 협업 툴을 정하고 사용법을 익히느라 후반에 시간이 많이 부족했다.
  • AutoML과 Ensemble의 사용법을 미리 익혀두자. AutoML을 통한 하이퍼 파라미터 세팅과 Ensemble방법은 점수를 올리기 쉬운 방법이다. 하지만 우리는 시간이 부족해서 이를 시도하지 못해 아쉬움이 많이 남았었다.
  • 여러 기법을 시도하는 것도 좋지만 우선 기본에 충실하자. 새로운 것들을 시도하려고 도전을 많이 했었는데, 팀원 모두가 도전을 하며 새로운 코드를 작성하다보니 이 내용을 공유하고 이해하는데 시간이 오래 걸렸다. 그리고 무엇보다 우리 최종 모델도 기존 baseline코드에서 하이퍼파라미터 값을 몇 개 변경했던 것이었다. (튜닝의 끝은 순정이라고...) 그러니 기준으로 삼을 모델을 정하고 다양한 것을 시도하는 게 좋을 것 같다.
  • 팀원 간 의견을 많이 나누는 게 좋다. 현재 팀에 필요한 부분이 무엇이고, 주어진 단계에서는 어떤 것이 필요한 지 같이 생각해 나가는게 중요하다. 내가 중요하다고 생각헀던 게 다른 사람이 생각하기에 중요하지 않을 수 있기 때문에 그 생각을 맞춰간다면 일의 효율성을 더 올릴 수 있을 것이다. (물론 그 과정에서 비난은 당연히 안된다...)

이상으로 이번 프로젝트를 진행하면서 조금은 아쉬웠던 부분들에 대해 적어봤다. 해당 내용은 내가 나중에 다른 프로젝트를 하게 될 때 보려고 정리한 것도 있지만, 다른 누군가가 프로젝트를 하려고 한다면 개인적으로 해주고 싶은 말을 적은 것이기도 하다. 하지만 아직 부족하다고 생각하기 때문에 누군가에게 충고라거나 조언을 하기에 조심스럽다. 따라서 '얘는 이렇게 됐으니 나는 이렇게 되지 말아야지'라는 반면교사라고 생각해도 좋을 것 같다.

그리고 마지막으로 보시지는 않겠지만 Level1 기간동안 함께해준 팀원분들과 멘토님께 여기에 몰래 감사하다는 말씀을 남기고 싶다.

Comments