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

circle-info

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

Last updated

Was this helpful?