최근 시스템 프로그래머 직무에서 AI / 데이터 분석 쪽으로 직무를 변경하면서 새로운 지식들을 쌓아가고 있다. 그 중 팀 내에 MLflow를 적용하려는 움직임이 있어서 공부 겸 MLflow 정리를 진행한다.
시작하기 전에
머신러닝 프로젝트를 진행하다보면 많은 어려움이 많다. 머신러닝 프로젝트는 관리가 필요한 요소가 너무나 많다.
- 학습에 사용된 데이터
- 모델에 사용된 파라미터
- 모델에 사용된 Feature
- 실험 결과 저장 장소 및 히스토리
- 학습된 모델의 버전 관리
- 학습에 사용된 코드 버전
위 요소 외에도 관리해야 할 요소들이 매우 많다. 이러한 요소들을 로컬환경에서 개인별로 관리하는 것이 아닌 중앙 서버에서 관리해준다면 매우 편리할 것이다.
그리고 모델을 배포하는 것에도 난이도가 있다. 머신러닝 개발자마다 keras, pytorch 등 사용하는 프레임워크가 다르고 배포를 어떤 방식으로 진행할지도 각자의 의견이 다르다. 또한 배포된 모델의 버전관리는 어떻게 해야할지도 큰 논쟁요소가 된다.
MLflow란?
MLflow는 End-to-End로 머신 러닝 라이프사이클을 관리하기 위한 오픈 소스 플랫폼이다.
현재 MLflow는 다음과 같은 경량 API 집합을 제공한다. 어디서나 기존 머신러닝 애플리케이션 또는 라이브러리(TensorFlow, PyTorch, XGBoost 등)와 함께 사용할 수 있으며 머신러닝을 개발 중인 환경 어디든(Notebook, Standard Application, Cloud 등) 실행될 수 있다.
MLflow 플랫폼은 크게 MLflow Tracking, MLflow Projects, MLflow Models, MLflow Model Registry의 컴포넌트로 구성된다.
- MLflow Tracking
- 기계 학습 코드를 실행할 때 파라미터, 코드 버전, 메트릭 및 결과 파일을 기록
- 나중에 결과를 시각화하기 위한 API 및 UI를 제공한다
- MLflow Projects
- 머신러닝 코드를 재사용 가능하고 재현 가능한 형태로 패키징 -> 어떤 플랫폼에서도 재현가능하도록 지원
- 포장된 형태를 다른 데이터 사이언티스트와 공유하거나 프러덕션에 반영
- 프로젝트를 실행하기 위한 API와 명령줄 도구가 포함되어 있어 프로젝트를 워크플로우로 연결할 수 있는 기능 제공
- MLflow Models
- 머신러닝 모델을 패키징하고 서빙할 수 있는 표준화 방법 제공
- 동일한 모델을 AWS, Apache Spark 등 으로 쉽게 배치할 수 있도록 지원
- 다양한 다운스트림 도구(예: REST API를 통한 실시간 제공 또는 Apache Spark의 추론)에서 사용할 수 있는 기계 학습 모델을 패키징하기 위한 표준 형식
- 다양한 다운스트림 도구에서 이해할 수 있는 다양한 "특성"으로 모델을 저장할 수 있는 규칙을 정의
- MLflow Model Registry
- MLflow 모델의 전체 수명 주기를 공동으로 관리하기 위한 중앙 집중식 모델 스토어, API 및 UI 모음
- 모델 계보(MLflow 실험 및 실행이 모델을 생성함), 모델 버전 관리, 단계 전환(예: 스테이징에서 프로덕션으로) 및 주석을 제공.
MLflow 설치해보기
Skinny 버전이 아니라 일반 버전으로 설치했습니다.
# Install MLflow
pip install mlflow
# Install MLflow with extra ML libraries and 3rd-party tools
pip install mlflow[extras]
# Install a lightweight version of MLflow
pip install mlflow-skinny
참고
- https://github.com/mlflow/mlflow
- https://mlflow.org/docs/latest/index.html#
'AI > MLOps' 카테고리의 다른 글
[MLflow] MLflow Project와 Model의 차이 (0) | 2023.05.21 |
---|---|
[MLflow] #5. MLflow Model Registry (0) | 2023.04.07 |
[MLflow] #4. MLflow Projects 정리하기 (0) | 2023.04.05 |
[MLflow] #3. MLflow Model 정리하기 (0) | 2023.04.01 |
[MLflow] #2. Tracking 기능 사용해보기 (0) | 2023.03.30 |