Day_85 01. MLOps 개론
작성일
MLOps 개론
모델 개발 프로세스 - Research
위 프로세스는 보통 자신의 컴퓨터, 서버 인스턴스 등에서 실행
고정된 데이터 를 사용해 학습
학습된 모델을 앱, 웹 서비스에서 사용할 수 있도록 만드는 과정이 필요
이런 경우 Real World, Production 환경에 모델을 배포 한다고 표현
모델 개발 프로세스 - Production
웹, 앱 서비스에서 활용할 수 있게 만드는 과정
- “모델에게 데이터(Input)를 제공하면서, (Output) 예측해주세요” 라고 요청
모델이 배포되었다고 가정
모델의 결과값이 이상한 경우가 존재
$\rightarrow$ 원인 파악 필요
$\rightarrow$ Input 데이터가 이상한 경우가 존재(x 값이 0~100 이내여야 하는데 Input 으로 200이 들어오는 경우)
$\rightarrow$ Research 할 땐 Outlier 로 제외할 수 있지만, 실제 서비스에선 제외가 힘든 상황(별도 처리 필요)
모델의 성능이 계속 변경
$\rightarrow$ 모델의 성능은 어떻게 확인할 수 있을까?
$\rightarrow$ 예측 값과 실제 레이블을 알아야 함
$\rightarrow$ 정형(Tabular) 데이터에서는 정확히 알 수 있지만, 비정형 데이터(이미지 등)는 잘 모를 수 있음
새로운 모델이 더 안 좋다면?
$\rightarrow$ 그 모델을 다시 사용해야 함
$\rightarrow$ Resaerch 환경에선 성능이 더 좋았던 모델이 Production 환경에선 더 좋지 않을 수 있음
$\rightarrow$ 이전 모델을 다시 사용하기 위한 작업이 필요
그 외엥도 다양한 이슈가 존재
MLOps 란?
머신러닝 모델링 코드는 머신러닝 시스템 중 일부에 불과함
MLOps = ML(Machine Learning) + Ops(Operations)
머신러닝 모델을 운영하면서 반복적으로 필요한 업무를 자동화시키는 과정
머신러닝 엔지니어링 + 데이터 엔지니어링 + 클라우드 + 인프라
머신런이 모델 개발(ML Dev)과 머신런이 모델 운영(Ops)에서 사용되는 문제, 반복을 최소화하고 비즈니스 가치를 창출하는 것이 목표
모델링에 집중할 수 있도록 관련된 인프라를 만들고, 자동으로 운영되도록 만드는 일
최근엔 비즈니스 문제에 머신러닝/딥러닝을 적용하는 Case 가 많아짐
Production 환경에 배포하는 과정엔 Research 의 모델이 재현 가능해야 함
+
현실의 Risk 있는 환경에서 잘 버틸 수 있어야 함
MLOps 의 목표는 빠른 시간 내에 가장 적은 위험을 부담하며 아이디어 단계부터 Production 단계까지 ML 프로젝트를 진행할 수 있도록 기술적 마찰을 줄이는 것
Research 와 Production 의 차이
요즘 MLOps
춘추 전국 시대
- 정말 다양한 라이브러리들이 있고
- 이 라이브러리가 Best 다! 라는 내용이 거의 확립되지 않음
- $\rightarrow$ 라이브러리, tool 에 집중하지 말고 방법에 대해 집중하기!
- 클라우드에서도 MlOps 시장 점유를 목표로 함
MLOps 학습 방법
1) MLOps 에 대한 모든 것을 다 학습하는 방식
2) MLOps 의 각 Component 에서 해결하고 싶은 문제는 무엇 이고,
그 문제를 해결하기 위한 방법으로 어떤 방식을 활용 할 수 있는지를 학습하는 방식
1번은 생태계가 계속 발전하고 있는 상황에서 현실적으로 불가능한 상황
2번을 추천해요
MLOps Component - Infra
클라우드 : AWS, GCP, Azure, NCP 등
온 프레미스 : 회사나 대학원의 전산실에 서버를 직접 설치
회사에서 상황에따라 결정한다고 보면 됨
MLOps Component - Serving
다양한 라이브러리가 있고 최근들어 기울기가 높아지는 걸 볼 수 있음
MLOps Component - Experiment, Model Management
대표적인 라이브러리인 mlflow
MLOps Component - Feature Store
Feature Store 중 유일한 라이브러리
Stream Sources 는 실시간 online 이라고 보면되고 Batch Sources 는 저장되어 있는 offline 이라고 보면됨
라이브러리를 사용하는 것보다는 직접 만들어서 사용하는 경우가 많음
MLOps Component - Data Validation
[Data Drift, Model Drift, Concept Drift]
How to Detect MOdel Drift in MLOps Monitoring
Productionizing Machine Learning: From Deployment to Drift Detection
대표적인 라이브러리
tensorflow 를 쓰면 굉장히 좋음
데이터를 테스트해서 우리가 의미하는 데이터만 들어오는지 확인할 수 있음
MLOps Component - Continuous Training
라이브러리가 따로 있지는 않음
MLOps Component - AutoML
nni
MLOps Component - 정리
머신러닝 모델을 직접 운영하면서 신경써야 하는 부분
대표 Component
- 인프라(서버, GPU)
- Serving
- Experiment, Model Management
- Feature Store
- Data Validation(Data Management)
- Continuous Training
- Monitoring
- AutoML
이 강의에선 인프라와 Serving 에 대해서 집중적으로 다룰 예정
MLOps 는 회사의 비즈니스 상황과 모델 운영 상황에 따라 우선 순위가 달라짐
앞선 모든 요소가 항상 존재해야 하는 것은 아님을 꼭 인지하기!
MLOps 를 처음부터 진행하는 것이 오히려 비효율적일 수 있음
처음엔 작은 단위의 MVP(Minimal Value Product)로 시작해서 점점 운영 리소스가 많이 소요될 때 하나씩 구축하는 방식을 활용
더 발전하기 위한 과제
- MLOps 가 필요한 이유 이해하기
- MLOps 의 각 Component 에 대해 이해하기(왜 이런 Component 가 생겼는가?)
- MLOps 관련된 자료, 논문 읽어보며 강의 내용 외에 어떤 부분이 있는지 파악해보기
- MLOps Component 중 내가 매력적으로 생각하는 TOP3 을 정해보고 왜 그렇게 생각했는지 작성해보기
$\rightarrow$ 자신만의 언어로 노션, 블로그 등에 정리!
참고자료
https://github.com/EthicalML/awesome-production-machine-learning
https://github.com/visenger/awesome-mlops
여기 나오는 각종 Component 의 라이브러리를 사용해보고, 비교해보기
클라우드의 MLOps 서비스도 체험해보는 것도 좋은 경험
Uber MLOps 논문, 기술 블로그
구글 클라우드의 Practitioners Guide to MLOps
Superb AI 의 실리콘밸리의 ML옵스
댓글남기기