인사이트

Aarki의 입찰 두뇌 진화, 2부: 10억 행 규모에서 GPU를 활용한 확장성

2025년 8월 28일

저자 소개

벤 웨버는 Aarki의 머신러닝 부문 부사장으로, 초당 수백만 건의 실시간 입찰 결정을 처리하는 더욱 스마트한 모델 개발을 주도하고 있습니다. 그는 McAfee, Zynga, Twitch, EA 등에서 고위직을 역임했습니다. 입찰 시스템 구축부터 예측 파이프라인 재설계에 이르기까지, 그의 경험은 실무 중심적이고 실제 현장에서 검증된 것입니다.

~ 안에 이 시리즈의 1부, 우리는 Aarki가 기존 머신러닝에서 딥 뉴럴 네트워크로 진화하면서 DSP가 딥러닝을 통해 더욱 똑똑하게 사고하도록 학습시킨 과정을 공유했습니다. 하지만 아무리 똑똑한 모델이라도 이를 뒷받침할 인프라가 뒷받침되지 않으면 한계가 있습니다.

이 글에서는 그 이야기의 후반부, 즉 GPU에 투자하기로 결정한 과정, 퍼블릭 클라우드가 우리에게 적합하지 않았던 이유, 그리고 매일 수십억 건의 레코드를 학습하는 시스템을 구축하는 데 필요한 작업에 대해 다룹니다.

CPU를 이용한 훈련만으로는 더 이상 충분하지 않았다.

Aarki의 머신러닝 플랫폼은 매일 수십 개의 모델을 학습시키며, 가장 규모가 큰 모델들은 하루에 10억 건 이상의 데이터를 학습합니다. 모델을 효율적으로 학습시키기 위해 GPU를 활용한 하드웨어 가속 기술을 사용하고 있습니다.

저희는 TensorFlow 생태계와 NVIDIA의 CUDA 플랫폼을 활용하여 대규모 데이터를 처리하고 광고주에게 최고의 가치를 제공하는 광고 노출을 파악하고 있습니다. 수요측 플랫폼(DSP)에 딥러닝 모델을 도입하기 시작했을 때, GPU를 임대할지 구매할지 결정해야 했습니다.

이 글에서는 저희가 검토했던 옵션들, GPU의 가치를 입증하기 위해 거쳐온 과정, 그리고 향후 대규모 딥러닝 지원을 위한 계획을 중점적으로 다루겠습니다.

우리 인프라가 GPU로 시작하지 않은 이유

저희 데이터 센터는 이미 속도 최적화가 되어 있었습니다.

저희 DSP는 주요 프로그래매틱 광고 거래소의 거래 위치와 동일한 곳에 위치한 4개의 자체 데이터 센터에 구축되어 있습니다. 저희는 자체 소유 및 운영하는 시스템에서 초당 500만 건 이상의 입찰 요청을 처리할 수 있도록 하드웨어에 투자했습니다.

이 접근 방식은 AWS나 GCP처럼 필요에 따라 새로운 머신을 생성할 수 있는 퍼블릭 클라우드 옵션에 비해 유연성이 훨씬 떨어지지만, 네트워크 송출 비용을 절감할 수 있고 요청당 비용 또한 이러한 플랫폼을 사용하는 것보다 낮습니다.

우리의 초기 인프라는 학습이 아닌 핵심 DSP 처리량에 집중했습니다.

저희는 초기에 DSP를 지원하는 하드웨어에 집중했고, GPU에는 선불 투자를 하지 않았습니다. 데이터센터에 GPU가 없더라도 이전 세대의 딥러닝 모델에는 문제가 되지 않았는데, 모델 학습에 사용하는 라이브러리가 Rust에 최적화되어 있고 하드웨어 가속을 지원하지 않기 때문입니다.

DeepFM은 가속 없이도 작동했지만, 이제는 작동하지 않습니다.

저희 기존 모델은 딥 팩터라이제이션 머신(Deep Factorization Machines)을 사용합니다. 이 모델은 모든 입력 특징에 대한 임베딩을 학습하는 딥 단계와 특징 간의 상호 작용을 학습하는 팩터라이제이션 머신 단계를 결합한 것입니다. 이 모델은 설치 후 전환 이벤트에 초점을 맞춘 리타겟팅 캠페인, 예를 들어 유료 사용자로 전환될 가능성이 가장 높은 설치를 식별하는 데 효과적이었습니다.

하지만 클릭 예측과 같은 사전 설치 모델 개발을 시작하면서 모델 학습 플랫폼에서 병목 현상에 부딪히기 시작했습니다. 하루에 수억 건의 레코드를 학습시킬 수는 있었지만, 하루 10억 건 이상의 레코드를 처리해야 하는 상황에서는 학습 속도가 너무 느려 확장이 어려웠습니다.

심층 신경망(DNN)으로의 전환으로 GPU가 필수적이 되었다.

새로운 모델에는 하드웨어 가속이 필요합니다.

당사의 차세대 가격 책정 모델은 모델 학습 및 모델 제공 모두에 하드웨어 가속을 지원하는 딥러닝 프레임워크를 사용합니다. 초기에는 모델 학습에 GPU를 활용하는 데 집중할 예정이며, 학습 데이터 세트의 규모가 주요 병목 현상 요인입니다.

TensorFlow와 PyTorch가 저희 DNN 학습 스택을 지원합니다.

현재 운영 중인 모델은 가격 책정 모델에 TensorFlow 프레임워크를 사용하고 있으며, 모델에 입력할 임베딩을 생성하는 파이프라인에는 PyTorch 프레임워크를 사용하고 있습니다. 하드웨어 가속을 사용하여 모델을 학습시키고, 기존 DSP 인프라의 CPU를 사용하여 Rust로 실행할 수 있는 ONNX 형식으로 변환합니다.

GPU의 가치를 입증하다

데이터 센터 외부에서의 테스트 교육

저희는 자체 데이터 센터에 GPU를 도입하기 전에 차세대 딥러닝 모델이 DSP 성능을 향상시키고, 새로운 모델을 CPU보다 GPU에서 훨씬 효율적으로 학습시킬 수 있는지 확인하고 싶었습니다.

학습 효율성에 대한 확신을 얻기 위해 데이터 센터 외부의 GPU를 활용한 학습 옵션을 몇 가지 검토했습니다. 처음에는 사무실 내 컴퓨터에서 샘플링된 데이터 세트를 사용하여 모델을 학습해 보았고, 그 다음에는 AWS에서 GPU 인스턴스를 생성하는 방법을 살펴보았으며, 마지막으로 Google Colab을 사용하여 GPU 사용이 모델 학습 시간을 크게 단축시킨다는 것을 확인했습니다.

A/B 테스트 (신규 모델 vs 기존 모델)

저희는 Google Colab에서 챌린저 모델을 학습시키고 현재 모델과 차세대 딥러닝 모델 간의 A/B 테스트를 실행하여 모델 학습에 GPU를 도입하는 것에 대한 확신을 구축했습니다. GPU 구매 여부를 결정할 때 가장 중요한 사항 중 하나는 저희 모델 학습 사용 사례에 가장 적합한 카드 유형을 결정하는 것이었습니다.

L4 GPU는 CPU 대비 10배의 속도 향상을 제공했습니다.

Google Colab을 사용하여 NVIDIA T4, L4 및 A100 인스턴스 유형으로 모델 학습 통계를 수집한 결과, L4 카드가 모델 아키텍처에 적합한 것으로 나타났습니다. CPU에서 학습할 때와 비교하여 NVIDIA L4 카드를 사용하면 최대 10배의 속도 향상을 얻을 수 있었으며, 가장 큰 모델의 배치 처리 시간을 200밀리초에서 20밀리초로 단축할 수 있었습니다.

저희는 L4 카드가 GPU 투자에 있어 좋은 출발점이라는 것을 알게 되었습니다. 새로운 아키텍처를 탐색하고, 모델 매개변수를 늘리고, 모델에 더 많은 기능을 추가함에 따라 어떤 인스턴스 유형이 모델에 최상의 성능을 제공하는지 지속적으로 평가할 것입니다.

시제품을 통해 입증되었지만, 양산에 필요한 규모 확장이 필요했습니다.

Google Colab을 활용한 A/B 테스트를 통해 GPU 도입의 가치를 입증할 수 있었습니다. GPU를 사용하면 훨씬 더 큰 데이터 세트로 학습할 수 있었고, 기존 딥러닝 모델보다 뛰어난 성능을 보여주었습니다. 다음 단계는 이러한 파이프라인을 자동화하여 수십억 건의 레코드를 기반으로 매일 모델을 재학습할 수 있도록 하는 것이었습니다.

Google Colab은 프로토타입 제작 및 실험에 적합하지만, 프로덕션 워크로드용으로는 적합하지 않으며 Google은 이러한 파이프라인에는 Vertex AI 사용을 권장합니다. 따라서 우리는 AWS SageMaker나 GCP Vertex와 같은 퍼블릭 클라우드 옵션을 활용할지, 아니면 모델 학습 속도를 높이기 위해 자체 하드웨어를 구매할지 결정해야 했습니다.

GPU를 임대하는 것은 우리 규모나 환경에 적합하지 않았습니다.

데이터 전송 및 TensorFlow I/O로 인해 클라우드 교육이 비현실적이 되었습니다.

모델 학습을 위해 그래픽 카드를 임대하면서 가장 큰 문제는 자체 데이터 센터에서 GPU가 있는 곳으로 데이터를 전송하는 것이었습니다. 저희는 자체 데이터 센터의 클러스터에서 Spark를 사용하여 학습 데이터 세트를 준비하고, 인코딩된 데이터 세트를 TensorFlow의 TFRecord 형식으로 출력합니다.

저희가 보유한 가장 큰 데이터 세트는 레코드를 gzip으로 압축하더라도 수백 기가바이트에 달하며, 저희는 매일 다양한 학습 데이터 세트를 사용하여 이와 같은 규모의 모델을 수십 개씩 학습시킵니다.

또 다른 문제는 AWS S3 및 GCP 클라우드 스토리지와 같은 클라우드 스토리지에 있는 파일을 직접 사용하여 TensorFlow 모델을 학습시키는 기능이 핵심 TensorFlow 라이브러리에서 제거되고 더 이상 유지 관리되지 않는 TensorFlow I/O 라이브러리로 이동되었다는 점입니다. 매일 모델 학습 과정에서 이러한 모든 데이터를 이동시키면 모델 파이프라인의 오케스트레이션에 어려움이 발생할 뿐만 아니라, 매일 테라바이트 단위의 데이터에 대한 클라우드 스토리지 및 전송 비용을 지불해야 합니다.

우리는 GPU를 자체적으로 도입하고 이를 중심으로 파이프라인을 구축했습니다.

Google Colab을 사용한 사전 테스트를 통해 NVIDIA L4 카드가 모델 학습에 좋은 출발점이 될 것이라는 것을 이미 알고 있었습니다. 여러 개의 L4 카드를 탑재한 서버를 자체 데이터 센터에 추가하는 방안에 대해 업체와 협의하여 비용을 산출했고, GPU 기반 서버를 소량으로 구축하는 것부터 시작했습니다.

머신 설치를 완료한 후에는 모든 데이터를 사내 프라이빗 데이터센터에 보관할 수 있었고, 데이터 전송이라는 가장 큰 문제점을 해결할 수 있었습니다. 이러한 접근 방식을 통해 오케스트레이션을 위한 Prefect, 프로파일링을 위한 TensorBoard, 그리고 모델 파이프라인의 ML 운영을 위한 MLflow 등 오픈소스 툴에 더 많이 투자할 수 있었습니다.

GPU 구매가 항상 최선의 선택은 아니지만, 저희는 자체 데이터 센터를 구축하고 모델 학습 워크로드가 예측 가능했기 때문에 좋은 결과를 얻었습니다.

이제 우리는 매일 사내에서 수십억 개의 행으로 훈련을 진행합니다.

데이터 준비를 위한 Spark 워크플로와 모델 학습을 위한 GPU 작업 간의 인수인계를 조정하는 데 약간의 엔지니어링 작업이 필요했지만, 그만한 가치가 있었고 이제 매일 수십억 개의 예제를 사용하여 가장 큰 모델을 학습할 수 있게 되었습니다.

인수 방식이 항상 옳은 선택은 아니지만, 저희의 자체 데이터 센터와 예측 가능한 모델 워크로드에는 필요한 제어력, 효율성 및 확장성을 제공해 주었습니다.

결국, 인프라를 확장하지 않고는 인텔리전스를 확장할 수 없습니다.

1부에서는 두뇌의 진화에 대해 다루었고, 2부에서는 그 두뇌가 성장하는 데 필요한 인프라를 구축하는 것에 대해 다루었습니다. GPU에 투자하고 모델 학습을 자체적으로 진행함으로써 클라우드 비용을 크게 늘리지 않고도 성능을 획기적으로 향상시킬 수 있었습니다.

이제 딥러닝이 입찰 로직의 핵심이 되었고, GPU를 활용하여 매일 수십억 개의 행으로 구성된 데이터를 학습함으로써, 우리는 더 빠르게 학습하고, 더 스마트하게 최적화하며, 성능 저하 없이 확장할 수 있도록 설계된 시스템을 구축했습니다.

이야기의 시작 부분을 놓치셨나요? 1부를 읽어보세요. 여기.

이 블로그 글이 마음에 드셨다면 벤에게 메시지를 보내주세요. bweber@aarki.com. 그는 당신의 연락을 정말 좋아할 거예요!

ko_KRKO