모델을 웹/앱 서비스(현실 세계)에 배포하는 과정
머신러닝 모델을 회사 서비스의 기능 중 하나로 활용할 수 있음
Serving : 모델을 웹/앱 서비스에 배포하는 과정 및 활용하는 방식
Inference : 모델에 Input이 주어지고 Output을 도출해내는 과정
2개 용어가 혼재되어 활용됨
요청을 받으면 요청한 내용을 보내주는 프로그램
Client의 다양한 요청을 처리해주는 역할
Application Programming Interface
운영체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 Interface
User들이 Program이나 Application의 여러 기능을 활용할 수 있도록 해주는 도구
기상청 API, 지도 API : 특정 서비스를 활용할 수 있도록 외부에 노출
Pandas, PyTorch : 구현한 기능을 활용할 수 있게 배포해주는 API
1개의 Service는 여러 개의 기능을 가지고 있고, 1개의 기능마다 1개 이상의 API가 포함되어 있다고 생각하면 됨
Service가 커질 경우 '데이터 전처리를 위한 서버' / 'ML 모델 서버'로 나누어 배포하기도 함
회사 개발 조직과 데이터 조직의 협업 방식에 따라서도 나누어 배포할 수 있음
Single Data Point : 단일 데이터를 Input으로 받아 실시간으로 Output을 내도록 Serving한 것
주어진 환경(회사 일정, 인력, 예산, 성능 등)에 따라 다른 방식 채택
Version 등에 대한 Dependency가 중요하므로 "재현 가능 서비스"를 위해 Docker 등의 활용이 필수적이 되고 있음
Online Serving에서는 지연 시간(Latency)를 항상 최소화해야 함
Input 데이터를 기반으로 DB에 있는 데이터를 추출해서 모델을 예측해야 하는 Case
모델 연산 시간
결과값에 대한 보정이 필요함(후처리 코드)
Flask, FastAPI 등을 활용해 서버 구축
localhost 웹 서버를 만듦
AWS SageMaker, GCP Vertex AI 등
장점 : 직접 구축해야 하는 MLOps의 다양한 부분을 할 필요 없음
단점 : 비용이 들고 클라우드 서비스가 익숙해야 활용 가능
소수 인원일 경우 클라우드 서비스를 사용하는 것이 좋으나 내부 실행 구조를 잘 알아야지만 문제 상황이 발견되었을 때 해결할 수 있음
사용은 편하지만, 왜 해당 방식을 활용하는지 이해하지 못 할 수 있음
Fast API 등을 활용할 수도 있지만 서버에 대한 이해가 충분하지 않으면 활용이 어려워질 수 있음
다양한 방식으로 개발이 가능
매번 추상화된 패턴을 가질 수 있음
Input Data가 한번에 Model에 입력되고, 여러 개의 Output Data도 한꺼번에 반환하는 형태
Workflow Scheduler : 요청된 작업을 특정 기간 단위로 수행
주기적으로 학습을 하거나 Prediction 수행
학습 및 Prediction을 "주기적"으로 수행함으로써 Batch Serving 가능
실시간으로 처리할 필요가 없는 대부분의 Case에서 활용
Latency가 문제가 되지 않으며, 병목 현상도 크게 고려하지 않아도 됨
Online Serving보다 구현이 수월하고 간단함
단점 : 실시간으로 활용할 수 없어서 Cold Start 문제 발생
Input 관점
Output 관점