국문과 유목민

2024 당근 테크 밋업 후기 (DATA/ML) 본문

기술 견문록/컨퍼런스

2024 당근 테크 밋업 후기 (DATA/ML)

논곰 2024. 10. 13. 17:48

 매년 3~4개의 기술 컨퍼런스 참여를 하게 되는 것 같다. 컨퍼런스를 참여해 발표를 들어보면, 실제 현업에서 겪은 문제와  경험, 기술을 공유해주는 강의를 듣다보면 꽤 많은 인사이트를 얻을 수 있는 것 같다. '이 내용들은 우리가 겪고 있는 문제에 도입해볼 수 있겠는데?'라거나 '문제에 대해 저렇게 접근할 수도 있겠구나'라는 생각이 드는 것 같다. 그러나 이런 생각들도 컨퍼런스가 지나고 얼마 지나면 '그런 게 있었지...'라고 하며 기억에서 희미해지게 되는 것 같다. 그래서 지금 당장 쓰지는 않을지라도 이때 생각하고, 얻었던 인사이트를 조금이라도 내용을 정리해두면 좋을 것 같아서 앞으로 컨퍼런스에 참여한 이후 후기를 조금씩 남겨보고자 한다. 

2024 당근 테크 밋업 후기

https://tech-meetup.daangn.com

참여 계기

 당근 테크 밋업은 커뮤니티에서 정보를 처음 접하게 되었다. 회사 도메인과 일치하며, 세션 내용도 꽤 많은 인사이트를 얻을 수 있을 것이라는 생각해 지원했다. 참가자는 추첨제로 선정되는 구조로 알고 있었는데, 운이 좋게 당첨이 되어 외근을 내고 참여하게 되었다. 내가 들은 트랙은 C 트랙 'DATA/ML'파트였고, 평소 컨퍼런스에 기대하는 것보다 더 좋은 정보를 얻을 수 있었다고 생각한다. 해당 세션의 타임 테이블은 아래와 같고, 이 중 몇 가지 세션에 대해서 정리를 해보고자 한다. 

 개인적으로 인사이트를 얻었던 세션 3가지 정도에 대해 정리해보고자 한다.구성 내용에는 간단한 개요와 핵심적인 내용 그리고 여기서 얻었던 개인적인 인사이트 정도를 4문단으로 나눠 정리하겠다. 

https://tech-meetup.daangn.com/

세션 요약

LLM과 임베딩 유사도로 게시글 탐지

https://tech-meetup.daangn.com/

 해당 세션은 처음에 진행된 세션이었으며, 'LLM과 임베딩 유사도로 업자를 탐지'하는 내용의 세션이었다. 해당 세션의 경우 당근마켓에서 문제로 정의한 업자 게시글을 잡아내는 과정에 대해 공유해준 세션이었다. 문제 정의부터 기존 솔루션 그리고 새로운 솔루션을 도입하게 된 배경과 과정에 대해 다루었다.

 빠르게 변하는 업자들의 게시글 등록 패턴을 지도학습 모델만을 통해 탐지 및 제재하는데 한계가 있어, 이를 개선하기 위한 방법으로 LLM과 임베딩 유사도를 활용했다는 내용이 주요 골자다. 임베딩은 '유사한 업자의 글을 '하는 Task에 사용했고, LLM은 '빠르게 패턴이 변하는 업자의 게시글을 분류'하는 데 활용했다고 이해했다. 

 여기서 LLM에는 Zero-shot with Auto Generated Prompt를 활용했다고 한다. 해당 방법은 Stage 1과 Stage 2 과정을 거쳐 업자 게시글을 탐지하는 서비스를 개발했다 (아래 설명). 이를 완전 자동화해 서비스화 했다고 하며, 이를 통해 전문판매업자 제재 계정 중 약 30%가 제재되었고, 사용자 신고 수 추세도 크게 줄었다고 공유해주었다.

  • Stage1: 인간의 맥락 파악 과정을 모방해 특징 추출
    (일반 사용자 게시글 100건과 전문판매업자 게시글 100건을 통해 LLM이 Stage1 Prompt 제작)
  • Stage2: LLM이 생성한 Prompt를 사용해 게시글 탐지
    (신규 게시글을 실시간으로 LLM에 제공하고 분류하도록 지시)

 해당 세션을 들으면서, 이러한 방법을 실제 현업에서 유사한 Task에 해볼만할 것 같다는 생각이 들었다. 특히, 겪고 있는 문제의 특성이나 데이터의 특성이 유사하기 떄문에 벤치마킹 해볼만 할 것 같았다. 또한, LLM을 통해 프롬프트를 만드는 부분도 꽤나 흥미로웠고, 단순히 분류를 하는 것이 아니라 특성과 유형을 파악하기 위해 가이드를 주는 부분도 신선했다. 그리고 LLM을 활용하면 기존 지도학습 대비, 학습에 필요한 데이터에 절대적인 양이 줄어들 수 있다는 점은 데이터를 직접 만들어야 하는 엔지니어들에게 가장 좋은 부분이지 않았을까 싶었고, 이는 LLM의 또 다른 셀링 포인트가 아닌가 생각이 들었다.

홈피드 후보모델 선정 알고리즘

https://tech-meetup.daangn.com/

 해당 세션은 당근의 홈피드가 추천되는 과정을 소개해주는 세션이었다. 홈 피드의 추천 과정 및 후보모델을 선정하는 과정에 대해 공유해주며, 학습 및 추론 파이프라인에 대한 설명과 이를 고도화하기 위해 시도한 방법들에 대해서도 다루었다.

 당근의 홈 피드는 전체 아이템 중 후보를 생성 후 이를 랭킹을 매겨 노출 순서를 결정한다고 한다. 이때, 후보를 생성하는 후보모델의 구조와 학습 및 환경 구축 과정에 대한 설명이 주요 내용이었다, 후보 모델은 Two-Tower 모델로 Query 모델과 Candidate 모델로 구성되는데, 두 가지 모델 모두 임베딩으로 인코딩을 하고 Contrastive Learning을 활용해 임베딩 간 유사도를 학습한다.

 추가적으로 후보모델 파이프라인은 범용성 및 편의성 등을 고려해 새로 구축했으며, 이를 통해 Configurable 하게 프로세스를 관리할 수 있게 됐다고 한다. 그리고 다양한 지면에 대해서 후보모델을 만드는 데에도 시간을 많이 줄일 수 있게 됐다고 공유해줬다.

 해당 세션을 들으면서 현업에서 Contrastive Learning을 사용해서 모델을 개발하고 있는 사례를 보게 된 것 같아서 좋았다. 특히, 이를 추천에 활용하기 위해 후보모델을 만드는 과정, 파이프라인 구조와 이를 구현하기 위해 한 시도들에 대해서 공유해 준 부분도 좋았다. 이를 통해 실제 이러한 유사도 서비스를 계획할 때 레퍼런스로 참고할 수 있을 것 같다는 생각을 했다. (개인적으로 다른 활동 때문에 깊게 듣지 못한 것 같아 추후 유튜브에 풀리면 다시 한 번 살펴보고자 한다.)

벡터 기반 시멘틱 서치 (EBR)

https://tech-meetup.daangn.com/

 해당 세션은 '임베딩 벡터를 활용한 시멘틱 서치'와 관련된 내용의 세션이었다. 시멘틱 서치를 활용하면 좋아지는 장점과 학습 방법 및 시행착오와 개선 과정 등에 대해서 공유해주는 세션이었다. 

 기존 키워드 검색이 가지는 한계를 임베딩을 활용한 시멘틱 서치를 통해 개선할 수 있으며, 이를 통해 키워드가 등장하지 않아도 연관된 다른 게시글도 검색을 할 수 있게 된다고 얘기한다. 이때 '검색어'와 '중고거래 물품'은 다른 형태의 정보를 갖고 있기 때문에 각자 다른 임베딩 모델을 사용해야 하기에 Two-Tower 모델을 활용했다고 한다.

 그리고 이 모델들 간 유사도를 학습하기 위해 '키워드로 검색 후 선택한 상품 게시글 중 채팅이 발생한 데이터'를 학습 데이터로 선정했다. 다만, 이러한 상황에서 Long Tail 케이스에 대해 성능이 떨어지는 현상을 확인했고, Fuzzy match 로직을 활용해 추가 학습이 필요한 데이터를 파악해 '클릭 데이터'를 추가해 학습을 진행했다고 한다. 그리고 이를 통해 롱테일과 숏헤드 검색어 모두에 잘 작동하는 시멘틱 서치 Retrieval 모델을 만들 수 있었으며 결론적으로는 검색 정확도가 상승했음을 공유해주었다.

 해당 세션을 들으면서 " '검색어'와 '중고거래 물품'은 다른 형태의 정보를 갖고 있기 때문에 각자 다른 임베딩 모델을 사용해야 한다"고 하는 부분에서 인사이트를 얻었던 것 같다. 기존에 임베딩을 활용한 유사도 비교 Task를 한 경험이 있었는데, A와 B를 비교하면서 이를 고려하지 못하고 같은 모델을 활용했던 경험이 생각났다. 그렇다보니 추후 관련 Task에 대해 Two-tower 모델 구조를 활용해 보완해 볼 수 있겠다는 생각을 했다. 다만, 이를 구현하기 위해서는 키워드와 상품 간 학습 데이터가 필요할 것이기에 이는 조금 더 고민을 해봐야 할 부분일 것 같다. 또한, 위에 작성하지는 않았지만, 평가를 위한 데이터를 만드는 과정에서 '라벨링 프롬프트 튜닝'을 통해 평가 데이터를 Augmentation 한 부분도 있었다. 이는 내가 꽤 관심을 두던 부분이었기에 추후 이를 활용해볼 수 있지 않을까 생각했다. 

후기

 다른 트랙은 어땠을지 모르지만, 내가 들었던 'DATA/M'L 트랙은 개인적으로 꽤 많은 인사이트를 얻을 수 있는 시간이었다. 전체적으로 ML 관련 세션들은 임베딩 벡터를 활용한 유사도 검색에 관한 내용이 주가 되었는데, 문제 정의와 문제를 해결하기 위해 도입한 방법들에 대한 과정을 잘 공유해줬다고 생각했다. 그렇다 보니 이를 통해 다양한 방법 및 시행착오들에 대해서 인사이트를 얻을 수 있었다. 추가적으로 단순히 모델을 만드는 것보다는 '문제에 대한 명확한 인식 후에 이를 해결하기 위한 방법이 나와야 설득력이 생긴다'는 말을 다시 한 번 느끼게 된 시간이었다. 그리고 '역시 머신러닝 엔지니어도 단순히 모델링 능력뿐만 아니라 파이프라인이나 아키텍처 설계 능력도 계속 가꿔나가야 하겠구나'라는 생각도 들었던 컨퍼런스였다. 개인적으로는 5시간 정도 진행된 생각보다 짧은 컨퍼런스였지만, 꽤 많은 것을 얻을 수 있었던 것 같아서 만족도가 높았다. 

(참고로 추후 '당근 테크' 유튜브에 관련 영상이 올라온다고 하니 추후 다시 한 번 들어보는 것도 좋을 것 같다)