MLOps가 왜 필요할까?
모델이 배포되었다고 가정했을 때, 아래와 같은 다양한 이슈들이 발생할 것이다.
- 모델의 결과 값이 이상한 경우
- 원인 파악 필요
input data가 이상한 경우
- 모델의 성능이 계속 변경되는 경우
- 모델의 성능을 확인하기 위해서는 예측값과 실제 레이블을 알아야하는데
비정형 데이터 등에서는 알기가 어려움
- 새로운 모델이 더 안좋은 경우
- Research 환경에서는 성능이 더 좋았던 모델이 Production 환경에서는 좋지 않을 수 있다.
이전 모델을 다시 사용하기 위한 작업이 필요하다.
💡 MLOps = ML + Ops(Operation)
비즈니스 문제에 머신러닝/딥러닝을 적용하는 경우가 많아지고 있다.
Production 환경에 배포하는 모델은 Research 모델을 재현 가능해야 한다.
MLOps는 머신러닝 모델 개발과 머신러닝 모델 운영에서 사용되는 문제, 반복을 최소화하고 비즈니스 가치를 창출하는 것이 목표
MLOps Component
Server 인프라
- 예상가능한 트래픽이 얼마나 되는가?
- 서버의 CPU, Memory 성능은 어느정도인가?
- 스케일 업, 스케일 아웃이 가능한가?
- 자체 서버를 구축할지, 클라우드를 사용할지?
GPU 인프라
인프라
- 클라우드: AWS, GCP, Azure, NCP
- 온 프레미스 : 회사나 대학원의 전산실에 서버를 직접 설치
Serving
- 정기 배송처럼 일정 주기마다 서빙받기를 원하는 경우 Batch Serving
- 실시간으로 한번에 하나씩 전달하는 경우 Online Serving
Experiment, Model Management
- 모델링을 하면서 다양한 실험을 진행하게 되고 성능이 제일 좋았던 것을 Production에 사용할 것이다.
학습 과정에서의 Artifact들을 저장한다.
Feature Store
- 모델링 때 사용하는 공통적으로 사용하는 Feature들을 저장하여 데이터 전처리 시간을 줄일 수 있다.
정형 데이터에서 많이 사용된다. 아직 비정형 데이터에서는 잘 사용되지 않고있음
Data Validation
- Research와 Production 환경에서의 Feature의 분포 차이를 확인할 필요가 있다.
Continuous Training
- 새로운 데이터가 들어올 때나 Metric이 특정 값이 되었을 때 다시 학습하도록 할 수 있음
Monitoring
- 모델의 지표, 인프라의 성능 지표 등을 잘 기록해야 한다.
AutoML
- 시간 소모적이고 반복적인 기계 학습 모델 개발 작업을 자동화하는 프로세스