개인적으로 올해 목표 한 10개 정도 세웠었는데, 9월인데 절반밖에 달성을 못했습니다. 올해 목표 여러 개 중 하나가 올해 데이터 관련 대회에서 나름 유의미한 성적을 내는 것이 목표였습니다. 작년에 운 좋게 1등을 한 경험이 있었지만 제가 다른 일을 벌인 게 많아 혼자 하거나 열심히 하지 않았습니다.
마침 7월 말에 시간이 조금 생긴 것도 있고, 좀 흥미로워 보이는 대회가 마침 열려서 참가하였습니다. 좋은 사람들과 팀을 구성해서 상금은 못 받았지만 총 258팀들 중에서 7등(상위 3%)을 달성하였습니다. 후기를 작성하는 데 있어 기술적인 부분을 제외한 후기를 이야기해보고자 합니다.
1. 팀원 구성 배경
학부생 때는 학교 친구들은 너무 친해서 같이 대회 나가보면 대회 등수가 조금만 횡보하면 포기를 해버리는 경향이 일부 존재 했었습니다. 그래서 적당히 서로 어색하거나 불편한 사람들 위주로 구성하면 알아서 책임감이 아예 없는 사람이 아닌 이상 본인이 열심히 하게 됩니다. 그래서 회사 사람들이랑 팀을 짜서 진행했습니다. 물론 팀을 진행했던 사람들은 불편한 관계가 아닌, 같이 프로젝트를 했던 사람이라 신뢰가 형성이 되어있었습니다.(저만 신뢰가 형성되어 있었을 지도..) 무튼 이 사람들이랑 하면 무언가 서로 배우는 게 있을 것 같다고 판단하기도 했습니다.
"제가 생각하는" 팀원 특징 및 강점을 간단히 소개하면
- NLP 프로젝트 CLS 쪽 경험 다수, 모든 일에 열심히 임해주고 의지 쪽에 배울 것이 많은 사람. 기술적인 부분에서 토의하기 좋으며 신뢰가 있는 사람
- (아직까지는 짧은) 제 인생에서 손 꼽을 정도로 힘든 프로젝트를 같이 했던 사람. 문제 해결 능력이 좋고 질문도 열심히 하는 사람. NLP는 올해 시작해봤고 이론은 닦여있지만 NLP 프로젝트를 이제 하고 있는 사람
- 최근에 회사에 들어오고 프로젝트 경험은 없지만 열의가 매우 많음. 리서치 능력이 좋고 러닝 커브가 상당히 빠르다고 판단. ML 쪽 베이스가 잘 잡혀있는 사람.
- 본인
2. 리더 포지션
한번 운좋게 1등을 했던 경험이 있었고 그걸 살려서 차차 진행했었습니다. 소위 말해 위닝 멘탈리티를 전달해주고 싶었습니다. 했던 내용들 대략적으로 살펴보면
- 주 1회 비대면 회의, 대회 마감일이 가까울수록 회의 횟수 늘리기, 회의시간은 30분 내로 최대한 짧게 진행
- 의사소통은 회사 사람들과 퇴근 후에 하지 않는 것이 원칙이지만 대회 참가하면 그런 거 일절 없습니다. 24시간 연중무휴 강제 카톡 개방
- 회의 내용과 일정, 모델 결과 history 등은 노션에 공유
- 프로젝트와 대회의 차이점을 익히고 체화시키기
- 대회 점수 상승 추세에 있을 때의 쾌감 알려주기, 경험이 중요
- 정해진 기간 내 까지 달성해야 하는 가이드라인 제시 및 데드라인 탈압박(그냥 악마 포지션이라고 생각하면 됩니다. 쪼을 때는 쪼아야!)
- 팀원들의 강점을 살린 R&R 분배
3. 대회 점수 횡보 구간에 느꼈던 감정
모두 같은 사람이기에 호기롭게 시작했다가 기대했던 것보다 점수가 안 오르면 축 쳐지기 마련입니다. 이럴 땐 아래 내용을 Remind 했었습니다.
- 초기에 세웠던 목표 복기하기
- 우리가 참여해서 얻고 싶은 것이 무엇인지
- 세웠던 가설들을 바탕으로 다 trial해보면 등수가 오를 것이라는 믿음
- 강한 멘탈, Mental is all.
팀원 한명이 single model 하나 잘 만들어서 그때부터 쭉 치고 올라갈 때 다 같이 열심히 해서 올라갔던 것 같습니다.
4. 시간 관리
현실적으로 주말과 퇴근하고 이외의 시간밖에 활용 못하는 데 큰 틀은 다음과 같습니다.
- 최대한 주말에 회의를 통해 Reasonable 한 가설 수립, 아이디어를 구조화
- 아이디어를 바탕으로 코드 짜기(주말에 최대한 미리 짜야함)
- 그 이후 평일에 최대한 각자 제출하는 방향으로 진행하며 일일 최대 제출 횟수 3회 채우기.
- 제출 점수에 대한 히스토리를 로그로 남김(실험 방법 및 가설), 이를 바탕으로 팀원들이 시간을 버리는 삽질을 안 하게끔 방지
5. 리소스 관리
- 퇴근 후 또는 주말에 쉬고 있는 GPU 사용 및 코랩 병행
- 간단한 모델 같은 경우 Local 활용
- 아쉬웠던 점은 대회 중후반에 점수를 개선할 가설들이 더 많이 나오기 시작했는데, 이때 더 많은 리소스가 있었더라면 하는 생각이 듦. 조금만 방향성을 잘 잡았다면 상금권을 노려봤을 텐데 하는 생각.
6. 마무리 및 지극히 개인적인 생각
- 대회 by 대회, 사람 by 사람이겠지만 제 개인적인 생각으로는, 대회 중반에 치고 오르는 것보다 초반에 최상위권을 유지하면, 이것을 방어하기 위해 더 열심히 리서치하며 try를 하게 되는 것 같습니다.
- 목표의식이 상당히 중요함. 제 개인적인 욕심은 상금권에 들어가는 것이라 열심히 한 것 같습니다.
- 프로젝트가 아니니 개인 스타일 대로 코드 작성을 하기 때문에 코드 통일을 하지 않았고, 다들 점수 올리기에 급급해서 어쩔 수 없다고 판단했지만 대회 끝나고 코드 정리하는 데 있어 막바지 정리할 때 꽤나 피곤했습니다. 아마 똑같은 상황이 오면 코드 퀄리티에 신경 안 썼을 것 같습니다. (더럽지만 대회는 점수가 더 중요하기에 좋은 방법이라고 생각하기 때문) 그래도 변수 이름 잘 정하거나 global variables들이 존재하는 긴 실행 history를 피하는 것은 지키는 것이 중요하다고 생각합니다.
- 프로젝트나 비즈니스에서의 관점으로 대회에서 1등을 성과를 받는다고 해서 실력이 좋냐?라고 물어봤을 때에는 잘 모르겠습니다. 개인적으로는 학위와 논문의 내공과 비즈니스 영역에서 문제 해결 능력이 있는 사람이 더 뛰어나다고 생각하기 때문입니다. 프로젝트와 대회는 완전히 별개의 문제라고 생각합니다. 대회는 정말 inference time을 요구하는 대회가 아닌 이상, "성능"만을 목표로 하기 때문입니다. 하지만 대회의 장점은 여러 사람들의 집단지성(토론이나 코드 공유)의 모멘텀을 바탕으로 능력을 향상하기에 좋다고 생각합니다. 대회는 많이 참여할수록 기술(알고리즘이나 코드 효율)도 많이 늘겠지만, 문제 해결 능력과 경험이 쌓여 또 다른 문제를 푸는데 확실히 도움이 되는 것 같습니다.
- 대회 끝나고 팀원들 서로가 서로에게 많이 배웠다는 이야기를 했을 때 제일 뿌듯했던 것 같습니다.
이렇게 생각나는 것들을 막 쓰다보니 이렇게 길어지게 되는 것 같네요. 이런 글도 기회가 되면 종종 써야 할 것 같습니다. 7월 중순부터 8월까지 한 달 정도 되는 기간 동안 고생한 팀원들에게 다시 한번 진심으로 고맙습니다.
기술적으로 문제 푼 내용은 아래를 참고하시면 됩니다.
https://dacon.io/competitions/official/235744/codeshare/3099
리더보드 url입니다.
https://dacon.io/competitions/official/235744/leaderboard
'후기 > 공모전 후기' 카테고리의 다른 글
첫 Kaggle 후기 - Google AI4code (2) | 2022.08.15 |
---|---|
Dacon 자연어 기반 기후기술분류 AI 경진대회 후기 _ 기술 Part (2) (0) | 2021.09.23 |
Dacon 자연어 기반 기후기술분류 AI 경진대회 후기 _ 기술 Part (1) (0) | 2021.09.17 |