인사이트

Aarki의 입찰 브레인 진화, 1부: 모바일 성장을 위한 딥러닝

2025년 8월 22일

저자 소개

벤 웨버는 아키(Aarki)의 머신러닝 부문 부사장으로, 초당 수백만 건의 실시간 입찰 결정을 지원하는 더욱 스마트한 모델 구축을 주도하고 있습니다. 그는 맥아피(McAfee), 징가(Zynga), 트위치(Twitch), EA에서 고위직을 역임했습니다. 입찰 시스템 구축부터 예측 파이프라인 재구축까지, 그의 경험은 실무적이고, 프로덕션급이며, 실제 환경에서 검증되었습니다.

머신러닝은 Aarki의 수요측 플랫폼(DSP)의 핵심이며, 저희는 처리하는 모든 입찰 요청에 딥러닝 모델을 사용합니다. 광고 기술을 위한 딥러닝 모델의 프로토타입, 배포 및 조정은 지속적인 노력의 일환이며, 이러한 역량을 통해 플랫폼을 지속적으로 개선하고 광고주에게 더 나은 성과를 제공할 수 있었습니다.

이 게시물에서는 다음 내용을 논의합니다.

  • 가격 책정 모델을 위해 클래식 러닝에서 딥 러닝으로 전환하려는 동기
  • 1세대 딥러닝 모델 개요
  • 우리가 구축하고 있는 차세대 모델
  • 당사의 인프라와 GPU를 사용하여 확장하는 방법

왜 우리는 ML에 클라우드 플랫폼을 사용하지 않는가

우리는 사내에서 500만 개 이상의 QPS를 처리합니다

당사의 DSP는 Unity, Google Adx, Fyber를 포함한 프로그래매틱 광고 거래소와 공동으로 위치한 거래 위치에 있는 전 세계 4개의 서로 다른 데이터 센터에 구축되어 있습니다.

하드웨어를 소유하면 요청당 비용이 절감됩니다.

저희는 거래소의 입찰 요청 처리, 모바일 측정 파트너(MMP)의 데이터 처리, 그리고 Encore 플랫폼 지원을 위해 운영되는 하드웨어 소유에 투자했습니다. 이러한 구성을 통해 AWS와 같은 퍼블릭 클라우드 플랫폼을 사용하는 것보다 요청 처리 비용이 절감됩니다.

하지만 여기에는 상충이 따릅니다

명령에 따라 새로운 가상 머신을 가동할 수 있는 역량이 부족하고, GCP의 Vertex AI와 같은 플랫폼을 사용하여 딥러닝 모델을 제공할 수도 없습니다. 이는 우리가 구축하는 인프라에 대해 더욱 의도적으로 접근해야 함을 의미합니다.

빅뱅: 우리만의 머신 러닝 스택 구축

모든 파이프라인이 개인 데이터 센터에서 실행되는 것으로 시작됩니다.

DSP에서 모델을 학습하고 딥러닝을 제공하기 위해 우리가 취한 접근 방식은 프라이빗 데이터 센터 내에 머신 러닝 파이프라인을 구축하는 것입니다.

우리는 완전한 오픈 소스 생태계에 의존합니다

저희는 Spark, Hadoop, Aerospike, ClickHouse, Redash, Prefect, Streamlit을 사용합니다. PySpark는 Python 모델 학습을 위한 주요 도구로, 머신러닝 팀이 Python을 공통 언어로 사용할 수 있도록 지원합니다. 또한 Rust는 DSP의 동시성, 안전성, 성능을 향상하는 데 중요한 역할을 합니다.

기존 머신 러닝 모델은 확장성을 위해 만들어지지 않았습니다.

로지스틱 회귀: 빠르지만 수동 엔지니어링이 필요함

많은 수요측 플랫폼은 얕은(shallow) 또는 고전적인 머신러닝 모델이라고 하는 접근 방식으로 시작하는데, 여기에는 로지스틱 회귀 및 의사 결정 트리와 같은 방법이 포함됩니다. 로지스틱 회귀는 모델 평가가 빠르고 특성 개수가 많은 모델을 학습시키는 분산 접근 방식이 있기 때문에 시작하기에 적합합니다.

Spark 생태계를 사용하는 경우 MLlib가 그 예입니다. XGBoost 및 LightGBM과 같은 앙상블 학습 방법도 대용량 데이터 세트에 대한 분산 학습을 지원하는 DSP에서 흔히 사용됩니다.

로지스틱 회귀는 기능 상호 작용을 처리할 수 없습니다.

로지스틱 회귀 분석을 사용하여 사용자가 광고 노출을 클릭할지 여부와 같은 결과를 예측할 때, 효과적인 모델을 얻으려면 입력 피처 간의 상호작용을 모델링해야 합니다. 예를 들어, 광고 대상 모바일 앱과 광고 노출을 렌더링하는 퍼블리셔 앱 간의 상호작용을 모델링할 수 있습니다.

로지스틱 회귀는 이러한 유형의 상호 작용을 직접 모델링하는 것을 지원하지 않으므로 일반적인 접근 방식은 입력 기능의 조합을 수동으로 생성하고 이 확장된 기능 세트를 로지스틱 회귀 모델에 전달하는 기능 엔지니어링 방법을 사용하는 것입니다.

이런 접근 방식은 처음에는 효과적일 수 있지만, 머신 러닝 모델에 더 많은 기능을 추가할수록 기능 상호 작용을 더 많이 추가함에 따라 매개변수 수가 폭발적으로 늘어나기 시작합니다.

기능 폭발로 인해 인프라 문제가 발생합니다.

1억 개가 넘는 피처를 가진 클릭 예측 모델을 개발해 왔는데, 이 모델에서는 퍼블리셔 앱을 다른 모든 피처와 결합하여 모델 성능을 극대화하려고 했습니다. 매개변수 수가 너무 많아서 Spark의 MLlib 구현에서 모델 학습에 문제가 발생했고, 비용 효율적인 방식으로 모델을 학습하기 위해 다른 접근 방식을 모색해야 했습니다.

로지스틱 회귀 모델의 주요 문제점은 특성 간의 상호 작용을 수동으로 정의해야 한다는 점, 포함할 수 있는 특성 교차 수가 제한된다는 점, 그리고 훈련하는 데 비용이 많이 드는 매우 큰 매개변수 모델이 생성된다는 점입니다.

그래디언트 부스팅 모델은 더 나은 확장성을 제공하지만 충분하지 않음

Aarki에서는 사용자 전환을 예측하는 가격 책정 모델에 LightGBM을 시작으로 그래디언트 부스팅 알고리즘을 처음 적용했습니다. LightGBM의 주요 장점은 로지스틱 회귀 분석에서는 지원하지 않는 모델 자체 내 피처 간의 상호작용을 학습한다는 것입니다.

LightGBM은 특성이 수십 개에 불과했을 때는 비교적 잘 작동했지만, 모델에 특성이 수백 개로 확장되면서 몇 가지 문제가 발생했습니다. 대부분의 기존 머신러닝 방식과 마찬가지로, LightGBM은 수백만 개의 서로 다른 값을 가질 수 있는 게시자 앱 특성과 같이 기수가 높은 범주형 특성을 처리하는 데 어려움을 겪었습니다.

LightGBM은 딥 러닝 모델의 임베딩과 어느 정도 유사한 범주형 피처를 처리하는 다양한 방법을 갖고 있지만, 이를 사용하여 우리의 사용 사례에 맞게 효율적으로 학습하고 제공할 수 없었습니다.

클래식 ML을 넘어 딥러닝으로

우리가 탐구한 DSP에 대한 예측 모델을 구축하는 두 가지 기존 접근 방식은 모두 핵심적인 문제를 안고 있었습니다. 즉, 데이터 세트의 핵심 구성 요소인 많은 수의 범주형 특성을 제대로 처리할 수 없다는 것이었습니다.

이 문제에 대한 우리의 해결책은 모델에 임베딩을 사용하는 것이었습니다. 임베딩은 범주형 데이터를 밀집 벡터로 표현하는 기술을 제공하며, 차원 축소와 더 효율적인 모델 학습 및 추론을 가능하게 합니다.

딥러닝의 첫 번째 세대: DeepFM

저희는 두 단계를 결합한 DeepFM 모델을 채택했습니다. 모든 입력 피처에 대한 임베딩을 학습하는 1차(심층) 단계와 피처 상호작용을 모델링하는 2차(인수분해 머신) 단계입니다. 이 접근 방식을 통해 수동 피처 엔지니어링에서 벗어나 모델이 보이지 않는 피처 상호작용을 더 잘 일반화할 수 있게 되었습니다.

Rust 호환성은 필수였습니다

저희 DSP는 Rust로 작성되었기 때문에 진행 중 추론 기능을 갖춘 솔루션이 필요했습니다. Fwumious Wabbit 라이브러리를 사용하여 DeepFM 모델을 Rust로만 학습하고 제공합니다. 이를 통해 원격 호출 오버헤드를 피하고 입찰 엔진 내에서 직접 예측을 제공할 수 있습니다.

클래식 ML에 비해 개선된 점

DeepFM 덕분에 수백 개의 입력 피처로 확장하고 효율성을 유지하면서 더욱 정확한 예측을 수행할 수 있었습니다. 임베딩을 통해 앱 ID 및 사용자 신호와 같은 고차수 피처를 자동으로 학습하고 업데이트할 수 있는 고밀도 벡터로 압축하여 모델 정확도와 학습 효율성을 모두 향상시켰습니다.

하지만 DeepFM에는 한계가 있습니다

인수분해 머신 단계에서는 피처를 네임스페이스로 그룹화해야 했는데, 이는 서로 다른 피처 그룹이 어떻게 상호작용하는지 정의하는 데 약간의 수작업이 필요함을 의미했습니다. 우리가 직면한 한계 중 하나는 Fwumious Wabbit 학습 라이브러리가 하드웨어 가속을 위한 GPU를 지원하지 않아 사용 가능한 데이터 양과 반복 속도에 제약이 있었다는 것입니다.

DeepFM이 의미 있는 진전이기는 하지만, 더 큰 데이터 세트, 더 심층적인 모델, 더 빠른 재교육을 지원하기 위해서는 더욱 발전해야 한다는 걸 알고 있었습니다.

차세대 딥 러닝을 선도하다

우리가 차세대에게 원하는 것

대규모 성능 향상을 위해, 더욱 복잡한 사용 사례와 더 큰 데이터 세트의 요구를 충족할 수 있는 새로운 유형의 모델이 필요했습니다. 1세대 딥 러닝 모델은 임베딩 기반 아키텍처의 가치를 입증했지만, 앞으로 우리가 기대했던 모든 기회를 실현하기에는 충분하지 않았습니다. 차세대 모델에 대한 우리의 목표는 명확했습니다.

  • 더 큰 데이터 세트에 대한 학습
  • 더 자주 재교육하세요
  • 새로운 예측 작업(순위, 관련성)을 처리합니다.
  • 가격 책정 모델을 개선하세요

TensorFlow와 PyTorch로 전환

저희는 개인 데이터 센터의 GPU에 투자했으며, 최신 딥 신경망을 훈련하기 위해 TensorFlow와 PyTorch를 전면적으로 도입하고 있습니다.

시장 가격 모델은 수십억 개의 행을 사용하여 학습합니다.

초기 DNN 모델은 최고가 경매의 최적 입찰가 예측에 중점을 둡니다. 대규모 데이터 준비에는 Spark를 사용하고, GPU 머신의 TF 레코드를 활용하여 매일 10억 개 이상의 레코드를 기반으로 TensorFlow 모델을 효율적으로 학습시킵니다.

프로덕션에서 모델을 제공하는 방법

모델을 ONNX 형식으로 변환하고 Rust의 ort 라이브러리를 사용하여 처리 중 추론을 수행합니다. 학습은 GPU 기반 머신에서 수행되며, 처리는 DSP에서 CPU 기반으로 유지됩니다.

우리가 탐구하는 아키텍처

핵심 전환 예측 모델로는 DCNv2와 TabTransformer를 테스트하고 있습니다. 또한 광고와 인벤토리를 더욱 효과적으로 매칭하기 위해 Two Towers 아키텍처를 검토하고 있습니다.

GPU 투자로 차원이 다른 모델 성능 확보

현재 구축된 인프라와 GPU를 바탕으로 딥 러닝을 확장하여 더욱 스마트한 입찰, 빠른 반복, 광고주에게 더 나은 ROI를 제공하고 있습니다.

이 여정이 중요한 이유

로지스틱 회귀부터 DeepFM, 그리고 최신 DNN에 이르기까지 머신러닝 전략의 모든 발전은 하나의 핵심 원칙에 따라 이루어졌습니다. 바로 광고주에게 더 나은 결과를 대규모로 제공하는 것입니다. 이 게시물에서는 기존 머신러닝의 한계를 파악하고 해결하기 위해 저희가 취한 기술적 경로와 DSP에 딥러닝을 어떻게 통합했는지에 대해 다룹니다.

하지만 모델 아키텍처는 전체 방정식의 일부일 뿐입니다. 이 글의 2부에서는 이 모든 것을 뒷받침하는 인프라에 대해 자세히 살펴보겠습니다. GPU에 투자한 이유, 그 결정을 어떻게 검증했는지, 그리고 대규모 모델 학습에 GPU가 어떤 이점을 제공하는지 살펴보겠습니다.

이 블로그가 마음에 들었다면 Ben에게 메모를 보내주세요. bweber@aarki.com그는 여러분의 소식을 듣고 싶어합니다!

ko_KRKO