RecSys Challenge
recsys2023 challenge가 6월 말에 종료되었다.
추천시스템 학회(ACM Recommender Systems)에서 매년 challenge를 연다. 스폰서를 모집하고 정해진 스폰서가 데이터셋과 문제를 제공한다. 캐글처럼 대회를 열게 되고 상위 3팀은 수상하게 되며 매년 challenge 참여 팀 중 10팀 정도 학회에 논문이 액셉된다. 이번에는 인도의 ShareChat에서 challenge를 열었다.
코르카의 ML 엔지니어 다섯 분과 함께 3월 말에 나가기로 정하고 4월부터 매주 일요일에 모였다. 평소에는 회사 일을 하고 주말에는 recsys를 병행하면서 3달간 진행했다. 마지막 2주는 회사 일 전부 스탑하고 6명 모두가 일주일 내내 하루종일 recsys만 했다. 그 결과 상당히 만족스러운 결과를 거두게 되었다. (최종 결과는 나중에 회사 블로그로~)
이 챌린지를 나가기까지 여러 고민들이 있었다. 회사에서 이 챌린지의 필요성, 나 개인에게 이 챌린지의 필요성 2가지 고민이었다. 전자는 쉬웠다. 우리는 추천시스템에 역량이 있는 팀이었고 우리의 프로덕트도 추천시스템 기반이기에 외부에서 입증 가능한 실적은 세일즈를 위해 반드시 필요했다. 나 개인에게 이 챌린지가 유의미할지는 꽤 고민이 되었다. LLM을 공부하고 있는 나에게 추천시스템 역량이 얼마나 도움이 될까. 3월 말 당시에 내린 결론과 현재 다시 생각해본 결론은 다르지 않다.
나는 기술에 대한 이해를 바탕으로 전세계의 수많은 사람들에게 큰 임팩트를 남기고 싶다. 소프트웨어 엔지니어로서 (물론 하드웨어나 오프라인 공간에도 관심은 항상 갖고 있다. 다만 5년 이내로는 소프트웨어의 범위를 벗어나진 않을 것 같다.) 다양한 소프트웨어 기술에 대한 이해가 필수적이다. 소프트웨어는 굉장히 신기한 속성을 가지고 있다. 소프트웨어의 새로운 버전(=패러다임)이 나오더라도 기존 버전(=패러다임)이 deprecated 되지 않는다는 점이다. 소프트웨어의 라이브러리나 프레임워크들은 전부 버전 업데이트될 때마다 기존 버전들이 deprecated되는 것을 생각해보면 의아한 점이다.
Software 1.0: 개발(알고리즘을 디자인함), Software 2.0: 머신러닝(데이터를 통해 알고리즘을 디자인할 수 있는 모델을 디자인함), Software 3.0: LLM(알고리즘을 디자인할 수 있는 프롬프트를 디자인함) 으로 Software 버전은 나뉘어진다.
높은 버전은 낮은 버전에 비해 더 추상화되고 더 사용하기 쉽다는 속성을 가지고 있지만 그만큼 더 비결정적이고 제어할 수 없다는 속성이 있다. 그렇기에 높은 버전이 낮은 버전을 모두 포함할 수 없고 소프트웨어를 개발할 때 1, 2, 3에 대한 지식이 모두 필요하게 된다.
현재 전세계적으로 LLM을 활용한 서비스들이 속속 등장하고 있지만 결국 유저 쿼리에 대해 상품을 추천하는 것의 핵심은 LLM이 아닌 vector search이며 이는 전통적인 Software 2.0에서의 non-tabular RecSys와 다를 바가 없다. 그런 관점에서 앞으로도 Software 2.0에 대한 역량은 여전히 중요할 것이고 오히려 이런 low-version software에 대한 역량이 차별점을 만들어낼 수 있지 않을까 싶다.
결론적으로 recsys challenge를 하면서 오랜만에 나간 tabular recsys 대회에서 이때까지 팔로업하지 못했던 테크닉들과 데이터 전처리, 데이터 분석, 피처 엔지니어링, 모델링 등 지금까지 테크리드로서 많이 하지 못했던 일들에 몰입함으로써 개인적으로 정말 많이 배운 대회였던 것 같다. 그만큼의 성과도 얻을 수 있게 되어 더 행복하다.
이 성과로 코르카의 기술력이 입증되었고 앞으로 더 큰 꿈을 많이 꿀 수 있게 되었다. 우리의 서비스, 프로덕트가 항상 P1이지만 기술력은 이 프로덕트의 가치를 증명할 수 있는 중요 방법 중 하나이며 이런 기술력에 대한 검증은 항상 같이 가야 한다고 생각한다.