- 문제 정의
- EDA
- Feature Engineering
- Train
- Predict
Server Infra
고려해야할 부분
- 유동 인구 (= 예상 트래픽)
- 가게의 평수 (= 서버의 CPU, Memory 성능)
- 점포 확장 가능 여부 (= 스케일 업, 스케일 아웃 가능 여부)
- 직접 장소를 구입할지? 월세로 할지? (= 자체 서버 구축, 클라우드)
GPU Infra
Infra
Serving
Experiment, Model Management
- 레시피를 기록해야 어떤 조합이 좋은지 알 수 있음(파라미터, 모델 구조 등)
- 여러 시행착오를 겪으며 요리함
- 제일 맛있었던(성능이 좋았던) 레시피를 레스토랑에 사용
- 만드는 과정에서 생기는 부산물 저장(= 모델 Artifact, 이미지 등)
- 타코(모델)는 다양한 종류가 있으므로 언제 만든 타코인지(=모델 생성일), 얼마나 맛있었는지(모델 성능), 유통기한 등(=모델 메타 정보)을 기록해둘 수 있음
Feature Store
- 요리별로 사용되는 재료들이 중복됨, 반죽이나 간 등을 미리 만들면 편함
- 이런 재료를 가공해서 냉장고에 저장(= 머신러닝 Feature를 집계한 Feature Store)
Data Validation
Continuous Training
Monitoring
AutoML
Serving
- Production(Real World) 환경에 모델을 사용할 수 있도록 배포
- 머신러닝 모델을 개발하고, 현실 세계(앱,웹)에서 사용할 수 있게 만드는 행위
- 서비스화라고 표현할 수 있음
- 머신러닝 모델을 회사 서비스 기능 중 하나로 활용
- Input이 제공되면 모델이 예측 값(Output)을 반환
- Serving : 모델을 웹/앱 서비스에 배포하는 과정, 모델을 활용하는 방식, 모델을 서비스화하는 관점
- Inference : 모델에 데이터가 제공되어 예측하는 경우, 사용하는 관점
- Serving : Inference 용어가 혼재되어 사용되는 경우도 존재
Web Server Basic
API
Online Servig vs Batch Serving
처음부터 Online Serving(API 형태) 만들어야 하는 것은 아니고, 실시간 모델 결과가 어떻게 활용되는지에 대한 생각이 필요(예측해도 활용이 되지 않는다면 Batch로 진행해도 무방)
Batch Serving 결과를 Database에 저장하고, 서버는 Database의 데이터를 쿼리해서 주기적으로 조회하는 방식으로 사용할 수 있음
우선 Batch Serving으로 모델을 운영하면서 점점 API 형태로 변환
모델을 개발한 후, 사람들과 테스트할 수 있는 프로토타입을 만들기
ipywidget과 같이 사용할 경우 간단한 대시보드를 구축할 수도 있음
실행할 때 저장된 Notebook 파일이 순차적으로 실행
Notebook에서 별도의 코드 추가 없이 실행할 수 있는 점이 Voila의 강점
ipywidget과 같이 사용하면 인터랙티브한 효과를 줄 수 있음
import ipywidgets as widgets
from IPyhthon.display import display
>>> int_widget.value # 값이 보임
4
>>> int_widget.value = 8 # 값이 변경됨