ACM RecSys Challenge 2023 FINAL
ACM RecSys Challenge 2023이 올해 3월 말에 시작해서 11월 말에 드디어 모든 것이 다 끝났다. 길고 길었던 이 여정을 이 글 하나로 전부 정리해보고자 한다.
Summary
- ACM RecSys Challenge 2023 7th Place
- ACM RecSys Paper Accept: Capturing Performance and Privacy by Assembling Avengers of Online Advertising
- ACM RecSys 학회 참가
- 수상과 논문 제출로 코르카 추천시스템 역량 입증
- 대회 과정 중에서 추천모델링 다양한 테크닉 연구 및 실험, 속도 향상
- 학회에서 이론이 아닌 실전 위주의 인사이트 공부. 메타, 넷플릭스, 구글 등 최고의 추천시스템 회사들의 관심 분야, 생각, 인사이트.
- 앞으로 코르카가 나아가야 할 길에 대한 가이드
- 코르카 프로덕트 ADCIO 세일즈 확장
Timeline
2023.03.27: 코르카의 도전 시작
2023.06.23: RecSys Challenge 대회 종료 (7등)
2023.07.03: 코드 정리
2023.07.05: 논문 작성 시작
2023.07.15: 논문 제출
2023.08.03: Paper Accept
2023.09.15: 싱가폴 출발
2023.09.19: 코르카 역사상 첫 학회 발표
2023.09.22: 학회 종료
2023.11.14: 기사 발행
2023.11.22: 디스콰이엇 프로덕트 라운지 발표
Reference
이 글과 관련된 글들은 3개가 있다.
특히 코르카 팀 블로그는 참여한 팀원들끼리 인터뷰 형식으로 재미있게, 자세하게 구성했으니 꼭 읽어볼 만 하다.
이 글은 종합 후기 / 대회 후기 / 학회 후기 / 결론으로 나눠서 작성되었다.
1 종합 후기
7달 동안 이 챌린지에 참여했던 팀원 6명 (나 포함) 모두 정말 고생많았다. 이 대회를 시작하는 미팅에서 우리의 목표가 무엇이냐고 물어봤다. 다들 목표는 단 하나였다. "싱가폴"
싱가폴은 큰 의미를 담고 있었다. 한 자리 수 등수를 기록하고 논문을 제출해서 액셉이 되어야 갈 수 있기 때문이다. 솔직하게 그 때 당시의 목표 설정은 좀 과했다. 하지만 다들 할 수 있을 것이라고 진심으로 믿었다. 그렇게 진심으로 믿고 다 같이 원 팀으로 달려온지 어언 7개월, 우리의 목표들을 너무나 완벽하게, 성공적으로 이뤄냈다. 개인적으로도 물론 만족스러운 성과지만 코르카에서 팀으로 이뤄낸 첫 외부 실적이라는 것이 참 뿌듯하고 감사했다.
코르카에서 다양한 도메인을 시도하다 광고 도메인에서 자리 잡고 1년 가량 추천시스템만을 연구하고 개발한 팀이었다. 우리가 객관적으로 어느 정도 수준인지 검증받고 싶었고 이 성과를 토대로 우리 팀을 더욱 자랑하고 많은 똑똑이들을 데려오고 싶었다. HR 뿐만 아니라 세일즈에도 도움이 될 것이라 믿었다. 단순히 말로만 잘하는 것이 아니라 세계 무대에서 검증받은 결과니까. 앞으로 이 성과가 코르카에 지속적으로 유의미한 도움을 줄 수 있을 것이라 믿는다.
개인적으로는 대회와 학회를 치루면서 오랜만에 본업으로 돌아갔다. 지난 1년간 인력 부족의 문제로 ML보다는 개발 쪽에 집중했었는데 개발 쪽 인력이 많이 보충되면서 ML로 돌아왔다. 오랜만의 전처리, 피처 엔지니어링, 모델링, 분석 등 ML사이클 전반적으로 실행하는 것이 재미있었다. ML 업무들에 다시 익숙해지면서 LLM쪽에서의 연구를 시작하기 위한 첫걸음이 되었다.
지금까지 코르카에서 추천시스템을 구축하면서 온라인으로만 배웠던 자료나 영상들을 직접 보고 느끼니 느낌이 확 달랐다. 학회에서 다양한 사람들과 만나고 대화하면서 색다른 자극을 많이 받았다. 학회의 경험을 토대로 자신감을 갖고 사람들과 인사이트를 공유하면서 인더스트리에서 만나는 수많은 난제들을 직접 풀어내고 사회에 기여하자! 라는 결론을 내렸다.
2 대회 후기
3달 동안 모두가 정말 고생많았다. 회사에서 배려를 해줬음에도 불구하고 업무를 손에서 놓을 수 없었기에 평일 저녁, 주말까지 쓸 수 밖에 없었다. 마지막 2주는 업무도 올스탑하고 14일 내내 죽어라 달렸다. 대회가 끝났을 때 후회가 없고 싶었다.
자세한 후기는 팀 블로그를 상세히 설명되어 있다. 여기에서는 내가 더 강조하고 싶은 내용들을 다룰 것이다.
새로운 모델
- 과거에 이런 tabular 대회에선 대체로 모델을 직접 개발할 일이 없었다. 다양한 모델을 시도해보고 피처 엔지니어링을 위주로 했다. 그것이 제일 성능이 좋았고.
- 이번에는 그러지 않았다. 우리가 도전해본 여러 모델들 중 각각의 장점이 필요한 상황이 닥치자 그 모델들을 조합하여 세상에 없던 새로운 모델을 개발한 것이다. 이 모델은 우리의 성적에 지대한 공헌을 했다. 이 모델을 개발한 팀원에게 리스펙을 보낸다.
A to Z
- 성과의 제일 큰 이유로 모두가 이를 꼽는다. 6명의 모든 팀원들이 머신러닝 사이클을 전부 수행할 수 있었고 A to Z가 가능했다. 대회를 시작하기 전 우리가 vertical하게 롤을 나눌지, horizontal하게 롤을 나눌지 논의한 적이 있다. vertical하게 롤을 나눈다는 것은 각자 독립적으로 다양한 시도를 최대한 많이 해보는 방법이고, horizontal하게 롤을 나눈다는 것은 분석, 데이터 전처리, 모델링 등 각각의 역할마다 롤을 나누는 것을 의미한다. 과거의 대회 경험들을 토대로 vertical하게 하자고 정했고 이는 매우 주요했다. 후반 우리의 속도를 극한으로 높일 수 있는 데에는 이것이 제일 컸다.
동기부여
- 대회 운영이 처음부터 끝까지 참 아쉬웠다. 3달의 시간도 생각보다 꽤 길었다.초심을 잃기 쉬웠다.
- 누군가 흔들릴 때마다 다 같이 마음을 다잡고 끝까지 최선을 다해 대회에 임했다.
- 후회없이 대회를 치루자! 라는 생각이 우리를 움직이게 만들었다.
- 서로서로 밀어주고 끌어주고 당겨주고 일으켜줬던 우리 팀원들 모두 정말 고생많았다.
공유 방식
- 대회 초반 우리는 성급한 추상화를 했다. 실험을 더욱 쉽게 많이 하고자 추상화를 하고 실험 파이프라인을 개발했으나 오히려 이에 맞게 개발을 하느라 속도가 더 늦어지고 있었다.
- 꽤 많은 시간을 투입했음에도 불구하고 과감하게 버리고 초심으로 돌아갔다. 깃헙을 아예 쓰지 않았다. 우리는 모든 코드 공유를 노션으로만 했다.
- 깃헙은 하나의 코드 소스를 토대로 모두가 하나의 프로덕트를 만들 때 유용한 프레임워크였다. 각자 병렬적으로 최대한 많은 시도를 빠르게 하기 위해선 하나의 코드 소스가 아닌 독립적으로 실행 가능한 코드 파일 단위로 공유하는 것이 더욱 빨랐다.
- 그 대신 노션에 코드마다 모든 스코어를 기록하고 태깅했다. 일정 시간이 지난 후 각자가 기록한 리더보드를 다 같이 보면서 향후 방향성을 쉽게 정할 수 있었다.
3 학회 후기
첫 2일은 워크샵, 이후 3일은 포스터 형식이었다. 첫 2일에선 동시에 3-4개의 워크샵이 동시에 진행된다. 선택적으로 가서 들을 수 있는데 보통 같은 시간대에 내 관심사가 1개 정도 있어서 듣고 싶은 것들을 거의 다 들을 수 있었다. 이후 3일은 큰 공간에 포스터가 2-30개 정도 배치되고 저자들이 서 있어서 설명을 들을 수 있었다. 수동적으로 들을 수 밖에 없었던 첫 2일과는 다르게 좀 더 interactive하게 대화하고 인사이트들이나 논문에 적혀있지 않은 배경들에 대해 자세하게 들을 수 있어서 상당히 재미있었다.
많은 사람들과 대화해보자!
- 낯선 사람들과 말하는 건 I에게 언제나 힘들지만 그래도 선택적으로 E 모드를 켤 수 있기에 최대한 극한으로 켜고 많은 사람들과 대화를 나눠보고자 노력했다.
- 제일 기억에 많이 남는 건 메타 분과의 대화였다. 워크샵 때 발표하신 분이었는데 발표가 끝나자마자 달려가서 오프라인과 온라인의 성능 갭에 대한 문제와 AB Test의 디테일들을 여쭤봤다. 내 영어 이슈로 대화가 원활하진 않았지만 내 짧은 영어를 악으로 깡으로 잘 이해해주셨고 나를 배려해서 천천히 말해주셔서 서로 말하고 싶었던 맥락은 이해했던 것 같다. 친절하게 말씀해주시기도 했고 답변도 너무 도움이 많이 되어서 기억에 제일 많이 남는다.
- 두 번째는 대학교 학생이었다. 자유 시간 때 다들 밖에서 삼삼오오 대화하고 있는데 대화할 사람을 찾고 있는 눈치길래 냅다 말을 걸었다. 서로의 백그라운드에 대해 쭉 설명하고 어떤 것에 관심있는지 스몰톡을 10분 이상 했던 것 같다. 중요한 내용은 없었지만 그냥 누군가와 10분 이상 영어로 대화한 사실이 재밌었고 신기했다.
인더스트리 vs 아카데미아
- 워크샵 중에서 Video RecSys 워크샵이 단연 인상깊었다. 구글, 메타, 넷플릭스 등이 발표한 워크샵이었는데 왜 대기업인지 알 수 있는 발표였다. 무엇을 말하고자 하는지 명확했고 문제 정의가 명확했다. 반드시 필요한 문제를 명확하게 정의하고 나니 그 뒤의 메소드에도 더욱 더 집중이 될 수 밖에 없었다. 인더스트리에 있는 회사이니만큼 이론보다도 실전 위주의 발표였다. 그렇기에 우리에 더 도움될 수 있는 내용들이었다.
- Video RecSys 외에도 다양한 워크샵들이 있었는데 대체로 아카데미아가 많았다. 아카데미아는 인더스트리 대비 GPU와 데이터가 부족하다. 그 대신 좀 더 이론적인 것을 연구할 수 있는 기회가 주어진다. 다만 추천시스템이라는 분야 특성상 실생활의 데이터가 아니면 무의미하기에 데이터 부족 문제가 더욱 대두되고 이론적인 것의 중요성이 크게 존재하지 않는다. 그렇기에 아무래도 학회에서도 인더스트리 쪽 발표에 더 눈이 갔다.
- 인더스트리 쪽에서는 확실히 모델링보다 시스템에 대한 강조가 많이 있었다. 대체로 iteration 자체를 더욱 빠르고 많이 돌릴 수 있어야 하는 시스템이 더 중요하다고 생각하고 있었다. 그 시스템이 개발되어 있으면 모델링과 성능은 따라온다.
LLM + Recommendation
- 학회를 가기 전 우리는 Conversational Recommender System에는 관심이 있었지만 LLM +Recommendation에는 크게 관심이 없었다. 학회에서 이에 대한 생각에 확신을 갖게 되었다.
- LLM을 추천에 접목시키려는 시도들이 굉장히 많았는데 only-decoder 모델을 추천에 접목시킨 사례 중에서 성공적인 사례를 단 하나도 보지 못했다. 기존의 0.78xx를 0.79xx로 올렸다. 정도의 느낌들이었다. 그러나 encoder를 결합하거나 cold-start 문제에 접목한 사례는 꽤 유의미한 개선이 있었다. decoder는 이해가 아닌 생성에 초점이 맞춰져 있고 encoder는 생성이 아닌 이해에 초점이 맞춰져 있다. 추천시스템에 필요한 것은 과거의 데이터를 토대로 유저 취향에 대한 이해인 것이고 그렇기에 decoder 기반의 모델인 GPT보다 encoder 기반의 모델인 BERT가 더욱 유의미했다. 또한 LLM이 아무 데이터가 없더라도 일반적인 상식들을 잘 알고 있기에 cold-start 문제에서는 꽤나 유효했다.
문제 정의와 다양한 도구
- 재밌는 발표, 재밌는 포스터는 문제를 보자마자 어떤 문제인지, 왜 풀어야 하는지가 명확했다. 재미없는 발표, 재미없는 포스터는 문제 이해만 하다가 끝났다. 문제가 명확하면 메소드를 어떻게 정해야 할지 더 명확해지고 문제를 풀었을 때의 임팩트가 확실하다. 특히 구글, 메타, 넷플릭스 등 최고의 추천시스템 회사들은 항상 문제가 명확했고 문제 정의에 많은 시간을 쏟았다.
- 어떠한 문제든 풀기 전에 반드시 문제를 정말 명확하게 정의해야 함을 깨달았다.
- 학회에서 다루고 있는 문제들이 정말 다양했다. Reciprocal, Short-Video, Constraint-based, Next-Basket, Sequential, Conversational, Multi-modal, Session-based 등 결국 다 추천시스템인데도 엄청 많더라.
- 문제가 정말 다양했는데 그만큼 도구도 정말 다양했다. 전혀 다른 문젠데 같은 도구를 사용하기도 하고, 정말 유사한 문젠데 완전히 다른 도구를 쓰기도 했다. 언제 어떤 도구를 쓸 수 있느냐를 잘 알고 있는 것이 참 중요하다는 생각을 했다. Contrastive Learning, Graph, RL, Transformer, Supervised Learning 등 정말 다양한 도구를 사용했다. 이러한 도구들을 평소에 지속적으로 공부해두고 익혀둬야 나중에 필요할 때 제때제때 써먹을 것이다.
자신감
- 정말 많이 배우고 많은 인사이트를 얻었지만 한편으로는 별거 없었다. 연구 그냥 쫄지 않고 몰입해서 하면 나도 성과낼 수 있다라는 걸 더욱 확신 갖게 된 계기가 되었다. 다 똑같은 사람이라는 생각이 들었다. 나라고 못할 게 뭐야. 프로덕션에서 개발도 개발이지만 그 과정 속에서 문제를 만나면, 그리고 밖에서 아무도 풀지 못한 문제라면 내가 직접 풀어야지 라는 마인드를 더욱 확실히 갖게 됐다.
사회에 기여하자!
- 이러한 다양한 인사이트들을 통해 최종적으로는 "사회에 기여하자!"라는 결론을 내렸다.
- 인더스트리에서 훌륭한 프로덕트로도 기여할 수 있지만 리서치로도 기여하고 싶다. 내 기여 방식을 하나로 정해두고 싶진 않다.
- RecSys 학회를 한 줄 요약하면 다음과 같다.
- 자신감을 갖고 사람들과 인사이트를 공유하면서 인더스트리에서 만나는 수많은 난제들을 직접 풀어내고 사회에 기여하자!
4 결론
7개월 동안 같이 달려준 우리 팀원들에게 감사하고, 이 여정을 이끌어준 우리 캡틴에게 감사하고, 이 여정을 응원하고 밀어준 대표님께 감사드린다.
이 실적을 기반으로 코르카의 리테일 미디어 솔루션 ADCIO가 폭풍성장했으면 좋겠다. 검증받은 추천시스템 역량을 토대로 리테일 미디어를 하고 싶어하는 많은 클라이언트와 같이 만들고 싶어하는 분들이 왔으면 한다.
내 인생에서 꽤나 큰 이벤트였고 이러한 성공의 경험을 토대로 더욱 더 큰 꿈을 꿀 수 있게 되었다. 코르카도 나도 다음의 성공은 무엇이 될까. 어디까지 성장할 수 있을까.