0. MLflow 정의
머신러닝의 라이프사이클을 관리해주는 MLOps 도구에 해당. 모델 학습 기록, 모델 환경 관리, 모델 배포 지원, 다양한 모델 버전 관리 등의 기능을 제공하고 있음.
1. MLflow에서 생성하는 Experiment 단위
어떤 문제를 해결하고자 하는가에 따라 구분. WandB에서의 Project 단위와 유사
- experiment 생성 : mlflow.create_experiment(동일한 이름에 대해 한번만생성 가능, 다시 동일한 코드로 실행시 에러 발생)
- 기존 experiement를 활성화 : mlflow.set_experiment()
2. MLflow에서 생성하는 Run 단위
하나의 experiment, 즉 하나의 Experiment 내에서 이뤄지는 다양한 실험에 해당. WandB에서 실행하는 Run 단위와 사실상 동일
- 특정 명칭으로 run 실행 : mlflow.start_run(run name=name)
- 현재 실행중인 run 종료 : mlflow.end_run()
3. MLflow 실행을 위한 간단한 코드들
3-1) 시작을 위한 설정
- 이전에 MLflow 라이브러리를 먼저 설치 해둬야함
import mlflow
# 트래킹할 서버 설정
mlflow.set_tracking_uri("<http://YOUR-SERVER:4040>")
# experiment 설정
mlflow.set_experiment("my-experiment")
3-2) 로깅할 배치 단위의 파라미터 설정
- 만약 활성화된 run이 존재하지 않을 경우, 자동 생성됨
params = {'learning_rate':0.01, 'n_estimators':10}
mlflow.log_params(params)
3-3) 로깅할 metric 설정
- 만약 활성화된 run이 존재하지 않을 경우, 자동 생성됨
- 원할 경우, 배치나 에폭단위로 기록 가능(?)
metrics = {'mse': 2500.00, 'rmse':50.00}
mlflow.log_metrics(metrics)
3-4) 관리자(로깅) 페이지 활성화
- MLflow 관리 사이트를 진입할 수 있는 방법
- 작동하는 동안, 관련 코드를 실행 후 놔둬야함(터미널을 새로 생성해서 진행하는 것이 좋음)
- 일반적으로 내부 IP(Localhost)로 작동하여, 공유하고자 한다면 외부포트로 실행 필요
# 간단 실행
mlflow ui
# 외부IP로 접근 허용한 상태에서 실행
# 아래와 같이 설정할 경우, 원격ip:9999로 진입 가능
mlflow ui -p 9999 -h 0.0.0지
총평
기본적으로, MLflow는 오픈소스이어서 그런지 설명이 친절하지 않았다. 동일하게 진행했음에도 에러가 났는데도 쉽게 해결하기가 어려웠다. 또한, 자체적으로 서비스 형태로 제공되기 보단 직접 서버를 구동하여 하는 방식이기 때문에, 자체적으로 설비가 좋지 않은 이상 MLflow 관리자 페이지를 실행하는데만 해도 매우 오랜 인내가 필요하였다. WandB 등 다양한 대체재가 있음에도 회사에서 많이 사용하는 이유는 아마 오픈소스로 '무료'라는 점이 크지 않을까 싶다. 물론 현재는 맛만 본 상태이기 때문에, 정확한 이유는 좀 더 사용해보고 판단해야할 것으로 보인다.
참고문헌
https://pajamacoder.tistory.com/32?category=1054816
https://mlflow.org/docs/latest/python_api/mlflow.html#mlflow.log_metric
'Machine Learning' 카테고리의 다른 글
[NLP] 트랜스포머 모델에 커스텀 데이터에 대한 MLM 학습 진행하기 (0) | 2022.05.07 |
---|---|
[NLP] MRC(ODQA) 태스크 관련 지표 (0) | 2022.05.06 |
[Knowledge Graph] ‘우크라이나-러시아 전쟁’ 지식그래프 시각화 결과 및 총평 (2) | 2022.04.25 |
[Knowledge Graph] 지식그래프 구축을 위한 사전지식 (0) | 2022.04.25 |
Huggingface에서 AMP를 적용하는 방법 (0) | 2022.04.16 |