컬리, 장바구니 추천 서비스 TorchServe 기반 실시간 서빙 아키텍처 구축기
핵심 내용
컬리 데이터서비스개발팀이 TorchServe 튜닝과 GracefulShutdown 적용으로 장바구니 추천 모델의 무중단 실시간 서빙 시스템을 구축했다.
자세히 보기
컬리 데이터서비스개발팀이 장바구니 추천 모델의 실시간 서빙 아키텍처 구축 및 운영 경험을 공유했다. 전체 시스템은 AWS와 GCP를 혼합 활용하며, 주요 추천 모델 작업은 AWS EKS 클러스터에서 수행된다. 학습 데이터는 BigQuery에 적재되고, 모니터링은 Datadog과 Slack을 통해 이루어진다.
서빙 프레임워크 선정 및 성능 최적화
서빙 프레임워크로 BentoML과 TorchServe를 비교한 결과, 응답 시간 측면에서 TorchServe가 더 우수한 지표를 보여 최종 선택됐다. 성능 튜닝 과정에서 CPU Clock Speed가 낮은 지연시간 달성의 핵심 요인임이 확인됐다. TorchServe는 요청을 Queue에 넣어 FIFO 방식으로 처리하므로, 선행 요청의 빠른 처리가 전체 성능에 큰 영향을 미치기 때문이다. 기타 옵션인 async_logging이나 netty_client_threads 설정은 지연시간 개선에 큰 영향을 주지 않았다.
무중단 배포를 위한 GracefulShutdown 적용
ML 모델의 빈번한 업데이트로 인한 배포 시 다운타임을 방지하기 위해 GracefulShutdown 전략을 도입했다. AWS ALB Ingress 환경에서는 TargetGroup 연결 해제 및 신규 연결 과정에서 필연적으로 다운타임이 발생할 수 있다. 이를 해결하기 위해 terminationGracePeriodSeconds를 ALB idle timeout(60초)보다 길게 설정하고, PreStop Hook을 통해 파드 종료 전 대기 시간을 확보했다. 이 설정을 통해 502 에러를 방지하고 안정적으로 종료되는 것을 확인했다.
Warm up 및 MLOps 환경 구축
배포 완료 후 첫 요청에서 3초 이상의 지연이 발생하는 문제를 해결하기 위해 Kubernetes StartupProbe를 활용한 Warm up 과정을 추가했다. TorchServe의 Frontend(Java)와 Backend(Python) 구조에서 클래스 로딩 및 모델 초기화가 첫 요청 시점에 수행되는 것을 방지하기 위함이다. MLOps 환경은 Kubeflow Pipeline과 MLFlow를 기반으로 구성되었으며, ArgoCD와 ArgoCD Image Updater를 활용해 모델 레포와 서빙 레포를 분리한 GitOps 기반 배포 파이프라인을 자동화했다.
이 한국어 요약은 AI가 자동으로 만들었습니다. 원문의 주장과 맥락은 원문에서 확인해 주세요. 저작권은 원저작자에게 있습니다.