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을 구현하는 방식
- 직접 API 웹 서버 개발
flaks, fast API - 클라우드 서비스 이용
AWS,GCP의 Vertex AI - 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는 이전의 서비스 개발 강의와 같은 내용입니다.
'부스트캠프 AI Tech 3기 > 프로젝트 : P-stage' 카테고리의 다른 글
[Day82] Product Serving 2-2 프로토타이핑 - 웹 서비스 형태(Streamlit) (0) | 2022.05.19 |
---|---|
[Day82] Product Serving 2-1 프로토타이핑 - Notebook 베이스(Voila) (0) | 2022.05.18 |
[Day80] Product Serving 1-2 MLOps 개론 (0) | 2022.05.16 |
[Day74] Github 특강 2-2 amend, reset (0) | 2022.05.06 |
Wandb Sweep 하는 방법 : 하이퍼 파라미터 자동 튜닝 (0) | 2022.04.30 |