무신사, 2023 Databricks Data+AI 컨퍼런스에 다녀오다

MUSINSA tech
MUSINSA tech
Published in
15 min readSep 21, 2023

--

안녕하세요, 무신사 테크입니다.

DATA + AI SUMMIT 2023은 현재 무신사에서 사용중인 서비스인 ‘Databricks(데이터브릭스)’에서 주최하는 글로벌 컨퍼런스인데요. 6월 26일부터 29일까지 총 4일간 샌프란시스코 Moscone 센터에서 열린 이 컨퍼런스에, 무신사 테크가 다녀왔습니다. Yay!

무신사 테크 구성원들의 성장을 지원하는 취지에서, 회사의 지원으로 5분의 데이터 전문가 머신러닝 엔지니어, 데이터 엔지니어, 데이터 사이언티스트가 무신사 테크 대표로 참석했어요. 마케팅 본부의 데이터마케팅실의 참여 인원까지 모두 7분이었는데, 총 참여 인원으로는 국내 회사 중 무신사가 가장 많았다고 해요.

생성형 AI (Generative AI)를 주제로 한 이 컨퍼런스는 총 250개 이상의 세션이 준비된 대규모 컨퍼런스로, 데이터와 AI의 미래에 대해 다양한 인사이트를 배울 수 있었던 좋은 기회였는데요. 이번 글에서 컨퍼런스에 다녀온 5명을 모시고, 인상 깊게 본 세션을 직접 소개해드릴게요.

5명의 데이터 전문가가 전하는 세션 하이라이트

데이터 엔지니어 박지혜님이 인상깊게 본 세션

저는 데이터 엔지니어로서, 키노트에서 공유되었던 데이터브릭스 내에서 데이터를 더 스마트하게 활용할 수 있도록 해줄 LakehouseIQ에 관한 내용을 소개드리고 싶어요. 데이터브릭스 내에 앞으로 오픈될 Assistant나 Vector search에 붙일 수 있는 Knowledge Engine이 바로 이 LackehouseIQ인데요. 데이터브릭스 내에 있는 Unity Catalog 나 Query뿐만 아니라 고객의 자사 조직도, 문서 등의 정보를 반영해서 학습한다는 특징을 가지고 있어요. 실제로 프롬프트(prompt)에서 사용하는 단어들은 그 문맥에 따라 다른 의미를 가지기 때문에, Open AI의 GPT같은 범용적인 모델로는 유의미한 결과를 얻기 어렵다는 단점이 있죠. 그래서 각자가 가지고 있는 데이터로 학습시킨 모델만이 유의미한 결과를 얻을 수 있는데, LakehouseIQ는 이런 경우에 활용하기 좋은 아이디어였어요. 그야말로 데이터와 AI를 함께 잘 활용할 수 있도록 도와주는 기능이라는 생각이 들었어요.

이 외에도, Mosaic ML이나 LangChain 등의 LLM(Large Language Model : 대규모 언어 학습 모델) 관련 솔루션들을 소개하는 세션도 기억에 남는데, 실제 프로덕트 개발 시에 참고할 소스를 많이 얻게 된 좋은 기회가 되었어요. 가령, 저희 팀에서는 LLM을 이용한 Natural Language to SQL 프로젝트를 진행할 계획에 있는데요. 간략히 설명하자면, JIRA를 통해 들어오는 데이터 추출 티켓의 상세 설명을 읽고 실제 동작하는 SQL까지 자동으로 생성하는 프로젝트인데요. 개발 과정에서 실제 테이블 정보 및 사내 용어를 학습 시키는 데 LakehouseIQ의 학습 방식을 이용하고, 여러 모델을 연결하는 과정에서 LangChain을 테스트해 볼 계획입니다. 벌써 기대돼요!

데이터 엔지니어 서지웅님이 인상깊게 본 세션

저는 주로 타사의 사례 및 새롭게 추가 되는 기능에 대해 설명해주는 세션에 중점을 두고 이번 컨퍼런스에 참여했는데요. 그 중, 아카마이(Akamai)라는 회사에서 준비한 세션 — Unleashing the Power of Interactive Analytics at Scale with Databricks and Delta Lake: Lessons Learned from Building Akamai’s Web Security Analytics Product (Databricks와 Delta Lake를 활용한 대규모 인터랙티브 분석을 강화하기: Akamai의 웹 보안 분석 제품 구축에서 얻은 교훈) 을 소개드리고 싶어요.

아카마이는 CDN과 클라우드 서비스로 잘 알려진 곳인데요. 이번 세션을 통해 아카마이의 Tomer Patel 와 Itai Yaffe 가 회사를 위해 Databricks의 Delta Lake를 사용하여 보안 분석 플랫폼을 구축한 경험을 간접적으로 배울 수 있었어요. 제가 속한 데이터플랫폼 팀은 데이터의 인입부터 분석까지 전 과정(End-to-End)을 담당하고 있기 때문에, 플랫폼을 직접 개발하고 구축한 경험을 나눈 이 세션을 통해 저희 팀에 적용할 수 있는 팁을 얻고자 했습니다.

카프카를 이용한 로그 수집과 Databricks를 이용한 Delta Lake에서의 데이터 분석이 이 플랫폼 시스템 아키텍처의 핵심이었는데요. 카프카에 데이터를 저장하는 일반적인 방식이 아닌, 데이터는 Azure blob storage 에 저장하고 데이터가 저장된 경로를 카프카에 저장하여 대규모 트래픽을 견딜 수 있도록 설계되어 있었습니다. 또한 아카마이의 시스템은 다양한 보안 로그들을 분석할 수 있게 해주고 실시간 정보에 기반하여 액션을 취할 수 있도록 설계되었습니다. 아카마이는 Databricks Photon을 활용하여 쿼리의 성능을 향상시켰고, Databricks SQL의 캐시 성능을 최적화 할수있도록 자체적으로 로드 밸런서를 개발했다는 것을 알 수 있었는데요, 무신사의 데이터 플랫폼팀에서도 유사하게 타 팀에서 델타레이크의 데이터를 사용할 수 있도록 데이터브릭스 SQL 을 제공하고 있어서, 자체적인 로드밸런서를 개발하여 캐시히트율을 높이고 있는 점은 흥미로웠습니다.

데이터 엔지니어 김찬경님이 인상깊게 본 세션

이번 컨퍼런스에서 압도적으로 LLM(Large Language Model : 대규모 언어 학습 모델)에 대한 세션이 많았는데요. 그 중 한정된 예산 안에서 자사의 데이터로 어떻게 LLM을 구축하는지에 대한 내용을 다룬 세션 — How to Build LLMs on Your Company’s Data While on a Budget(예산 범위 내에서 사내 데이터로 LLM을 구축하는 방법) — 이 인상 깊었습니다. 다양한 LLM이 있지만, 그 모델들을 자신이 속한 그룹에 맞게 사용하려면 파인튜닝 단계를 거쳐야 하는데요. 이 세션에서는 구체적으로 Hugging Face 에서 제공하는 모델(EleutherAI)을 파인튜닝 한 새로운 모델인 Dolly 에 대한 소개와 그 방법에 대해 배울 수 있었어요.

그뿐 아니라, 많이 알고 계시는 ChatGPT 같은 질의응답 모델에 필요한 Vector DB, 그리고 다양한 모델과 데이터셋을 오픈소스로 제공하는 Hugging Face, LLM 애플리케이션을 위한 프레임워크인 LangChain, 머신러닝 학습속도를 빠르고 효율적으로 할 수 있도록 도와주는 Deepspeed 과 같은 라이브러리에 대한 정보도 얻을 수 있었어요. 앞서, 지혜님이 소개해주신 Natural Language to SQL 프로젝트처럼, 저희 데이터플랫폼 팀에서는 LLM을 활용해 무신사 구성원분들께 좀 더 효율적이고 빠르게 정보를 제공할 수 있도록 하는 프로젝트를 진행할 예정인데요. 이번 세션을 통해 이전보다 프로젝트의 구체적인 방향을 생각해볼 수 있는 계기가 되었습니다.

데이터 사이언티스트 김준호님이 인상깊게 본 세션

ChatGPT 및 BARD와 같은 LLM이 코드도 짜고 문제도 푸는 세상이 왔습니다. LLM을 처음부터 학습시키는 데는 천문학적인 비용이 들고, 관련된 기술 시장을 빅테크 기업이 선도할 것은 자명해보이지만, 결국 이러한 기술을 통해 사용자에게 어떤 경험으로 전달시킬 것인지가 혁신의 영역이라고 생각합니다. 이러한 맥락에서, 데이터 사이언티스트로서 관심있게 지켜본 내용은 LLM을 포함한 머신러닝 기술을 어떤 프로덕트에, 어떤 방식으로 설계하여 적용했는지였는데요. 이번 컨퍼런스에서 다양한 회사의 사례를 통해 문제를 어떻게 정의하고, 어떤 기술로 어떻게 풀어나가는지에 대해 벤치마킹할 수 있었습니다. 그 중, Lyft 의 세션 — Real-Time ML in Marketplace at Lyft(Lyft이 있는 양면 플랫폼 시장에서의 실시간 머신러닝) — 을 이번 글에서 소개드리고 싶어요.

Lyft는 Uber(우버)와 같이 승차 공유 서비스로 승객과 운전자를 매칭하고 양측의 만족도를 높이는 것을 목표로 하는 서비스를 제공하고 있어요. 전체적인 아키텍처는 feature generation pipeline — model training pipeline — model inference pipeline으로 이루어져있으며, 해당 모델이 예측하는 정보의 종류에 따라 동기/비동적인 처리 방식과 데이터처리/학습/추론의 주기가 달라진다는 차이가 있을 뿐, 일반적인 아키텍처와 동일하였습니다. 이 세션에서 인상 깊었던 점은 비즈니스의 핵심가치인 수요-공급의 양을 일정하게 유지시킨다는 큰 목표를 달성하기 위해, Dynamic pricing, supply management, short-term forecasting, feature 모니터링 등을 큰 모델들로 만들고, 다시 이것들을 위한 작은 단위의 모델과 파이프라인을 모듈화하여 구성했다는 점입니다.

그 밖의 세션들은 주로 LLM을 각 서비스에 어떻게 활용하는지에 대한 주제가 많았어요. LLM의 빠른 활용을 위해 기학습된 모델을 이용하는 경우가 많은데, 비즈니스 도메인 기반의 LLM application의 문제점은 학습에 사용된 최근 데이터가 없으므로 최근 내용 관련 질의에 대한 답변이 어렵다는 점입니다. (현재 활발하게 사용되고 있는 ChatGPT4 또한 그러하죠.) 이를 해결하기 위해 기존 모델을 각자의 비즈니스 데이터로 파인튜닝하거나, 프롬프트에 원하는 답변의 후보군을 넣는 프롬프트 엔지니어링 등의 방식으로 해결하는 솔루션을 데모를 통해 직접 볼 수 있었던 점도 굉장히 흥미로웠던 경험이었어요.

머신러닝 엔지니어 남상준님이 인상깊게 본 세션

저는 평소 Spark으로 대용량 데이터를 분산처리하거나, 대용량 데이터를 가지고 일반화 파이프라인을 만드는 데 관심이 많은데요, 오픈소스인 Spark를 만든 재단이자, Spark 기반 클라우드 플랫폼을 만든 데이터브릭스의 컨퍼런스라서, 데이터브릭스를 만들거나 활용하는 기여자들의 세션에 대한 기대감이 컸습니다. 여러 세션이 좋았지만, 소개드리고 싶은 세션은 스트리밍 재해복구를 케이스별로 소개한 세션 — Disaster Recovery Strategies for Structured Streams(구조적 스트림즈를 위한 장애 복구 전략) — 인데요.

이 세션에서는 실시간 스트리밍 애플리케이션을 사용하여 데이터의 흐름이 계속되는 상황에서 신뢰성있는 재해복구 전략을 어떻게 가져갈 수 있을지 살펴볼 수 있었습니다. 재해복구 리스크의 요소에는 RPO(Recovery Point Objective 데이터 손실 허용 범위), RTO(Recovery Time Objective 복구하는 데 걸리는 최대 허용 시간) 등이 있는데요. 이 세션에서는 이러한 항목을 설명하고, 각 재해복구 방법이 현실 세계에서의 리스크 해결에 얼마나 효과적인지 데모를 통해 배울 수 있었습니다. 좋은 재해복구 방법은 쉽게 말해 비용(Cost)과 소실 데이터가 적을수록(RPO), 복구시점이 빠를수록(RTO)좋다는 건데요. 예를 들어, 전통적인 방법 중 Multi-Site Active-Active 전략은 메인, 보조사이트를 동시에 운영하여, RTO, RPO가 우수하지만 Cost가 너무 높아 적절하지 않습니다. 반면, Clone Bronze Strategy의 경우 브론즈 단계의 데이터만 복제하고, 기본 사이트 중단시, 실버-골드를 재계산하여, RTO가 개선되고, bronze를 다시 읽어오지 않기때문에 Cost가 감소하여 적절한 전략으로 소개되었습니다.

이 세션을 들으면서 현재 저희팀에서 사용하는 재해복구 방법도 복귀해봤는데요. 간단한 로직을 활용한 10분 안쪽의 데이터 소실, 10분 안쪽의 복구를 하고 있어, 잘하고 있다고 생각했습니다만, 저희 서비스에서는 historical한 정보가 필요 없기 때문에 가능한 전략이긴 하단 생각이 들었어요. 만일 과거로부터의 통계를 지속적으로 쌓는 스트리밍을 추가하게 된다면, 이번 세션에서 배운 전략을 적용해 볼 수 있겠다는 생각을 했습니다.

또한 VectorDB와 관련된 세션도 기억에 남아요. 저희에게 필요한 부분이라 데이터브릭스에서 프로토타이핑을 하고 싶어, 문의도 해보았는데 데이터브릭스 로드맵에는 있지만, 지원은 아직 하지 않는다고 해서 아쉬웠던 기억도 있네요.

지금까지 데이터브릭스 Summit을 다녀온 5명의 구성원 분들의 기억에 남는 세션 하이라이트 이야기를 들어봤는데요. 실제 사용하고 있는 서비스에 대한 컨퍼런스이다보니, 실무에 적용해 볼 만한 인사이트를 배우기 좋았던 기회란 생각이 들어요. 기억에 남는 세션 한가지씩만 언급해주셨는데도, 컨퍼런스 기간 내내 얼마나 열심히 그리고 신나게 참여하셨을지 생생하게 와닿았어요. 사실 회사를 통해 해외 컨퍼런스에 갈 수 있는 기회가 흔히 있지는 않다 보니, 세션 외에도 구성원 분들이 느꼈던 소회도 궁금해졌는데요, 마지막으로 해외 컨퍼런스 참여 소회를 들으며 이 글을 마무리하고자 합니다.

데이터브릭스 컨퍼런스 참여, 어떤 걸 느끼고, 어떤 의미가 있었나요?

지혜 : 새삼스레 다시 느꼈던 것은, 이제 AI는 ‘상식’이 되었다는 점이었어요. 대부분의 스피커나 청중들이 데이터 분야 직접 종사자가 아님에도 불구하고 기본적인 ML 용어 등에 대해 추가 설명 없이도 소통하는 것이 인상에 남더라고요. 또한, 컨퍼런스에 참석한 다른 회사 사람들과 이야기할 기회가 있었는데, 각자의 분야에서 어떻게 Databricks를 사용하고 있는지 혹은 LLM을 어떻게 적용해 보려고 하는지 들어볼 수 있어, 기술 교류 측면에서도 매우 좋은 기회였다고 생각해요.

지웅 : 무신사를 대표해, 해외에서 열리는 컨퍼런스에 참석할 수 있어서 설레고 또 감사한 기회였는데요.

대부분의 세션이 업무에 도움이 되는 내용이라서 좋았지만, 한편으로는 데이터플랫폼 팀이 현재 구성한 아키텍처나 앞으로 할 일들이 해외의 다른 기업들과 비교해도, 크게 다르지 않다는 점에서 나름 자부심이 생기기도 했습니다. 흔히들 말하는 ‘획기적인 변화(Breaking Change)’급의 기능 추가에 대한 내용을 기대했는데, 이런 것들은 없어 아쉽게 느껴진 부분도 있었어요.

저는 개인적으로, 개발자들의 기술 공유 및 소통에 대한 가치를 중요하게 여기는데, 앞으로 이런 컨퍼런스 참석의 기회가 사내 다른 개발자분들께도 더 많아지면 좋겠습니다.

찬경 : LLM 세션이 압도적으로 많았는데 모든 세션에서 강조한 것은 ‘자사 데이터’ 였어요. 우선 자사의 raw 데이터를 잘 쌓을 수 있도록 구조적인 설계가 바탕이 되어야 하고, 그런 기반 위에서 모델을 만들어야 비로소 기업에서 AI를 활용할 수 있다는 것이죠. 지금까지 무신사의 데이터플랫폼 팀은 데이터를 잘 쌓는 데 집중해왔고, 현재는 이를 어떻게 잘 활용할지 고민하고 있는 단계인데요.

해외 여러 기업들의 ‘어떻게 데이터를 쌓았는지’에 대한 사례공유 세션에서는 무신사도 못지않게 잘하고 있었다는 것을 알 수 있어 뿌듯했어요. 또, ‘앞으로 LLM을 어떻게 적용하면 좋을지’를 공유하는 기술 세션에서는 앞으로 무신사가 나아가야 할 길에 대해 고민해 볼 수 있는 기회가 되었어요. 국내의 훌륭한 기업들도 많지만, 훨씬 시장이 더 큰 굴지의 글로벌 기업들과 무신사의 기술을 비교해 보고 배울 수 있는 좋은 기회였습니다.

준호 : 이번 행사를 통해 여러 타사 사례를 통해 벤치마킹할만 작은 아이디어들을 많이 얻을 수 있었는데요. 비즈니스 임팩트를 낼 만한 application 뿐만 아니라, Vector DB등과 같이 기술적으로 바로 적용 및 개선할 수 있는 것들을 보고 배울 수 있었어요.

다른 구성원분들도 언급한 내용이지만, 저 또한, 무신사 데이터프로덕트에서 구성한 데이터 전처리 작업(ETL)및 데이터 프로덕트 서빙하는 방식이 글로벌 회사들과 크게 다르지 않다라는 것을 깨닫고, 한편 자부심도 느낄 수 있었는데요. 보다 나은 아키텍처 구성과 고품질의 데이터프로덕트를 위한 우리 팀원들과의 그간의 노력들이 헛되지 않았다는 것을 이러한 큰 행사를 통해 느낄 수 있어서 보람찼습니다. 앞으로도 많은 분들이 저와 같은 뿌듯함을 느낄 수 있는 기회가 생기길 바랍니다.

상준 : 이번 컨퍼런스 참여는 다른 회사에서 사용하는 기술을 공유받고, 그 과정에서의 레슨런과 경험을 간접적으로 경험한다는 점에서 의미있다고 생각했어요. 가지고 있던 모든 의문에 컨퍼런스에서 직접적으로 답변을 듣지 못한 경우도 있었지만, 세션에서 봤던 내용에서 인사이트를 얻어, 더 나은 방법을 찾는 경우도 생기고요. 예를 들어, VectorDB에 대한 직접적 지원은 아직 불가하다는 답변을 받았지만, 고민 끝에 더 효율적인 해결방법을 찾았는데요. 기존에 Quokka라는 Python 라이브러리로 벡터간 유사도를 빠르게 구현했다는 데이터브릭스의 경험을 듣다가, 현재 우리 구조에서 Quokka를 적용할 수 없지만, 다른 방법이 없을까?를 고민해보다가 Pytorch로 구하는 코드를 확인하고, 기존 2시간 걸리는 작업을 20분으로 효율적으로 일반화할 수 있었거든요.

무신사에서 데이터로 일하는 동료들과 함께 참여하여, 신선하고 좋은 자극을 많이 받았던 추억이었습니다. 더 많은 해외 컨퍼런스 참여를 통해 구성원 분들이 긍정적 자극을 받고, 함께 조직에 기여할 수 있는 문화가 이어졌으면 좋겠습니다.

--

--