MLflow
Build better models and generative AI apps on a unified, end-to-end, open source MLOps platform
소개
MLflow는 머신 러닝 모델을 개발, 트레이닝, 디버깅, 배포하는 데 도움이 되는 오픈 소스 플랫폼이다. MLflow는 머신 러닝 프로젝트에서 중요한 작업인 모델 튜닝과 추적, 모델 서빙, 모델 버전 관리 등을 효율적으로 수행할 수 있도록 도와준다.
- 장점
- 오픈 소스임. 다른 MLOps 플랫폼에 통합이 쉬게 이뤄질 수 있게 되어 있음.
- 다양한 머신 러닝 프레임워크와 통합되어 있어, 머신 러닝 모델의 개발과 관리를 보다 쉽게 가능.
- 모델의 개발, 테스트, 배포, 모니터링 및 관리를 통합된 인터페이스에서 수행할 수 있어 생산성과 효율성이 높아짐.
- 다양한 실험을 수행하고, 실험 결과를 쉽게 추적하고 비교 가능.
- 모델의 성능과 안정성을 평가하고, 모델의 버전 관리를 가능.
- 엔터프라이즈급 시스템에서 사용하기 적합한 보안성과 확장성을 제공.
- 단점
- 모델의 개발환경에 MLflow를 적용하는 것이 어렵거나 불가능한 경우 존재함.
- MLflow의 추가 기능이 필요한 경우, 별도의 프로그래밍이 필요함.
- MLflow가 제공하는 모델 개발 및 관리 기능이 충분하지 않을 수 있음.
MLflow는 아래와같이 크게 4가지 컴포넌트로 구성되어 있다. 이 4가지 MLflow Tracking, MLflow Porjects, MLflow Models, Model Registry 가 MLFlow의 주요 기능이 된다.
MLflow Tracking
MLflow Tracking은 머신러닝 모델 개발 시 얻게 되는 모든 데이터와 정보를 쉽게 기록하고, 추적하고, 시각화할 수 있는 기능을 제공한다. MLflow Tracking은 여러 언어와 프레임워크에서 사용할 수 있으며, 로컬 또는 원격 서버에서 실행할 수 있다. 다양한 데이터베이스 및 클라우드 스토리지와 통합되어 있어, 실험 데이터를 효율적으로 저장하고 관리할 수 있다. 이러면 기능 제공으로 인해 어려 MLOps 플랫폼으로의 통합이 가능하다.
다음과 같은 세부 기능을 갖는다.
- 실험의 실행 관리: 실험의 시작 및 종료 시간, 실험 담당자, 실험 환경 정보 등을 추적
- 코드와 데이터 버전 관리: 실험 시 사용한 코드 및 데이터 버전을 추적
- 메트릭 및 결과 추적: 실험에서 생성된 모델의 성능 메트릭을 추적하고, 모델 결과를 기록
- 모델 아티팩트 관리: 실험에서 생성된 모델 아티팩트를 저장하고, 추적
- 원격 실행 및 추적: 다른 환경에서 실행된 실험을 추적
- 시각화 및 비교: 실험 결과를 시각화하고, 다른 실험 결과와 비교
MLflow Projects
MLflow Projects는 머신러닝 모델 개발 시 프로젝트 구성 및 관리를 위한 기능을 제공한다. 이 기능은 머신러닝 프로젝트의 코드, 데이터, 환경 정보, 파라미터 등을 패키징하고, 이 패키징 환경을 동일하게 사용하여 실행 및 추적할 수 있도록 제공한다. 이 Project는 MLproject이란 이름의 파일로 관리된다. 이 파일에 해당 프로젝트의 코드, 환경 정보 등이 모두 들어가 있어서 이 파일을 사용하여 동일한 환경의 재실행을 할 수 있게 된다.
다음과 같은 세부 기능을 갖는다.
- 코드 버전 관리: 프로젝트의 코드를 Git과 같은 버전 관리 시스템과 통합하여 관리
- 프로젝트 패키징: 프로젝트의 코드와 필요한 패키지, 데이터 등을 패키징하여 쉽게 배포하고 실행 환경을 제공
- 실행 환경 관리: 프로젝트의 실행 환경을 설정하여, 독립적인 실행 환경을 생성 가능
- 파라미터 관리: 실행 시 사용되는 파라미터를 관리
- 모델 버전 관리: 모델의 버전을 관리하고, 저장하여 추후 재사용이 가능하도록 기능 제공
MLflow Models
MLflow Models는 머신러닝 모델 개발 시 모델 관리 및 배포를 위한 기능을 제공한다. 이 기능은 머신러닝 모델의 훈련과 평가, 그리고 추론을 모두 지원하는 종합적인 모델 관리 기능이다. 머신러닝 모델 개발 시 모델의 저장, 버전 관리, 형식 변환, 메타데이터 관리, 배포 등을 편리하게 수행할 수 있게 기능을 제공해준다.
다음과 같은 세부 기능을 갖는다.
- 모델 저장 및 버전 관리: 머신러닝 모델을 저장하고 버전 관리하여, 이전 버전과의 비교 및 재사용이 가능
- 모델 추론 함수 정의: 저장된 모델에 대한 추론 함수를 정의하여, 새로운 데이터에 대한 예측을 쉽게 수행 가능
- 모델 형식 변환: 다양한 머신러닝 라이브러리와 프레임워크 간의 모델 형식을 변환하여, 모델을 쉽게 이식 가능
- 모델 메타데이터 관리: 모델의 메타데이터, 예를 들어 모델의 생성 일자, 생성자, 학습된 데이터 등을 추적 기능
- 모델 배포: 저장된 모델을 서버에 배포하여, 클라이언트에서 쉽게 모델 추론을 수행 가능
Model Registry
Model Registry는 머신러닝 모델을 팀 내에서 공유, 추적, 검증, 배포하기 위한 중앙 집중식 저장소 역할을 합니다. Model Registry는 모델 수명 주기의 모든 단계에서 다양한 형태의 협업을 지원하여, 팀 내의 머신러닝 개발자 및 데이터 과학자가 함께 모델을 버전 관리할 수 있도록 해준다.
다음과 같은 세부 기능을 갖는다.
- 모델 저장 및 버전 관리: 머신러닝 모델을 저장하고 버전 관리하여, 이전 버전과의 비교 및 재사용이 가능
- 모델 등록: Model Registry에서는 모델을 등록하여 다른 팀원이 모델에 대한 정보를 공유함
- 모델 버전 관리: Model Registry에서는 모델 버전을 관리하여, 이전 버전과의 비교 및 추적이 가능
- 모델 배포: Model Registry에서는 모델을 배포하여, 다른 팀원이 모델 추론을 수행할 수 있도록 해줌
with Triton
- MLflow Triton Plugin | NVIDIA NGC
- [추천] Serving and Managing ML models with Mlflow and Nvidia Triton Inference Server | by Ashwin Mudhol | Medium
See also
- Workflow management system (WfMS; WFMS; Workflow Engine)
- Kubeflow
- Airflow
- JupyterFlow
- Argo Workflows
- Seldon Core - 수천 개의 프로덕션 기계 학습 모델을 패키징, 배포, 모니터링 및 관리하는 MLOps 프레임워크
- MLops