본문 바로가기

부스트캠프 AI Tech 3기/프로젝트 : P-stage

[Day82] Product Serving 1-3 Model Serving

Model Serving

Serving

  • production 환경에 모델을 사용할 수 있도록 배포
  • 서비스화
  • batch serving, online serving, edge serving 등이 있다

serving과 inference 용어 자체가 혼재되어 많이 사용되니 참고!

Online Serving

Web Server

  • Server와 Client가 request와 response를 주고 받으며 다양한 요청을 처리
  • web server는 client의 다양한 요청을 처리한다

Machine learning Server

  • machine learning server도 client 의 다양한 요청을 처리한다.
  • 어떤 input을 주면서 예측해달라고 요청(request)하면 모델을 사용해 예측값을 response하는 서버

API

  • 운영체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스
  • 특정 서비스에서 해당 기능을 사용할 수 있도록 외부에 노출 ex) 지도 API
  • pytorch, pandas도 API이다.
  • 서버도 여러 API를 가지고 있다.

Online Serving

input이 서버에 접근해서 예측 요청한다. 서버는 모델 로드 후 예측해서 output data를 반환한다.

 

  • 요청이 올때마다 실시간으로 예측
  • Online serving과 online inference의 미묘한 차이가 무엇일까?
  • 단일 데이터 처리
  • 서버가 커지면 전처리를 따로 분리할 수도 있다
  • 서비스 서버 안에 ML서버를 포함할 수도, 별도로 운영할 수도 있다

Online Serving을 구현하는 방식

  1. 직접 API 웹 서버 개발
    flaks, fast API
  2. 클라우드 서비스 이용
    AWS,GCP의 Vertex AI
  3. serving 라이브러리 사용
    BentoML, Tensorflow Serving

Online Serving에서 고려할 부분

  • 패키지 버전 등 Dependency를 보장하는 재현 가능한 코드를 배포해야한다.
  • 실시간 예측이기 때문에 지연시간을  최소화해야한다.
  • input 데이터 그대로 가 아닌 input에 대해서 또 database에서 추출해서 모델예측을 해야하면 시간이 조금 더 걸린다
  • RNN,LSTM은 많은 연산과 시간이 걸린다.
  • 병렬,분산 처리
  • 결과값 보정:후처리

Batch Serving

한 번에 많은 데이터가 요청하고 한 번에 예측

 

  • Workflow Scheduler로 특정 기간 단위로 실행한다.
  • 주기적으로 학습,예측하는 경우 사용한다
  • 한 번에 많은 예측을 실행한다.
  • 따로 라이브러리가 존재하지 않고 단지 함수단위를 주기적으로 실행하면 된다.
  • 실시간이 필요없는 방식에 사용
  • airflow

ex) spotify-discover weekly

 

Online Serving Batch Serving
데이터를 하나씩 요청하는 경우 여러가지 데이터가 한꺼번에 처리되는 경우
API형태로 바로 결과를 반환해야하는 경우 1시간에 1번씩 예측해도 괜찮은 경우
서버와 통신이 필요한 경우 serving한 결과를 DB에 저장하고 나중에 가져가도 괜찮은 경우
  예측해도 활용이 되지 않는 경우

 

다음글 Product Serving 1-4는 이전의 서비스 개발 강의와 같은 내용입니다.

 

[Day17] AI 서비스 개발 2. 머신러닝 프로젝트 라이프 사이클

머신러닝 프로젝트 Flow 현상을 파악하고 문제를 정의를 하는데, 문제를 잘 풀기 위해서는 정의를 구체적이고 명확하게 해야한다. 문제를 해결하면 무엇이 좋을까? 왜 해결해야 하나 어떻게 해결

chae52.tistory.com