MLOps

[MLOps] 6. MLflow 로깅 방법

mlslly 2024. 4. 18. 16:13

MLflow를 통해 실험을 로깅해보자. 파라미터와 메트릭을 로깅하는 방법을 알아보자.

 

1. MLflow 환경 설정

우선 docker compose 이용해서 환경 설정을 하고 MLflow를 연다.

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

 

[MLOps] 5. 도커 Compose로 MLflow 시작하기

도커 Compose란? : 복잡한 명령 arguments, 다수 컨테이너를 처리해야 할때 활용 - 도커 명령어들을 코드로 관리할 수 있다. - 여러 컨테이너들의 실행 순서를 지정할 수 있다. - 여러 컨테이너 간의 볼

ysryuu.tistory.com

 

2. MLflow에서 새로운 실험 만들기 

python을 실행한 후, 아래의 코드를 순차적으로 실행하면, 

MLflow 사이트에 직접 새로운 실험을 추가할 수 있다. 

python3

import mlflow
mlflow.set_tracking_uri('http://0.0.0.0:5001')
mlflow.set_experiment('test')

 

MLflow 화면에서 'test'라는 experiment가 생긴것을 확인할 수 있다.

3. 파라미터 로깅

파라미터를 로깅하기 위한 코드는 아래와 같다. 이때 위에서 새로 추가한 실험experiment 에 대해서 로그가 기록된다.

아래처럼 두개 이상의 파라미터를 딕셔너리로 전달해도, 파라미터가 로깅되는 방식은 동일하다.

mlflow.log_param('my_param',1)
params = {'my_param_2':2, 'my_param_3':3}
mlflow.log_param(params)

 

예를 들어, 한개의 로그인 my_param으로 1을 추가한 경우,

아래와 같이 그 결과 MLflow 페이지에서는 새로운 run 정보가 추가되고,

해당 run을 클릭하면 세부 정보에서 Parameter 정보인 1 값이 추가되었음을 확인 가능하다.

 

4. 메트릭 로깅

메트릭 로깅은 파라미터 로깅과 비슷한 코드 및 방법으로 가능하다. 

mlflow.log_metric('my_metric',1)
metrics = {'my_metric_2':2, 'my_metric_3':3}
mlflow.log_metrics(metrics)

 

하나의 RUN에 대해서 파라미터와 metric이 추가된 것을 확인 가능함.

 


5. 연속되는 값 로깅하기 

1) 연속되는 history에 로깅 

mlflow.log_metric('history',0.1,step=1)
mlflow.log_metric('history',0.2,step=2)
mlflow.log_metric('history',0.3,step=3)

 

2) py파일을 생성 후 실행해서 로깅 

 

아래 파일을 실행해서 반복문을 이용해서 연속된 값들을 로깅할 수도 있다.

아래 반복문의 'with mlflow.start_run()'은 연속된 값들이 하나의 RUN 안에서 기록되도록 만들기 위해 추가한 부분이다.

 

<same_run.py 파일 내용 >

import mlflow

mlflow.set_tracking_uri('http://0.0.0.0:5001')
mlflow.set_experiment('test')

for i in range(3):
	with mlflow.start_run():
    	mlflow.log_param('trial',i)
        mlflow.log_metric('metric',i+1)

 

실행 코드 

python same_run.py

 

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