2024. 9. 27. 19:15ㆍBoostcamp AI Tech
오늘은 'boostcamp AI Tech' 7기 CV 트랙의 Level 1 기초 프로젝트를 마친 기념으로 지난 3주를 돌아보려 한다!
본래라면 작성할 내용이 많아야 할텐데... 나의 지식과 기여도가 낮다...
1. 6주차 Part 1 - 모델 선정하기
CV 트랙의 기초 프로젝트 주제는 'Sketch Image Classification'이었다.
Kaggle, DACON 대회와 마찬가지로, 부스트캠프 대회 자체의 구조 자체는 간단하다. 우리에겐 sketch image dataset이 주어진다. 이를 train data : validation data = 8:2로 분할하여, 각각 학습과 검증에 활용한다. 먼저 train data를 활용하여 모델을 학습시키고, validation data로 일반화 성능을 점검한다. 이후 test data로 성적 (모델 일반화 성능)을 산출한다.
그렇다면 우리는 무엇을 해야할까?
- 모델 선정
- EDA 및 전처리
- 모델 최적화
- 하이퍼파라미터 조정
- ...
우리는 첫 번째로 '모델 선정'을 골랐다. 데이터 전처리, 데이터 증강, 모델 최적화, 하이퍼파라미터 조정 등등은 모두 모델을 토대로 진행된다. 이에 우리는 베이스라인 코드를 토대로, timm 라이브러리 내에서 최상의 sketch image classification 성능을 내는 모델을 찾기로 했다.
나와 팀원들이 겪은 첫 번째 진통은 '서버'였다. 프로젝트 기간 동안, 각 조는 4개의 V100 GPU 서버를 제공받는다. 캠퍼들은 각 조 인원 수에 맞춰서 서버를 적절하게 분배한 후, 초기 서버 설정 -> VS Code 연동 -> Github 연동 등을 거쳐 사용할 수 있다. 이에 우리 조는 '서버 생성 및 프로젝트 시작!'을 외쳤고, 장렬하게 서버에게 막혔다. 프로젝트 3주차에 접어든 지금은 초기 설정과 연동 모두 어렵지 않게 해내는데, 그때는 왜 그렇게 힘들었는지 모르겠다...
제일 큰 문제는 '서버 폭발'이었다. 서버 상에서 작업한 결과물은 로컬 폴더가 아닌 서버에 저장된다. 즉 본인이 따로 서버에 저장하거나, Github으로 commit하지 않는 이상, 서버가 터지면 작업 결과도 같이 날라간다는 것이다. 나의 결과물뿐만 아니라, 동일 서버 상에서 작업하는 팀원의 결과물도 날라갈 수 있다! 나는 서버 폭발 문제를 3번 겪었는데, 2번은 예상치 못한 사태였다. 한 번은 다른 팀원분이 지정 폴더가 아닌, 용량이 작은 폴더에서 작업하다 용량이 과부하되어 터진 것이었고, 다른 한 번은 내가 용량이 큰 라이브러리를 다운로드시켜 서버 용량에 과부하가 발생한 사례였다. 다행히도 두 사건 모두 (상대방) Github 연동 및 (나) 결과물 없음 덕분에 후폭풍은 없었다. 그러나 나는 해당 사건들로, 서버 상의 협업에 대한 두 가르침을 얻었다.
- 서버에서 작업한 결과물은 Local과 Github에 미리미리 백업하자.
- 서버 용량을 미리 확인하자.
다시 모델 선정으로 돌아와보자. 우리 조는 각자 timm 라이브러리 내 모델들을 동일한 조건(Learning Rate : 0.001, Epoch : 5)으로 설정한 상태에서 여러 가지 모델들을 실험하기로 했다. ResNET, ViT, EfficientNET 등 익히 알려진 모델들부터 처음보는 모델들까지 다양한 모델에 대한 실험이 이뤄졌다. 팀원 한분이 kaggle의 imagenet 대회에서 훌륭한 성능을 보인 모델들의 성능표를 공유했고, 나는 그 중에서 최상위권 성능을 보인 'convNeXt' 모델에 집중했다. 실제로 conNeXt_large 모델은 validation accuracy 0.85 정도의 준수한 성능을 보였고, 나는 지금 돌이켜봐도 웃긴 추론을 했다.
명제1 : convNeXt_large 모델은 image classification 성능이 준수하다.
명제2 : convNeXtv2_large 모델은 convnext의 version 2이다.
결론 : convNeXtv2_large 모델의 성능은 최고일거야!! (??)
그리고 실험 결과는 아래와 같다.
내 인생에서 Validation Accuracy 0.0020은 처음 봤다. 뭔 짓을 해도 안 바뀌길래, 팀원들한테 여쭤보았고, 집단 지성의 결과, 현재의 학습률이 문제일 수 있다는 답변이 나왔다.
이후 이야기는 주말 동안 프로젝트를 더 이해한 다음애 작성하겠습니다.
'Boostcamp AI Tech' 카테고리의 다른 글
[부스트캠프 AI Tech 7기] Level 2 중간 회고 (1) - Object Detection (3) | 2024.10.11 |
---|---|
[부스트캠프 AI Tech 7기] Level 1 중간 회고 (10) | 2024.09.09 |
부스트캠프 AI Tech 7기 합격 후기 (0) | 2024.07.28 |