네이버 부스트캠프 AI Tech를 마치며…
눈이 많이 내리던 지난해 겨울에 시작한 부스트캠프는 비가 많이 내리기 시작할 여름에 마무리 됐다.
1월부터 6월까진 진행한 부스트캠프 AI Tech 3기 활동을 마무리하며 지난 6개월의 여정을 돌이켜 볼 생각이다.
본격적인 시작
데이터 직군을 희망한다고 남들한테 많이 말했던 거 같은데 막상 ‘누군가한테 설명할 수 있을까?’ 라는 질문을 스스로에게 던졌을 때, yes라는 대답이 바로 나올 수가 없었다. ‘대충이라도 설명할 수 없다’ 라는 것이 나에게 많은 생각을 하게 만들었고 가장 체계적이고 좋은 공부 방법이 무엇일까? 고민하다가 부스트캠프에 지원했다.
오리엔테이션과 첫 느낌
오랜 기간을 AI, 데이터 관련으로 준비했어서 자소서를 작성하는데 큰 어려움이 있지 않았다. 자소서를 어떤 느낌으로 썼는지 궁금하다면 부캠 합격 후기를 확인해 보시길…
부스트캠프의 시작
기대반 걱정반으로 첫번째 OT에 참석했고 첫 데일리 스크럼을 진행했다. Level 1 동안 기초적인 수학, 통계 AI에 대한 지식들을 학습하는 것이 학습목표였고 함께 할 동료들은 부스트캠프 측에서 구성해줬다. 정말 다양한 분야의 사람들이 모였고 항상 컴퓨터공학과 혹은 공대 사람들만 보던 나에게는 새로운 경험이었다.
조교 활동을 하면서 비전공자 사람들을 여러번 상대해본 적은 있지만 아무래도 학교 수업을 듣는 학생들은 간절함과 진심이 없는 경우가 많다. 하지만 여기 들어온 사람들은 그때 느끼지 못했던 간절함과 진심을 갖고 있었고 전공자로서 도와줄 수 있는 부분에서 많이 도움을 주고 싶었다.
하루하루 회고를 다지며…
올 한해 참 많은 스포츠 대회때문에 힘든 부캠을 잘 견딜 수 있었다.
Leve 1과 Level 2 기간동안 절대 놓치지 않았던 것들이 있었다. 적어도 강의에서 나온 내용을 최대한 내 방식으로 기록하자였다. 내가 부스트캠프를 시작했던 이유는 내가 하기로 한 분야에 대해서 대충도 설명 못하는데 어떻게 그 분야에서 일할 수 있겠어? 라는 생각때문이었다. 이런걸 해결하려면 반드시 그날 공부한건 그날 정리했다.
그리고 그날 그날 회고를 꾸준히 기록했다. 정말 큰거부터 정리 시간이 오래 걸린다는 사소한 부분까지 기록했다. 물론 P-stage와 Product Serving에서는 너무 개인 회고를 적는거 보다 프로젝트 개발, 실험 일지를 적는걸로 대체했다.
지금 회고를 적으면서 확인해보니까 벌써 119개의 글을 적었다.
사실 product serving 파트는 아직 적지 못한 부분이 많아서 시간 여유가 될 때 필기한 내용들을 정리할 예정이다. 또한 추천 시스템 이론도 이원성 마스터님께서 설명해주신 부분들을 자세히 기록하지 못했어서 해당 부분도 다시 정리할 예정이다.
이렇게 다 정리하면 대충 150개 글이 완성될 거 같다. 나름의 방식으로 이해하려 노력했고 최대한 강의 내용을 그대로 적기보다는 추가적인 내용을 덧붙이려 했다. 내용이 많았고 시간적인 부분이 문제가 되는 경우가 많았다. 하지만 내가 얻고 싶은 목표를 달성하고자 꼭 해야할 일 중 하나였다.
다양한 대회 경험
처음으로 겪은 시작부터 끝
중간에 한강뷰 라이브 유튜브 채널을 틀어놓고 지낸 기간도 많았다.
운영측에서 꾸려준 팀으로 7주간의 기초교육을 받으며 빈틈밖에 없던 많은 부분을 채워나갔다. 마지막에 진행한 image classification 대회를 맨 처음에 봤을 때는 ‘CV 트랙에게 유리한 대회가 아닌가?’라는 생각이 들었다. 하지만 막상 패를 까보니 NLP팀들이 상위권을 쓸어담고 있었다. 지금도 생각해보면 맨날 최신 트렌드를 알아본다고 MLOps에 대한 관심도 갖고, 정보도 찾아보고 했는데 최근 트렌드인 Data-centric에 대한 접근은 하나도 하지 않았던 것으로 기억한다. 계속 모델에만 인적 리소스를 넣었고 성능 향상도 드라마틱하지는 못했다. 결국 대회 마지막날 모델 output 전수조사를 하면서 데이터 분포를 변경해보면서 성능 향상을 이뤄냈다. 결국 Andrew Ng이 맞았다. 하지만 나는 알고만 있었고 대입하지 못했다. 이런 것도 결국 내가 초보라는 반증이 아니었나라는 생각이 들었다.
처음으로 PyTorch를 사용해 처음부터 끝까지 하나의 학습 파이프라인을 만들어 본 경험이었고 코드적인 부분, 논문을 적용하는 부분 등 많은 방면에서 경험을 늘릴 수 있던 시작 그 자체의 역할을 제대로 했다. 첫 대회를 경험하면서 사이언티스트와 엔지니어 그 사이 어딘가에서의 방향에서 어디로 갈 지 결정할 수 있던 계기가 되었다.
확실히 수식이나 이론적인 내용을 다루는 것이 재미는 있었지만 내가 컴퓨터공학과에 진학한 이유를 떠올려보면, 결국 프로그래밍을 통해 스스로 무언가를 만들어 보기 위해서였다. 이 대회를 경험하면서 엔지니어 역할이 내가 가장 바라는 것이라는 걸 알 수 있었다.
추천 시스템, 그리고 실수, 발전
Level 2에 들어가면서 본격적으로 추천 시스템 트랙에 대해 심화된 학습을 진행했다. 추천 시스템을 처음으로 만난 것은 지난 해 CLOVA AI RUSH 2021에서였다. 나는 항상 실제 세계에서 적용되는 것들을 바래왔다. CV, NLP도 많이 실생활에 적용되고 있지만 추천 시스템만큼 real world가 더 중요한 부분이 없다고 생각했다. 이런 부분이 나를 추천 시스템으로 이끌었던 것 같다. 부스트캠프에서 추천 트랙 강의를 들으면서 가장 많이 들었던 것이 ‘CTR’, ‘실제 서비스 환경’ 같은 단어였다. 대회를 경험하고, 마지막에 서비스를 개발하면서도 같은 추천 시스템이지만 완전히 다른 이슈들을 마주했었다.
Movie recommendation 대회에서도 결국 데이터였고, 이번에는 모델 분석도 꽤 중요했다. 데이터 분석가 역할을 초반에 맡아서 진행했는데, 당시의 실수가 아직도 기억난다. Movie Lens 데이터를 재구성했다는 점때문에 대회에서 말한 sequential 특징을 완전히 무시해버리는 논리를 펼쳤다는 것이다.
지금 돌이켜보면 제일 큰 문제는 데이터를 실제 sequential로 분석해보고 상관관계가 적다는 결과를 낸 것이 아니라 단순히 데이터가 Movie Lens라는 이유로 그랬다. 데이터 분석가라는 사람이 데이터를 철저하게 분석하고 내린 결과가 아닌 직감에 의한 결과라는 것이 문제였다. 이것도 지금보면 결국 초보자, 경험부족에서 발생한 문제였다.
대회를 경험하면서…
대회 진행 내용을 자세히 적는건 회고에서는 큰 의미가 없다고 생각한다. 만약 진행내용이 궁금하다면 P-stage 후기들을 찾아보길 바란다.
대회를 겪으면서 가장 크게 느낀건 난 진짜 초보자 그 자체였다라는 것이다. 그리고 대회가 끝나고 나서 초보자만이 겪을 수 있는 실수였고, 현업에서 겪기 전에 경험했다는 것이었다. 가장 핵심적인 실수들은 다음과 같았다.
- 최근 트렌드에 대한 정보를 알아보고, 수집했으나 실제 적용하지 못함
- 데이터에 입각한 분석보다 직관에 의한 분석이 더 앞섰다.
- 확장적인 생각을 할 수 없었다.
현업에서 겪기 전이라고 말은 했지만 이 자체도 섣부른 판단일 수도 있다. 아직 현업에서 일해본 적이 없으니 말이다. 내가 가장 초보라고 느낀 부분은 데이터에 입각한 객관적 분석을 하지 못했다는 것이었다. 데이터 엔지니어, 사이언티스트, 분석가 등 데이터 직군에서 일하는 사람들은 결국 데이터애 입각한 분석결과를 내야하는 것이었다. 물론 ‘일반적으로 이러이러하니까 이러이러할 것이다’라는 가설을 세울 수는 있지만 결국 가설이다. 데이터를 분석하고, 통계적인 수치로 검정을 해야하는 것이다. 이 부분은 아직도 많이 부족하다고 생각하고 스스로 경계하는 부분이다.
대회에서 참 많은 스트레스를 받았지만 그만큼 많은 실수를 하면서 여러가지 깨달음을 얻었다. 단순히 지식적인 부분만이 아닌 실수를 통한 경험을 할 수 있다는 것도 장점이었다고 생각한다.
서비스를 개발하면서…
부스트캠프의 마지막 과정은 Product Serving이다. 데이터 수집부터 서비스 배포까지 모든 단계를 개발하는 과정이다. 이활석 마스터님도 말씀하셨지만 추천 시스템의 특성상 모델 자체의 방향보다 전체 서비스 아키텍처설계가 중요했다. 또한 LINE, Kakao 등 많은 기업들에서 고민하고 있는 문제인 추천 inference time에 대한 고민도 많이 필요했다. 하지만 Level 3 - Product Serving에서 가장 중요한 것은 대회를 경험할 때와 달리 모든 것을 내가 다 할 수 없다라는 것이다.
프로젝트를 진행한 경험이 팀에서 가장 많아서 의도하지 않았지만 PM의 역할을 담당했다. 개발, 모델 연구, 데이터 수집을 한 명이 할 수 없다는 것을 인지하는 것이 가장 중요했고 팀원들의 역할분담을 가장 우선적으로 진행했다. 그리고 여기서부터 내가 할 수 있는 것은 팀원을 믿는 것이었다.
물론 매일 데일리 스크럼과 피어세션때 자신의 진행상황을 브리핑하는 것이 있었지만 결국 팀원이 얼마나 자신의 역할을 잘 수행하고 있느냐가 핵심이었다. 물론 팀원들도 나를 믿고 자신의 역할을 하는 것이라 책임감을 가지고 진행했어야 했다. 무엇보다 학습 데이터와 추천 목록에 사용되는 데이터를 수집하는 것이 내 역할이다보니 서비스 개발의 핵심적인 역할이라는 부담이 컸다.
전공기초 지식을 왜 배워야 하는가?
사실 컴퓨터공학을 전공하는 많은 사람들도 전공지식이 실제 서비스 개발에 얼마나 사용될까?라는 생각을 갖는 경우가 많다. 데이터베이스를 배워도 DBMS 프로그램을 사용하고, SQL문을 사용하는 정도이고 내부 구조를 실제 건드리는 경우가 많지 않을 것이라 생각한다. OS를 배워도 어차피 사용하는 OS는 리눅스, 윈도우즈, 맥OS이고 이미 잘 만들어진 OS들이다. 사실 나도 뭔가 쓰인다고는 들었는데 어디서 어떻게 쓰이고 실제 쓰이는 것을 보지도 못했으니 와닿지는 않았다.
하지만 이번 서비스 개발에서 데이터 수집 파이프라인을 구축하면서 전공지식의 필요성을 가장 크게 느꼈다. 기존에 데이터를 수집하는 코드의 방식은 monolithic으로 수집과정 전반에 문제가 발생하면 처음부터 다시 처리해야하는 문제가 있었다. 하지만 데이터를 주기적으로 데이터베이스에 저장한다면, 그런 문제를 조금은 해결할 수 있었다. 또한 API 제한이 발생하면 데이터베이스 저장도 문제가 발생하므로 데이터 수집, 저장을 비동기로 분리해야 했다.
이 과정에서 상당히 고생을 많이 했었다. 서로 다른 코드를 만들면 좋은데, 문제는 연결하는 방법을 몰랐다. 부캠 슬랙에 도움을 요청했고 같은 캠퍼분 중에 관련된 기술로 잘 아시는 분께서 도움을 주셨다. 당시 설명하신 내용은 redis와 같은 message queue를 이용해서 sender-receiver를 사용하는 것이었다. 이 방식은 내가 OS에서 배웠던 프로세스 통신 방법 중 하나였다. 정말 일부분 중 하나였지만 이런 사소한 이해를 얼마나 잘 적용하느냐가 중요하다는 것을 알았다.
이런 부분을 잘 알기 위해서 우리는 전공공부를 하는 것이고 기술면접을 보는 것이라 생각했고 크게 느꼈다.
자세한 내용은 최종 프로젝트 개발일지를 읽어보길 바란다.
서비스 개발은 현실이다.
팀원과의 큰 트러블이 있지는 않았지만 가장 어려웠던 부분도 있었다. 팀원의 구성이 취직 + 대학원(연구)로 나눠져 있었다. 프로젝트를 진행하면서 데이터의 문제, 모델적인 문제들이 많이 존재했었고 심지어는 서비스를 하는 과정에 평가, 소비자의 행동과 같은 문제들도 있었다. 내부 회의에서 수많은 문제들이 제기되었지만 이 문제들을 모두 해결하는 것은 불가능했다. 때로는 현실적으로 바라보면서 일부 문제들은 안고 가야할 필요도 있었다. 그게 실력적인 문제이든, 시간적인 문제이든 그건 지금 중요하지 않다. 결국 우리는 서비스를 완성해야 한다. 완벽한 서비스는 없다. 하지만 완벽해지려고 노력할 수는 있다. 노력을 하려면 일단 만들어야한다. 그러니까 때로는 치명적인 문제가 아니면 안고 끝을 보긴 해야 한다는 것을 알았다.
마무리
회고를 적기는 했는데 이게 회고인지… 그냥 부캠하고 나서 느낀 생각 주저리 주저리 적어놓은건지 잘 구분이 안가기는 한다. 하지만 그만큼 가식을 없애고 가장 있는 그대로 느낀 것들을 적었다.
내가 2년 전에 심리상담을 받으면서 들었던 말이 있다.
‘사소한 성공 경험을 하나씩 하는 것이 중요하다.’
부캠정도의 내용이 사소한 성공 경험은 아니지만 나는 또 새로운 도전 한개를 끝까지 마쳤다. 여러개의 할 수 있는 것들이 생겼고 더 해보고 싶은 많은 것들이 생겼다.
이제는 실전
1년 전의 나와 지금의 나를 비교해 볼 수 있는 아주 좋은 기회가 생겼다. 1년 전 AI Rush를 참가했을 때는 아무것도 모르는 운 좋은 사람이었다. 이제는 아니다. 대회, 프로젝트를 경험하면서 어떻게 공부하고, 모델을 사용하는지를 배웠다. 잘 배운 것을 이제는 잘 녹여내고 적용해 볼 기회다. 이번 AI Rush도 너무 기대되는 것이 지난 AI Rush 2021에서 내 인생의 방향점을 잡을 수 있었다. 과연 이번에는 어떤 방향점을 줄 지 기대가 된다.
진짜 마무리
사실 어느정도 취업 결과가 나오고 회고를 적으려고 했다.
Comments powered by Disqus.