Sangmun

[MLOps] mlflow 기본 사용법 (1) 본문

네이버 AI 부스트캠프 4기/MLops

[MLOps] mlflow 기본 사용법 (1)

상상2 2022. 11. 24. 15:58

Mlflow는 머신러닝 실험, 배포를 쉽게 관리해줄 수 있는 오픈소스이다.

개인적으로는 wandb가 빠르게 실험에 대한 내용을 기록해 줄 수 있는 도구라면 mlflow는 약간은 사용하기 복잡하지만 배포 및 운영하는데도 유용하게 쓸 수 있다는 느낌을 받았다.

 

관련 오픈소스 중 제일 빠르게 성장하고 있다고 한다.

기본 사용법

원래는 네이버 boost 캠프의 변성윤 마스터님의 강의를 참조하려고 하였으나 뭔가 잘 되지 않아 공식 document를 참조하기로 하였다.

 

https://www.mlflow.org/docs/latest/quickstart.html

 

Quickstart — MLflow 2.0.1 documentation

Note MLflow works on MacOS. If you run into issues with the default system Python on MacOS, try installing Python 3 through the Homebrew package manager using brew install python. (In this case, installing MLflow is now pip3 install mlflow). Note When usin

www.mlflow.org

 

먼저 mlflow를 설치를 해준다. 아래 3가지 명령어 중 상황에 맞는 것을 설치해주면 된다.

# 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

 

그 후 파이썬 코드에 mlflow 패키지를 임포트 해주고 기록하고자 하는 metric을 log_metric()으로 기록해주면 된다.

import os
from random import random, randint
from mlflow import log_metric, log_param, log_artifacts

if __name__ == "__main__":
    # Log a parameter (key-value pair)
    log_param("param1", randint(0, 100))

    # Log a metric; metrics can be updated throughout the run
    log_metric("foo", random())
    log_metric("foo", random() + 1)
    log_metric("foo", random() + 2)

    # Log an artifact (output file)
    if not os.path.exists("outputs"):
        os.makedirs("outputs")
    with open("outputs/test.txt", "w") as f:
        f.write("hello world!")
    log_artifacts("outputs")

 

해당 코드를 실행하면 실행한 경로에 아래와 같이 mlflow관련 디렉토리 및 파일이 생성된다.

mlruns와 ouputs 디렉토리가 생성

 

이후 mlruns 폴더가 있는 경로에서 mlflow ui 명령어를 실행해주면 결과를 웹에서 확인할 수 있다/

실험 결과를 ui에서 확인 할 수 있다.

다음은 공식 document에서 제공하는 다른 예제로 실험을 Script가 아닌 프로젝트 단위로 관리가 가능하다.

mlflow run sklearn_elasticnet_wine -P alpha=0.5

# 예제 소스 코드
mlflow run https://github.com/mlflow/mlflow-example.git -P alpha=5.0

 

예제의 프로젝트 구조는 아래와 같으며 설정 파일의 내용도 아래와 같다.

위로 코드내용처럼 mlflow run으로 프로젝트를 실행하면 train.py가 실행되고 결과가 mlruns 폴더에 저장되게 된다.

그리고 mlruns 폴더가 위치한 경로에서 mlflow ui 명령어를 실행하면 웹으로 결과가 확인이 가능하다.

 

아래의 ui 화면처럼 해당 시행이 어떠한 명령어로 시행되었는지와 하이퍼 파라미터 및 Metric이 웹에서 확인된다.

mlflow web

 

또한 해당 실험 시행간 발급된 해시값을 기준으로 즉각으로 prediction까지 가능하다.

mlflow prediction

 

여기까지 기본적인 mlflow의 사용법을 알아보았다.

Comments