API 형태로 바로 결과를 환해야 하는 경우나 서버와 통신이 필요한 경우 사용
처음부터 Online serving 형태로 만들기보다는 실시간 모델 결과가 어떻게 활용될지에 대해 생각해보고 필요하다면 진행


어떤 데이터(Input)를 제공하며 예측해달라고 요청(Request)하면,
모델을 사용해 예측 값을 반환(Response)하는 서버
ML 모델 서버에 요청 시 ML 서버에서 데이터 전처리가 이루어질 수도, 별도의 전처리 서버에서 이루어질 수도 있음
서비스의 서버에 ML 서버가 포함될 수도, 별도 운영할 수도 있음
운영체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스
기계와 인간의 소통 창구 ex) 리모컨
오픈 API, 라이브러리의 함수(Pandas, Tensorflow, PyTorch...) 등
타코집의 주문 요청 API, 메뉴확인 API, 결제 API 등 각기 다른 기능

AWS의 SageMaker, GCP의 VertexAI 등
직접 구축해야 하는 MLOps의 다양한 부분(API 서버 만들기)이 만들어짐
사용자 관점에선 PyTorch 사용하듯 학습 코드만 제공하면 API 서버가 만들어짐
비용 문제 : 직접 만드는 것보단 더 많은 비용이 나갈 수 있음
회사의 상황에 따라 클라우드 서비스를 활용하는 것이 좋은 시기도 존재
(소수의 인원만 존재하며, 소수의 인원이 많은 업무를 해야하는 경우)
클라우드의 내부 실행 구조를 잘 알아야 문제 상황이 발견되었을 때 잘 해결할 수 있음
클라우드 서비스에선 어떤 방식으로 AI 제품을 만들었는지 확인할 수도 있어서 사용해보는 것도 좋음
Tensorflow Serving, Torch Serve, MLFlow, BentoML 등
Fast API를 사용하기에는 서버에 대한 이해가 충분하지 않을 때 사용 가능
추상화된 패턴을 잘 제공하는 오픈소스를 활용
BentoML 예시

위 코드를 실행하고 학습한 뒤 CLI에서 bentoml serve IrisClassifier:latest
입력하면 배포 완료
serving 라이브러리의 경우 사용법은 간단하지만 라이브러리에 종속될 우려와, low level의 이해가 부족하다는 점, 그리고 서버 프로그래밍의 필요성 때문에 서버 프로그래밍 이후에 학습할 예정
Python, 패키지 버전 등 dependency와 재현 가능성 중요(Virtualenv, Poetry, Docker)
Latency 최소화 : 데이터 추출 위한 쿼리 실행 및 결과 반환, 모델 수행 연산, 결과 값에 대한 보정(후처리) 필요-ex) 집값 음수
데이터 전처리 서버 분리 or Feature store 사용
모델 경량화
병렬처리(Ray)
예측 결과 캐싱
Batch Serving은 주기적으로 한번에 많은 양을 학습하거나 예측하는 경우 사용
Workflow Scheduler 사용(10시에 python main.py 실행) - Airflow, Cron Job
학습 / 예측을 별도의 작업으로 설정하여 따로 진행 가능
실시간이 필요 없는 대부분의 방식에서 활용 가능
Jupyter Notebook에 작성한 코드를 함수화한 후, 주기적으로 실행하는 간단한 구조로, Online Serving보다 구현이 수월하며 간단함
한번에 많은 데이터를 처리하므로 Latency가 문제되지 않음
추후 정리 예정
추후 정리 예정