ML… 좋아하세요?
안녕하세요. 머신러닝 엔지니어 에디입니다.
제가 라이너 팀에 합류한지도 벌써 3개월이 지났는데요, 그간 앱과 웹이 개편되고 LINER AI 기능이 추가되는 등 짧은 시간 사이 저희 프로덕트에 많은 변화가 있었습니다. 빠르게 발전해나가는 라이너 팀의 속도에 감탄하며, 저도 두 가지 종류의 추천 모델을 개발하고 배포하여 추천 콘텐츠의 퀄리티를 높이는 데에 집중했는데요.
이 이야기는 차차 전달드리도록 하고, 이번 글에서는 제가 입사하기 전 회사에 기대했던 바와, 관련해서 라이너 ML 플래닛에서 일하며 느낀 점들을 공유드리고자 합니다.
라이너 ML 플래닛만의 매력
여러분이 머신러닝 엔지니어가 된다면 어떤 조건을 갖춘 팀에서 일하고 싶으신가요?
뛰어난 실력을 가진 동료 ? 빵빵한 서버비 지원 ?
다양한 조건들이 제시될 수 있을 것 같은데요. 물론 뛰어난 실력을 가진 동료나 빵빵한 서버비 지원도 중요하겠지만, 제가 지난 3개월간 느낀 라이너 ML 플래닛만의 매력은 다음과 같습니다.
💡 라이너는 머신러닝 자체가 프로덕트의 핵심이 되는 만큼, 최신 ML 기술을 적극적으로 적용하며 끊임없이 기술 발전을 추구하는 인재들이 모인 팀입니다.
라이너는 사람들이 더 빠르게 똑똑해질 수 있게 돕는다(Help People Get Smart Faster)는 미션을 달성하기 위해, 검색 혁신과 추천 기술 고도화에 집중하고 있습니다. 특히 최근에는 Generative AI를 활용한 LINER AI를 출시하여 필요한 정보를 정확하고 빠르게 찾을 수 있도록 돕고, 유저가 수집한 정보들을 바탕으로 관심사에 맞는 콘텐츠를 더 잘 추천해줄 수 있는 모델을 만들어나가고 있습니다. 이 과정에서 Pinterest, Spotify 등 기업에서 발표한 논문과 RecSys, SIGIR, WWW 등 추천 관련 학회에 게재된 최신 논문을 읽고 추천 시스템을 빠르게 구현하여 저희 서비스에 적용해보곤 합니다.
또 업계 트렌드를 지속적으로 파악하기 위해 슬랙에 엔지니어링 뉴스 채널을 만들어두고 있고, LinkedIn, Twitter 같은 SNS에서 접한 흥미로운 업계 소식들을 팀원들에게 공유하는 것도 라이너 팀만의 좋은 문화입니다. ChatGPT가 출시되고 얼마 지나지 않아 LINER AI 기능을 만들어 배포할 수 있었던 것도 최신 기술 트렌드를 파악하고 빠르게 적용해보는 문화 덕분이라고 생각합니다.
💡 라이너는 새로운 모델 개발과 배포를 신속하게 이루어내고 있으며, 사용자 피드백을 즉각적으로 반영하여 지속적으로 사용자 경험을 개선해나가고 있습니다.
좋은 모델을 개발하고도 실제 유저들이 사용하는 서비스에 배포되기까지 까다로운 절차를 통과해야 한다면 엔지니어 입장에선 그 답답함이 클 것입니다. 하지만 라이너에선 그런 걱정을 할 필요가 없습니다. 저희는 개발한 모델을 빠르게 실서비스에 배포하여 유저의 반응을 살펴보고 성능을 개선해나가기 때문입니다.
모델링을 하면서 때때로 ‘내가 만든 모델이 과연 유저에게 어떻게 보여질까?’하는 생각이 들곤 합니다. HR@K, NDCG@K 같은 오프라인 지표가 잘 나온다고 해도 서비스에 적용됐을 때 어떤 추천 결과가 나올지 알기가 어렵다는 갑갑함이 있었는데요. 라이너에서 첫 모델을 개발한 후 어떻게 성능을 더 높일 수 있을지 고민을 하던 와중에 팀 동료이신 카터가 “Done is better than perfect”를 외치시며 모델을 바로 배포해보자고 하셨습니다. 이 말을 듣고 모델을 배포한 후, 팀원들의 홈탭 추천 결과를 정성적으로 살펴보았더니 제 아이디어가 사용자 경험에 어떤 영향을 주는지 한 눈에 알 수 있었고, 개선이 필요한 부분을 파악해 모델을 발전시킬 수 있었습니다.
간단한 아이디어를 PoC(Proof of Concept)로 만들어보는 경우도 자주 있는데요. 최근의 예시를 들어보면, ‘유저들에게 웹 문서 콘텐츠 뿐만 아니라 유튜브 영상 콘텐츠를 추천에 섞어주면 어떨까?’ 하는 아이디어가 떠올라 그날 바로 유튜브 콘텐츠를 추천해주는 시스템을 구축해보았습니다. 그리고 이를 바로 배포하여 추천 퀄리티가 괜찮은지, 앞으로 추천 탭에 문서와 영상을 섞을 만한지 그 가능성을 빠르게 확인해보기도 했습니다.
💡 라이너는 전세계 160개 국에서 1,000만 명 이상의 유저들이 사용하는 글로벌 서비스로, 거대한 스케일의 데이터를 활용해 정교한 모델 학습 및 결과 분석을 이끌어내고 있습니다.
모델링에 있어서 양질의 데이터가 중요하다는 사실은 잘 알고 계실텐데요, 라이너는 매일 쌓이는 엄청난 양의 데이터를 자연어 처리, 추천 모델링과 유저 행동 분석에 활용하고 있습니다. 특히 BE(Browser Extension)에서 발생하는 데이터는 유저가 직접 하이라이트/스크랩한 콘텐츠를 담고 있어 유저의 자연스러운 정보 탐색 여정을 따라갈 수 있다는 점에서 더욱 의미가 있습니다.
최근에는 앱과 웹이 개편되면서 온라인 피쳐 스토어를 구축하고 유저 행동 로그를 실시간으로 적재할 수 있게 되었습니다. 따라서 앞으로는 콘텐츠 체류 시간과 같은 implicit 피드백들을 반영하여 추천 콘텐츠를 제공해드릴 수 있을 것 같아 저도 더욱 기대가 되는 바입니다.
3개월이 지나 되돌아본 ‘내가 꿈꾸는 회사’
라이너 팀에 합류하게 된 첫 날에는 ‘우리가 꿈꾸는 회사’라는 것을 작성하게 됩니다. 팀원들이 생각하는 이상적인 회사의 모습들을 서로 공유하고 그런 바람직한 방향으로 회사를 함께 만들어나가기 위함인데요, 저는 당시 다음과 같은 기대를 품고 있었습니다.
- ‘매일 아침 출근하는게 즐거운 회사’
- ‘개인이 성장하면서 조직도 함께 성장할 수 있는 회사’
- ‘실력 뿐만 아니라 인간적으로도 훌륭한 동료들이 있는 회사’
- ‘다같이 최선을 다한 만큼 성과도 잘 나와 일에 대한 동기부여가 되는 회사’
그리고 3개월이 지난 지금 이를 되돌아보니 제가 꿈꿨던 것들이 라이너에서 어느새 현실로 다가왔다는 것을 알 수 있었습니다.
프로덕트에 애정을 가지고 열심히 일하는 팀원들과 함께 하다보니 매주 빠르게 성장하고 있는 제 자신을 발견할 수 있었고, 개발한 두 가지 모델을 성공적으로 배포하여 라이너의 추천 시스템을 고도화시킬 수 있었습니다. 또 업무적으로나 인간적으로 배울 점이 많은 팀원들과 함께하니 성장에 대한 동기부여가 엄청나고 매일 아침 출근하는 것이 즐겁습니다😀
마치며
현재 라이너 ML 플래닛에서는 저를 포함한 3명의 ML 엔지니어가 추천 시스템 및 자연어처리 모델링을 담당하고 있고, 이 모델이 서비스에 잘 녹아들 수 있도록 데이터 엔지니어 한 분과 백엔드 엔지니어 한 분이 시스템을 구축해주고 계십니다. 5명의 적은 인원이지만 그만큼 한 명 한 명의 역할이 중요하고, 앞서 말씀드린대로 빠르게 새로운 기술이나 아이디어들을 적용해보며 큰 임팩트를 내는 데에 집중하고 있습니다.
아직 저희가 풀어야 할 문제는 많습니다. 개인화 성능을 높일 수 있는 implicit 피드백을 더 발굴하여 동일한 문서를 보았더라도 유저 특성에 따라 추천 콘텐츠가 달라지도록 하는 personalized re-ranking 모델을 도입해볼 예정이고, 콘텐츠에 카테고리를 부여하거나 콘텐츠 품질을 판단할 수 있는 기술을 내재화하는 작업도 진행 중에 있습니다. 또 최고 수준의 API 서빙 인프라를 갖추고 모델의 재학습 파이프라인을 구축하는 작업도 해결해야 할 과제로 남아있습니다.
하지만 저는 라이너 팀원들과 함께라면 어떤 문제든 해결할 수 있을 것이라고 확신합니다. 앞으로도 라이너에 많은 관심 부탁드리며, 블로그를 통해 다음에 소개드릴 이야기들도 기대해주세요!