MLOps

[MLOps] 7. MLflow 로깅 실습

mlslly 2024. 4. 18. 16:36

모델 파일 실행시 mlflow로 로깅해보기 

모델이 있는 py파일에 로깅 코드를 함께 추가해서 실행해보자.

원래 train.py에 있는 내용은 아래 링크 참고하면 된다. 아래 파일 내용에서 mlflow관련 부분 제외된 것.

https://ysryuu.tistory.com/4?category=1165111 

 

[MLOps] 2. 도커 사용 실습 - 이미지 build 및 .py파일 재현

1. 설치된 패키지 확인하기 $pip3 freeze 설치된 패키지들 및 버전을 확인할 수 있다. 2. 도커 설치하기 나는 맥북을 사용중이라 아래 사이트에서 맥용 데스크탑 버전을 다운 받았다. https://docs.docker.c

ysryuu.tistory.com

 

<train.py 파일 내용>

import mlflow
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score

# set mlflow
mlflow.set_tracking_uri('http://0.0.0.0:5001')
mlflow.set_experiment('tutorial')

with mlflow.start_run():

    # log parameter
    params = {'n_estimators':100,'max_depth':5}
    mlflow.log_params(params)

    # load data
    iris = load_iris(as_frame=True)
    X, y = iris['data'], iris['target']

    X_train, X_valid, y_train, y_valid = train_test_split(X,y,test_size=0.3, random_state=2024)

    # train data

    clf = RandomForestClassifier(n_estimators=params['n_estimators'], max_depth=params['max_depth'], random_state=2024)
    clf.fit(X_train, y_train)

    # evaluate data

    y_pred = clf.predict(X_valid)
    acc_score = accuracy_score(y_valid, y_pred)
    
    print('Accuracy score is {:.4f}'.format(acc_score))

    # log metrics
    mlflow.log_metrics({'accuracy': acc_score})

 

추가된 부분만 모아놓으면 다음과 같다. 

mlflow import, mlflow setting, parameter logging, metrics logging 총 네 부분.

 

주의할 점은 하나의 실험 RUN 안에 모든 기록을 하고 싶기 때문에 기존 모델 학습 및 평가 코드를 모두

'with mlflow.start_run()' 하에 둔다는 점. 

import mlflow

# set mlflow
mlflow.set_tracking_uri('http://0.0.0.0:5001')
mlflow.set_experiment('tutorial')

with mlflow.start_run():

    # log parameter
    params = {'n_estimators':100,'max_depth':5}
    mlflow.log_params(params)
   '''
   load, train, evaluate data
   '''
    # log metrics
    mlflow.log_metrics({'accuracy': acc_score})

 

로깅 결과 확인 

tutorial이라는 experiment 안에, parameters와 metrics가 각각 추가된 것을 볼 수 있다.

 

* 프로그래머스의 마키나락스 MLOPS 강의를 참고하여 작성함