1.3 Model Serving

  • Product Serving 에 대해 자세히 알아보기

1. Model Serving

1.1. Serving Basic

"Production(Real World) 환경에 모델을 사용할 수 있도록 배포"

  • 머신러닝 모델을 개발하고, 현실 세계(앱, 웹)에서 사용할 수 있게 만드는 행위

  • 서비스화라고 표현할 수도 있음

  • 머신러닝 모델을 회사 서비스의 기능 중 하나로 활용

    • ex) 추천 시스템의 추천 알고리즘

  • Input이 제공되면 모델이 예측 값(Output)을 반환

Serving : 모델을 웹/앱 서비스에 배포하는 과정, 모델을 활용하는 방식, 모델을 서비스화하는 관점 Inference : 모델에 데이터가 제공되어 예측하는 경우, 사용하는 관점

웹 서버(Wikipedia)

  • HTTP를 통해 웹 브라우저에서 요청하는 HTML 문서나 오브젝트를 전송해주는 서비스 프로그램

  • 요청(Request)을 받으면 요청한 내용을 보내주는(Response) 프로그램

머신러닝 모델 서버

  • 어떤 데이터(Input)를 제공하며 예측해달라고 요청(Request)하면, 모델을 사용해 예측 값을 반환(Response)하는 서버

API(Application Programming Interface)

"운영체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스"

  • 특정 서비스에서 해당 기능을 사용할 수 있도록 외부에 노출 : 기상청 API, 지도 API

  • 라이브러리의 함수 : Pandas, Tensorflow, PyTorch

2. Online Serving

  • 요청(Request)이 올 때마다 실시간으로 예측

  • 클라이언트(애플리케이션)에서 ML 모델 서버에 HTTP 요청(Request)하고, 머신러닝 모델 서버에서 예측한 후, 예측 값(응답)을 반환(Response)

진행하고 있는 프로젝트로 생각하면, 욕설감지의 경우 실시간으로 이루어지는 Online Serving으로 볼 수 있다.

사용자가 문구를 입력 -> 서버로 Text 전달 -> 욕설여부 판단 -> 사용자에게 전달

  • ML 모델 서버에 요청할 때, 필요시 ML 모델 서버에서 데이터 전처리를 해야할 수 있음 (혹은 분리를 위해 전처리 서버 / ML 모델 서버로 나눌 수도 있음)

    • 전처리에 사용되는 비용이 클 경우

  • 서비스의 서버에 ML 서버를 포함하는 경우도 있고, ML 서버를 별도로 운영하는 경우도 존재

  • Online Serving을 구현하는 방식

    • 직접 API 웹 서버 개발 : Flask, FastAPI 등을 사용해 서버 구축

    • 클라우드 서비스 활용 : AWS의 SageMaker, GCP의 Vertex AI 등

    • Serving 라이브러리 활용 : Tensorflow Serving, Torch Serve, MLFlow, BentoML 등

  • Online Serving에서 고려할 부분

    • 재현가능성, 디펜던시 관리 (poetry, Docker)

    • 실시간 예측처리를 고려한 속도

      • Data Load

      • 모델 연산

      • 후처리

3. Batch Serving

  • 주기적인 Term을 가지고 이루어지는 과정(스케줄러)

  • Airflow, Cron Job 등으로 스케쥴링 작업(Workflow Scheduler)

라이브커머스 하루의 방송이 종료되고, 그날 발생한 데이터에 대한 분석 및 리포팅을 하는 경우 그날의 작업이 완료되고, 새벽에 배치가 이루어지면 된다.

단, 실시간이 아니므로 적용되기까지 시간이 소요된다.

4. Further Reading

다른 것보다 실제로 회사생활을 해본 경험으로 어떤 이슈들과 어떤 점을 중점적으로 생각하여야하는지가 잘 와닿았다. API서버도 구축해본 경험이 있고, 실시간 / Batch 데이터 전송도 경험해본바가 있어 생소한 툴에 대한 활용법 위주로 생각해보면 좋을 것 같다.

Last updated