MLOps 개론
모델 개발 프로세스(Research)
- 문제정의
- EDA
데이터 특성 확인 - Feature Engineering
- Train
- Predict
보통 주피터 노트북으로 GPU instance 안에서 고정된 데이터를 사용해 학습했을 것이다.
학습된 모델을 웹 등의 서비스에서 사용할 수 있도록 하는 과정을 real world환경 / production 환경에 모델을 배포한다고 한다.
모델 개발 프로세스(Production)
- 문제정의
- EDA
- Feature Engineering
- Train
- Predict
- Deploy
웹이나 앱에서 활용할 수 있게 만드는 과정
모델에 input을 제공하고 output을 요청
모델이 배포되었다고 가정하면
- 모델의 결과값이 이상할 수 있다.
그럴 때는 원인을 알아보고, input값을 확인해보아야한다.
outlier 제거를 위해서 별도의 처리가 필요하다 - 모델의 성능이 계속 변경될 수 있다.
정형 데이터에서는 예측값과 실제 레이블을 정확히 알 수 있지만 비정형 데이터에서는 알기 힘들 수 있다. 모델의 성능을 어떻게 확인할 지도 중요하다. 간혹 research환경에서 성능이 좋았던 모델이 production환경에서는 안 좋을 수 있다. 이 과정을 쉽게할 수 있는 준비가 필요하다
MLOps 란?
머신러닝 모델링 코드는 머신러닝 시스템 중 굉장히 일부다
데이터, 수집, infra등 주위의 것들이 많은 부분을 차지한다.
MLOps=ML(Machine Learning) + Ops(Operations)
=ML engineering + data engineering + cloud + infra
: ML 모델을 운영하면서 반복적인 업무를 자동화
Research ML과 Production ML의 차이
Research ML | Production ML | |
데이터 | 고정 | 계속 변함 |
초점, 중요 요소 | 성능 | 빠른 inference, 해석 가능 |
도전 과제 | SOTA 모델 | 안정적인 운영 |
학습 | 모델 구조, 파라미터 | 시간에 따라 변경된 데이터를 재학습 |
목적 | 논문 | 서비스의 문제 해결 |
표현 | Offline | Online |
다양한 라이브러리들이 있다.
ML Ops Component
- Infra(Server, GPU)
- 트래픽
- 서버의 CPU, Memory
- scale up, scale out
- 자체 서버 구축, 클라우드(AWS, GCP, Azure, NCP), 온 프레미스
- 로컬 GPU, 클라우드 GPU
- Serving
- Batch Serving, Online Serving
- clipper, BentoML 등의 라이브러리가 있다
- Experiment, Model Management
- 모델 생성일, 모델 성능, 메타정보, 하이퍼파라미터 등을 기록
- mlflow 같은 라이브러리가 있다
- Feature Store
- feature를 집계한 feature store을 통해서 전처리하는 시간을 줄일 수 있다
- 아직은 정형데이터에서 많이 사용한다
- 라이브러리 : Feast, hopsworks
- 라이브러리를 사용하지 않고 직접 개발하는 편이다.
- Data Validation
- feature의 분포 확인
- training과 serving의 분포 차이
- data drift, model drift, concept drift
- data quality 측정
- 라이브러리 : TFDV, AWS deequ
- Continuous Training
- 새로운데이터가 들어왔을 때, 갑자기 metric결과값이 안 좋아질 때 다시 학습
- Monitoring
- 모델의 지표, 인프라의 성능을 모니터링하여 결과 분석
- Auto ML
- 자동으로 학습
- 라이브러리 : NNI
'부스트캠프 AI Tech 3기 > 프로젝트 : P-stage' 카테고리의 다른 글
[Day82] Product Serving 2-1 프로토타이핑 - Notebook 베이스(Voila) (0) | 2022.05.18 |
---|---|
[Day82] Product Serving 1-3 Model Serving (0) | 2022.05.18 |
[Day74] Github 특강 2-2 amend, reset (0) | 2022.05.06 |
Wandb Sweep 하는 방법 : 하이퍼 파라미터 자동 튜닝 (0) | 2022.04.30 |
[Day 68] DKT 4. Sequence Data 문제 정의에 맞는 Transformer Architecture 설계 (0) | 2022.04.27 |