AI Briefing

컬리, 장바구니 추천 서비스 TorchServe 기반 실시간 서빙 아키텍처 구축기

·2024.05.27 10:00

핵심 내용

컬리 데이터서비스개발팀이 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가 자동으로 만들었습니다. 원문의 주장과 맥락은 원문에서 확인해 주세요. 저작권은 원저작자에게 있습니다.

AI 처리 방식을 확인하거나, 요약 오류와 출처 표기 문제, 삭제 요청을 문의 · 건의로 알려주세요.