쿠팡의 머신러닝 플랫폼을 통한 ML 개발 가속화

쿠팡의 머신러닝 개발 속도를 높이는 쿠팡만의 ML 플랫폼에 대하여

쿠팡 엔지니어링
Coupang Engineering Blog
13 min readNov 23, 2023

--

By Hyun Jung Baek, Hara Ketha, Jaideep Ray, Justina Min, Mohamed Sabbah, Ronak Panchal, Seshu Adunuthula, Thimma Reddy Kalva, and Enhua Tan

본 포스트는 영문으로도 제공됩니다.

소개

쿠팡은 고객이 앱을 켠 순간부터 주문한 상품이 문 앞에 도착하는 순간까지 최상의 쇼핑 및 배송 경험을 제공하기 위해 끊임없는 혁신을 이어가고 있습니다. 일반적인 전자 상거래 외에도, 쿠팡은 음식 배달 서비스인 쿠팡이츠, 비디오 스트리밍을 제공하는 쿠팡플레이, 결제 서비스 쿠팡페이, 신선 상품을 위한 쿠팡 로켓배송 등 다양한 소비자 서비스를 운영하고 있습니다.

머신러닝(이하 ML)은 쿠팡 고객의 전자 상거래 경험에 있어 상품 카탈로그, 검색, 가격 책정, 로보틱스, 재고 관리, 그리고 물류 처리와 같은 모든 요소에 영향을 미치고 있습니다. 또한 쿠팡이 새로운 시장으로 진출함에 따라, ML의 역할은 점점 더 중요해지고 있습니다.

ML은 쿠팡 웹사이트와 앱에서의 검색 기능 및 정보 탐색 기능을 향상시키며, 상품 및 서비스의 가격을 정하고, 물류와 배송을 더욱 효율적으로 이루어지게 합니다. 그리고 스트리밍을 위한 콘텐츠를 최적화하고, 광고의 순위를 정하는 등의 다양한 업무에서 중요한 역할을 수행합니다.

따라서, 저희는 애드혹(ad-hoc) 탐색부터 모델 훈련용 데이터(training data) 준비, 모델(model) 개발, 그리고 모델을 안정적으로 실서비스에 배포하는 단계까지 머신러닝 개발을 꾸준히 확장하고자 노력하고 있습니다.

목차

· 배경 및 과제
1. 개발 적용 시간의 단축
2. ML 개발 프로세스로 CI/CD 프로세스 통합
3. ML 컴퓨팅의 효율적 확장
· 쿠팡 ML 플랫폼의 주요 서비스
1. Notebook 환경 제공 및 ML 파이프라인 구축
2. 피처 엔지니어링
3. 모델 훈련
4. 모델 추론
5. 모니터링 및 관찰
6. 트레이닝 및 추론 클러스터
· 성공 사례
1. 코버트(Ko-BERT) 트레이닝을 통한 검색 쿼리 이해 개선
2. 상품의 실시간 가격 예측

배경 및 과제

쿠팡 ML 플랫폼은 개발자의 작업 효율을 향상시킴으로써 ML 개발을 보다 가속화하기 위해 ‘바로 사용 가능한’ 서비스를 제공하고자 했습니다.

이 플랫폼에서 제공하는 핵심 서비스로는 관리형 주피터 노트북(Jupyter Notebook), 파이프라인 SDK, 피처 스토어, 모델 학습, 그리고 모델 추론이 있습니다. ML 팀들은 이러한 서비스를 각각 조합하여 ML 파이프라인을 구축할 수 있습니다. 저희의 주요 목표는 다음과 같습니다.

1. 개발 적용 시간의 단축

쿠팡 ML 플랫폼이 도입되기 전에는, ML 모델을 설계하고 학습시키려면 데이터와 피처 준비, 그리고 모델 훈련 코드 작성에 대한 복잡한 설정 및 기본 코드 작성이 필요했습니다. 또한, 분산 훈련을 통해 모델 훈련을 확장하거나 GPU를 활용하는 데에는 고도의 엔지니어링 지식이 필요했고, 중복되는 작업도 종종 발생했습니다.

실시간 트래픽에 ML 모델을 배포하는 것은 성능 평가, 자동 스케일링, 보안, 롤백 등의 로직을 반복적으로 적용해야 하므로, 몇 주 동안 많은 시간과 자원이 투입되어야 했습니다. 이러한 이유로 많은 프로덕트 팀들이 ML의 대규모 적용을 미뤄왔습니다. 하지만 쿠팡 ML 플랫폼의 라이프 사이클을 활용하게 되면서, 간단한 모델부터 복잡한 모델까지 표준화된 방식으로 단 며칠 안에 학습, 디버그 및 배포가 가능해졌습니다.

2. ML 개발 프로세스로 CI/CD 프로세스 통합

ML 개발을 진행할 때, 복잡하고 해결하기 어려운 기술적 부채가 자주 발생할 수 있습니다. ML 팀들이 더 효율적으로 모델을 구축, 배포, 유지 관리할 수 있도록, 쿠팡 ML 플랫폼은 널리 쓰이고 있는 ML 라이브러리들과의 통합 테스트가 완료되어 있는 컨테이너들을 준비하여 제공합니다. 또한, 모델 검증을 위한 라이브러리, 카나리(Canary) 기반의 모델 배포, 그리고 서비스 중의 핵심 지표 모니터링 기능도 함께 제공하고 있습니다.

3. ML 컴퓨팅의 효율적 확장

쿠팡에서는 딥러닝 훈련에 필요한 GPU, 대규모 데이터 세트 저장, 그리고 분산 훈련 시 필요한 네트워크 대역폭에 대한 컴퓨팅 요구가 급증하고 있습니다. 그리고 플랫폼 상에서 많은 모델들이 훈련되고 있어 클라우드 사용 비용도 증가하고 있습니다. 이를 해결하기 위해 쿠팡 ML 플랫폼 팀은 컴퓨팅과 스토리지 클러스터를 온프레미스(on-premise)와 AWS 상에 운영하는 하이브리드 구조를 차용하였습니다. 온프레미스는 더 저렴한 비용으로 강력한 GPU 클러스터와 다양한 사용자 맞춤 설정을 제공하고, 클라우드는 온프레미스 자원이 충분하지 않을 때 즉각적인 컴퓨팅 자원을 제공합니다.

쿠팡의 머신러닝 플랫폼 개요
그림 1. 쿠팡 ML 플랫폼 개요

쿠팡 ML 플랫폼의 주요 서비스

1. Notebook 환경 제공 및 ML 파이프라인 구축

ML 플랫폼은 개발자들이 아이디어를 지속적으로 개선하고 테스트할 수 있도록 호스팅된 컨테이너 기반의 노트북(Jupyter Notebook) 환경 서비스를 제공합니다. 이 노트북 환경은 CPU나 GPU 상에서, 사용자가 지정한 컨테이너 또는 스탠다드 컨테이너를 통해 실행될 수 있습니다.

ML 플랫폼 팀은 텐서플로(Tensorflow), 파이토치(Pytorch), 스켈런(Sklearn), 허깅페이스(Huggingface), 트랜스포머스(Transformers) 등의 주요 ML 라이브러리가 포함된 표준 도커 컨테이너(Docker Container)를 관리하고 있습니다. 이 도커 컨테이너들로 패키지 간에 복잡하게 얽힌 의존성 문제를 효과적으로 해결하고, 안정적인 파이프라인을 구축할 수 있습니다.

파이프라인 구축과 관련해, ML 플랫폼은 데이터 추출, 피처 스토어, 학습, 그리고 추론에 사용할 수 있는 Python SDK 세트를 제공합니다.

2. 피처 엔지니어링

쿠팡 ML 플랫폼이 제공하는 피처 스토어를 통해 오프라인과 온라인 모드 모두에서 준비된 피처를 손쉽게 활용할 수 있습니다. 이 피처 스토어는 널리 알려진 오픈소스 프로젝트인 피스트(Feast)를 기반으로 구축되었습니다.

  • 오프라인 피처 스토어는 이미 만들어져 활용 중인 피처들을 공유하는 데 사용되며 모델 훈련에도 사용됩니다. 저희는 다양한 팀과 협력하여, 여러 팀에서도 활용할 수 있도록 고객 인사이트와 같은 핵심 피처들을 추가하고 있습니다.
  • 추론 과정에서 온라인 피처 스토어를 통해 짧은 지연 시간으로 피처를 가져올 수 있습니다. 온라인 피처 스토어는 모델 피처 생성뿐만 아니라, 복잡한 계산을 필요로 하는 모델의 예측 결과를 임시 저장하는 역할도 합니다.

3. 모델 훈련

쿠팡의 ML 팀은 파이토치(Pytorch), 텐서플로(Tensorflow), 스켈런(Sklearn), 엑스지부스트(XGBoost)와 같은 널리 알려진 프레임워크부터, 예측 작업을 위한 프로펫(Prophet)과 같은 특수 목적의 프레임워크까지 다양하게 사용하고 있습니다.

훈련 스택은 프레임워크에 구애받지 않습니다. 사용자가 작성한 파이프라인은 컨테이너화되어 쿠버네티스(Kubernetes) 클러스터에서 실행됩니다. 배치 스케줄러는 원하는 하드웨어 설정으로 작업을 스케줄링합니다. 사용자는 클러스터 내에서 사용 가능한 모든 유형의 CPU나 GPU에서 작업이 실행될 수 있도록 설정할 수 있습니다. 이는 다양한 유형의 CPU와 GPU의 이점들을 작업의 특성에 맞게 활용함으로써 투자 대비 효과를 극대화할 수 있기 때문에 매우 유용합니다. 예를 들어, 사용자는 모델 훈련과 배치 추론을 다른 유형의 GPU에서 실행함으로써, GPU의 속도 향상과 비용 사이에서 최적화를 이룰 수 있습니다.

배치 스케줄러는 모든 리소스를 할당 또는 리소스를 전혀 할당하지 않는 전략을 따르도록 설정되어 있습니다. 훈련 스택은 대규모 모델 학습을 위한 분산 훈련 전략(분산 데이터 병렬 및 완전 분산 데이터 병렬)을 지원합니다. 쿠팡은 다중 GPU를 사용한 학습으로 모델 훈련 작업 속도를 크게 향상시켰습니다.

딥러닝 모델을 효과적으로 학습시키기 위해서는 트레이너 변수(trainer parameter)를 조정하는데 상당한 노력이 필요합니다. 저희 플랫폼 팀에서는 내부적으로 자주 사용되는 모델 구조에 대한 트레이너를 벤치마킹하고, 이를 통해 얻은 가장 효과적인 기법과 최선의 방법론을 이 플랫폼을 활용하는 모든 그룹에 공유하고 있습니다.

4. 모델 추론

훈련 후, 모델은 실험용 또는 실제 트래픽을 서빙하기 위한 프로덕션 환경에 배포됩니다. 쿠버네티스 상에서 모델 추론을 하기 위해 셀던(Seldon) 플랫폼이 이용됩니다. 셀던은 TFServing과 Triton 같은 서빙 라이브러리와 통합될 뿐만 아니라, 사용자 정의 Python 래퍼도 지원합니다. 이를 통해 다양한 모델 프레임워크, 런타임 및 하드웨어(CPU 및 GPU 서빙 포함)를 폭넓게 지원합니다.

각 ML 모델은 오토스케일링을 지원하는 독립 서비스로 배포할 수 있습니다. ML 모델을 서비스로 배포하면 모델별로 관리할 수 있고, 표준 CI/CD 인프라와의 원활한 통합이 가능합니다. 배포 전에는 모델 크기, 훈련과 예측 사이의 비대칭도 테스트 등 다양한 검증 테스트를 실행한 후 카나리 테스트 단계로 진행합니다. 카나리 테스트가 성공하면 모델은 점진적으로 전체 배포됩니다. 개발자는 이러한 간단한 작업을 통해 매우 손쉽고 안전하게 모델을 프로덕션 트래픽에 적용할 수 있습니다.

임베딩과 같은 높은 계산 부하를 필요로 하는 기능을 실시간으로 거의 지연 없이 제공하기 위해, 저희는 위에서 언급한 온라인 피처 스토어를 사용합니다. 특히 대규모 모델들(LLMs, 멀티모달 모델)을 위해, CPU 서빙보다 효율적인 처리량을 가진 GPU 기반의 실시간 및 배치 서빙 기술에 주력하고 있습니다.

쿠팡 ML 플랫폼의 훈련 워크플로
그림 2. 훈련 워크플로
쿠팡 ML 플랫폼의 서빙 워크플로
그림 3. 서빙 워크플로

5. 모니터링 및 관찰

쿠팡 ML 플랫폼의 모든 서비스에는 모니터링 기능이 탑재되어 있습니다. 훈련 클러스터에는 사용 중인 GPU, CPU, 메모리에 대한 리소스 및 작업 모니터링 대시보드가 구비되어 있습니다. 또한, 작업의 GPU 및 CPU 활용도에 관한 수치들을 확인할 수 있습니다.

추론 서비스는 메모리 사용량과 예측 점수에 대해 런타임 모니터링을 진행합니다. 향후에는 피처와 모델 서빙에 대한 데이터 품질 검사(이상 탐지, 드리프트 모니터링)를 도입할 예정입니다.

더불어, 개발자들은 대시보드를 통해 자원 할당과 스케줄링의 지연 상황을 쉽게 파악할 수 있습니다. 오류 발생 시, 해당 클러스터에서는 애플리케이션 및 자원 사용 로그를 수집하여 대시보드에서 확인할 수 있도록 합니다. 그 외에도 훈련 중인 작업이 정체되거나, 서빙 또는 메모리 상승과 같은 문제 상황에 대한 알림 설정도 마련되어 있습니다.

쿠팡 ML 플랫폼의 서빙 모니터링
쿠팡 ML 플랫폼의 서빙 모니터링
그림 4. 서빙 모니터링

6. 트레이닝 및 추론 클러스터

대용량 데이터와 딥러닝 모델의 시대에서, 하드웨어(특히 GPU 같은 가속기)는 ML 개발에서 필수적인 역할을 합니다. 쿠팡은 클라우드 인프라 엔지니어와의 적극적인 협업을 통해 온프레미스 데이터 센터와 AWS 클러스터에서 컴퓨팅 및 스토리지 클러스터를 제공합니다.

쿠팡 ML 플랫폼 트레이닝 클러스터의 GPU 사용률 모니터링
그림 5. 트레이닝 클러스터의 GPU 사용률 모니터링

훈련에는 대용량 메모리가 있는 인스턴스, GPU와 같은 가속기, 분산 훈련을 위한 노드 간 고대역폭 연결, 그리고 훈련 데이터 및 모델 체크포인트와 같은 출력 아티팩트를 저장하기 위한 공유 스토리지 클러스터가 필요합니다.

서빙을 위해서는 성능과 가용성을 보장하는 높은 I/O 처리량을 가진 머신이 필수적입니다. 여러 가용성 영역에 최적화된 전용 머신들을 구비하고 있고, 오토스케일링 기능으로 클러스터가 트래픽의 급증에도 대응할 수 있습니다.

성공 사례

쿠팡 ML 팀과의 협업 덕분에, 특정 도메인에서 입증된 해결 방안을 체계적으로 확장하고 일반적으로 적용할 수 있게 되었습니다.

아래는 쿠팡 ML 플랫폼의 지원을 받은 최근 성공 사례들 중 일부입니다.

1. 코버트(Ko-BERT) 트레이닝을 통한 검색 쿼리 이해 개선

상품 검색 및 추천을 담당하는 ML 개발자들은 기존의 용어 매칭 기반 검색을 보완하기 위해 임베딩 기반 검색 방식을 적용했습니다. A100 GPU의 다중 GPU 분산 훈련을 통해 이전 세대의 GPU들과 훈련 전략에 비해 버트(BERT)의 훈련 속도가 10배 향상되었습니다.

버트의 성공 이후 개발자들은 다양한 경로로 유입되는 검색 요청들과 관련해 검색 품질을 향상시키기 위해 대규모 언어 모델(LLMs)을 세부적으로 조정하는 실험을 계속하고 있습니다. 이러한 세부 조정 작업은 ML 플랫폼의 여러 부분을 활용하게 되는데, 그 중에서도 효율적인 클러스터 이용, 분산 훈련 전략, 고처리량 GPU 기반 추론 등이 포함됩니다.

저희는 ML 플랫폼을 통해 쿠팡 개발자들이 최신 ML 기술들에 쉽게 접근하고 적용하는 데 있어 큰 성과를 거두고 있습니다.

2. 상품의 실시간 가격 예측

고객 및 성장을 위한 데이터 사이언스 팀은 가격, 수요, 페이지 조회 등을 예측하기 위해 다양한 시계열 데이터를 모델링합니다. 데이터 사이언스 팀은 사용자 정의 추론 스택에서 사용 중인 가격 모델을 저희 ML 플랫폼으로 전환하였습니다. 그 결과, 배포 클러스터를 유지 관리할 필요가 없어졌으며, 모델 개발에 완전히 집중할 수 있게 되었습니다.

저희의 여정은 아직 초기 단계이지만, 많은 사용자들이 저희 서비스를 ML 파이프라인 구성 요소로 사용하고 있으며 사용자들로부터 좋은 반응을 얻고 있습니다. 지난 1년 동안, ML 플랫폼에서 600개 이상의 ML 프로젝트에서 100,000건 이상의 워크플로가 실행되었습니다. 그리고 실험 중인 모델의 크기가 크게 증가함에 따라 고객들에게 제공되는 서비스들의 품질에서도 여러 가지 성과를 거두었습니다. 쿠팡의 모든 주요 ML 그룹에서는 하나 이상의 쿠팡 ML 플랫폼 서비스를 활용하고 있습니다.

쿠팡 개발자들은 저희 ML 플랫폼에서 언어 모델링 및 자동화된 머신러닝(AutoML) 같은 도메인 특화 도구를 구축하고 있습니다. 온라인 피처 스토어와 모니터링 등의 베스트 프랙티스(best practice)에서 CI/CD의 도입과 활용에 대한 관심이 크게 증가하고 있습니다.

다음 포스트에서는 쿠팡의 핵심 서비스와 이를 지원하는 애플리케이션들에 대해 더욱 상세히 소개하고자 합니다.

머신러닝과 인프라와 관련된 도전들에 관심을 갖고 수많은 비즈니스 문제를 함께 해결하면서 고객 경험을 향상시키고 싶으시다면, 쿠팡 채용 공고를 확인해 보세요!

--

--

쿠팡 엔지니어링
Coupang Engineering Blog

쿠팡의 엔지니어들은 매일 쿠팡 이커머스, 이츠, 플레이 서비스를 만들고 발전시켜 나갑니다. 그 과정과 결과를 이곳에 기록하고 공유합니다.