포스팅 개요
본 포스팅은 머신러닝 모델의 life cycle과 그 관리 툴 중 하나인 MLflow에 대하여 정리한 글입니다.
머신러닝 모델의 life cycle 구성과 모델 관리의 필요성에 대해 알아본 후, MLflow에 대해 정리하고자 합니다.
ML Model의 Life Cycle
ML Model의 Life Cycle
머신러닝 모델은 다음과 같은 life cycle을 가집니다.
- Raw Data → Data Processing → Train & Evaluate
- Train & Evaluate: 각각의 데이터와 모델, 파라미터로 학습을 해본 후 → 각각의 시도에서 성능 평가를 한 뒤 → 가장 좋은 성능을 내는 모델을 최종 모델로 결정
모델 재현을 위해서 기록해두어야 할 정보
위와 같은 과정을 통해 도출한 최종 모델을 재현하기 위해서는 다음과 같은 정보들을 기록해두어야 합니다.
- source code
- evaluation metric 결과
- parameters
- model.pkl 파일
- 학습에 사용한 data
- data preprocessing code
- etc..
일반적으로는 컴퓨팅 자원보다 스토리지 자원이 저렴하기 때문에,
위에서 제시한 source code, data preprocessing code 뿐만 아니라 학습이 완료된 모델과 전처리가 완료된 데이터까지 정해진 포맷으로 패키징하여 저장해둡니다. 하지만 이 마저도 저장 방식이 제각각이라면 협업 및 관리에 어려움이 있을 수 있습니다.
하지만 이러한 문제가 해결되었다 하더라도 머신러닝 모델은 randon seed, dependency package의 버전 문제 등으로 인해 모델을 완벽하게 재현하기 어려울 뿐더러, 모델 자체의 사이즈로 인해 학습 시간이 아주 오래걸리는 문제가 있을 수도 있습니다.
ML Model Life Cycle 관리의 어려움
위에서 언급한 것들과 더불어 더불어 머신러닝 모델 life cycle의 관리에는 다음과 같은 문제점들이 수반됩니다.
- 비슷한 작업이 반복적으로 일어남
- 많은 dependency package로 인해 버전 관리가 어려움
- 사람에 의한 dependency 발생
- 테스트의 어려움
- reproduce되지 않는 경우 존재
- model 학습용 코드를 구현하는 사람과 serving용 코드를 구현하는 사람이 분리되어 있음
이러한 문제점들을 해결하기 위하여 등장한 것이 MLflow, Tensorboard, Neptune 등 다양한 Model Management(tracking) Tools입니다.
Model Management(tracking) Tools의 역할
Model Management(tracking) Tools은 다음과 같은 역할을 수행합니다.
- 모델 및 모델의 메타 정보를 저장
- 매트릭을 기준으로 한 sorting 제공
- 결과 시각화
- 일정한 포맷으로 통일하여 모델 패키징 저장
- 모델 개발부터 serving까지를 하나의 process로 이어지도록 함
MLflow
MLflow
- MLflow: A Machine Learning Lifecycle Platform
- 머신러닝 모델의 실험을 tracking하고, 모델의 코드를 reproducible하게 packagine하고, model을 공유 및 deploy 할 수 있도록 지원하는 라이브러리
- 머신러닝 모델의 전반적인 lifecycle을 지원하는 라이브러리
MLflow의 구성
MLflow는 크게 MLflow tracking, MLflow projects, Mlflow models, MLflow model registry로 구성되어있습니다.
- MLflow tracking
- 모델의 hyperparameter, code 등을 변경해가며 실험할 때, 각 모델 버전의 metric을 저장하는 중앙 저장소 제공
- 모델과 함께 모델의 메타 정보를 기록할 수 있는 api 제공
- 서버 - 클라이언트 구조
- MLflow projects
- 모델 학습 코드가 reproducible(성능 재현 가능)할 수 있도록 parameter의 데이터 타입, pytorch 버전, Tensorflow 버전 등 모델에 dependency가 있는 모든 정보를 담아 코드를 패키지 형식으로 지원
- MLflow models
- 모델이 어떤 형태로 개발되었는지에 상관 없이 항상 통일된 형태로 배포에 사용할 수 있도록 포맷화
- 특정 프레임워크나 언어에 종속되지 않고 동일한 형태로 배포될 수 있도록 포맷화
- MLflow model registry
- MLflow로 실험했던 모델을 저장하고 관리
MLflow의 장점
- 쉬운 설치 (
라지만 저는 어려웠습니다) - 쉬운 migration
- Dashboard 제공
- 다양한 Client API 제공
- 다양한 Backend Storage 연동 지원
- 다양한 Artifact Storage 연동 지원
'Engineering > MLOps' 카테고리의 다른 글
[MLOps] 06 Model Monitoring - Prometheus (0) | 2023.02.08 |
---|---|
[MLOps] 05 Model Serving (0) | 2023.01.21 |
[MLOps] 03 Data Management & DVC (0) | 2023.01.20 |
[MLOps] 02 Kubernetes Basic (0) | 2023.01.17 |
[MLOps] 01 Docker Basic (0) | 2023.01.16 |
댓글