새소식

부스트캠프 AI Tech 4기

[Product Serving 개론] 2.Model Serving

  • -

Model Serving

Online Serving

  • 클라이언트로부터 ML 모델 서버에 Request가 올 때마다 실시간으로 예측하고 예측값을 Response

  • 서비스 서버에 ML 서버를 포함하는 경우도 있고, ML 서버를 별도로 운영하는 경우도 존재
  • ML 모델 서버에 Request를 할 때 데이터 전처리가 필요한 경우가 있는데, 분리를 위해 전처리 서버, ML 서버로 나눌 수도 있음

 

Online Serving 구현 방식

  • 직접 API 웹서버 개발: Flask, FastAPI 등을 사용해 서버 구축
  • 클라우드 서비스 활용: AWS의 SageMaker, GCP의 Vertex AI 등
  • Serving 라이브러리 : Tensorflow Serving, Torch Serve, MLFLow, BentoML 등

 

Serving 방법을 선택하는 방법

주어진 환경에 따라 다르다.

만약 클라우드 비용에 대해 괜찮을 경우

1) 프로토타입 모델을 클라우드 서비스를 활용해 배포

2) 직접 FastAPI 등을 활용해 서버 개발

3) Serving 라이브러리를 활용해 개발

 

Online Serving에서 고려할 부분

  • Serving 할 때 Python 버전, 패키지 버전 등 Dependency가 굉장히 중요하다.
    → Docker
  • 실시간 예측을 하기 때문에 예측할 때 지연 시간을 최소화해야한다.
    1. input 데이터를 기반으로 DB에 있는 데이터를 추출해서 모델을 예측해야하는 경우
      데이터를 추출하기 위해 쿼리를 실행하고 결과를 받는 시간이 소요
    2. 모델이 수행하는 연산
      모델을 경량화하는 작업이 필요할 수도 있으며, 복잡한 모델보다는 간단한 모델을 사용하는 경우도 존재
    3. 결과 값에 대한 보정이 필요한 경우
      머신러닝 알고리즘에서 유효하지 않은 예측값이 반환될 수 있는데 이를 보정하는 코드가 필요할 수 있다.

 


Batch Serving

  • 주기적으로 특정 기간 단위(하루, 1시간)마다 input을 모아서 실행

  • Batch Serving을 위한 라이브러리는 따로 존재하지 않는다.
    함수 단위를 "주기적"으로 실행한다.
  • Airflow, Cron Job 등으로 스케쥴링 작업을 한다.

  • ex) 추천시스템 : 1일 전에 생성된 컨텐츠에 대한 추천 리스트 예측 등

  • 장점: Online Serving보다 구현이 간단하며, 한번에 많은 데이터를 처리하므로 Latency가 문제되지 않음
  • 단점: 실시간으로 활용할 수는 없다. Cold Start 문제(오늘 새로 생긴 컨텐츠는 추천할 수 없음)

 

 

728x90
Contents