MLflow 소개

Updated:

근래 ML 분야에 대한 중요성이 부각되면서 MLOps에 관심도 높아지고 있다. MLOps는 상대적으로 최근에 등장한 개념으로, 머신 러닝이 점차 중요해지면서 발전하고 있다. MLOps는 Machine Learning Operations의 줄임말로, 머신 러닝 모델의 개발과 배포, 운영 및 관리를 위한 방법론을 의미한다. 머신 러닝 모델의 배포와 관리를 보다 효율적으로 수행하기 위해서는 머신 러닝 모델의 라이프사이클 전반을 자동화하고 각 단계의 적절한 도구와 프로세스를 적용하는 MLOps의 도입이 필수적이다. MLOps 오픈소스 플랫폼 중 하나인 MLflow에 대해 간략히 알아보는 글이다.

1. MLflow 소개

MLflow는 머신 러닝 모델을 개발, 트레이닝, 디버깅, 배포하는 데 도움이 되는 오픈 소스 플랫폼이다. MLflow는 머신 러닝 프로젝트에서 중요한 작업인 모델 튜닝과 추적, 모델 서빙, 모델 버전 관리 등을 효율적으로 수행할 수 있도록 도와준다.

1.1. 장점

  • 오픈 소스임. 다른 MLOps 플랫폼에 통합이 쉬게 이뤄질 수 있게 되어 있음.
  • 다양한 머신 러닝 프레임워크와 통합되어 있어, 머신 러닝 모델의 개발과 관리를 보다 쉽게 가능.
  • 모델의 개발, 테스트, 배포, 모니터링 및 관리를 통합된 인터페이스에서 수행할 수 있어 생산성과 효율성이 높아짐.
  • 다양한 실험을 수행하고, 실험 결과를 쉽게 추적하고 비교 가능.
  • 모델의 성능과 안정성을 평가하고, 모델의 버전 관리를 가능.
  • 엔터프라이즈급 시스템에서 사용하기 적합한 보안성과 확장성을 제공.

1.2. 단점

  • 모델의 개발환경에 MLflow를 적용하는 것이 어렵거나 불가능한 경우 존재함.
  • MLflow의 추가 기능이 필요한 경우, 별도의 프로그래밍이 필요함.
  • MLflow가 제공하는 모델 개발 및 관리 기능이 충분하지 않을 수 있음.

2. MLflow 주요 기능

MLflow는 아래와같이 크게 4가지 컴포넌트로 구성되어 있다. 이 4가지 MLflow Tracking, MLflow Porjects, MLflow Models, Model Registry 가 MLFlow의 주요 기능이 된다.

2.1. MLflow Tracking

MLflow Tracking은 머신러닝 모델 개발 시 얻게 되는 모든 데이터와 정보를 쉽게 기록하고, 추적하고, 시각화할 수 있는 기능을 제공한다. MLflow Tracking은 여러 언어와 프레임워크에서 사용할 수 있으며, 로컬 또는 원격 서버에서 실행할 수 있다. 다양한 데이터베이스 및 클라우드 스토리지와 통합되어 있어, 실험 데이터를 효율적으로 저장하고 관리할 수 있다. 이러면 기능 제공으로 인해 어려 MLOps 플랫폼으로의 통합이 가능하다.

다음과 같은 세부 기능을 갖는다.

  • 실험의 실행 관리: 실험의 시작 및 종료 시간, 실험 담당자, 실험 환경 정보 등을 추적
  • 코드와 데이터 버전 관리: 실험 시 사용한 코드 및 데이터 버전을 추적
  • 메트릭 및 결과 추적: 실험에서 생성된 모델의 성능 메트릭을 추적하고, 모델 결과를 기록
  • 모델 아티팩트 관리: 실험에서 생성된 모델 아티팩트를 저장하고, 추적
  • 원격 실행 및 추적: 다른 환경에서 실행된 실험을 추적
  • 시각화 및 비교: 실험 결과를 시각화하고, 다른 실험 결과와 비교

2.2. MLflow Projects

MLflow Projects는 머신러닝 모델 개발 시 프로젝트 구성 및 관리를 위한 기능을 제공한다. 이 기능은 머신러닝 프로젝트의 코드, 데이터, 환경 정보, 파라미터 등을 패키징하고,
이 패키징 환경을 동일하게 사용하여 실행 및 추적할 수 있도록 제공한다. 이 Project는 MLproject이란 이름의 파일로 관리된다. 이 파일에 해당 프로젝트의 코드, 환경 정보 등이 모두 들어가 있어서 이 파일을 사용하여 동일한 환경의 재실행을 할 수 있게 된다.

다음과 같은 세부 기능을 갖는다.

  • 코드 버전 관리: 프로젝트의 코드를 Git과 같은 버전 관리 시스템과 통합하여 관리
  • 프로젝트 패키징: 프로젝트의 코드와 필요한 패키지, 데이터 등을 패키징하여 쉽게 배포하고 실행 환경을 제공
  • 실행 환경 관리: 프로젝트의 실행 환경을 설정하여, 독립적인 실행 환경을 생성 가능
  • 파라미터 관리: 실행 시 사용되는 파라미터를 관리
  • 모델 버전 관리: 모델의 버전을 관리하고, 저장하여 추후 재사용이 가능하도록 기능 제공

2.3. MLflow Models

MLflow Models는 머신러닝 모델 개발 시 모델 관리 및 배포를 위한 기능을 제공한다. 이 기능은 머신러닝 모델의 훈련과 평가, 그리고 추론을 모두 지원하는 종합적인 모델 관리 기능이다. 머신러닝 모델 개발 시 모델의 저장, 버전 관리, 형식 변환, 메타데이터 관리, 배포 등을 편리하게 수행할 수 있게 기능을 제공해준다.

다음과 같은 세부 기능을 갖는다.

  • 모델 저장 및 버전 관리: 머신러닝 모델을 저장하고 버전 관리하여, 이전 버전과의 비교 및 재사용이 가능
  • 모델 추론 함수 정의: 저장된 모델에 대한 추론 함수를 정의하여, 새로운 데이터에 대한 예측을 쉽게 수행 가능
  • 모델 형식 변환: 다양한 머신러닝 라이브러리와 프레임워크 간의 모델 형식을 변환하여, 모델을 쉽게 이식 가능
  • 모델 메타데이터 관리: 모델의 메타데이터, 예를 들어 모델의 생성 일자, 생성자, 학습된 데이터 등을 추적 기능
  • 모델 배포: 저장된 모델을 서버에 배포하여, 클라이언트에서 쉽게 모델 추론을 수행 가능

2.4. Model Registry

Model Registry는 머신러닝 모델을 팀 내에서 공유, 추적, 검증, 배포하기 위한 중앙 집중식 저장소 역할을 합니다. Model Registry는 모델 수명 주기의 모든 단계에서 다양한 형태의 협업을 지원하여, 팀 내의 머신러닝 개발자 및 데이터 과학자가 함께 모델을 버전 관리할 수 있도록 해준다.

다음과 같은 세부 기능을 갖는다.

  • 모델 저장 및 버전 관리: 머신러닝 모델을 저장하고 버전 관리하여, 이전 버전과의 비교 및 재사용이 가능
  • 모델 등록: Model Registry에서는 모델을 등록하여 다른 팀원이 모델에 대한 정보를 공유함
  • 모델 버전 관리: Model Registry에서는 모델 버전을 관리하여, 이전 버전과의 비교 및 추적이 가능
  • 모델 배포: Model Registry에서는 모델을 배포하여, 다른 팀원이 모델 추론을 수행할 수 있도록 해줌

3. MLflow 데모

설명을 봐서는 MLflow가 어떻게 모델 관리를 해준다는 것인지 제대로 느끼기 어렵다. 데모 환경을 꾸며놨으니 아래 커맨드를 실행하여 확인해보자. 데모 실행을 통하여 간단히 MLflow 실행을 해보고 추가로 더 MLflow에 대한 검토가 필요할지 확인할 수 있도록 한다.

$ git clone https://github.com/devinlife/mlflow-demo.git
$ cd mlflow-demo
$ docker build -t my-mlflow-image .
$ docker run -p 5010:5010 my-mlflow-image

docker run을 실행하면 MLflow example 코드의 ML 학습을 진행한다. 학습이 다 완료되면 mlflow ui를 실행한다. 아래처럼 flask 실행 로그가 나오면 이제 웹브라우저로 http://localhost:5010/에 접속한다.

[2023-03-11 13:19:37 +0000] [237] [INFO] Starting gunicorn 20.1.0
[2023-03-11 13:19:37 +0000] [237] [INFO] Listening at: http://0.0.0.0:5010 (237)
[2023-03-11 13:19:37 +0000] [237] [INFO] Using worker: sync
[2023-03-11 13:19:37 +0000] [240] [INFO] Booting worker with pid: 240
[2023-03-11 13:19:37 +0000] [242] [INFO] Booting worker with pid: 242
[2023-03-11 13:19:37 +0000] [244] [INFO] Booting worker with pid: 244
[2023-03-11 13:19:37 +0000] [246] [INFO] Booting worker with pid: 246

mlflow ui에 접속하면 아래처럼 5개의 run 결과를 확인할 수 있다. 몇 개를 선택해서 Compare 버튼을 누르면 alpha 값에 따른 metrics가 변하는 것을 확인할 수 있다.

run 항목을 클릭하여 parameter와 metrics, artifacts를 어떻게 보여주는지 확인할 수 있다. run 항목을 선택해서 Register Model을 선택하면 Models에 등록하여 모델 관리를 어떻게 하는지 해볼 수 있다.

이것 저것 확인해보고 추가로 확인이 필요하다면 더 깊이 파보길 파란다.

Leave a comment