Created by. 솔루션사업팀


<aside> ⚠️ MLflow

머신러닝 모델의 실험을 추적/기록하고, 모델을 공유/배포 할 수 있도록 지원하는 라이브러리입니다.

머신러닝 모델 성능에는 데이터, 하이퍼파라미터, 모델 구조 등 다양한 요인이 존재합니다.

특히, 하이퍼파라미터와 같이 사용자가 직접 지정하는 변수는 값을 조정하며 여러 번 반복 실험해야 최적값을 찾을 수 있습니다.

이러한 경우에 MLflow를 사용하게 되면, 실험에 사용하였던 하이퍼파라미터 및 그에 따른 모델 성능을 기록할 수 있어 실험이 용이합니다.

</aside>

<aside> 🔑 주요 기능

1. Tracking


2. Projects


3. Model + Registry

<aside> ❔ 사용 방법

  1. 라이브러리 설치
pip install mlflow
  1. 모델 학습 소스 내 mlflow 관련 설정
1. 전역 URI 설정 

""" mlflow URI """
mlflow.set_tracking_uri("<http://mlflow:5000>")
tracking_uri = mlflow.get_tracking_uri()

2. experiment 생성 및 세팅 

""" make experiment """
def make_experiments(exp_name):    
    experiment_id = mlflow.create_experiment(exp_name)
    experiment = mlflow.get_experiment(experiment_id)
    print("Name: {}".format(experiment.name))
    print("Experiment_id: {}".format(experiment.experiment_id))
    print("Artifact Location: {}".format(experiment.artifact_location))
    print("Tags: {}".format(experiment.tags))
    print("Lifecycle_stage: {}".format(experiment.lifecycle_stage))
    return experiment_id

""" set experiment by name """
def mlflow_setting(experiment_name):
    try:
        exp_id = mlflow.get_experiment_by_name(experiment_name)
        if exp_id==None:
            exp_id=make_experiments(experiment_name)
        mlflow.set_experiment(experiment_name)
    except Exception as e:
        print(e)

3. 하이퍼파라미터 세팅

""" logging to mlflow """
    for k, v in dict(args._get_kwargs()).items():
        mlflow.**log_param**(k, v)
 

4. 모델 학습과 함께 mlflow 실행

""" mlflow setting """
    mlflow_setting('model_{}-ep'.format(opt.exp_name))
    with mlflow.start_run() as run:
        train(args)  # 메인함수
  1. 학습 서버에서 프로젝트 내 mlruns 폴더로 이동
cd mlruns
  1. MLflow UI 호스트 변경하여 실행

    원격으로 사용 시, 해당 IP로 접속하여 확인 (기본 포트번호 : 5000)

mlflow ui --host 0.0.0.0
  1. 접속 PC에서 http://학습서버IP:5000 주소로 접속하여 확인

Untitled

  1. 모델 학습 시 지정한 하이퍼파라미터 값 확인

Untitled

</aside>